仅做学习记录,不涉及数学公式推导。

结构

受限玻尔兹曼机(RBM)是一种概率图模型,特殊之处是它可以用神经网络来解释。RBM可以视为两层的神经网络,即由输出层和隐层组成的神经网络。

用途

  1. 样本特征提取

对样本进行特征提取往往可以取得更好的效果。卷积神经网络之所以在MNist数据集上分类准确率很高,是因为卷积层起到了特征提取的作用。常见的特征提取方法有PCA和LDA。二者通过对样本进行线性降维达到特征提取的目的。RBM也可以达到特征提取的目的。训练RBM的过程是无监督的,数据通过RBM的输入层经过神经网络到达隐层,再由隐层通过反向传播到达输入层得到数据的重构,RBM的训练会使得这个重构误差变得较小。因此,RBM的隐层可以视为特征提取层。

  1. 深度神经网络参数初始化

深度神经网络遇到的一大问题是梯度消失,即当前面隐藏层的学习速率低于后面隐藏层的学习速率时,随着层数的叠加反而出现loss增加的现象。缓解梯度消失的一种办法是选择合适参数进行初始化。可以使用RBM进行模型的预训练得到初始化的权重和偏置以达到上述目的。

训练

训练RBM的目的是学习所给数据集的概率分布。这种概率分布以RBM的权重和偏置的形式进行保存。直观来讲,RBM应该给出一个标准,使得这个标准可以反映样本集中各个样本出现的概率。这种标准即是能量函数:

E(v,h)=iaivijbjhjijhjwijviE(v, h)=-\sum_{i}a_iv_i-\sum_{j}b_jh_j-\sum_{i}\sum_{j}h_jw_{ij}v_i

其中v,hv,h分别代表输入层和隐层的向量。通过对能量函数进行归一化

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

即可得到对应的概率。其中ZZ是归一化因子。
通过对所有样本的概率进行极大似然估计迭代更新参数即可完成RBM的训练。

对比散度算法(CD)

由于上述的归一化因子ZZ的计算量级随网络节点的增多而指数增长,所以采用更为快速的对比散度算法进行训练。下面仅列出该算法:

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