深度信念网络的入门

写在前面,菜鸟上路。
  • [mathJax]
  • 由于项目需要,接触了深度学习这个坑,在此记录一下自己的学习过程。

1.rbm结构

首先学的是深度信念网络(dbn)这个略显简单的网络。dbn主要结构是由rbm和bp网络构成的。下面我们从rbm开始我们的探索之旅。

rbm(restricted Boltzmann machine, RBM)的中文名字是受限玻尔兹曼机。这是一种可以通过输入数据集学习概率分布的随机生成神经网络。之所以被叫做受限是这个模型限定为二分图(二分图可以看我这篇博客的解释。这一限定使得相比一般玻兹曼机更高效的训练算法成为可能,特别是基于梯度的对比分歧(contrastive divergence)算法。

接下来,我们看一下rbm的网络结构。rbm由两层神经元组成。一层是可见层(v,偏置为a。一层是隐藏层(h,偏置为b。其中常用的rbm神经元取值是二值的,即0或1。可见层和隐藏层是全连接的,其中权重系数是W。

在这个定义里面,每个单元的能量是

$$ E(v, h)=-\sum_{i} a_{i} v_{i}-\sum_{j} b_{j} h_{j}-\sum_{i} \sum_{j} h_{j} w_{i, j} v_{i} $$

隐藏层与可见层的联合概率分布可以用下面的函数表示:

$$Z=\sum_{节点的所有可能取值} e^{-E(v,h)}$$

$$P(v,h)=\frac{1}{Z}  e^{-E(v,h)}$$

我们懂得越多,就越发对世界感到敬畏。

cd步骤可以总结为:

  1. 取一个训练样本v,计算隐层节点的概率,在此基础上从这一概率分布中获取一个隐层节点激活向量的样本h
  2. 计算vh外积,称为“正梯度”;
  3. h获取一个重构的可见层节点的激活向量样本v’,此后从v’再次获得一个隐层节点的激活向量样本h’
  4. 计算v’h’的外积,称为“负梯度”;
  5. 使用正梯度和负梯度的差以一定的学习率更新权重
    $$\Delta w_{i,j}=\varepsilon (vh^{T}-(v’h’)^{T})$$

    偏置ab也可以使用类似的方法更新。

Leave a Reply