深度信念网络 (Deep Belief Network, DBN) 由 Geoffrey Hinton 在 2006 年提出。它是一种生成模型,通过训练其神经元间的权重,我们可以让整个神经网络按照最大概率来生成训练数据。我们不仅可以使用 DBN 识别特征、分类数据,还可以用它来生成数据。

DBN 由多层神经元构成,这些神经元又分为显性神经元和隐性神经元(以下简称显元和隐元)。显元用于接受输入,隐元用于提取特征。因此隐元也有个别名,叫特征检测器 (feature detectors)。最底层代表了数据向量 (data vectors),每一个神经元代表数据向量的一维。 

DBN 的组成元件是受限玻尔兹曼机:

                                                             

RBM可以表示成一个二分图模型,所有可见单元和隐单元之间存在连接,而隐单元两两之间和可见单元两两之间不存在连接,也就是层间全连接,层内无连接。

每一个可见层节点和隐藏层节点都有两种状态:处于激活状态时值为1,未被激活状态值为0。这里的0和1状态的意义是代表了模型会选取哪些节点来使用,处于激活状态的节点被使用,未处于激活状态的节点未被使用。节点的激活概率由可见层和隐藏层节点的分布函数计算。

在RBM中,任意两个相连的神经元之间有一个权值w表示其连接强度,每个神经元自身有一个偏置系数b(对显层神经元)和c(对隐层神经元)来表示其自身权重。 

RBM共有五个参数:h、v、b、c、W,其中b、c、W,也就是相应的权重和偏置值,是通过学习得到的。(v是输入向量,h是输出向量) 。

                                                           

在一个RBM中,隐层神经元hj被激活的概率: 

                                                            

由于是双向连接,显层神经元同样能被隐层神经元激活: 

                                                             

其中,σ 为 Sigmoid 函数,也可以设定为其他函数。 (变量取值所有值,值域0-1)

以上即为受限玻尔兹曼机(RBM)的基本构造。其结构并不复杂。下面来看看它的工作原理: 

当一条数据(如向量x)赋给显层后,RBM根据式计算出每个隐层神经元被开启的概率P(hj|x),j=1,2,...,Nh,取一个0-1的随机数μ作为阈值,大于该阈值的神经元则被激活,否则不被激活,即: 

hj=1,P(hj|x)≥μ;hj=0,P(hj|x)<μ

由此得到隐层的每个神经元是否被激活。 给定隐层时,显层的计算方法是一样的。

了解工作原理之后就可以看看RBM是如何通过数据学习的了: 

深度置信网络(DBN):

                                        

将若干个RBM“串联”起来则构成了一个DBN,其中,上一个RBM的隐层即为下一个RBM的显层,上一个RBM的输出即为下一个RBM的输入。

DBN的训练过程跟RBM的训练过程差不多,先是初始化RBM的权重w和偏差b,接着使用数据一层层地训练,到达第n-1层时,使用反向传播反过来再一层层向下优化权重和偏差,然后再用数据向上训练…… 

应用方向:

图像识别、信息检索、自然语言理解、故障预测。