1、 8.1玻尔兹曼机玻尔兹曼机玻尔兹曼机(玻尔兹曼机(Boltzmann MachineBoltzmann Machine,BMBM)是一种由随机神经元全连接组)是一种由随机神经元全连接组成的神经网络模型,其具有对称性与无反馈性。玻尔兹曼机的神经元成的神经网络模型,其具有对称性与无反馈性。玻尔兹曼机的神经元结构分为可视层与隐含层。顾名思义,可视层所包含的神经元被称为结构分为可视层与隐含层。顾名思义,可视层所包含的神经元被称为可视节点,隐藏层所包含的神经元被称为隐含节点。在标准玻尔兹曼可视节点,隐藏层所包含的神经元被称为隐含节点。在标准玻尔兹曼机模型下,所有的神经元的激活值仅有机模型下,所有的神经
2、元的激活值仅有0 0或者是或者是1 1两种状态,两种状态,1 1表示激活表示激活而而0 0表示未激活,其结构原理如图表示未激活,其结构原理如图8.1.1 8.1.1 标准玻尔兹曼机标准玻尔兹曼机能量函数(能量函数(Energy FunctionalEnergy Functional):将待聚类的事物看成一个系统,事物之间):将待聚类的事物看成一个系统,事物之间的相异程度看成系统元素间的能量,当能量达到一定程度时,事物就形成一个新的相异程度看成系统元素间的能量,当能量达到一定程度时,事物就形成一个新的类,表示系统需要重新分类。聚类过程中要求每个事物属于一个类,每个簇中的类,表示系统需要重新分类。
3、聚类过程中要求每个事物属于一个类,每个簇中不存在能量大于阈值的系统,不同的簇中不存在能量小于阈值的系统。换句话说,不存在能量大于阈值的系统,不同的簇中不存在能量小于阈值的系统。换句话说,根据我们之前的基础知识可以得知,在自然界中物体的能量越小,其状态越趋于根据我们之前的基础知识可以得知,在自然界中物体的能量越小,其状态越趋于稳定。所以,能量较大的不同簇被分类为不同类别,而能量较小的簇形成一个稳稳定。所以,能量较大的不同簇被分类为不同类别,而能量较小的簇形成一个稳定的团,也就是被聚为一类。定的团,也就是被聚为一类。玻尔兹曼机的学习算法即是基于能量函数的。其能量函数:玻尔兹曼机的学习算法即是基于能
4、量函数的。其能量函数:11,;22TTTv hv Lvh Jhv Wh 玻尔兹曼机的目标是最大化似然函数,也就是说如果玻尔兹曼机在一组特定的玻尔兹曼机的目标是最大化似然函数,也就是说如果玻尔兹曼机在一组特定的参数下导出的可视节点的概率分布与可视节点被输入向量所固定的状态概率分布参数下导出的可视节点的概率分布与可视节点被输入向量所固定的状态概率分布完全一样,那么此时可以称该玻尔兹曼机构造了与输入向量环境相同的完整模型。完全一样,那么此时可以称该玻尔兹曼机构造了与输入向量环境相同的完整模型。对数似然函数定义如下:对数似然函数定义如下:11log;log;NNllBMlllp vp v玻尔兹曼机的学
5、习过程玻尔兹曼机的学习过程8.1.2 8.1.2 受限玻尔兹曼机受限玻尔兹曼机受限玻尔兹曼机(受限玻尔兹曼机(Restricted Boltzmann Machines,RBM)是标准玻尔兹曼机的)是标准玻尔兹曼机的一种变形。虽然其只具有两层结构,在严格意义上说还不是深度学习结构,但是一种变形。虽然其只具有两层结构,在严格意义上说还不是深度学习结构,但是可以被用作基本模块来构造自编码器,深度信念网络,深层玻尔兹曼机等许多其可以被用作基本模块来构造自编码器,深度信念网络,深层玻尔兹曼机等许多其它深度学习模型。它深度学习模型。顾名思义,相比于标准玻尔兹曼机,受限玻尔兹曼机受到了更多的限制。正顾名思
6、义,相比于标准玻尔兹曼机,受限玻尔兹曼机受到了更多的限制。正如我们之前所介绍的那样,标准玻尔兹曼机的可视层的任意神经元之间是可以相如我们之前所介绍的那样,标准玻尔兹曼机的可视层的任意神经元之间是可以相互通信的,隐藏层中任意两个神经元也是可以直接连接的。而受限玻尔兹曼机完互通信的,隐藏层中任意两个神经元也是可以直接连接的。而受限玻尔兹曼机完全禁止可视层与隐藏层各自内部节点之间的相互连接,只允许可视层与隐藏层之全禁止可视层与隐藏层各自内部节点之间的相互连接,只允许可视层与隐藏层之间的节点相互连接,如图间的节点相互连接,如图 与标准玻尔兹曼机原理相似,此时我们可以定义受限玻尔兹曼机的能量函数与标准玻
7、尔兹曼机原理相似,此时我们可以定义受限玻尔兹曼机的能量函数如下:如下:1111,nmmnijijjjiiijjiv hw hva vbh 根据数学知识,对联合概率分布去边缘分布,就可以分别得到受限玻尔兹曼机的根据数学知识,对联合概率分布去边缘分布,就可以分别得到受限玻尔兹曼机的可视向量分布与隐含向量分布,这是由于联合分布是由可视向量分布与隐含响亮可视向量分布与隐含向量分布,这是由于联合分布是由可视向量分布与隐含响亮分布联合。可视向量分布为:分布联合。可视向量分布为:1,exp,hhp vp v hv hZ(和我们之前所讲解的模型一样,受限玻尔兹曼机的学习在本质上就是对模型和我们之前所讲解的模型
8、一样,受限玻尔兹曼机的学习在本质上就是对模型的一系列参数进行更新,常用的方式为利用梯度上升的方法进行最大似然估计,的一系列参数进行更新,常用的方式为利用梯度上升的方法进行最大似然估计,使总体的对数似然函数最大化。受限玻尔兹曼机的对数似然函数被定义为:使总体的对数似然函数最大化。受限玻尔兹曼机的对数似然函数被定义为:11loglogNNllRBMlllp vp v 1log,NlRBMlhlp vh 1,logexp,logexp,Nllhv hvhv h8.1.3 8.1.3 深层玻尔兹曼机深层玻尔兹曼机深层玻尔兹曼机(深层玻尔兹曼机(Deep Boltzmann MachineDeep Bo
9、ltzmann Machine,DBMDBM)从结构上,类似于我们之前)从结构上,类似于我们之前所介绍的简单全连接神经网络。它仅包含邻层之间的连接,而不包括同一层中的所介绍的简单全连接神经网络。它仅包含邻层之间的连接,而不包括同一层中的相互连接,但是与简单全连接神经网络不一样的是,深层玻尔兹曼机在整体上是相互连接,但是与简单全连接神经网络不一样的是,深层玻尔兹曼机在整体上是一个无向概率图模型。其结构图如图一个无向概率图模型。其结构图如图 深层玻尔兹曼机可以看成由许多深层玻尔兹曼机可以看成由许多RBMRBM堆叠起来的结构,因此深层玻尔兹曼机堆叠起来的结构,因此深层玻尔兹曼机的参数的学习可以根据的
10、参数的学习可以根据RBMRBM的学习算法来进行,但是正如我们之前所说的那样,的学习算法来进行,但是正如我们之前所说的那样,它的效率较低。在深层玻尔兹曼机的学习算法当中,可以使用两个阶段的不同策它的效率较低。在深层玻尔兹曼机的学习算法当中,可以使用两个阶段的不同策略,这样可以加速模型参数的学习效率。训练的第一阶段为逐层预训练阶段。在略,这样可以加速模型参数的学习效率。训练的第一阶段为逐层预训练阶段。在这个阶段当中,首先先把深层玻尔兹曼机的可视层这个阶段当中,首先先把深层玻尔兹曼机的可视层 和第一层隐含层和第一层隐含层 捆绑起来看捆绑起来看做一个受限玻尔兹曼机。做一个受限玻尔兹曼机。然后,再把深层
11、玻尔兹曼机的隐含层然后,再把深层玻尔兹曼机的隐含层 和和 看作一个受限玻尔兹曼看作一个受限玻尔兹曼机。这时,我们可以把机。这时,我们可以把 看作是该受限玻尔兹曼机的可视层,隐含层看作是该受限玻尔兹曼机的可视层,隐含层为为 。以此类推,在计算深层玻尔兹曼机的最后两个隐含层的时候,可以考虑是以此类推,在计算深层玻尔兹曼机的最后两个隐含层的时候,可以考虑是否使用标签。如果不使用标签,那么我们可以把这两层看做是一个逆捆绑受限玻否使用标签。如果不使用标签,那么我们可以把这两层看做是一个逆捆绑受限玻尔兹曼机尔兹曼机1khkh1khkh整体过程如图整体过程如图在多个受限玻尔兹曼机的训练完成以后,在多个受限玻
12、尔兹曼机的训练完成以后,通过权值减半的方法,将其重新编辑成通过权值减半的方法,将其重新编辑成一个新的深层玻尔兹曼机,最终重新编一个新的深层玻尔兹曼机,最终重新编辑生成的深度玻尔兹曼机模型作为训练辑生成的深度玻尔兹曼机模型作为训练结果,如图结果,如图 第二阶段,为利用类第二阶段,为利用类CDCD算法进行调优。这个阶段首先利用算法估计深层玻尔兹算法进行调优。这个阶段首先利用算法估计深层玻尔兹曼机的后验概率曼机的后验概率 ,然后利用训练集通过类,然后利用训练集通过类CDCD算法调优模型参数。估计后验概率而非精确计算有助于我们提高模型的训练速度。算法调优模型参数。估计后验概率而非精确计算有助于我们提高
13、模型的训练速度。其中,估计后验概率的算法称为平均场算法。其中,估计后验概率的算法称为平均场算法。平均场算法的基本思想是通过随机变量均值的函数近似估计随机变量的函数的平均场算法的基本思想是通过随机变量均值的函数近似估计随机变量的函数的均值。均值。最终,我们便得到了对深层玻尔兹曼机后验概率的估计。这里值得注意的是,最终,我们便得到了对深层玻尔兹曼机后验概率的估计。这里值得注意的是,深层玻尔兹曼机需要采用经过编辑的受限玻尔兹曼机进行逐层训练,才能获得更深层玻尔兹曼机需要采用经过编辑的受限玻尔兹曼机进行逐层训练,才能获得更好的学习训练效果。好的学习训练效果。11kikip hvq hv自编码器(自编码
14、器(AutoencoderAutoencoder)可以用来对高维数据进行降维处理,也可以理解)可以用来对高维数据进行降维处理,也可以理解成我们之前所了解的数据稀疏化。对于自编码器,它的内部具有两部分结成我们之前所了解的数据稀疏化。对于自编码器,它的内部具有两部分结构,一部分为编码器,另一部分为解码器。编码器可以看作是自编码器内构,一部分为编码器,另一部分为解码器。编码器可以看作是自编码器内部的隐含层部的隐含层 对数据对数据 的处理的处理 。而解码器,可以看作是数据的重构。而解码器,可以看作是数据的重构 。这就。这就是对应的映射过程,如图是对应的映射过程,如图传统自编码器被用于降维或特征学习。近
15、年来,自编码器与潜变量模型传统自编码器被用于降维或特征学习。近年来,自编码器与潜变量模型理论的联系将自编码器带到了生成式建模的前沿。我们也可以对自编码理论的联系将自编码器带到了生成式建模的前沿。我们也可以对自编码器加入约束,使之优先地提取更为显著的数据特征。器加入约束,使之优先地提取更为显著的数据特征。8.2 自编码器自编码器8.2.1 8.2.1 标准自编码器标准自编码器标准的自编码器是一个关于中间层具有结构对称性的多层前馈网络。它的期望输标准的自编码器是一个关于中间层具有结构对称性的多层前馈网络。它的期望输出与输入相同,可以用来学习恒等映射并抽取无监督特征,如图出与输入相同,可以用来学习恒
16、等映射并抽取无监督特征,如图从自编码器获得有用特征的一种方法是限制从自编码器获得有用特征的一种方法是限制 h h的维度比的维度比 x x小,这种编码维度小,这种编码维度小于输入维度的自编码器称为欠完备(小于输入维度的自编码器称为欠完备(undercompleteundercomplete)自编码器。学习欠)自编码器。学习欠完备的表示将强制自编码器捕捉训练数据中最显著的特征。完备的表示将强制自编码器捕捉训练数据中最显著的特征。当解码器是线性的且当解码器是线性的且L L 为均方误差损失函数时,欠完备的自编码器会学习出与为均方误差损失函数时,欠完备的自编码器会学习出与PCAPCA相同的生成子空间。这
17、种情况下,自编码器在训练来执行复制任务的同时学相同的生成子空间。这种情况下,自编码器在训练来执行复制任务的同时学到了训练数据的主元子空间。当然,编码器函数也可以是非线性的,此时我们到了训练数据的主元子空间。当然,编码器函数也可以是非线性的,此时我们可以得到更为强大的可以得到更为强大的PCAPCA非线性推广。但是,注意,如果我们赋予了编码器与解非线性推广。但是,注意,如果我们赋予了编码器与解码器过大的容量,那么此时它们将起不到任何抽取数据特征的作用,只会单纯码器过大的容量,那么此时它们将起不到任何抽取数据特征的作用,只会单纯地执行复制任务。所以,这也告诉了我们不能仅仅一味地追求损失函数所体现地执
18、行复制任务。所以,这也告诉了我们不能仅仅一味地追求损失函数所体现的性能,还应考虑与此同时对于模型究竟发生了什么。的性能,还应考虑与此同时对于模型究竟发生了什么。作为一个特殊的多层感知机,从理论上讲自编码器是可以通过反向传播算法来作为一个特殊的多层感知机,从理论上讲自编码器是可以通过反向传播算法来学习权重与偏置的。但是由于之前所提到的局部极小值的存在,一个深层的自学习权重与偏置的。但是由于之前所提到的局部极小值的存在,一个深层的自编码器如果仅仅采用反向传播算法来学习,结果常常是不稳定的,甚至是不收编码器如果仅仅采用反向传播算法来学习,结果常常是不稳定的,甚至是不收敛的。所以,在实际的应用当中往往
19、使用两个阶段方法来训练自编码器,即无敛的。所以,在实际的应用当中往往使用两个阶段方法来训练自编码器,即无监督预训练与有监督调优。监督预训练与有监督调优。8.2.2 8.2.2 稀疏自编码器稀疏自编码器理想情况下,根据要建模的数据分布的复杂性,选择合适的编码维数和编码理想情况下,根据要建模的数据分布的复杂性,选择合适的编码维数和编码器、解码器容量,就可以成功训练任意架构的自编码器。如何控制模型的容量呢,器、解码器容量,就可以成功训练任意架构的自编码器。如何控制模型的容量呢,我们之前介绍过,当我们为模型增加了相应的约束项之后,就可以制约模型的容我们之前介绍过,当我们为模型增加了相应的约束项之后,就
20、可以制约模型的容量。换句话说,具有正则化能力的自编码器实现了这样的功能。正则自编码器使量。换句话说,具有正则化能力的自编码器实现了这样的功能。正则自编码器使用的损失函数可以鼓励模型学习其他特性,而不必限制使用浅层的编码器和解码用的损失函数可以鼓励模型学习其他特性,而不必限制使用浅层的编码器和解码器以及小的编码维数来限制模型的容量。器以及小的编码维数来限制模型的容量。我们使用稀疏自编码器的目的一般是用来学习特征,以便用于类似于分类的我们使用稀疏自编码器的目的一般是用来学习特征,以便用于类似于分类的任务。稀疏正则化的自编码器必须反映训练数据集的独特统计特征,而不是简单任务。稀疏正则化的自编码器必须
21、反映训练数据集的独特统计特征,而不是简单地充当恒等函数。以这种方式训练,执行附带稀疏惩罚的复制任务可以得到能学地充当恒等函数。以这种方式训练,执行附带稀疏惩罚的复制任务可以得到能学习有用特征的模型。习有用特征的模型。为了能够对自编码器进行约束,稀自编码器在模型的损失函数中加入了稀疏为了能够对自编码器进行约束,稀自编码器在模型的损失函数中加入了稀疏惩罚项,这样我们得到了重构误差惩罚项,这样我们得到了重构误差 ,L x g f xh我们可以认为整个稀疏自编码器框架是对带有潜变量的生成模型的近似最大似然我们可以认为整个稀疏自编码器框架是对带有潜变量的生成模型的近似最大似然训练,而不将稀疏惩罚视为复制
22、任务的正则化。训练,而不将稀疏惩罚视为复制任务的正则化。8.2.3 8.2.3 降噪自编码器降噪自编码器降噪自编码器(降噪自编码器(DenoisingDenoising AutoencoderAutoencoder,DAE DAE)是一类接受损坏数据作为)是一类接受损坏数据作为输入,并训练来预测原始未被损坏数据作为输出的自编码器。具体的做法是,输入,并训练来预测原始未被损坏数据作为输出的自编码器。具体的做法是,在输入数据中增加一定的噪声对自编码器进行学习训练,使其产生抗噪能力,在输入数据中增加一定的噪声对自编码器进行学习训练,使其产生抗噪能力,从而获得更加鲁棒的数据重构效果。假设从而获得更加鲁
23、棒的数据重构效果。假设 X X是无噪声原始输入,降噪自编码是无噪声原始输入,降噪自编码器首先利用随机映射把原始数据加入噪声侵蚀,再将带噪声的样本器首先利用随机映射把原始数据加入噪声侵蚀,再将带噪声的样本X X 作为输作为输入,以入,以 X X作为输出,对自编码器进行学习训练,原理如图作为输出,对自编码器进行学习训练,原理如图深度信念网络(深度信念网络(Deep Belief Network,DBN)是一种深度学习的生成模型,它可)是一种深度学习的生成模型,它可以通过受限玻尔兹曼机的堆叠来构造。深层信念网络既可以用来对数据的概率分以通过受限玻尔兹曼机的堆叠来构造。深层信念网络既可以用来对数据的概
24、率分布进行建模,也可以用来实现对数据进行分类。通常,深度信念网络作为生成模布进行建模,也可以用来实现对数据进行分类。通常,深度信念网络作为生成模型的学习过程可以分为两个阶段,先用受限玻尔兹曼机进行逐层预训练,再使用型的学习过程可以分为两个阶段,先用受限玻尔兹曼机进行逐层预训练,再使用睡醒算法调优。当模型作为判别模型的时候,深层信念网络在经过受限玻尔兹曼睡醒算法调优。当模型作为判别模型的时候,深层信念网络在经过受限玻尔兹曼机的逐层与训练之后,再使用反向传播算法进行调优。机的逐层与训练之后,再使用反向传播算法进行调优。8.3深度信念网络深度信念网络深度信念网络是具有若干潜变量层的生成模型。潜变量通
25、常是二值的,而可深度信念网络是具有若干潜变量层的生成模型。潜变量通常是二值的,而可见单元可以是二值或实数。尽管构造连接比较稀疏的见单元可以是二值或实数。尽管构造连接比较稀疏的DBN DBN 是可能的,但在一般是可能的,但在一般的模型中,每层的每个单元连接到每个相邻层中的每个单元(没有层内连接)的模型中,每层的每个单元连接到每个相邻层中的每个单元(没有层内连接)。顶部两层之间的连接是无向的。而所有其他层之间的连接是有向的,箭头指。顶部两层之间的连接是无向的。而所有其他层之间的连接是有向的,箭头指向最接近数据的层。从数学上看,深层新年网络是一个混合图模型,其中既包向最接近数据的层。从数学上看,深层
26、新年网络是一个混合图模型,其中既包含无向部分,又包含有向部分,如图含无向部分,又包含有向部分,如图 在了解了模型的基本结构之后,我们需要开始训练模型。利用深层信念网络在了解了模型的基本结构之后,我们需要开始训练模型。利用深层信念网络学习样本的概率分布称为生成学习。和我们之前所介绍的自编码器学习算法类似,学习样本的概率分布称为生成学习。和我们之前所介绍的自编码器学习算法类似,深度信念网络的训练过程分为两个阶段,即无监督预训练过程与参数调优过程。深度信念网络的训练过程分为两个阶段,即无监督预训练过程与参数调优过程。对于无监督预训练阶段,和自编码器学习算法类似,把相邻两层看作是受限对于无监督预训练阶
27、段,和自编码器学习算法类似,把相邻两层看作是受限玻尔兹曼机,进行逐层训练。玻尔兹曼机,进行逐层训练。在参数调优阶段,我们使用上下算法对所有网络参数调优。在参数调优阶段,我们使用上下算法对所有网络参数调优。在醒阶段,模型反复使用识别权值和识别偏置估计生成权值和生成偏置;在睡阶在醒阶段,模型反复使用识别权值和识别偏置估计生成权值和生成偏置;在睡阶段,模型则反复使用生成权值和生成偏置估计识别权值和识别偏置。从图里不难段,模型则反复使用生成权值和生成偏置估计识别权值和识别偏置。从图里不难看出,醒阶段是一个由上至下的过程,其作用是根据估算识别权值和识别偏置调看出,醒阶段是一个由上至下的过程,其作用是根据
28、估算识别权值和识别偏置调整整体网络的生成权值和生成偏置,关于醒阶段的算法,如图整整体网络的生成权值和生成偏置,关于醒阶段的算法,如图当作为判别模型的时候,深度信念网络的学习当作为判别模型的时候,深度信念网络的学习过程像是我们之前所介绍的自编码器,先使用过程像是我们之前所介绍的自编码器,先使用受限玻尔兹曼机进行逐层无监督预训练,再使受限玻尔兹曼机进行逐层无监督预训练,再使用反向传播算法进行有监督调优。具体过程如用反向传播算法进行有监督调优。具体过程如图图8.188.18所示。在无监督训练阶段,从可视层到所示。在无监督训练阶段,从可视层到第第r-1r-1隐含层,深度信念网络的相邻两层被看作隐含层,
29、深度信念网络的相邻两层被看作一个受限玻尔兹曼机,并利用相应算法进行训一个受限玻尔兹曼机,并利用相应算法进行训练。对于联想记忆部分,可以被看成是一个分练。对于联想记忆部分,可以被看成是一个分类受限玻尔兹曼机,标签层和第类受限玻尔兹曼机,标签层和第r-1r-1隐含层可以隐含层可以看成可视层,隐含层就是深度信念网络的第看成可视层,隐含层就是深度信念网络的第r r隐隐含层。含层。模型的深度越深,模型越可能学习到更多有关数据的细节特征,那么我们如何在模型的深度越深,模型越可能学习到更多有关数据的细节特征,那么我们如何在追求较深的模型深度的同时克服上述问题呢,此时残差神经网络(追求较深的模型深度的同时克服
30、上述问题呢,此时残差神经网络(Residual Residual Neural NetworkNeural Network,ResNetResNet)被提出。)被提出。ResNetResNet由微软研究院的由微软研究院的KaimingKaiming He He等四名华等四名华人提出,通过使用人提出,通过使用ResNetResNet Unit Unit成功训练出了成功训练出了152152层的神经网络,并在层的神经网络,并在ILSVRC2015ILSVRC2015比赛中取得冠军,在比赛中取得冠军,在top5top5上的错误率为上的错误率为3.57%3.57%,同时参数量比,同时参数量比VGGNet
31、VGGNet低,效果非低,效果非常突出。常突出。8.4 残差神经网络残差神经网络由于许多数据其本身是十分复杂的,因此随着模型深度增加,过拟合现由于许多数据其本身是十分复杂的,因此随着模型深度增加,过拟合现象并不是约束模型深度的主要因素,主要的约束因素还是由梯度所引发象并不是约束模型深度的主要因素,主要的约束因素还是由梯度所引发的一些列问题,如梯度的消失与爆炸。的一些列问题,如梯度的消失与爆炸。现在,我们考虑在很深的模型上恢复浅层模型的结构,即添加恒等映射,现在,我们考虑在很深的模型上恢复浅层模型的结构,即添加恒等映射,将浅层模型的结果复制到其他层,这种结构可以缓解由于深度增加而使将浅层模型的结
32、果复制到其他层,这种结构可以缓解由于深度增加而使模型性能下降的问题。模型性能下降的问题。20ResNet20ResNet连接示意图连接示意图W当将残差神经网络应用于卷积神经网络时,模型设计的原则如下:当将残差神经网络应用于卷积神经网络时,模型设计的原则如下:对于输出特征图大小相同的层,有相同数量的滤波器,即通道数量数相同对于输出特征图大小相同的层,有相同数量的滤波器,即通道数量数相同;当特征图大小由于池化操作而减半时,滤波器的数量翻倍。当特征图大小由于池化操作而减半时,滤波器的数量翻倍。当维度不匹配时,同等映射有两种可选方案:当维度不匹配时,同等映射有两种可选方案:通过补零的方法,维持数据维数
33、的不变;通过补零的方法,维持数据维数的不变;通过乘以权值矩阵通过乘以权值矩阵 的方式,将矩阵投影至新的矩阵空间以增加维度。的方式,将矩阵投影至新的矩阵空间以增加维度。ResNetResNet连接示意图连接示意图在传统的深度学习模型当中,每一个神经元的输入输出均为标量,而在胶囊神经在传统的深度学习模型当中,每一个神经元的输入输出均为标量,而在胶囊神经网络中,每一个神经元被替换为一个小网络中,每一个神经元被替换为一个小“胶囊胶囊”,这个,这个“胶囊胶囊”变为了一个向量。变为了一个向量。它可包含任意个值,每个值代表了当前需要识别的物体(比如图片)的一个特征。它可包含任意个值,每个值代表了当前需要识别
34、的物体(比如图片)的一个特征。由于神经元被替换为了向量形式的表示,所以它可以增加对特征之间相对位置关由于神经元被替换为了向量形式的表示,所以它可以增加对特征之间相对位置关系的表示,如此便能学习特征之间相对关系。系的表示,如此便能学习特征之间相对关系。8.5 胶囊神经网络胶囊神经网络胶囊网络和全连接网络的连接方式一模一样。前一层每一个胶囊神经单元都会和胶囊网络和全连接网络的连接方式一模一样。前一层每一个胶囊神经单元都会和后一层每一个胶囊神经单元相连。如图所示。需要注意的是,图中为了表示清晰,后一层每一个胶囊神经单元相连。如图所示。需要注意的是,图中为了表示清晰,而画出了部分连接线,实际上应该是全
35、连接的。而画出了部分连接线,实际上应该是全连接的。CapsNetCapsNet连接示意图连接示意图我们之前介绍了许多激活函数,在胶囊神经网络当中一种新的激活函数被提我们之前介绍了许多激活函数,在胶囊神经网络当中一种新的激活函数被提出,即出,即SquashingSquashing激活函数。所以胶囊神经元的输入输出关系为:激活函数。所以胶囊神经元的输入输出关系为:221jjjjjssvss我们为什么要分成两部分来写这个表达式,因为这样可以让我们清楚的看出关系我们为什么要分成两部分来写这个表达式,因为这样可以让我们清楚的看出关系式的组成。该激活函数前一部分是输入输入向量式的组成。该激活函数前一部分是
36、输入输入向量s s的缩放尺度,后一部分是的缩放尺度,后一部分是s s的单的单位向量。该激活函数既保留了输入输入向量的方向,又将输入向量的模压缩到位向量。该激活函数既保留了输入输入向量的方向,又将输入向量的模压缩到0,1)0,1)之间。这也符合了我们所了解的:用向量模的大小衡量某个实体出现的概之间。这也符合了我们所了解的:用向量模的大小衡量某个实体出现的概率,模值越大,概率越大。率,模值越大,概率越大。与以往与以往CNNCNN不同的是,胶囊神经网络使用动态路由的方法来更新模型参数。前面不同的是,胶囊神经网络使用动态路由的方法来更新模型参数。前面我们的我们的b b初始化为初始化为0 0,得到的耦合
37、系数,得到的耦合系数c c趋于一般化,并不能表现出前一层的胶囊趋于一般化,并不能表现出前一层的胶囊和后一层胶囊的之间的关系。故我们需要更新和后一层胶囊的之间的关系。故我们需要更新b b,通过,通过b b的更新来更新的更新来更新c.c.ijijjjibbu v 对于为什么可以用对于为什么可以用 b b的更新来更新的更新来更新c c ,我们可以这样理解。点积运算接收两,我们可以这样理解。点积运算接收两个向量,并输出一个标量。对于给定长度但方向不同的两个向量而言,点积有个向量,并输出一个标量。对于给定长度但方向不同的两个向量而言,点积有下列几种情况:正值、零、负值。故当下列几种情况:正值、零、负值。
38、故当 u u和和v v 的相乘结果为正时,代表两个向的相乘结果为正时,代表两个向量指向的方向相似,量指向的方向相似,b b 更新结果变大,那么耦合系数就高,说明该更新结果变大,那么耦合系数就高,说明该 u u和和 v v十分十分匹配。相反,若是匹配。相反,若是u u 和和v v 相乘结果为负,相乘结果为负,b b更新结果变小,那么耦合系数就小,更新结果变小,那么耦合系数就小,说明不匹配。通过迭代确定说明不匹配。通过迭代确定 c c,也就等于确定了一条路线,这条路线上胶囊神,也就等于确定了一条路线,这条路线上胶囊神经元的模都特别大,路线的尽头就是那个正确预测的胶囊。经元的模都特别大,路线的尽头就是那个正确预测的胶囊。除了耦合系数除了耦合系数 c c是通过动态路由更新的,整个网络其他的卷积参数和胶囊是通过动态路由更新的,整个网络其他的卷积参数和胶囊神经网络内的神经网络内的 W W都需要根据损失函数进行更新。都需要根据损失函数进行更新。22max 0,1max 0,cccccLTmvTvm