【神经网络分类器】(三)深度学习发展史——从深度信念网络到AlexNet

在这里插入图片描述

深度学习发展史——从深度信念网络到AlexNet

【神经网络分类器】(一)人工神经元网络的基本概念
【神经网络分类器】(二)浅层神经网络


在这里插入图片描述

自 1986 年 Rumelhart 和 Hinton 等人提出 BP 网络以来,多层的人工神经网络终于有了有效的训练方法,也带来了人工神经网络研究的又一次繁荣。但是好景不长,由于 BP 网络本身具有的一些缺陷,包括收敛速度慢、容易陷入局部最优解、梯度消失等问题,导致它无法用于训练层数太深的神经网络,也就限制了人工神经网络的规模和功能。特别是 1995 年以来支持向量机(SVM)算法的成功,给了模式识别和机器学习新的选择,导致人工神经网络研究再次陷入低谷。这一状况一直持续到 2006 年,Geoffrey Hinton 等人发表了一篇以“深度信念网(Deep Belief Nets)”的高效训练算法为主题的重要论文,才引发了人工神经网络新一轮的发展热潮。因为此次研究热潮主要围绕如何有效训练具有相当深度的人工神经网络,所以,又被 Hinton 等人命名为“深度学习”。

1 深度学习的特点

深度学习是人工神经网络,但它与 BP 网络等浅层神经网络有较大的区别,它的主要特点包括:

  • (1) 深度学习一定是层数较多的大规模神经网络,只有这样的网络,才能实现非常复杂的非线性多分类映射关系,体现出一定的智能特性,同时,也只有这样的深层网络,才会遇到训练上的难题,需要新的算法来加以解决;

  • (2) 深度学习的多层次网络结构,从本质上来说,是对原始数据集中所蕴含的样本特性进行逐层抽象,不断发现高层的特征,也不断减少特征的维数,才能在简单单元(也就是神经元)的基础上实现复杂的整体系统功能;

  • (3) 因为深度学习的神经网络规模大,神经元数量多,因此,只有大规模并行计算的软硬件条件都具备了,才能支撑起深度学习的神经网络,这也不难解释,为什么只有在近 10 年左右,深度学习发展才能够突飞猛进,这和以 GPU 应用为标志的大规模并行计算能力的快速发展是密不可分的;

  • (4) 从结构风险最小化准则来说,要提升一个模式识别系统的泛化能力,或者是要减少分类器的 VC 维,或者是要增大训练样本集的容量,支持向量机因为采用了 VC 维最低的线性分类器形式,所以只需少量样本,就能够得到很好的泛化能力;而深度学习网络,本质上是一个非常非常复杂的非线性系统,因此,其 VC 维也非常非常高,要降低结构风险,就一定要使用非常巨大的训练集,并确保训练集上的经验风险足够小。因此,深度学习的实现,需要大量的样本来进行训练,这也只有在大数据的采集、存储和访问技术发达之后,才具备相应的条件。这再次解释了为什么只有在近10 年,深度学习才开始开花结果,并且能力最强的深度学习系统,都诞生于既拥有强大算力、又拥有海量数据的 IT 企业之中,谷歌公司就是一个典型的例子。

2 深度信念网络

2.1 深度信念网络的结构

深度信念网是基于受限玻尔兹曼机的一种深度人工神经网络,因此,首先要了解一下玻尔兹曼机。

玻尔兹曼机是一种存在全互联的概率型神经网络模型,由 Hinton 在 1985 年提出。玻尔兹曼机中,每个神经元的输出不是以输入和神经元模型为依据的确定值,而是是以净激励为变量的概率分布, P ( y = 1 ) P(y=1) P(y=1)的概率为
P ( y = 1 ) = 1 1 + e − u / T P(y=1)=\frac{1}{1+e^{-u/T}} P(y=1)=1+eu/T1

波尔兹曼机最终学习的结果,是使得网络的输入输出联合概率分布,与训练集样本的输入输出联合概率分布最为接近,即使得网络记住了训练集中样本的类别分布

由于玻尔兹曼机是一个全互联的神经网络,所以,当前和历史时刻的各个神经元输入输出会互相影响,使得整个网络的状态会进行不断更新演化,才能够达到一种稳态。

因此,由玻尔兹曼机构成的神经网络是无法逐层进行训练的。这在实践应用中非常不便,于是 Hinton 又于 2002 年提出了受限玻尔兹曼机,即取消了同层神经元之间的互联,只保留了显见神经元与隐见神经元之间的双向连接

这样,受限玻尔兹曼机就变成了一种分为可见层和隐层的两层神经网络,而当隐见神经元有多层时,就可以看作是一个由多个受限玻尔兹曼机堆叠而成的深度神经网络,称为深度信念网
在这里插入图片描述

Hinton 所提出的深度信念网的训练,针对的是 BP 网络在层数较多,即有一定深度时所面临的收敛速度慢和容易陷入局部最优解的问题。Hinton 认为,导致这两个问题的原因,都是由于网络初始的权向量设定过于随机,导致使用训练集进行有监督训练时,很难快速收敛到全局最优解上。

因此,Hinton 提出的深度信念网的训练方法,采用了有监督学习和无监督学习相结合的模式,即:

  • (1)首先使用无监督学习模式,逐层对网络进行预训练,使得网络能够发现数据本身中蕴含的特征概率分布结构,即将各神经元的权值引导到对训练集数据具有最佳特征发现能力的初始值上,这一步是深度信念网最主要的训练过程,所使用的是被称为“对比散度法”的概率学习算法;

  • (2)在预训练完成后,需要对网络参数进行调优。调优可以继续采用无监督的“wake-sleep”算法,这样得到的模型是一个能够重现训练集样本数据的“生成模型”;也可以使用有类别标签的数据,采用联合训练,或者 BP算法来对网络参数进行调整,以得到一个性能优越的分类器模型。

2.2 深度信念网络的训练

下面我们来看看深度信念网是如何通过预训练和调优这两个环节来实现深度神经网络的训练的。

首先是无监督的预训练环节。我们已经知道,深度信念网可以看作是由一层层的受限玻尔兹曼机堆叠而成的。

而深度信念网的预训练,采用的是逐层贪心法的训练办法。也就是说,先训练最靠近可见层的一层隐层,得到最优解后,再将该隐层的输出作为训练集数据,用于训练下一个隐层

因此,深度信念网预训练算法的核心,是如何训练一个由可见层(或输出已知的隐层)与相连的隐层构成的一个受限玻尔兹曼机。对此,Hinton 在 2002 年就提出了有效的训练算法,称为“对比散度算法”。

受限玻尔兹曼机是一个概率神经网络模型,其中一个神经元的输出或者为 0,或者为 1,当其为 1 的概率分布符合 Sigmoid 函数形式。即:
P ( y = 1 ) = 1 1 + e − u P(y=1)=\frac{1}{1+e^{-u}} P(y=1)=1+eu1

u u u 为一个神经元所有输入的加权和在减去偏置量 θ θ θ
u = w T x − θ u=w^Tx-\theta u=wTxθ
在这里插入图片描述

因此,对于受限玻尔兹曼机的一个隐见神经元,它的输出 h j h_j hj为在所有显见神经元输出 v v v下的条件概率:
P ( h j = 1 ∣ v ) = 1 1 + e − ( ∑ j = 1 N w i j T v i − b i ) P(h_j=1|v)=\frac{1}{1+e^{-(\sum_{j=1}^Nw^T_{ij}v_i-b_i)}} P(hj=1v)=1+e(j=1NwijTvibi)1

由于受限玻尔兹曼机是一个层双向连接的网络,所以显见神经元的输出,也可以用所有隐见神经元输出下的条件概率来表示,即:

P ( v j = 1 ∣ h ) = 1 1 + e − ( ∑ j = 1 M w i j T h i − c i ) P(v_j=1|h)=\frac{1}{1+e^{-(\sum_{j=1}^Mw^T_{ij}h_i-c_i)}} P(vj=1h)=1+e(j=1MwijThici)1

其中: N N N 是隐层神经元的个数, M M M 是显层神经元的个数, w i j w_{ij} wij是显层神经元 v i v_i vi和隐层神经元 h j h_j hj 之间的连接权值,它是双向共享的, b j b_j bj 是隐层神经元的输出偏置量, c i c_i ci 是显层神经元的输出偏置量。

如果把从从显层到隐层的神经元状态更新看作是特征提取,也就是对客观事物的认知的话,那么从隐层逆向对显层的神经元状态更新则可看作是生成显层数据,也就是重构输入的过程。
在这里插入图片描述

  • 如果重构的显层数据与训练集输入的数据在概率分布上非常接近,则证明两层之间的连接权值很好,从显层到隐层的映射捕捉住了显层输入数据最关键的特征

  • 如果重构的显层数据与训练集输入的数据在概率分布上存在较大差异,则可按照能最快缩小差异的负梯度方向去调整权值和偏置量,使得网络的参数得以优化。

这就是对比散度算法的基本原理。

为什么这一算法称为“对比散度”算法呢?是因为 Hinton 在算法中使用 KL散度度量两个概率分布之间的相似程度,并以此为基础推导了使得 KL 散度能取得极小值的神经元参数调整公式。
在这里插入图片描述

对比散度学习算法的具体流程是:
在这里插入图片描述
权值矩阵:
Δ W = η [ P ( h ( 0 ) = 1 ∣ v ( 0 ) ) ( v ( 0 ) ) T − P ( h ( t + 1 ) = 1 ∣ v ( t + 1 ) ) ( v ( t + 1 ) ) T ] \Delta W=\eta\left[P\left(h^{(0)}=1 \mid v^{(0)}\right)\left(v^{(0)}\right)^{T}-P\left(h^{(t+1)}=1 \mid v^{(t+1)}\right)\left(v^{(t+1)}\right)^{T}\right] ΔW=η[P(h(0)=1v(0))(v(0))TP(h(t+1)=1v(t+1))(v(t+1))T]
隐见层偏置向量:
Δ b = η [ P ( h ( 0 ) = 1 ∣ v ( 0 ) ) − P ( h ( t + 1 ) = 1 ∣ v ( t + 1 ) ) ] \Delta b=\eta\left[P\left(h^{(0)}=1 \mid v^{(0)}\right)-P\left(h^{(t+1)}=1 \mid v^{(t+1)}\right)\right] Δb=η[P(h(0)=1v(0))P(h(t+1)=1v(t+1))]
显见层偏置向量
Δ c = η [ v ( 0 ) − v ( t + 1 ) ] \Delta c=\eta\left[v^{(0)}-v^{(t+1)}\right] Δc=η[v(0)v(t+1)]

需要特别提醒的是:这只是随机梯度下降法迭代修正权向量和偏置量的一次迭代过程,还需要用样本集中所有样本重复进行迭代计算,直到真实的样本分布和重构的样本分布之间的 KL 散度小于给定的误差范围为止。

由此我们可以发现,对比散度算法是一种非常快速的无监督学习算法,它通过反复的认知-生成过程,去使得网络能够很好地发现训练集中最关键的特征,并将其映射到隐层的输出上。因此隐层又被称为“特征提取器”。

当训练完深度信念网中的一层受限玻尔兹曼机,则可以固定其参数,并将显层输入数据生成的隐层输出状态作为下一层受限玻尔兹曼机的显层输入,进行下一层的训练。这样逐层完成所有层的预训练。此时,就得到了整个网络的参数预设值。

深度信念网的预训练算法,为具有相当多层级和成千上万个神经元的大规模深度神经网络的训练开辟了一条有效路径,使得训练集样本的关键特征被一层层挖掘出来,也使得整个网络的参数被设置到了最优参数的附近。但此时,还需要对参数进行调优,才能保证获得一个优质的深度神经网络模型。

调优的过程,根据任务的不同,有不同的方法,我们简单介绍几种:
(1)Wake-Sleep 算法

把除最顶部的两层外,其他各层的两个方向的权值分离开来,分别称为自上而下的“生成权值”和自下而上的“认知权值”。只有生成权值是模型的一部分,而认知权值在模型训练结束后即被消去。

Wake-Sleep 算法调优仍然采用无监督学习模式,分为两个相对的阶段:
Wake 阶段,也就是苏醒阶段,此时通过显见层输入的样本数据,利用认知权值,逐步得到各个隐层的神经元状态,再反过来采用梯度法对各层的生成权值进行修正,使得能够以最大概率产生认知时获得的神经元状态。对此,Hinton有一个有趣的说法,就是这就像是人在清醒时看到外界的事物,然后就修正自己对它的观念,使自己根据观念能够得到的一个假想的样本,和外界的客观事物最为相似,这样才算真正的完成了认知过程;也就是“如果现实跟我想象的不一样,改变我的权重使得我想象的东西就是这样的”;

Sleep 阶段,也就是睡眠阶段,此时通过最顶层的受限玻尔兹曼机,先产生一个随机的先验概率分布,然后以生成权值为基础,逐层得到各层的状态,一直到显见层为止,然后反过来采用梯度法对各层的认知权值进行修正,使得能够以最大概率产生生成时获得的各层神经元状态。对此,Hinton 也认为,就像人在没有任何外界刺激的情况下在睡眠中做梦,然后通过调整自己对事物的认知模型,使得梦里的事物看起来最逼真。也就是“如果梦中的景象不是我脑中的相应概念,改变我的认知权重使得这种景象在我看来就是这个概念”;

反复进行 Wake-Sleep,就能够在无监督的条件下对网络的参数进行调优。
(2)联合训练算法
如果要把深度信念网做成一个分类器,那么,就一定要增加用于输出分类结果的显见神经元,并通过有监督学习,使其能够对样本输入输出正确的类别。一种采用与预训练时相同的算法进行有监督学习的方法是联合训练,即在预训练最后一层受限玻尔兹曼机时,对倒数第 2 层添加一组代表样本类别的神经元 y y y
在这里插入图片描述

每个神经元仅当样本属于对应类别时输出 1,否则输出 0。然后通过训练,使得作为输出层的最后一个隐层的输出概率分布能够逼近样本集特征向量和类别标签之间的联合概率分布,实现分类器的正确输出。
(3)BP 算法
如果对标准的深度信念网进行训练后,得到了一个生成模型,那么可以在最后一层隐层之后,再加入一层输出的显见层,将提取到最优特征的隐层输出,映射为不同的分类结果输出。此时,可以采用已有的 BP 算法来对网络参数进行调优。由于整个网络已经经过了预训练,每层神经元的参数都经过了目标明确的最优初始化,并且网络可以逐层提取出样本数据中最有效的特征信息,因此 BP 算法调优的过程不仅速度会很快,而且很容易获得全局最优解。

3 卷积神经网络——从神经感知机到AlexNet

深度信念网首次提出了解决“深度”训练问题的有效方法,并且在手写数字识别等问题的测试上取得了比支持向量机更好的结果。但是这个方法在图像识别这样的模式识别最重要的应用领域中,却显得并不十分优秀,特别是对高分辨率和颜色丰富的图像识别存在很大的缺陷,其原因在于以下几点:

  • (1) 深度信念网的输入是一维向量,而图像的输入是二维矩阵。如果硬将二维矩阵展开为一维向量进行输入,不仅维度会剧增,而且丧失了图像像素在二维空间中的信息相关性;

  • (2)深度信念网在层与层之间,采用了全连接的方式,这使得网络的连接权值数量太多,网络的参数调整非常复杂;

  • (3)深度信念网的组成单元是受限玻尔兹曼机,而受限玻尔兹曼机是一个双向连接的模型,预训练时需要反复进行认知-重构的循环,虽然 Hinton 的对比散度算法大大提高了算法的效率,但还是太慢了;

说实话,这些缺陷其实不应该算是深度信念网本质上的缺陷,而是这种深度神经网络模型对图像识别任务不适配,所以,如何设计一个深度的神经网络模型来更好地解决图像识别问题,就成为许多研究者重点研究的方向。卷积神经网络就是这一问题最有代表性的一种的解决方案。

卷积神经网络的思想来源是神经生理学中的局部感受野概念。

感受野(receptive field)是指神经系统的输入刺激中,能够引起神经元响应的一个区域。1959 年,哈佛医学院的神经生理学家 Hubel 和 Wiesel 在研究猫的视觉神经系统过程中,发现单个的视细胞只对一个很小区域内的光刺激有响应。在随后的研究中,他们发现视神经细胞的感受野相互重叠,并且具有侧抑制机制,正是这些对局部感受野(Local Receptive Field)的响应和侧抑制机制,使得视网膜能够对物体图像的边缘等信息产生强化的响应,即发现物体轮廓等关键信息

同时,他们还发现视神经系统是分层的,上一层视神经细胞在刺激下产生的输出,会传递到下一层视神经细胞,同样以局部感受野的形式在下一层产生刺激,使得视觉信息能够逐层进行抽象,最终形成有效的视觉认知结果。Hubel 和 Wiesel也因为在视觉神经系统研究上做出的重要贡献,获得了 1981 年的诺贝尔生理学或医学奖。
在这里插入图片描述

既然局部感受野能够带来视觉神经系统的良好功能,很自然的,人工神经网络的研究者试图把这种视神经系统的分层结构和局部感受野概念引入人工神经网络的设计中,去完成图像识别领域的模式识别任务。这一努力最早的实现是福岛邦彦(Kunihiko Fukushima)于 1980 年提出的神经感知机(Neocognitron)模型
在这里插入图片描述

神经感知机模拟了视觉神经系统的结构和功能,是一个具有多个隐层的深度神经网络,它由 S 层(Simple-layer)和 C 层(Complex-layer)交替构成。其中S 层单元在局部感受野内对图像特征进行提取,C 层单元接收和响应不同感受野返回的相同特征,因此 S 层-C 层的组合事实上完成了特征生成和特征选择的功能,与当前卷积神经网络中卷积层(convolution layer)和池化层(pooling layer)有异曲同工之妙,均通过对图像局部区域的逐层映射变换,不断提取出高层的特征,最终完成识别任务。神经感知机逐层特征提取是通过一个小的正方形像素单元 Masker 来完成的,采用 Autocorrelation 算法,即计算原始图像中局部区域与Masker 的交叉相关值(crose-correlation),这与卷积操作已经非常相似了。

神经感知机在特征提取层,使用了无监督的竞争学习方式,在输出层使用有监督学习。其首先应用于手写数字的识别,并取得了不错的效果,也开创了卷积神经网络这一深度学习重要模型的发展之路。

1986 年,Rumelhart 和 Hinton 等人提出了 BP 算法,这是首个以误差反馈学习规则来训练多层神经网络的有效方法。1989 年,在前人工作的基础上,杨立昆 Yann LeCun 结合局部感受野逐层特征提取和误差反向传播算法,提出了最初的 LeNet 卷积神经网络模型,并成功应用于信封邮政编码的手写数字识别,达到了约 90%的正确率。
在这里插入图片描述

最初的 LeNet 模型包含 3 个隐含层,前两层是卷积层,第三个隐层是全连接层,最后的输出层也是全连接层。这一模型坚持了局部感受野的思想,使用卷积操作来逐层提取特征,卷积层的两层神经元之间不是全连接,而是局部连接,并且建立了包含多个隐层的有一定深度的神经网络,同时以最小均方误差为损失函数,通过梯度下降法和误差反向传播算法来实现网络参数的有监督学习。LeNet还用双曲正切函数tanh代替 Sigmoid 函数作为每层神经元的激活函数,取得了更好的效果。

虽然 LeNet 没有包含当前常见卷积神经网络模型的全部要素,但是提出了一些非常重要的概念,并成为当前卷积神经网络模型的基础。这些概念包括:权值共享(weight sharing),就是在同一层使用同一个卷积核进行特征提取,即两层之间神经元的连接权值是公共的,这大量减少了需要学习的网络参数的数量;特征图(feature map),就是在两层之间可以采用多个不同的卷积核同时进行卷积操作,以针对不同类型的特征进行提取,每个卷积核对原图像进行遍历卷积后,就得到了一个新的二维图像,也就是提取出的对应的特征的图像,称为特征图随机梯度法(SGD),这也是首次在深度神经网络的训练中使用,并已成为训练深度神经网络的标准算法。

在这里插入图片描述

LeNet-5 是 Yann LeCun 于 1998 年提出的改进的 LeNet,它最重要的是在卷积层之间增加了池化(Pooling)层,不仅可以降低特征的维度,而且还能增强系统对平移变换的特征不变性。而最后的两层为全连接层和使用径向基激活函数的输出层,共同构成了一个性能良好的分类器。至此,LeNet-5 基本具备了当前主流卷积神经网络的所有要素,并且在手写数字识别训练集 MNIST 上的正确率高达 99%以上,在美国一些银行的支票手写数字识别上也得到了成功的应用。

但是 LeNet-5 的局部成功,还没能引起学术界和社会公众的普遍关注,一直到 2012 年 AlexNet 在 ImageNet 图像识别大赛中大显身手为止。
在这里插入图片描述

Alex Krizhevsky 是 Hinton 的研究生,他在 Hinton 的指导和支持下,设计了一个卷积神经网络 AlexNet,在 2012 年的 ImageNet 图像识别大赛中夺得冠军,并且 top-5 的错误率仅为 15.3%,大幅度领先第二名的 26.2%

AlexNet 的成功,不仅仅是因为他采用了对图像识别问题有先天适应性的卷积神经网络,而且在于他对 LeNet 等早期卷积神经网络进行了一系列的改进,形成了真正可用于解决实际模式识别问题的当代卷积神经网络技术,也成为以深度神经网络为核心的人工智能技术从学者的书斋走向大规模产业应用的转折点。

AlexNet 的深度更深,它有 5 个卷积层,其中一部分卷积层后面接着有池化层;然后是 3 个全连接层,其中最后一层是 softmax 输出层,共有 1000 个节点,对应 ImageNet 图集中 1000 个图像分类。

AlexNet 所采用的重要技术包括:

  • (1)ReLU 激活函数,可以有效避免 BP 算法中的梯度消失;
  • (2)dropout 机制,即在训练时,对全连接层随机的选择一部分神经元进行休眠,另外一些神经元参与网络的优化,即只有一部分特征会参与分类决策,可以大大降低网络过拟合的风险;
  • (3)GPU 加速,AlexNet 使用了 2 个 GPU 来完成网络的并行计算,大大提高了系统的性能。

参考:
[1] 中国大学mooc 人工智能之模式识别 高琪,李位星,冯肖雪, 北京理工大学

THE END.
感谢阅读。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

二进制人工智能

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值