HOME 首页
SERVICE 服务产品
XINMEITI 新媒体代运营
CASE 服务案例
NEWS 热点资讯
ABOUT 关于我们
CONTACT 联系我们
创意岭
让品牌有温度、有情感
专注品牌策划15年

    多分类神经网络(多分类神经网络实例)

    发布时间:2023-04-14 08:40:30     稿源: 创意岭    阅读: 89        

    大家好!今天让创意岭的小编来大家介绍下关于多分类神经网络的问题,以下是小编对此问题的归纳整理,让我们一起来看看吧。

    开始之前先推荐一个非常厉害的Ai人工智能工具,一键生成原创文章、方案、文案、工作计划、工作报告、论文、代码、作文、做题和对话答疑等等

    只需要输入关键词,就能返回你想要的内容,越精准,写出的就越详细,有微信小程序端、在线网页版、PC客户端

    官网:https://ai.de1919.com

    创意岭作为行业内优秀的企业,服务客户遍布全球各地,如需了解SEO相关业务请拨打电话175-8598-2043,或添加微信:1454722008

    本文目录:

    多分类神经网络(多分类神经网络实例)

    一、神经网络的分类

    人类大脑的思维分为抽象(逻辑)思维、形象(直观)思维和灵感(顿悟)思维三种基本方式。

    逻辑性的思维是指根据逻辑规则进行推理的过程;它先将信息化成概念,并用符号表示,然后,根据符号运算按串行模式进行逻辑推理;这一过程可以写成串行的指令,让计算机执行。然而,直观性的思维是将分布式存储的信息综合起来,结果是忽然间产生想法或解决问题的办法。这种思维方式的根本之点在于以下两点:1.信息是通过神经元上的兴奋模式分布储在网络上;2.信息处理是通过神经元之间同时相互作用的动态过程来完成的。

    人工神经网络就是模拟人思维的第二种方式。这是一个非线性动力学系统,其特色在于信息的分布式存储和并行协同处理。虽然单个神经元的结构极其简单,功能有限,但大量神经元构成的网络系统所能实现的行为却是极其丰富多彩的。

    二、神经网络及其分类

    前馈网络中各个神经元按接受信息的先后,分为不同的组,每一组可以看作一个神经层,每一层中的神经元接受前一层神经元的输出,并输出到下一层神经元。整个网络中的信息是朝一个方向传播,没有反向的信息传播(优化算法 是什么反向传播来着)

    回答上章提出 是否每层激活函数一样的问题,

    答案是,是的。

    每一层的输出(活性值) 等于净输入 代入激活函数 以此来实现 非线性 结构 b就是偏置,也就是偏差 每一层都不一样。

    净输入 表示成向量,权重 表示成矩阵

    diag 是个对角矩阵,也就是说,除了对角线,其余全为0

    三、神经网络:卷积神经网络(CNN)

    神经网络 最早是由心理学家和神经学家提出的,旨在寻求开发和测试神经的计算模拟。

    粗略地说, 神经网络 是一组连接的 输入/输出单元 ,其中每个连接都与一个 权 相关联。在学习阶段,通过调整权值,使得神经网络的预测准确性逐步提高。由于单元之间的连接,神经网络学习又称 连接者学习。

    神经网络是以模拟人脑神经元的数学模型为基础而建立的,它由一系列神经元组成,单元之间彼此连接。从信息处理角度看,神经元可以看作是一个多输入单输出的信息处理单元,根据神经元的特性和功能,可以把神经元抽象成一个简单的数学模型。

    神经网络有三个要素: 拓扑结构、连接方式、学习规则

    神经网络的拓扑结构 :神经网络的单元通常按照层次排列,根据网络的层次数,可以将神经网络分为单层神经网络、两层神经网络、三层神经网络等。结构简单的神经网络,在学习时收敛的速度快,但准确度低。

    神经网络的层数和每层的单元数由问题的复杂程度而定。问题越复杂,神经网络的层数就越多。例如,两层神经网络常用来解决线性问题,而多层网络就可以解决多元非线性问题

    神经网络的连接 :包括层次之间的连接和每一层内部的连接,连接的强度用权来表示。

    根据层次之间的连接方式,分为:

    1)前馈式网络:连接是单向的,上层单元的输出是下层单元的输入,如反向传播网络,Kohonen网络

    2)反馈式网络:除了单项的连接外,还把最后一层单元的输出作为第一层单元的输入,如Hopfield网络

    根据连接的范围,分为:

    1)全连接神经网络:每个单元和相邻层上的所有单元相连

    2)局部连接网络:每个单元只和相邻层上的部分单元相连

    神经网络的学习

    根据学习方法分:

    感知器:有监督的学习方法,训练样本的类别是已知的,并在学习的过程中指导模型的训练

    认知器:无监督的学习方法,训练样本类别未知,各单元通过竞争学习。

    根据学习时间分:

    离线网络:学习过程和使用过程是独立的

    在线网络:学习过程和使用过程是同时进行的

    根据学习规则分:

    相关学习网络:根据连接间的激活水平改变权系数

    纠错学习网络:根据输出单元的外部反馈改变权系数

    自组织学习网络:对输入进行自适应地学习

    摘自《数学之美》对人工神经网络的通俗理解:

    神经网络种类很多,常用的有如下四种:

    1)Hopfield网络,典型的反馈网络,结构单层,有相同的单元组成

    2)反向传播网络,前馈网络,结构多层,采用最小均方差的纠错学习规则,常用于语言识别和分类等问题

    3)Kohonen网络:典型的自组织网络,由输入层和输出层构成,全连接

    4)ART网络:自组织网络

    深度神经网络:

    Convolutional Neural Networks(CNN)卷积神经网络

    Recurrent neural Network(RNN)循环神经网络

    Deep Belief Networks(DBN)深度信念网络

    深度学习是指多层神经网络上运用各种机器学习算法解决图像,文本等各种问题的算法集合。深度学习从大类上可以归入神经网络,不过在具体实现上有许多变化。

    深度学习的核心是特征学习,旨在通过分层网络获取分层次的特征信息,从而解决以往需要人工设计特征的重要难题。

    Machine Learning vs. Deep Learning 

    神经网络(主要是感知器)经常用于 分类

    神经网络的分类知识体现在网络连接上,被隐式地存储在连接的权值中。

    神经网络的学习就是通过迭代算法,对权值逐步修改的优化过程,学习的目标就是通过改变权值使训练集的样本都能被正确分类。

    神经网络特别适用于下列情况的分类问题:

    1) 数据量比较小,缺少足够的样本建立模型

    2) 数据的结构难以用传统的统计方法来描述

    3) 分类模型难以表示为传统的统计模型

    缺点:

    1) 需要很长的训练时间,因而对于有足够长训练时间的应用更合适。

    2) 需要大量的参数,这些通常主要靠经验确定,如网络拓扑或“结构”。

    3)  可解释性差 。该特点使得神经网络在数据挖掘的初期并不看好。

    优点:

    1) 分类的准确度高

    2)并行分布处理能力强

    3)分布存储及学习能力高

    4)对噪音数据有很强的鲁棒性和容错能力

    最流行的基于神经网络的分类算法是80年代提出的 后向传播算法 。后向传播算法在多路前馈神经网络上学习。 

    定义网络拓扑

    在开始训练之前,用户必须说明输入层的单元数、隐藏层数(如果多于一层)、每一隐藏层的单元数和输出层的单元数,以确定网络拓扑。

    对训练样本中每个属性的值进行规格化将有助于加快学习过程。通常,对输入值规格化,使得它们落入0.0和1.0之间。

    离散值属性可以重新编码,使得每个域值一个输入单元。例如,如果属性A的定义域为(a0,a1,a2),则可以分配三个输入单元表示A。即,我们可以用I0 ,I1 ,I2作为输入单元。每个单元初始化为0。如果A = a0,则I0置为1;如果A = a1,I1置1;如此下去。

    一个输出单元可以用来表示两个类(值1代表一个类,而值0代表另一个)。如果多于两个类,则每个类使用一个输出单元。

    隐藏层单元数设多少个“最好” ,没有明确的规则。

    网络设计是一个实验过程,并可能影响准确性。权的初值也可能影响准确性。如果某个经过训练的网络的准确率太低,则通常需要采用不同的网络拓扑或使用不同的初始权值,重复进行训练。

    后向传播算法学习过程:

    迭代地处理一组训练样本,将每个样本的网络预测与实际的类标号比较。

    每次迭代后,修改权值,使得网络预测和实际类之间的均方差最小。

    这种修改“后向”进行。即,由输出层,经由每个隐藏层,到第一个隐藏层(因此称作后向传播)。尽管不能保证,一般地,权将最终收敛,学习过程停止。

    算法终止条件:训练集中被正确分类的样本达到一定的比例,或者权系数趋近稳定。

    后向传播算法分为如下几步:

    1) 初始化权

    网络的权通常被初始化为很小的随机数(例如,范围从-1.0到1.0,或从-0.5到0.5)。

    每个单元都设有一个偏置(bias),偏置也被初始化为小随机数。

    2) 向前传播输入

    对于每一个样本X,重复下面两步:

    向前传播输入,向后传播误差

    计算各层每个单元的输入和输出。输入层:输出=输入=样本X的属性;即,对于单元j,Oj = Ij = Xj。隐藏层和输出层:输入=前一层的输出的线性组合,即,对于单元j, Ij =wij Oi + θj,输出=

    3) 向后传播误差

    计算各层每个单元的误差。

    输出层单元j,误差:

    Oj是单元j的实际输出,而Tj是j的真正输出。

    隐藏层单元j,误差:

    wjk是由j到下一层中单元k的连接的权,Errk是单元k的误差

    更新 权 和 偏差 ,以反映传播的误差。

    权由下式更新:

     其中,△wij是权wij的改变。l是学习率,通常取0和1之间的值。

     偏置由下式更新:

      其中,△θj是偏置θj的改变。

    Example

    人类视觉原理:

    深度学习的许多研究成果,离不开对大脑认知原理的研究,尤其是视觉原理的研究。1981 年的诺贝尔医学奖,颁发给了 David Hubel(出生于加拿大的美国神经生物学家) 和Torsten Wiesel,以及Roger Sperry。前两位的主要贡献,是“发现了视觉系统的信息处理”, 可视皮层是分级的 。

    人类的视觉原理如下:从原始信号摄入开始(瞳孔摄入像素Pixels),接着做初步处理(大脑皮层某些细胞发现边缘和方向),然后抽象(大脑判定,眼前的物体的形状,是圆形的),然后进一步抽象(大脑进一步判定该物体是只气球)。

    对于不同的物体,人类视觉也是通过这样逐层分级,来进行认知的:

    在最底层特征基本上是类似的,就是各种边缘,越往上,越能提取出此类物体的一些特征(轮子、眼睛、躯干等),到最上层,不同的高级特征最终组合成相应的图像,从而能够让人类准确的区分不同的物体。

    可以很自然的想到:可以不可以模仿人类大脑的这个特点,构造多层的神经网络,较低层的识别初级的图像特征,若干底层特征组成更上一层特征,最终通过多个层级的组合,最终在顶层做出分类呢?答案是肯定的,这也是许多深度学习算法(包括CNN)的灵感来源。

    卷积神经网络是一种多层神经网络,擅长处理图像特别是大图像的相关机器学习问题。卷积网络通过一系列方法,成功将数据量庞大的图像识别问题不断降维,最终使其能够被训练。

    CNN最早由Yann LeCun提出并应用在手写字体识别上。LeCun提出的网络称为LeNet,其网络结构如下:

    这是一个最典型的卷积网络,由 卷积层、池化层、全连接层 组成。其中卷积层与池化层配合,组成多个卷积组,逐层提取特征,最终通过若干个全连接层完成分类。

    CNN通过卷积来模拟特征区分,并且通过卷积的权值共享及池化,来降低网络参数的数量级,最后通过传统神经网络完成分类等任务。

    降低参数量级:如果使用传统神经网络方式,对一张图片进行分类,那么,把图片的每个像素都连接到隐藏层节点上,对于一张1000x1000像素的图片,如果有1M隐藏层单元,一共有10^12个参数,这显然是不能接受的。

    但是在CNN里,可以大大减少参数个数,基于以下两个假设:

    1)最底层特征都是局部性的,也就是说,用10x10这样大小的过滤器就能表示边缘等底层特征

    2)图像上不同小片段,以及不同图像上的小片段的特征是类似的,也就是说,能用同样的一组分类器来描述各种各样不同的图像

    基于以上两个假设,就能把第一层网络结构简化

    用100个10x10的小过滤器,就能够描述整幅图片上的底层特征。

    卷积运算的定义如下图所示:

    如上图所示,一个5x5的图像,用一个3x3的 卷积核 :

       101

       010

       101

    来对图像进行卷积操作(可以理解为有一个滑动窗口,把卷积核与对应的图像像素做乘积然后求和),得到了3x3的卷积结果。

    这个过程可以理解为使用一个过滤器(卷积核)来过滤图像的各个小区域,从而得到这些小区域的特征值。在实际训练过程中, 卷积核的值是在学习过程中学到的。

    在具体应用中,往往有多个卷积核,可以认为, 每个卷积核代表了一种图像模式 ,如果某个图像块与此卷积核卷积出的值大,则认为此图像块十分接近于此卷积核。如果设计了6个卷积核,可以理解为这个图像上有6种底层纹理模式,也就是用6种基础模式就能描绘出一副图像。以下就是24种不同的卷积核的示例:

    池化 的过程如下图所示:

    可以看到,原始图片是20x20的,对其进行采样,采样窗口为10x10,最终将其采样成为一个2x2大小的特征图。

    之所以这么做,是因为即使做完了卷积,图像仍然很大(因为卷积核比较小),所以为了降低数据维度,就进行采样。

    即使减少了许多数据,特征的统计属性仍能够描述图像,而且由于降低了数据维度,有效地避免了过拟合。

    在实际应用中,分为最大值采样(Max-Pooling)与平均值采样(Mean-Pooling)。

    LeNet网络结构:

    注意,上图中S2与C3的连接方式并不是全连接,而是部分连接。最后,通过全连接层C5、F6得到10个输出,对应10个数字的概率。

    卷积神经网络的训练过程与传统神经网络类似,也是参照了反向传播算法

    第一阶段,向前传播阶段:

    a)从样本集中取一个样本(X,Yp),将X输入网络;

    b)计算相应的实际输出Op

    第二阶段,向后传播阶段

    a)计算实际输出Op与相应的理想输出Yp的差;

    b)按极小化误差的方法反向传播调整权矩阵。

    四、Tensorflow系列3:多层神经网络--解决非线性问题

    这里拿医院的数据做一个简单的线性分类任务,任务特征是病人的年龄和肿瘤大小,任务目标是病人的肿瘤是良性的还是恶性的。

    补充知识:

    补充知识:

    MSE 的公式为:

    cross entropy 一般用于分类问题,表达的意思是样本属于某一类的概率,公式为:

    这里用于计算的a也是经过分布统一化处理的(或者是经过Sigmoid函数激活的结果),取值范围在0~1之间。

    在tensorflow中常见的交叉熵函数有:Sgimoid交叉熵,softmax交叉熵,Sparse交叉熵,加权Sgimoid交叉熵

    MSE的预测值和真实值要控制在同样的数据分布内,假设预测值经过Sigmoid激活函数得到取值范围时候0 1之间,那么真实值也要归一化成0 1之间。

    在tensorflow中没有单独的MSE函数,可以自己组合:

    MSE=tf.reduce_mean(tf.square(logits-outputs))

    softmax_cross_entropy_with_logits 函数,必须要自己定义,比如:

    loss = tf.reduce_mean(-tf.reduce_sum(labels*tf.log(logits_scaled),1))

    损失函数的选取取决于输入标签数据的类型:如果输入是实数、无界的值,多使用MSE;如果输入标签是位矢量(分类标志),使用cross entropy比较合适

    补充知识点:

    reshape() 函数接受-1时,该行(列)数可以为任意值。[-1,1]代表行数随意,列数变成1。

    模型生成的z用公式可以表示成z=x1w1+x2w2+b,如果将x1和x2映射到直角坐标系中的x和y坐标,那么z就可以被分为小于0和大于0两部分。当z=0时,就代表直线本身。

    这次再在刚刚的二分类基础上再增加一类,变成三类,可以使用多条直线将数据分成多类。

    生成的X,Y的数据样本如下内容:

    常用的激活函数比如sigmoid,relu,tanh输出值只有两种,面对以上多分类问题,就需要使用softmax算法。该算法的主要应用就是多分类,而且是互斥的,即只能属于某一类。(对于不是互斥的分类问题,一般使用多个二分类来组成)

    补充知识:

    也可以画出更直观的图示:

    例如:

    对于线性不可分的数据样本,可以使用多层神经网络来解决,也就是在输入层和输出层中间多加一些神经元,每一层可以加多个,也可以加多层。

    在模型训练过程中会出现欠拟合和过拟合的问题,欠拟合的原因并不是模型不行,而是我们的学习方法无法更精准地学习到适合的模型参数。模型越薄弱,对训练的要求就越高,但是可以采用增加节点或者增加隐藏层的方式,让模型具有更高的拟合性,从而降低模型的训练难度。过拟合的表现在模型在训练集上的表现非常好,loss很小;但是在测试集上的表现却非常差。

    避免过拟合的方法很多:常用的有early stopping、数据集扩增、正则化、dropout

    本质就是加入噪声,在计算loss时,在损失后面再加上意向,这样预测结果与标签间的误差就会受到干扰,导致学习参数W和b无法按照目标方向来调整,从而实现模型与训练数据无法完全拟合的效果,从而防止过拟合。

    这个添加的干扰项必须具有如下特性:

    这里有两个范数L1和L2:

    tf.reduce_sum(tf.abs(w))

    tf.nn.l2_loss(t,name=None)

    拿上面的异或数据做举例,dropout方法就是在刚刚的layer_1层后面再添加一个dropout层。

    实际训练时,将keep_prob设置成0.6,意味着每次训练将仅允许0.6的节点参与学习运算。由于学习速度这样就变慢了,可以将learning_rate调大,加快训练速度。 注意:在测试时,需要将keep_prob设置为1。

    全连接神经网络是一个通用的拟合数据的框架,只要有足够多的神经元,及时只有一层hidden layer,利用常见的Sigmoid,relu等激活函数,就可以无限逼近任何连续函数。在实际使用中,如果想利用浅层神经网络拟合复杂非线性函数,就需要你靠增加的神经元个数来实现,神经元过多会造成参数过多,从而增加网络的学习难度,并影响网络的泛化能力。因此,在实际构建网络结构时,一般倾向于使用更深的模型,开减少所需要的神经元数量。

    以上就是关于多分类神经网络相关问题的回答。希望能帮到你,如有更多相关问题,您也可以联系我们的客服进行咨询,客服也会为您讲解更多精彩的知识和内容。


    推荐阅读:

    快手六万分是多少钱(快手六万多分是多少钱)

    快手2万分是多少人民币(快手2万多分是多少钱)

    专升本考200多分难吗

    网课不想学了分期付款可以不付吗(网课分期不还上国家征信吗-)

    新津屋顶景观设计招聘(新津屋顶景观设计招聘网)