大话深度信念网络(DBN)

—— 原文发布于本人的微信公众号“大数据与人工智能Lab”(BigdataAILab),欢迎关注。算法

 


让咱们把时间拨回到2006年之前,神经网络自20世纪50年代发展起来后,因其良好的非线性能力、泛化能力而备受关注。然而,传统的神经网络仍存在一些局限,在上个世纪90年代陷入衰落,主要有如下几个缘由:
一、传统的神经网络通常都是单隐层,最多两个隐层,由于一旦神经元个数太多、隐层太多,模型的参数数量迅速增加,模型训练的时间很是之久;
二、传统的神经网络,随着层数的增长,采用随机梯度降低的话通常很难找到最优解,容易陷入局部最优解。在反向传播过程当中也容易出现梯度弥散或梯度饱和的状况,致使模型结果不理想;
三、随着神经网络层数的增长,深度神经网络的模型参数不少,就要求在训练时须要有很大的标签数据,由于训练数据少的时候很难找到最优解,也就是说深度神经网络不具有解决小样本问题的能力。微信

因为以上的限制,深度的神经网络一度被认为是没法训练的,从而使神经网络的发展一度停滞不前。网络

2006年,“神经网络之父”Geoffrey Hinton祭出神器,一举解决了深层神经网络的训练问题,推进了深度学习的快速发展,开创了人工智能的新局面,使近几年来科技界涌现出了不少智能化产品,深深地影响了咱们每一个人的生活。框架

那这个神器是什么呢?那就是“深度信念网络”(Deep Belief Network,简称DBN)。分布式

深度信念网络(DBN)经过采用逐层训练的方式,解决了深层次神经网络的优化问题,经过逐层训练为整个网络赋予了较好的初始权值,使得网络只要通过微调就能够达到最优解。而在逐层训练的时候起到最重要做用的是“受限玻尔兹曼机”(Restricted Boltzmann Machines,简称RBM),为何叫“受限玻尔兹曼机”呢?由于还有一个是不受限的,那就是“玻尔兹曼机”(Boltzmann Machines,简称BM)
下面依次介绍一下什么是“玻尔兹曼机”(BM)、“受限玻尔兹曼机”(RBM)?ide

1、玻尔兹曼机(Boltzmann Machines,简称BM)
 
玻尔兹曼机于1986年由大神Hinton提出,是一种根植于统计力学的随机神经网络,这种网络中神经元只有两种状态(未激活、激活),用二进制0、1表示,状态的取值根据几率统计法则决定。
因为这种几率统计法则的表达形式与著名统计力学家L.E.Boltzmann提出的玻尔兹曼分布相似,故将这种网络取名为“玻尔兹曼机”。
在物理学上,玻尔兹曼分布(也称为吉布斯分布,Gibbs Distribution)是描述理想气体在受保守外力的做用(或保守外力的做用不可忽略)时,处于热平衡态下的气体分子按能量的分布规律。
在统计学习中,若是咱们将须要学习的模型当作高温物体,将学习的过程当作一个降温达到热平衡的过程(热平衡在物理学领域一般指温度在时间或空间上的稳定),最终模型的能量将会收敛为一个分布,在全局极小能量上下波动,这个过程称为“模拟退火”,其名字来自冶金学的专有名词“退火”,即将材料加热后再以必定的速度退火冷却,能够减小晶格中的缺陷,而模型能量收敛到的分布即为玻尔兹曼分布。
听起来很难理解的样子,只须要记住一个关键点:能量收敛到最小后,热平衡趋于稳定,也就是说,在能量最少的时候,网络最稳定,此时网络最优。函数

玻尔兹曼机(BM)是由随机神经元全链接组成的反馈神经网络,且对称链接,由可见层、隐层组成,BM能够看作是一个无向图,以下图所示:
 
其中,x一、x二、x3为可见层,x四、x五、x6为隐层。
整个能量函数定义为
 
其中,w为权重,b为偏置变量,x只有{0,1}两种状态。
根据玻尔兹曼分布,给出的一个系统在特定状态能量和系统温度下的几率分布,以下:
 
前面讲过,“能量收敛到最小后,热平衡趋于稳定”,所以:
一、简单粗暴法
要寻找一个变量使得整个网络的能量最小,一个简单(可是低效)的作法是选择一个变量,在其它变量保持不变的状况下,将这个变量设为会致使整个网络能量更低的状态。那么一个变量Xi的两个状态0(关闭)和1(打开)之间的能量差别为:
 
这时,若是能量差别ΔE大于必定的阈值(好比0),咱们就设Xi = 1(也即取能量小的),不然就设Xi = 0。这种简单的方法经过反复不断运行,在必定时间以后收敛到一个解(多是局部最优解)。
二、最大似然法
利用“模拟退火”原理寻找全局最优解,根据玻尔兹曼分布,Xi=1的几率为:
 
训练集v的对数似然函数为:
 
对每一个训练向量p(v)的对数似然对参数w求导数,获得梯度:
 
跟传统的神经网络相似,参数w的更新公式以下(a为学习率):
     
好了好了,公式就讲到这里了,看上去挺复杂的,没错,确实计算很复杂,这个梯度很难精确计算,整个计算过程会十分地耗时。
目前,能够经过一些采样方法(例如Gibbs采样)来进行近似求解。oop

玻尔兹曼机(BM)能够用在监督学习和无监督学习中。在监督学习中,可见变量又能够分为输入和输出变量,隐变量则隐式地描述了可见变量之间复杂的约束关系。在无监督学习中,隐变量能够看作是可见变量的内部特征表示,可以学习数据中复杂的规则。玻尔兹曼机代价是训练时间很长很长很长性能

2、受限玻尔兹曼机(Restricted Boltzmann Machines,简称RBM)
 
所谓“受限玻尔兹曼机”(RBM)就是对“玻尔兹曼机”(BM)进行简化,使玻尔兹曼机更容易更加简单使用,本来玻尔兹曼机的可见元和隐元之间是全链接的,并且隐元和隐元之间也是全链接的,这样就增长了计算量和计算难度。
“受限玻尔兹曼机”(RBM)一样具备一个可见层,一个隐层,但层内无链接,层与层之间全链接,节点变量仍然取值为0或1,是一个二分图。也就是将“玻尔兹曼机”(BM)的层内链接去掉,对链接进行限制,就变成了“受限玻尔兹曼机”(RBM),这样就使得计算量大大减少,使用起来也就方便了不少。如上图。
“受限玻尔兹曼机”(RBM)的特色是:在给定可见层单元状态(输入数据)时,各隐层单元的激活条件是独立的(层内无链接),一样,在给定隐层单元状态时,可见层单元的激活条件也是独立的。学习

跟“玻尔兹曼机”(BM)相似,根据玻尔兹曼分布,可见层(变量为v,偏置量为a)、隐层(变量为h,偏置量为b)的几率为:
 
训练样本的对数似然函数为:
 
求导数:
 
总之,仍是挺复杂的,计算也仍是挺花时间的。
一样,能够经过Gibbs 采样的方法来近似计算。虽然比通常的玻尔兹曼机速度有很大提升,但通常仍是须要经过不少步采样才能够采集到符合真实分布的样本。这就使得受限玻尔兹曼机的训练效率仍然不高。
2002年,大神Hinton再出手,提出了“对比散度”(Contrastive Divergence,简称CD)算法,这是一种比Gibbs采样更加有效的学习算法,促使你们对RBM的关注和研究。

RBM的本质是非监督学习的利器,能够用于降维(隐层设置少一点)、学习提取特征(隐层输出就是特征)、自编码器(AutoEncoder)以及深度信念网络(多个RBM堆叠而成)等等。

3、深度信念网络(Deep Belief Network,简称DBN)
 
2006年,Hinton大神又又又出手了,提出了“深度信念网络”(DBN),并给出了该模型一个高效的学习算法,这也成了深度学习算法的主要框架,在该算法中,一个DBN模型由若干个RBM堆叠而成,训练过程由低到高逐层进行训练,以下图所示:
 
回想一下RBM,由可见层、隐层组成,显元用于接受输入,隐元用于提取特征,所以隐元也有个别名,叫特征检测器。也就是说,经过RBM训练以后,能够获得输入数据的特征。(感性对比:联想一下主成分分析,提取特征)
另外,RBM还经过学习将数据表示成几率模型,一旦模型经过无监督学习被训练或收敛到一个稳定的状态,它还能够被用于生成新数据。(感性对比:联想一下曲线拟合,得出函数,可用于生成数据)

正是因为RBM的以上特色,使得DBN逐层进行训练变得有效,经过隐层提取特征使后面层次的训练数据更加有表明性,经过可生成新数据能解决样本量不足的问题。逐层的训练过程以下:
(1)最底部RBM以原始输入数据进行训练
(2)将底部RBM抽取的特征做为顶部RBM的输入继续训练
(3)重复这个过程训练以尽量多的RBM层
 
因为RBM可经过CD快速训练,因而这个框架绕过直接从总体上对DBN高度复杂的训练,而是将DBN的训练简化为对多个RBM的训练,从而简化问题。并且经过这种方式训练后,能够再经过传统的全局学习算法(如BP算法)对网络进行微调,从而使模型收敛到局部最优势,经过这种方式可高效训练出一个深层网络出来,以下图所示:

Hinton提出,这种预训练过程是一种无监督的逐层预训练的通用技术,也就是说,不是只有RBM能够堆叠成一个深度网络,其它类型的网络也可使用相同的方法来生成网络。

 

墙裂建议

Hinton 大神写了一篇关于受限玻尔兹曼机的训练实用指南(《A Practical Guide to Training Restricted Boltzmann Machines》),很是详细地描述训练过程,建议仔细阅读下这篇论文,确定大有收获。

扫描如下二维码关注本人公众号“大数据与人工智能Lab”(BigdataAILab),而后回复“论文”关键字可在线阅读这两篇经典论文的内容。

 

推荐相关阅读