Deep Belief Nets

Overview
深度信念网络(DBN)是神经网络的一种:

  • 无监督学习:自编码机
  • 有监督学习:分类器

DBNs是一个概率生成模型,与传统的判别模型的神经网络相对,生成模型是建立一个观察数据和标签之间的联合分布,对P(Observation|Label)和 P(Label|Observation)都做了评估,而判别模型仅仅而已评估了后者,也就是P(Label|Observation)。(???并不明白神马意思,但是不明觉厉的我决定搬过来)

作为一种神经网络,其基础构建模型为受限玻尔兹曼机(Restricted Bolzman Machine),in short -> DBN是由多层RBM组成的。分析DBN表现出的性质与其局限性均需从RBM入手。

受限玻尔兹曼机(RBM)

RBM是一种神经感知器,由一个显层和一个隐层构成,显层与隐层的神经元之间为双向全连接。如下图所示:

《Deep Belief Nets》 [DBN structure](http://blog.csdn.net/win_in_action/article/details/25333671)

上面这张图是一个完整的DBN的模型,我简化一下大概这样:

  • DBN = RBMs = Hs + V
  • RBM = H + V

其中相邻两层即为一个RBM,每个RBM层以上一RBM层的输出(h)为输入(v),并向下一层RBM提供输入(v)。像堆积木一样一层层垒上去,就成了“深”度学习模型DBNs。如下图为一个RBM层的结构:

《Deep Belief Nets》 [RBM structure](http://blog.csdn.net/Rainbow0210/article/details/53010694?locationNum=1&fps=1)

那么问题来了,我是谁?。。我在哪?。。我要干啥?。。这一层层输入当输出的双向连接层想搞个大新闻么?

数学原(bu)理(xiang)比(shou)较(da)枯(gong)燥(shi),详细的推理请看这里

辣么其他不准备自己手动实现DBN而是借用Keras之类封装好的工具处理已有数据的孩纸请看向👇看:

  • 训练目标:通过训练,使得隐层能较为精准地显示显层的特征,甚至达到还原显层的程度。
  • 训练参数:hv、b、c、w(后三个是学习得到的)

w – 任意两个相连的神经元之间有一个权值w表示其连接强度;
b、c – 每个神经元自身有一个偏置系数b(对显层神经元)和c(对隐层神经元)来表示其自身权重;
v – 输入向量
h – 输出向量

  • 计算公式:(注意双向连接层,因此可以互相激活)(σ 为 Sigmoid 函数)

隐层神经元hj被激活概率:
《Deep Belief Nets》

显层神经元vi被激活概率:
《Deep Belief Nets》

  • 更新参数公式:此处给出一个训练过程例子帮助理解参数的更新过程: 《Deep Belief Nets》

Reference
[1] 深度学习-深度信念(置信)网络(DBN)-从原理到实现(DeepLearnToolBox)
[2] DBN(深度置信网络

end if

Source code: Keras + Theano => DBN

end

    原文作者:Leviosa
    原文地址: https://www.jianshu.com/p/7eca07e3a2f4
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞