[受限玻尔兹曼机] 原理、求解过程推导、深度信念网络

写在前面

本篇文章主要写受限玻尔兹曼机、Gibbs求解方法、CD对比散度求解方法和深度信念网络。并非全部都是原创,有部分来自于书籍和网络。

一、受限玻尔兹曼机

1、简介玻尔兹曼机结构

如下图所示(图片来源:知乎),玻尔兹曼机的网络是相互连接型网络,其有两种形式:
①网络节点全部由可见单元构成。
②网络节点由可见单元和隐藏单元共同组成。

[受限玻尔兹曼机] 原理、求解过程推导、深度信念网络_第1张图片

这种网络结构的训练非常复杂,因此基于此网络,辛顿等人提出了受限玻尔兹曼机。

2、受限玻尔兹曼机

受限玻尔兹曼机(Restricted Boltzmann Machines, RBM)主要有伯努利-伯努利RBM、伯努利-高斯RBM、高斯-伯努利RBM,本文主要基于伯努利-伯努利RBM,即可观测变量服务伯努利分布,隐变量也服从伯努利分布。

在玻尔兹曼机的基础上,首先玻尔兹曼机增加了限制:层内单元之间无连接。如下图所示:

[受限玻尔兹曼机] 原理、求解过程推导、深度信念网络_第2张图片

受限玻尔兹曼机是由可见层和隐藏层构成的两层结构。可见层由可见变量组成,隐藏层由隐藏变量组成。可见层和隐藏层之间相互连接,层内之间无连接。

受限玻尔兹曼机的目的: 通过求取连接权重和偏置项,使得重构的 v ~ \widetilde{v} v v v v误差最小。利用这些连接权重和偏置项我们可以进行分类或者进行生成。

受限玻尔兹曼机的能量函数如下:
E ( v , h , θ ) = − ∑ i = 1 n b i v i − ∑ j = 1 m c j h j − ∑ i = 1 n ∑ j = 1 m w i j v i h j E(v,h,\theta) = -\sum_{i=1}^nb_iv_i- \sum_{j=1}^mc_jh_j-\sum_{i=1}^n\sum_{j=1}^mw_{ij}v_ih_j E(v,h,θ)=i=1nbivij=1mcjhji=1nj=1mwijvihj
其中, b i b_i bi是可见变量的偏置, c j c_j cj是隐藏变量的偏置, w i j w_{ij} wij是连接权重, θ \theta θ是表示所有连接权重和偏置的参数集合。状态 ( v , h ) (\red{v},h) (v,h)的联合概率分布如下所示:
p ( v , h ∣ θ ) = 1 Z e x p { − E ( v , h , θ ) } Z = ∑ v , h e x p { − E ( v , h , θ ) } p(\red{v},h|\theta)=\frac{1}{Z}exp\{-E(\red{v},h,\theta)\} \\ Z=\sum_{v,h}exp\{-E(v,h,\theta)\} p(v,hθ)=Z1exp{E(v,h,θ)}Z=v,hexp{E(v,h,θ)}
注意:标红的 v \red{v} v表示是某一个 v v v,而 Z Z Z中未标红的 v v v表示随机变量,不是某个固定值。

其对数似然函数为(关于此似然函数的原因,参见深度学习读书笔记之RBM(限制波尔兹曼机)1.3.2 从概率到极大似然):
l o g L ( θ ∣ v ) = l o g 1 Z ∑ h e x p { − E ( v , h , θ ) } = l o g ∑ h e x p { − E ( v , h , θ ) } − l o g ∑ v , h e x p { − E ( v , h , θ ) } \begin{array}{lcl} logL(\theta|\red{v}) &=& log\frac{1}{Z}\sum_{h}exp\{-E(\red{v},h,\theta)\} \\ &=& log\sum_hexp\{-E(\red{v},h,\theta)\}-log\sum_{v,h}exp\{-E(v,h,\theta)\} \end{array} logL(θv)==logZ1hexp{E(v,h,θ)}loghexp{E(v,h,θ)}logv,hexp{E(v,h,θ)}
上述似然函数对 θ \theta θ求导计算梯度,过程如下:
∂ l o g L ( θ ∣ v ) ∂ θ = ∂ ( l o g ∑ h e x p { − E ( v , h , θ ) } ) ∂ θ − ∂ ( l o g ∑ v , h e x p { − E ( v , h , θ ) } ) ∂ θ = − 1 ∑ h e x p { − E ( v , h , θ ) } ∑ h ( e x p { − E ( v , h , θ ) } ∂ E ( v , h , θ ) ∂ θ ) + 1 ∑ v , h e x p { − E ( v , h , θ ) } ∑ v , h ( e x p { − E ( v , h , θ ) } ∂ E ( v , h , θ ) ∂ θ ) = − ∑ h ( p ( h ∣ v ) ∂ E ( v , h , θ ) ∂ θ ) + ∑ v , h ( p ( v , h ) ∂ E ( v , h , θ ) ∂ θ ) \begin{array}{lcl} \frac{\partial logL(\theta|v)}{\partial \theta} &=& \frac{\partial (log\sum_h exp\{-E(\red{v},h,\theta)\})}{\partial \theta}-\frac{\partial (log\sum_{v,h}exp\{-E(v,h,\theta)\})}{\partial \theta} \\ &=& -\frac{1}{\sum_h exp\{-E(\red{v},h,\theta)\}}\sum_h (exp\{-E(\red{v},h,\theta)\}\frac{ \partial E(\red{v},h,\theta)}{\partial \theta}) \\ &+& \frac{1}{\sum_{v,h} exp\{-E(v,h,\theta)\}}\sum_{v,h} (exp\{-E(v,h,\theta)\}\frac{ \partial E(v,h,\theta)}{\partial \theta}) \\ &=& -\sum_h (p(h|\red{v})\frac{ \partial E(\red{v},h,\theta)}{\partial \theta})+\sum_{v,h} (p(v,h)\frac{ \partial E(v,h,\theta)}{\partial \theta}) \end{array} θlogL(θv)==+=θ(loghexp{E(v,h,θ)})θ(logv,hexp{E(v,h,θ)})hexp{E(v,h,θ)}1h(exp{E(v,h,θ)}θE(v,h,θ))v,hexp{E(v,h,θ)}1v,h(exp{E(v,h,θ)}θE(v,h,θ))h(p(hv)θE(v,h,θ))+v,h(p(v,h)θE(v,h,θ))
上式中, θ \theta θ可以取 w i j w_{ij} wij b i b_i bi c j c_j cj,分别计算梯度如下:

(1)求对 w i j w_{ij} wij的梯度

∂ l o g L ( θ ∣ v ) ∂ w i j = − ∑ h ( p ( h ∣ v ) ∂ E ( v , h , θ ) ∂ w i j ) + ∑ v , h p ( v , h ) ( ∂ E ( v , h , θ ) ∂ w i j ) = ∑ h j ( p ( h j ∣ v ) v i h j ) − ∑ v i , h j p ( v i , h j ) v i h j = ∑ h j ( p ( h j ∣ v ) v i h j ) − ∑ v i ( p ( v i ) ∑ h j p ( h j ∣ v i ) v i h j ) = p ( h j = 0 ∣ v ) v i ⋅ 0 + p ( h j = 1 ∣ v ) v i ⋅ 1 − ( ∑ v i p ( v i ) p ( h j = 0 ∣ v i ) v i ⋅ 0 + ∑ v i p ( v i ) p ( h j = 1 ∣ v i ) v i ⋅ 1 ) = p ( h j = 1 ∣ v ) v i − ∑ v i ( p ( v i ) p ( h j = 1 ∣ v i ) v i ) \begin{array}{lcl} \frac{\partial log L(\theta|v)}{\partial w_{ij}} &=& -\sum_h (p(h|\red{v})\frac{ \partial E(v,h,\theta)}{\partial w_{ij}})+\sum_{v,h}p(v,h) (\frac{ \partial E(v,h,\theta)}{\partial w_{ij}} ) \\ &=& \sum_{h_j} (p(h_j|\red{v})v_ih_j)-\sum_{v_i,h_j}p(v_i,h_j)v_ih_j \\ &=& \sum_{h_j} (p(h_j|\red{v})v_ih_j)- \sum_{v_i} (p(v_i)\sum_{h_j}p(h_j|v_i)v_ih_j) \\ &=& p(h_j=0|\red{v})v_i \cdot 0 +p(h_j=1|\red{v})v_i \cdot 1 \\ &-& (\sum_{v_i}p(v_i)p(h_j=0|v_i)v_i \cdot 0 + \sum_{v_i}p(v_i)p(h_j=1|v_i)v_i \cdot 1) \\ &=& p(h_j=1|\red{v})v_i - \sum_{v_i}(p(v_i)p(h_j=1|v_i)v_i) \end{array} wijlogL(θv)=====h(p(hv)wijE(v,h,θ))+v,hp(v,h)(wijE(v,h,θ))hj(p(hjv)vihj)vi,hjp(vi,hj)vihjhj(p(hjv)vihj)vi(p(vi)hjp(hjvi)vihj)p(hj=0v)vi0+p(hj=1v)vi1(vip(vi)p(hj=0vi)vi0+vip(vi)p(hj=1vi)vi1)p(hj=1v)vivi(p(vi)p(hj=1vi)vi)
注意: 在这里,因为求的是 w i j w_{ij} wij的梯度,因此求导之后参考其中的只有 h j h_j hj v i v_i vi

(2)求对 b i b_{i} bi的梯度

∂ l o g L ( θ ∣ v ) ∂ b i = − ∑ h ( p ( h ∣ v ) ∂ E ( v , h , θ ) ∂ b i ) + ∑ v , h p ( v , h ) ( ∂ E ( v , h , θ ) ∂ b i ) = ∑ h ( p ( h ∣ v ) v i ) − ∑ v i , h p ( v i , h ) v i = ∑ h ( p ( h ∣ v ) v i ) − ∑ v i ( p ( v i ) ∑ h p ( h ∣ v i ) v i ) = v i − ∑ v i ( p ( v i ) v i ) \begin{array}{lcl} \frac{\partial log L(\theta|v)}{\partial b_{i}} &=& -\sum_h (p(h|\red{v})\frac{ \partial E(v,h,\theta)}{\partial b_{i}})+\sum_{v,h}p(v,h) (\frac{ \partial E(v,h,\theta)}{\partial b_{i}} ) \\ &=& \sum_{h} (p(h|\red{v})v_i)-\sum_{v_i,h}p(v_i,h)v_i \\ &=& \sum_{h} (p(h|\red{v})v_i)- \sum_{v_i} (p(v_i)\sum_{h}p(h|v_i)v_i) \\ &=& v_i - \sum_{v_i}(p(v_i)v_i) \end{array} bilogL(θv)====h(p(hv)biE(v,h,θ))+v,hp(v,h)(biE(v,h,θ))h(p(hv)vi)vi,hp(vi,h)vih(p(hv)vi)vi(p(vi)hp(hvi)vi)vivi(p(vi)vi)
注意: ∑ h p ( h ∣ v i ) = 1 \sum_{h}p(h|v_i) = 1 hp(hvi)=1,注意区分 ∑ v p ( h ∣ v ) = p ( h ) \sum_{v}p(h|v) = p(h) vp(hv)=p(h)

(3)求对 c j c_{j} cj的梯度

∂ l o g L ( θ ∣ v ) ∂ c j = − ∑ h ( p ( h ∣ v ) ∂ E ( v , h , θ ) ∂ c j ) + ∑ v , h p ( v , h ) ( ∂ E ( v , h , θ ) ∂ c j ) = ∑ h j ( p ( h j ∣ v ) h j ) − ∑ v , h j p ( v , h j ) h j = ∑ h j ( p ( h j ∣ v ) h j ) − ∑ v ( p ( v ) ∑ h j p ( h j ∣ v ) h j ) = p ( h j = 0 ∣ v ) ⋅ 0 + p ( h j = 1 ∣ v ) ⋅ 1 − ( ∑ v p ( v ) p ( h j = 0 ∣ v ) ⋅ 0 + ∑ v p ( v ) p ( h j = 1 ∣ v ) ⋅ 1 ) = p ( h j = 1 ∣ v ) − ∑ v ( p ( v ) p ( h j = 1 ∣ v ) ) \begin{array}{lcl} \frac{\partial log L(\theta|v)}{\partial c_{j}} &=& -\sum_h (p(h|\red{v})\frac{ \partial E(v,h,\theta)}{\partial c_{j}})+\sum_{v,h}p(v,h) (\frac{ \partial E(v,h,\theta)}{\partial c_{j}} ) \\ &=& \sum_{h_j} (p(h_j|\red{v})h_j)-\sum_{v,h_j}p(v,h_j)h_j \\ &=& \sum_{h_j} (p(h_j|\red{v})h_j)- \sum_{v} (p(v)\sum_{h_j}p(h_j|v)h_j) \\ &=& p(h_j=0|\red{v}) \cdot 0 +p(h_j=1|\red{v})\cdot 1 \\ &-& (\sum_{v}p(v)p(h_j=0|v) \cdot 0 + \sum_{v}p(v)p(h_j=1|v)\cdot 1) \\ &=& p(h_j=1|\red{v})- \sum_{v}(p(v)p(h_j=1|v)) \end{array} cjlogL(θv)=====h(p(hv)cjE(v,h,θ))+v,hp(v,h)(cjE(v,h,θ))hj(p(hjv)hj)v,hjp(v,hj)hjhj(p(hjv)hj)v(p(v)hjp(hjv)hj)p(hj=0v)0+p(hj=1v)1(vp(v)p(hj=0v)0+vp(v)p(hj=1v)1)p(hj=1v)v(p(v)p(hj=1v))

(4)更新方程

w i j w_{ij} wij b i b_i bi c j c_j cj求完梯度之后,可以按照如下方程更新参数:
w i j ← w i j − ∂ ( l o g L ( θ ∣ v ) ) ∂ w i j b i ← b i − ∂ ( l o g L ( θ ∣ v ) ) ∂ b i c j ← c j − ∂ ( l o g L ( θ ∣ v ) ) ∂ c j \begin{array}{lcl} w_{ij} &\leftarrow& w_{ij}-\frac{\partial (log L(\theta|v))}{\partial w_{ij}} \\ b_{i} &\leftarrow& b_{i}-\frac{\partial (log L(\theta|v))}{\partial b_{i}} \\ c_{j} &\leftarrow& c_{j}-\frac{\partial (log L(\theta|v))}{\partial c_{j}} \end{array} wijbicjwijwij(logL(θv))bibi(logL(θv))cjcj(logL(θv))
迭代更新即可。

3、求解存在的问题

受限玻尔兹曼机也存在效率的问题,上述公式可以看到, ∑ v p ( v ) \sum_{v}p(v) vp(v)是需要计算的,而这个式子的计算需要所有可见变量的模式之和,其复杂度为 O ( 2 n v + n h ) O(2^{n_v+n_h}) O(2nv+nh),这会使得效率非常低。因此可以使用Gibbs采样和CD对比散度算法来求解。

二、受限玻尔兹曼机的求解

在给定一个训练样本后,训练一个RBM的意义在于调整模型的参数,以拟合给定的训练样本,使得在该参数下RBM表示的可见层节点概率分布尽可能的与训练数据相符合。我们可以采用Gibbs采样或者CD算法求解参数,CD算法的效率更高。
Gibbs采样求解和CD算法求解都是近似求解模型,我们希望 p ( v ) = p t r a i n ( v ) p(v)=p_{train}(v) p(v)=ptrain(v)(数据的真实、底层分布)。所以我们通过近似算法, 迭若干次之后,使得马尔科夫链拟合最终的 v v v的分布。

1、Gibbs采样

我们希望 p ( v ) = p t r a i n ( v ) p(v)=p_{train}(v) p(v)=ptrain(v)(数据的真实、底层分布),所以我们可以使用Gibss采样去收敛这个最终的分布 p p p
Gibbs采样的思想是虽然我们不知道样本数据 v 1 , v 2 , . . . , v n v v_1,v_2,...,v_{n_v} v1,v2,...,vnv的联合概率,但是我们知道样本的条件概率 p ( v i ∣ v − i ) p(v_i|v_{-i}) p(vivi),则我们可以先求出每个数据的条件概率值,得到 v v v的任一状态 [ v 1 ( 0 ) , v 2 ( 0 ) , . . . , v n v ( 0 ) ] [v_1(0), v_2(0), ..., v_{n_v}(0)] [v1(0),v2(0),...,vnv(0)],然后,用条件概率公式迭代对每一个数据求条件概率。最终,迭代 k k k次的时候, v v v的某一个状态 [ v 1 ( k ) , v 2 ( k ) , . . . , v n v ( k ) ] [v_1(k), v_2(k), ..., v_{n_v}(k)] [v1(k),v2(k),...,vnv(k)]将收敛于 v v v的联合概率分布 p ( v ) p(v) p(v),其过程图如下(图片来自参考博客):

[受限玻尔兹曼机] 原理、求解过程推导、深度信念网络_第3张图片

求解过程是: 假设给我一个训练样本 v 0 v_0 v0,根据公式 P ( h j = 1 ∣ v ) P(h_j=1|v) P(hj=1v) h 0 h_0 h0中每一个节点的条件概率,再根据公式 p ( v i = 1 ∣ h ) p(v_i=1|h) p(vi=1h) v 1 v_1 v1中每个节点的条件概率,然后依次迭代,直到K步,此时 p ( v ∣ h ) p(v|h) p(vh)的概率收敛于 p ( v ) p(v) p(v)的概率。
h 0 ∼ p ( h ∣ v 0 ) v 1 ∼ p ( v ∣ h 0 ) h 1 ∼ p ( h ∣ v 1 ) v 2 ∼ p ( v ∣ h 1 ) . . . v k + 1 ∼ p ( v ∣ h k ) \begin{array}{lcl} h_0 \sim p(h|v_0) \\ v_1 \sim p(v|h_0)\\ h_1 \sim p(h|v_1)\\ v_2 \sim p(v|h_1)\\ ...\\ v_{k+1} \sim p(v|h_k) \end{array} h0p(hv0)v1p(vh0)h1p(hv1)v2p(vh1)...vk+1p(vhk)

2、CD对比散度算法

上述使用Gibbs采样虽然已经相比较BP算法来说,代价减少了很多,但是Gibbs采样需要不断迭代直到收敛到平稳分布,所以迭代过程需要多次。基于此,hinton提出了对比散度算法,对比散度算法和Gibbs采样的区别在于:Gibbs采样 p ( h ∣ v ) p(h|v) p(hv) v v v的初始化是随机初始化,但是CD算法中 v v v初始化为训练样本,其余和Gibbs采样相同。实验证明,CD算法只要迭代1次就可以有很好的效果。

(1)CD算法的算法流程图

(图片来源:受限玻尔兹曼机(RBM)+对比散度算法(CD-k))

[受限玻尔兹曼机] 原理、求解过程推导、深度信念网络_第4张图片

这是CD-1的算法流程,CD-k算法便是k次CD-1算法的迭代。

(2)条件分布 P ( h ∣ v ) P(h|v) P(hv) P ( v ∣ h ) P(v|h) P(vh)

因为在CD算法中需要求 p ( h j = 1 ∣ v ) p(h_j=1|v) p(hj=1v)的取值,所以我们先来看看它的公式是什么。
CD算法的能量函数为:
E ( v , h , θ ) = − ∑ i = 1 n b i v i − ∑ j = 1 m c j h j − ∑ i = 1 n ∑ j = 1 m w i j v i h j E(v,h,\theta) = -\sum_{i=1}^nb_iv_i- \sum_{j=1}^mc_jh_j-\sum_{i=1}^n\sum_{j=1}^mw_{ij}v_ih_j E(v,h,θ)=i=1nbivij=1mcjhji=1nj=1mwijvihj
因此,定义给定 v , h v,h v,h情况下RBM的状态概率分布为:
P ( v , h ) = 1 Z e − E ( v , h ) Z = ∑ v , h e − E ( v , h ) \begin{array}{lcl} P(v,h) = \frac{1}{Z}e^{-E(v,h)} \\ Z = \sum_{v,h}e^{-E(v,h)} \end{array} P(v,h)=Z1eE(v,h)Z=v,heE(v,h)
有了概率分布,我们来看条件分布 P ( h ∣ v ) P(h|v) P(hv)
P ( h ∣ v ) = P ( h , v ) P ( v ) = 1 P ( v ) 1 Z e x p { ∑ i = 1 n b i v i + ∑ j = 1 m c j h j + ∑ i = 1 n ∑ j = 1 m w i j v i h j } = 1 Z ′ e x p { ∑ j = 1 m c j h j + ∑ i = 1 n ∑ j = 1 m w i j v i h j } = 1 Z ′ ∏ j = 1 n h e x p { c j h j + w i j v i h j } \begin{array}{lcl} P(h|v) &=& \frac{P(h,v)}{P(v)} \\ &=& \frac{1}{P(v)}\frac{1}{Z}exp\{\sum_{i=1}^nb_iv_i+ \sum_{j=1}^mc_jh_j+\sum_{i=1}^n\sum_{j=1}^mw_{ij}v_ih_j\} \\ &=& \frac{1}{{Z}'}exp\{\sum_{j=1}^mc_jh_j+\sum_{i=1}^n\sum_{j=1}^mw_{ij}v_ih_j\} \\ &=& \frac{1}{{Z}'}\prod_{j=1}^{n_h}exp\{c_jh_j +w_{ij}v_ih_j \} \end{array} P(hv)====P(v)P(h,v)P(v)1Z1exp{i=1nbivi+j=1mcjhj+i=1nj=1mwijvihj}Z1exp{j=1mcjhj+i=1nj=1mwijvihj}Z1j=1nhexp{cjhj+wijvihj}
其中, Z ′ {{Z}'} Z为新的归一化常数:
1 Z ′ = 1 P ( v ) 1 Z e x p { ∑ i = 1 n b i v i } \frac{1}{{Z}'} = \frac{1}{P(v)}\frac{1}{Z}exp\{\sum_{i=1}^nb_iv_i\} Z1=P(v)1Z1exp{i=1nbivi}
下面以同样的方式求条件分布 P ( v ∣ h ) P(v|h) P(vh)

能量模型基于条件分布的激活函数如下,我们以 P ( h j = 1 ∣ v ) P(h_j=1|v) P(hj=1v)为例推导如下:
P ( h j = 1 ∣ v ) = P ( h j = 1 ∣ v ) P ( h j = 0 ∣ v ) + P ( h j = 1 ∣ v ) = e x p { c j + w i j v i } 1 + e x p { c j + w i j v i } = 1 1 + e x p { − ( c j + w i j v i ) } = σ ( c j + w i j v i ) \begin{array}{lcl} P(h_j=1|v) &=& \frac{P(h_j=1|v) }{P(h_j=0|v) +P(h_j=1|v) } \\ &=& \frac{exp\{c_j +w_{ij}v_i\}}{1+exp\{c_j +w_{ij}v_i\}} \\ &=& \frac{1}{1+exp\{-(c_j +w_{ij}v_i)\}} \\ &=& \sigma (c_j +w_{ij}v_i) \end{array} P(hj=1v)====P(hj=0v)+P(hj=1v)P(hj=1v)1+exp{cj+wijvi}exp{cj+wijvi}1+exp{(cj+wijvi)}1σ(cj+wijvi)
因此, P ( h j = 1 ∣ v ) P(h_j=1|v) P(hj=1v)实际上就就是sigmoid激活函数,同理, P ( v j = 1 ∣ h ) P(v_j=1|h) P(vj=1h)也是sigmoid激活函数,其公式如下:
P ( v i = 1 ∣ h ) = σ ( b i + w i j h i ) P(v_i=1|h) = \sigma (b_i +w_{ij}h_i) P(vi=1h)=σ(bi+wijhi)
有了激活函数,我们就可以从可见层和参数推导出隐藏层的神经元的取值概率了。

(3)CD算法求解举例

如下图所示(图片来自图解深度学习),我们以此为例讲解对比散度算法(Contrastive Divergence,CD)的过程。

如何判断值为0还是1:若根据上面的公式求出 P ( h j = 1 ∣ v ) = 0.7 P(h_j=1|v)=0.7 P(hj=1v)=0.7,现在我们取一个0~1之间的随机数,如果随机数小于0.7,则我们认为 h j = 1 h_j=1 hj=1(条件概率求出 h j = 1 h_j=1 hj=1的概率是0.7,随机数小于0.7的概率也是0.7),否则 h j = 0 h_j=0 hj=0

[受限玻尔兹曼机] 原理、求解过程推导、深度信念网络_第5张图片

(A)如上图(a)所示, v 1 ( 0 ) , v 2 ( 0 ) , v i ( 0 ) , v n ( 0 ) v_1^{(0)}, v_2^{(0)},v_i^{(0)},v_n^{(0)} v1(0),v2(0),vi(0),vn(0)的取值分别为 1 , 0 , 1 , 1 1, 0, 1, 1 1,0,1,1

(B) 我们根据公式 P ( h j = 1 ∣ v ) = σ ( c j + w i j v i ) P(h_j=1|v)= \sigma (c_j +w_{ij}v_i) P(hj=1v)=σ(cj+wijvi)可以求出 h 1 ( 0 ) , h j ( 0 ) , h m ( 0 ) h_1^{(0)},h_j^{(0)},h_m^{(0)} h1(0),hj(0),hm(0)的概率分别为 0.8 , 0.5 , 0.9 0.8,0.5,0.9 0.8,0.5,0.9

(C ) h 1 ( 0 ) , h j ( 0 ) , h m ( 0 ) h_1^{(0)},h_j^{(0)},h_m^{(0)} h1(0),hj(0),hm(0)的概率分别为 0.8 , 0.5 , 0.9 0.8,0.5,0.9 0.8,0.5,0.9,根据上述判断结果是0还是1的方法, h 1 ( 0 ) , h j ( 0 ) , h m ( 0 ) h_1^{(0)},h_j^{(0)},h_m^{(0)} h1(0),hj(0),hm(0)的取值分别为 0 , 1 , 1 0,1,1 0,1,1

(D) h 1 ( 0 ) , h j ( 0 ) , h m ( 0 ) h_1^{(0)},h_j^{(0)},h_m^{(0)} h1(0),hj(0),hm(0)的取值分别为 0 , 1 , 1 0,1,1 0,1,1,根据 P ( v i = 1 ∣ h ) = σ ( b i + w i j h i ) P(v_i=1|h) = \sigma (b_i +w_{ij}h_i) P(vi=1h)=σ(bi+wijhi)我们求得 v 1 ( 1 ) , v 2 ( 1 ) , v i ( 1 ) , v n ( 1 ) v_1^{(1)}, v_2^{(1)},v_i^{(1)},v_n^{(1)} v1(1),v2(1),vi(1),vn(1)的概率分别为 0.7 , 0.2 , 0.8 , 0.6 0.7, 0.2, 0.8, 0.6 0.7,0.2,0.8,0.6

(E) v 1 ( 1 ) , v 2 ( 1 ) , v i ( 1 ) , v n ( 1 ) v_1^{(1)}, v_2^{(1)},v_i^{(1)},v_n^{(1)} v1(1),v2(1),vi(1),vn(1)的概率分别为 0.7 , 0.2 , 0.8 , 0.6 0.7, 0.2, 0.8, 0.6 0.7,0.2,0.8,0.6,根据上述判断结果是0还是1的方法, v 1 ( 1 ) , v 2 ( 1 ) , v i ( 1 ) , v n ( 1 ) v_1^{(1)},v_2^{(1)},v_i^{(1)},v_n^{(1)} v1(1),v2(1),vi(1),vn(1)的取值分别为 1 , 1 , 0 , 1 1,1, 0, 1 1,1,0,1

(F)梯度的更新公式为:
w i j ← w i j + η [ p ( h j ( 0 ) = 1 ∣ v ( 0 ) ) v i ( 0 ) − p ( h j ( 1 ) = 1 ∣ v ( 1 ) ) v i ( 1 ) ] b i ← b i + η ( v i ( 0 ) − v i ( 1 ) ) c j ← c j + η [ p ( h j ( 0 ) = 1 ∣ v ( 0 ) ) − p ( h j ( 1 ) = 1 ∣ v ( 1 ) ) ] \begin{array}{lcl} w_{ij} \leftarrow w_{ij}+\eta [p(h_j^{(0)}=1|v^{(0)})v_i^{(0)} - p(h_j^{(1)}=1|v^{(1)})v_i^{(1)}] \\ b_i\leftarrow b_i+\eta (v_i^{(0)} -v_i^{(1)}) \\ c_j \leftarrow c_j+\eta[p(h_j^{(0)}=1|v^{(0)})-p(h_j^{(1)}=1|v^{(1)})] \end{array} wijwij+η[p(hj(0)=1v(0))vi(0)p(hj(1)=1v(1))vi(1)]bibi+η(vi(0)vi(1))cjcj+η[p(hj(0)=1v(0))p(hj(1)=1v(1))]

三、深度信念网络

深度信念网络(Deep Belief Network, DBN)是由受限玻尔兹曼机堆叠而成,深度信念网络和其他神经网络的不同是:

1)神经网络的权重是先使用前向传播求得网络目标结果,再根据反向传播算法,把误差传播到下一层,调整所有的连接权重和偏置。
2)深度信念网络是逐层来调整连接权重和偏置项。具体做法是受限调整输入层和隐藏层之间的参数,把训练后得到的参数作为下一层的输入,再调整该层与下一个隐藏层之间的参数。不断迭代。

下图是DBN的示意图(图片来源:Deep Belief Networks (DBNs)):

[受限玻尔兹曼机] 原理、求解过程推导、深度信念网络_第6张图片

四、应用

1、预训练
在预训练任务中,可以使用DBM逐层训练参数,因此当做其他任务的参数初始化结果。
2、生成模型和分类模型
DBN可以当做生成模型来使用,除此之外,也可以当做分类模型,在DBN的最顶层增加一层softmax层,即可变成分类模型。
3、降维
隐藏层可以看做是降维的结果
4、和自编码器关系
和自编码器关联极大,这点会在自编码器中介绍二者的异同。

参考文章:
[1] 深度学习读书笔记之RBM(限制波尔兹曼机)
[2] 受限玻尔兹曼机和深度置信网络
[3] 受限玻尔兹曼机(RBM)原理总结
[4] 受限玻尔兹曼机基础教程
[5] 深度信念网络
[6] Hinton G E, Osindero S. A Fast Learning Algorithm for Deep Belief Nets[J].
[7] 深度学习(书)
[8] 图解深度学习(书)
[9] 受限玻尔兹曼机(RBM)学习笔记(六)对比散度算法

你可能感兴趣的:(Deep,Learning,RBM,受限玻尔兹曼机,深度信念网络,CD求解)