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

    神经网络多分类(神经网络多分类问题)

    发布时间:2023-04-13 19:45:15     稿源: 创意岭    阅读: 110        

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

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

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

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

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

    本文目录:

    神经网络多分类(神经网络多分类问题)

    一、图神经网络和超图神经网络在多标签分类中的优势对比

    在目前的基于图结构的多标签图像分类方法中,图神经网络和超图神经网络都是用于学习多标签之间的标签依赖关系的方法。那么这两种方法在学习标签之间的依赖关系上有什么对比优势?本文尝试简要分析。

    首先需要简单介绍图神经网络和超图神经网络的网络结构:

    1.图神经网络

    对于每个标签类别,首先通过外部知识(通常是通过词向量模型)获取初始的词向量,每个标签类别作为图中的一个结点,结点的初始表示就是对应的标签的词向量。然后,通过公式:

    超图神经网络与图神经网络很不同的一点是他的结构表示。超图的矩阵表示和图不一样,不再是结点和结点的关系,而是边和结点的关系。即每条边有几个结点,或者说当前结点属于哪几条边。而且,超图神经网络的卷积过程相比图神经网络的复杂:

    二、神经网络:卷积神经网络(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)按极小化误差的方法反向传播调整权矩阵。

    三、几种常见的循环神经网络结构RNN、LSTM、GRU

    传统文本处理任务的方法中一般将TF-IDF向量作为特征输入。显而易见,这样的表示实际上丢失了输入的文本序列中每个单词的顺序。在神经网络的建模过程中,一般的前馈神经网络,如卷积神经网络,通常接受一个定长的向量作为输入。卷积神经网络对文本数据建模时,输入变长的字符串或者单词串,然后通过滑动窗口加池化的方式将原先的输入转换成一个固定长度的向量表示,这样做可以捕捉到原文本中的一些局部特征,但是两个单词之间的长距离依赖关系还是很难被学习到。

    循环神经网络却能很好地处理文本数据变长并且有序的输入序列。它模拟了人阅读一篇文章的顺序,从前到后阅读文章中的每一个单词,将前面阅读到的有用信息编码到状态变量中去,从而拥有了一定的记忆能力,可以更好地理解之后的文本。

    其网络结构如下图所示:

    由图可见,t是时刻,x是输入层,s是隐藏层,o是输出层,矩阵W就是隐藏层上一次的值作为这一次的输入的权重。

    如果反复把式 2 带入到式 1,将得到:

    其中f和g为激活函数,U为输入层到隐含层的权重矩阵,W为隐含层从上一时刻到下一时刻状态转移的权重矩阵。在文本分类任务中,f可以选取Tanh函数或者ReLU函数,g可以采用Softmax函数。

    通过最小化损失误差(即输出的y与真实类别之间的距离),我们可以不断训练网络,使得得到的循环神经网络可以准确地预测文本所属的类别,达到分类目的。相比于卷积神经网络等前馈神经网络,循环神经网络由于具备对序列顺序信息的刻画能力,往往能得到更准确的结果。

    RNN的训练算法为:BPTT

    BPTT的基本原理和BP算法是一样的,同样是三步:

    1.前向计算每个神经元的输出值;

    2.反向计算每个神经元的误差项值,它是误差函数E对神经元j的加权输入的偏导数;

    3.计算每个权重的梯度。

    最后再用随机梯度下降算法更新权重。

    具体参考: https://www.jianshu.com/p/39a99c88a565

    最后由链式法则得到下面以雅可比矩阵来表达的每个权重的梯度:

    由于预测的误差是沿着神经网络的每一层反向传播的,因此当雅克比矩阵的最大特征值大于1时,随着离输出越来越远,每层的梯度大小会呈指数增长,导致梯度爆炸;反之,若雅克比矩阵的最大特征值小于1,梯度的大小会呈指数缩小,产生梯度消失。对于普通的前馈网络来说,梯度消失意味着无法通过加深网络层次来改善神经网络的预测效果,因为无论如何加深网络,只有靠近输出的若干层才真正起到学习的作用。 这使得循环神经网络模型很难学习到输入序列中的长距离依赖关系

    关于RNN梯度下降的详细推导可以参考: https://zhuanlan.zhihu.com/p/44163528

    梯度爆炸的问题可以通过梯度裁剪来缓解,即当梯度的范式大于某个给定值时,对梯度进行等比收缩。而梯度消失问题相对比较棘手,需要对模型本身进行改进。深度残差网络是对前馈神经网络的改进,通过残差学习的方式缓解了梯度消失的现象,从而使得我们能够学习到更深层的网络表示;而对于循环神经网络来说,长短时记忆模型及其变种门控循环单元等模型通过加入门控机制,很大程度上弥补了梯度消失所带来的损失。

    LSTM的网络机构图如下所示:

    与传统的循环神经网络相比,LSTM仍然是基于xt和ht−1来计算ht,只不过对内部的结构进行了更加精心的设计,加入了输入门it 、遗忘门ft以及输出门ot三个门和一个内部记忆单元ct。输入门控制当前计算的新状态以多大程度更新到记忆单元中;遗忘门控制前一步记忆单元中的信息有多大程度被遗忘掉;输出门控制当前的输出有多大程度上取决于当前的记忆单元。

    在经典的LSTM模型中,第t层的更新计算公式为

    其中it是通过输入xt和上一步的隐含层输出ht−1进行线性变换,再经过激活函数σ得到的。输入门it的结果是向量,其中每个元素是0到1之间的实数,用于控制各维度流过阀门的信息量;Wi 、Ui两个矩阵和向量bi为输入门的参数,是在训练过程中需要学习得到的。遗忘门ft和输出门ot的计算方式与输入门类似,它们有各自的参数W、U和b。与传统的循环神经网络不同的是,从上一个记忆单元的状态ct−1到当前的状态ct的转移不一定完全取决于激活函数计算得到的状态,还由输入门和遗忘门来共同控制。

    在一个训练好的网络中,当输入的序列中没有重要信息时,LSTM的遗忘门的值接近于1,输入门的值接近于0,此时过去的记忆会被保存,从而实现了长期记忆功能;当输入的序列中出现了重要的信息时,LSTM应当把其存入记忆中,此时其输入门的值会接近于1;当输入的序列中出现了重要信息,且该信息意味着之前的记忆不再重要时,输入门的值接近1,而遗忘门的值接近于0,这样旧的记忆被遗忘,新的重要信息被记忆。经过这样的设计,整个网络更容易学习到序列之间的长期依赖。

    GRU是在LSTM上进行简化而得到的,GRU的网络结构如下所示:

    Zt代表更新门,更新门的作用类似于LSTM中的遗忘门和输入门,它能决定要丢弃哪些信息和要添加哪些新信息。

    Rt代表重置门,重置门用于决定丢弃先前信息的程度。

    要注意的是,h只是一个变量,因此在每个时刻,包括最后的线性组合,h都是在用以前的自己和当前的备选答案更新自己。举例来说,这一个变量好比一杯酒,每次我们要把一部分酒倒出去,并把倒出去的酒和新加入的原料混合,然后在倒回来,这里的reset控制的就是要倒出去的,并且混合好之后再倒回来的酒的比例,而update控制的则是用多大的比例混合新原料和倒出来的之前调制好的酒。同理,也可以以此理解LSTM,LSTM的遗忘门功能上和reset相似,而输入门与update相似,不同之处在于LSTM还控制了当前状态的exposure,也就是输出门的功能,这是GRU所没有的。

    1.百面机器学习

    2. https://zhuanlan.zhihu.com/p/45649187

    3. https://www.jianshu.com/p/39a99c88a565

    四、二分类和多分类的区别

    二分类、多分类与多标签的基本概念

    二分类:表示分类任务中有两个类别,比如我们想识别一幅图片是不是猫。也就是说,训练一个分类器,输入一幅图片,用特征向量x表示,输出是不是猫,用y=0或1表示。二类分类是假设每个样本都被设置了一个且仅有一个标签 0 或者 1。

    多类分类(Multiclass classification): 表示分类任务中有多个类别, 比如对一堆水果图片分类, 它们可能是橘子、苹果、梨等. 多类分类是假设每个样本都被设置了一个且仅有一个标签: 一个水果可以是苹果或者梨, 但是同时不可能是两者。

    多标签分类(Multilabel classification): 给每个样本一系列的目标标签. 可以想象成一个数据点的各属性不是相互排斥的(一个水果既是苹果又是梨就是相互排斥的), 比如一个文档相关的话题. 一个文本可能被同时认为是宗教、政治、金融或者教育相关话题。

    多分类问题与二分类问题关系

    首先,两类问题是分类问题中最简单的一种。其次,很多多类问题可以被分解为多个两类问题进行求解(请看下文分解)。所以,历史上有很多算法都是针对两类问题提出的。下面我们来分析如何处理多分类问题:

    直接分成多类

    神经网络多分类(神经网络多分类问题)

    一对一的策略

    给定数据集D这里有N个类别,这种情况下就是将这些类别两两配对,从而产生N(N−1)2个二分类任务,在测试的时候把样本交给这些分类器,然后进行投票。

    一对其余策略

    将每一次的一个类作为正例,其余作为反例,总共训练N个分类器。测试的时候若仅有一个分类器预测为正的类别则对应的类别标记作为最终分类结果,若有多个分类器预测为正类,则选择置信度最大的类别作为最终分类结果。

    多标签问题与二分类问题关系

    面临的问题: 图片的标签数目不是固定的,有的有一个标签,有的有两个标签,但标签的种类总数是固定的,比如为5类。

    解决该问题: 采用了标签补齐的方法,即缺失的标签全部使用0标记,这意味着,不再使用one-hot编码。例如:标签为:-1,1,1,-1,1 ;-1表示该类标签没有,1表示该类标签存在,则这张图片的标签编码为:

    0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1

    2.如何衡量损失?

    计算出一张图片各个标签的损失,然后取平均值。

    3.如何计算精度

    计算出一张图片各个标签的精度,然后取平均值。

    该处理方法的本质:把一个多标签问题,转化为了在每个标签上的二分类问题。

    损失函数的选择问题

    基于逻辑回归的二分类问题

    对于logistic回归,有:

    神经网络多分类(神经网络多分类问题)

    逻辑回归有以下优点:

    • 它的输入范围是 神经网络多分类(神经网络多分类问题),而之于刚好为(0,1),正好满足概率分布为(0,1)的要求。我们用概率去描述分类器,自然比单纯的某个阈值要方便很多;

      请点击输入图片描述

    • 它是一个单调上升的函数,具有良好的连续性,不存在不连续点。

    • 对数损失函数(logarithmic loss function) 或对数似然损失函数(log-likehood loss function) 。

      逻辑回归中,采用的则是对数损失函数。根据上面的内容,我们可以得到逻辑回归的对数似然损失函数cost function:

      将以上两个表达式合并为一个,则单个样本的损失函数可以描述为:

      这就是逻辑回归最终的损失函数表达式。

      基于 Softmax 的多分类问题

      softmax层中的softmax 函数是logistic函数在多分类问题上的推广,它将一个N维的实数向量压缩成一个满足特定条件的N维实数向。压缩后的向量满足两个条件:

    • 向量中的每个元素的大小都在[0,1]

    • 向量所有元素的和为 1

    • 因此,softmax适用于多分类问题中对每一个类别的概率判断,softmax的函数公式如下:

      神经网络多分类(神经网络多分类问题)

      请点击输入图片描述

      基于 Softmax 的多分类问题采用的是 log似然代价函数(log-likelihood cost function)来解决。

      单个样本的 log似然代价函数的公式为:

      其中, 神经网络多分类(神经网络多分类问题) 表示标签向量的第 i个分量。因为往往只有一个分量为 1 其余的分量都为 0,所以可以去掉损失函数中的求和符号,化简为,

      请点击输入图片描述

      神经网络多分类(神经网络多分类问题)

      请点击输入图片描述

      其中, 神经网络多分类(神经网络多分类问题) 是向量 y 中取值为 1 对应的第 j个分量的值。

      请点击输入图片描述

      交叉熵损失函数与 log 似然代价函数关系 本质一样

      有的文献中也称 log 似然代价函数为交叉熵损失函数,这两个都是交叉熵损失函数,但是看起来长的却有天壤之别。为什么同是交叉熵损失函数,长的却不一样呢?

      神经网络多分类(神经网络多分类问题)

      请点击输入图片描述

      因为这两个交叉熵损失函数对应不同的最后一层的输出。第一个对应的最后一层是 sigmoid,用于二分类问题,第二个对应的最后一层是 softmax,用于多分类问题。但是它们的本质是一样的,请看下面的分析。

      首先来看信息论中交叉熵的定义:

      神经网络多分类(神经网络多分类问题)

      请点击输入图片描述

      交叉熵是用来描述两个分布的距离的,神经网络训练的目的就是使 g(x) 逼近 p(x)。

      sigmoid + 交叉熵

      先看看 sigmoid 作为神经网络最后一层的情况。sigmoid 作为最后一层输出的话,那就不能吧最后一层的输出看作成一个分布了,因为加起来不为 1。现在应该将最后一层的每个神经元看作一个分布,对应的 target 属于二项分布(target的值代表是这个类的概率),那么第 i 个神经元交叉熵为

      其实这个式子可以用求和符号改写,

      其中,

      神经网络多分类(神经网络多分类问题)

      请点击输入图片描述

      Softmax + 对数似然

      现在来看 softmax 作为神经网络最后一层的情况。g(x)是什么呢?就是最后一层的输出 y 。p(x)是什么呢?就是我们的one-hot标签。我们带入交叉熵的定义中算一下,就会得到:

      神经网络多分类(神经网络多分类问题)

      请点击输入图片描述

      交叉熵损失函数与 log 似然损失函数的总结

      注意到不管是交叉熵损失函数与 log 似然损失函数,交叉熵损失函数用于二分类问题, log 似然损失函数用于多分类,但是对于某一个样本只属于一个类别,只有一个标签。如果用 one-hot 编码样本的标签那么,对于标签向量只有一个分量的值为 1 其余的值都为 0。

      所以不管是交叉熵损失函数与 log 似然损失函数,都可以化简为,

      神经网络多分类(神经网络多分类问题)

      请点击输入图片描述

      其中,  是向量 y 中取值为 1 对应的第 j 个分量的值。这两个长的不一样的损失函数实际上是对应的不同的输出层。本质上是一样的。

      我的建议是,采用 Kears 中的命名方法,对于二分类的交叉熵损失函数称之为 “二分类交叉熵损失函数(binary_crossentropy)” ,对于多分类的交叉熵损失函数称之为 “多类别交叉熵损失函数(categorical_crossentropy)”。

      在 Kears 中也有提示(注意: 当使用categorical_crossentropy损失时,你的目标值应该是分类格式 (即,如果你有10个类,每个样本的目标值应该是一个10维的向量,这个向量除了表示类别的那个索引为1,其他均为0)。 为了将 整数目标值 转换为 分类目标值,你可以使用Keras实用函数to_categorical:)

      多标签分类 + 二分类交叉熵损失函数

      多标签问题与二分类问题关系在上文已经讨论过了,方法是计算一个样本各个标签的损失(输出层采用sigmoid函数),然后取平均值。把一个多标签问题,转化为了在每个标签上的二分类问题。

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


    推荐阅读:

    上海神经科医院排行榜(上海神经科科医院排名前十)

    图神经网络论文推荐

    全国神经科医院排行榜(全国神经科医院排行榜最新)

    抖s的特征(抖s具体表现)

    聚合直播宝盒1.1.3(聚合直播宝盒都有哪些)