写在前面

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

一、受限玻尔兹曼机

1、简介玻尔兹曼机结构

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

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

2、受限玻尔兹曼机

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

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

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

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

受限玻尔兹曼机的能量函数如下:
E(v,h,θ)=−∑i=1nbivi−∑j=1mcjhj−∑i=1n∑j=1mwijvihjE(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=1∑n​bi​vi​−j=1∑m​cj​hj​−i=1∑n​j=1∑m​wij​vi​hj​
其中,bib_ibi​是可见变量的偏置,cjc_jcj​是隐藏变量的偏置,wijw_{ij}wij​是连接权重,θ\thetaθ是表示所有连接权重和偏置的参数集合。状态(v,h)(\red{v},h)(v,h)的联合概率分布如下所示:
p(v,h∣θ)=1Zexp{−E(v,h,θ)}Z=∑v,hexp{−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∣θ)=Z1​exp{−E(v,h,θ)}Z=v,h∑​exp{−E(v,h,θ)}
注意:标红的v\red{v}v表示是某一个vvv,而ZZZ中未标红的vvv表示随机变量,不是某个固定值。

其对数似然函数为(关于此似然函数的原因,参见深度学习读书笔记之RBM(限制波尔兹曼机)1.3.2 从概率到极大似然):
logL(θ∣v)=log1Z∑hexp{−E(v,h,θ)}=log∑hexp{−E(v,h,θ)}−log∑v,hexp{−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)​==​logZ1​∑h​exp{−E(v,h,θ)}log∑h​exp{−E(v,h,θ)}−log∑v,h​exp{−E(v,h,θ)}​
上述似然函数对θ\thetaθ求导计算梯度,过程如下:
∂logL(θ∣v)∂θ=∂(log∑hexp{−E(v,h,θ)})∂θ−∂(log∑v,hexp{−E(v,h,θ)})∂θ=−1∑hexp{−E(v,h,θ)}∑h(exp{−E(v,h,θ)}∂E(v,h,θ)∂θ)+1∑v,hexp{−E(v,h,θ)}∑v,h(exp{−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)​​==+=​∂θ∂(log∑h​exp{−E(v,h,θ)})​−∂θ∂(log∑v,h​exp{−E(v,h,θ)})​−∑h​exp{−E(v,h,θ)}1​∑h​(exp{−E(v,h,θ)}∂θ∂E(v,h,θ)​)∑v,h​exp{−E(v,h,θ)}1​∑v,h​(exp{−E(v,h,θ)}∂θ∂E(v,h,θ)​)−∑h​(p(h∣v)∂θ∂E(v,h,θ)​)+∑v,h​(p(v,h)∂θ∂E(v,h,θ)​)​
上式中,θ\thetaθ可以取wijw_{ij}wij​、bib_ibi​和cjc_jcj​,分别计算梯度如下:

(1)求对wijw_{ij}wij​的梯度

∂logL(θ∣v)∂wij=−∑h(p(h∣v)∂E(v,h,θ)∂wij)+∑v,hp(v,h)(∂E(v,h,θ)∂wij)=∑hj(p(hj∣v)vihj)−∑vi,hjp(vi,hj)vihj=∑hj(p(hj∣v)vihj)−∑vi(p(vi)∑hjp(hj∣vi)vihj)=p(hj=0∣v)vi⋅0+p(hj=1∣v)vi⋅1−(∑vip(vi)p(hj=0∣vi)vi⋅0+∑vip(vi)p(hj=1∣vi)vi⋅1)=p(hj=1∣v)vi−∑vi(p(vi)p(hj=1∣vi)vi)\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} ∂wij​∂logL(θ∣v)​​====−=​−∑h​(p(h∣v)∂wij​∂E(v,h,θ)​)+∑v,h​p(v,h)(∂wij​∂E(v,h,θ)​)∑hj​​(p(hj​∣v)vi​hj​)−∑vi​,hj​​p(vi​,hj​)vi​hj​∑hj​​(p(hj​∣v)vi​hj​)−∑vi​​(p(vi​)∑hj​​p(hj​∣vi​)vi​hj​)p(hj​=0∣v)vi​⋅0+p(hj​=1∣v)vi​⋅1(∑vi​​p(vi​)p(hj​=0∣vi​)vi​⋅0+∑vi​​p(vi​)p(hj​=1∣vi​)vi​⋅1)p(hj​=1∣v)vi​−∑vi​​(p(vi​)p(hj​=1∣vi​)vi​)​
注意: 在这里,因为求的是wijw_{ij}wij​的梯度,因此求导之后参考其中的只有hjh_jhj​和viv_ivi​。

(2)求对bib_{i}bi​的梯度

∂logL(θ∣v)∂bi=−∑h(p(h∣v)∂E(v,h,θ)∂bi)+∑v,hp(v,h)(∂E(v,h,θ)∂bi)=∑h(p(h∣v)vi)−∑vi,hp(vi,h)vi=∑h(p(h∣v)vi)−∑vi(p(vi)∑hp(h∣vi)vi)=vi−∑vi(p(vi)vi)\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} ∂bi​∂logL(θ∣v)​​====​−∑h​(p(h∣v)∂bi​∂E(v,h,θ)​)+∑v,h​p(v,h)(∂bi​∂E(v,h,θ)​)∑h​(p(h∣v)vi​)−∑vi​,h​p(vi​,h)vi​∑h​(p(h∣v)vi​)−∑vi​​(p(vi​)∑h​p(h∣vi​)vi​)vi​−∑vi​​(p(vi​)vi​)​
注意: ∑hp(h∣vi)=1\sum_{h}p(h|v_i) = 1∑h​p(h∣vi​)=1,注意区分∑vp(h∣v)=p(h)\sum_{v}p(h|v) = p(h)∑v​p(h∣v)=p(h)。

(3)求对cjc_{j}cj​的梯度

∂logL(θ∣v)∂cj=−∑h(p(h∣v)∂E(v,h,θ)∂cj)+∑v,hp(v,h)(∂E(v,h,θ)∂cj)=∑hj(p(hj∣v)hj)−∑v,hjp(v,hj)hj=∑hj(p(hj∣v)hj)−∑v(p(v)∑hjp(hj∣v)hj)=p(hj=0∣v)⋅0+p(hj=1∣v)⋅1−(∑vp(v)p(hj=0∣v)⋅0+∑vp(v)p(hj=1∣v)⋅1)=p(hj=1∣v)−∑v(p(v)p(hj=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} ∂cj​∂logL(θ∣v)​​====−=​−∑h​(p(h∣v)∂cj​∂E(v,h,θ)​)+∑v,h​p(v,h)(∂cj​∂E(v,h,θ)​)∑hj​​(p(hj​∣v)hj​)−∑v,hj​​p(v,hj​)hj​∑hj​​(p(hj​∣v)hj​)−∑v​(p(v)∑hj​​p(hj​∣v)hj​)p(hj​=0∣v)⋅0+p(hj​=1∣v)⋅1(∑v​p(v)p(hj​=0∣v)⋅0+∑v​p(v)p(hj​=1∣v)⋅1)p(hj​=1∣v)−∑v​(p(v)p(hj​=1∣v))​

(4)更新方程

对wijw_{ij}wij​、bib_ibi​和cjc_jcj​求完梯度之后,可以按照如下方程更新参数:
wij←wij−∂(logL(θ∣v))∂wijbi←bi−∂(logL(θ∣v))∂bicj←cj−∂(logL(θ∣v))∂cj\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} wij​bi​cj​​←←←​wij​−∂wij​∂(logL(θ∣v))​bi​−∂bi​∂(logL(θ∣v))​cj​−∂cj​∂(logL(θ∣v))​​
迭代更新即可。

3、求解存在的问题

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

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

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

1、Gibbs采样

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

求解过程是: 假设给我一个训练样本v0v_0v0​,根据公式P(hj=1∣v)P(h_j=1|v)P(hj​=1∣v)求h0h_0h0​中每一个节点的条件概率,再根据公式p(vi=1∣h)p(v_i=1|h)p(vi​=1∣h)求v1v_1v1​中每个节点的条件概率,然后依次迭代,直到K步,此时p(v∣h)p(v|h)p(v∣h)的概率收敛于p(v)p(v)p(v)的概率。
h0∼p(h∣v0)v1∼p(v∣h0)h1∼p(h∣v1)v2∼p(v∣h1)...vk+1∼p(v∣hk)\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} h0​∼p(h∣v0​)v1​∼p(v∣h0​)h1​∼p(h∣v1​)v2​∼p(v∣h1​)...vk+1​∼p(v∣hk​)​

2、CD对比散度算法

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

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

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

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

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

因为在CD算法中需要求p(hj=1∣v)p(h_j=1|v)p(hj​=1∣v)的取值,所以我们先来看看它的公式是什么。
CD算法的能量函数为:
E(v,h,θ)=−∑i=1nbivi−∑j=1mcjhj−∑i=1n∑j=1mwijvihjE(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=1∑n​bi​vi​−j=1∑m​cj​hj​−i=1∑n​j=1∑m​wij​vi​hj​
因此,定义给定v,hv,hv,h情况下RBM的状态概率分布为:
P(v,h)=1Ze−E(v,h)Z=∑v,he−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)=Z1​e−E(v,h)Z=∑v,h​e−E(v,h)​
有了概率分布,我们来看条件分布P(h∣v)P(h|v)P(h∣v):
P(h∣v)=P(h,v)P(v)=1P(v)1Zexp{∑i=1nbivi+∑j=1mcjhj+∑i=1n∑j=1mwijvihj}=1Z′exp{∑j=1mcjhj+∑i=1n∑j=1mwijvihj}=1Z′∏j=1nhexp{cjhj+wijvihj}\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(h∣v)​====​P(v)P(h,v)​P(v)1​Z1​exp{∑i=1n​bi​vi​+∑j=1m​cj​hj​+∑i=1n​∑j=1m​wij​vi​hj​}Z′1​exp{∑j=1m​cj​hj​+∑i=1n​∑j=1m​wij​vi​hj​}Z′1​∏j=1nh​​exp{cj​hj​+wij​vi​hj​}​
其中,Z′{{Z}'}Z′为新的归一化常数:
1Z′=1P(v)1Zexp{∑i=1nbivi}\frac{1}{{Z}'} = \frac{1}{P(v)}\frac{1}{Z}exp\{\sum_{i=1}^nb_iv_i\} Z′1​=P(v)1​Z1​exp{i=1∑n​bi​vi​}
下面以同样的方式求条件分布P(v∣h)P(v|h)P(v∣h)。

能量模型基于条件分布的激活函数如下,我们以P(hj=1∣v)P(h_j=1|v)P(hj​=1∣v)为例推导如下:
P(hj=1∣v)=P(hj=1∣v)P(hj=0∣v)+P(hj=1∣v)=exp{cj+wijvi}1+exp{cj+wijvi}=11+exp{−(cj+wijvi)}=σ(cj+wijvi)\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​=1∣v)​====​P(hj​=0∣v)+P(hj​=1∣v)P(hj​=1∣v)​1+exp{cj​+wij​vi​}exp{cj​+wij​vi​}​1+exp{−(cj​+wij​vi​)}1​σ(cj​+wij​vi​)​
因此,P(hj=1∣v)P(h_j=1|v)P(hj​=1∣v)实际上就就是sigmoid激活函数,同理,P(vj=1∣h)P(v_j=1|h)P(vj​=1∣h)也是sigmoid激活函数,其公式如下:
P(vi=1∣h)=σ(bi+wijhi)P(v_i=1|h) = \sigma (b_i +w_{ij}h_i) P(vi​=1∣h)=σ(bi​+wij​hi​)
有了激活函数,我们就可以从可见层和参数推导出隐藏层的神经元的取值概率了。

(3)CD算法求解举例

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

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

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

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

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

(D) h1(0),hj(0),hm(0)h_1^{(0)},h_j^{(0)},h_m^{(0)}h1(0)​,hj(0)​,hm(0)​的取值分别为0,1,10,1,10,1,1,根据P(vi=1∣h)=σ(bi+wijhi)P(v_i=1|h) = \sigma (b_i +w_{ij}h_i)P(vi​=1∣h)=σ(bi​+wij​hi​)我们求得v1(1),v2(1),vi(1),vn(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.60.7, 0.2, 0.8, 0.60.7,0.2,0.8,0.6。

(E)v1(1),v2(1),vi(1),vn(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.60.7, 0.2, 0.8, 0.60.7,0.2,0.8,0.6,根据上述判断结果是0还是1的方法,v1(1),v2(1),vi(1),vn(1)v_1^{(1)},v_2^{(1)},v_i^{(1)},v_n^{(1)}v1(1)​,v2(1)​,vi(1)​,vn(1)​的取值分别为1,1,0,11,1, 0, 11,1,0,1。

(F)梯度的更新公式为:
wij←wij+η[p(hj(0)=1∣v(0))vi(0)−p(hj(1)=1∣v(1))vi(1)]bi←bi+η(vi(0)−vi(1))cj←cj+η[p(hj(0)=1∣v(0))−p(hj(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} wij​←wij​+η[p(hj(0)​=1∣v(0))vi(0)​−p(hj(1)​=1∣v(1))vi(1)​]bi​←bi​+η(vi(0)​−vi(1)​)cj​←cj​+η[p(hj(0)​=1∣v(0))−p(hj(1)​=1∣v(1))]​

三、深度信念网络

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

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

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

四、应用

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)学习笔记(六)对比散度算法

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

  1. 从RBM(受限玻尔兹曼机)开始、到深度信念网络(DBN)再到自动编码器(AE)

    从RBM(受限玻尔兹曼机)开始.到深度信念网络(DBN)再到自动编码器(AE) 目录

  2. RBM(限制玻尔兹曼机)、DBN(深度信念网络)介绍

           一.DBNs是一个概率生成模型,与传统的判别模型的神经网络相对,用于建立一个观察数据和标签之间的联合分布.                             二.DBN的训练   ...

  3. 机器学习笔记之深度信念网络(二)模型构建思想(RBM叠加结构)

    机器学习笔记之深度信念网络--模型构建思想 引言 回顾:深度信念网络的结构表示 解析RBM隐变量的先验概率 通过模型学习隐变量的先验概率 小插曲:杰森不等式(2023/1/11) 杰森不等式的数学证明 ...

  4. 机器学习笔记之深度信念网络(三)贪心逐层预训练算法

    机器学习笔记之深度信念网络--贪心逐层预训练算法 引言 回顾:深度信念网络的结构表示 回顾: RBM \text{RBM} RBM叠加思想 贪心逐层预训练算法 引言 上一节介绍了深度信念网络模型的构建 ...

  5. 机器学习笔记之深度信念网络(一)背景介绍与结构表示

    机器学习笔记之深度信念网络--背景介绍与结构表示 引言 深度信念网络 场景构建 深度信念网络的联合概率分布 引言 从本节开始,将介绍深度信念网络. 深度信念网络 深度信念网络(Deep Belief ...

  6. 深度信念网络与受限玻尔兹曼机

    本篇非常简要地介绍了深度信念网络的基本概念.文章先简要介绍了深度信念 网络(包括其应用实例).接着分别讲述了:(1) 其基本组成结构--受限玻 尔兹曼机的的基本情况,以及,(2) 这个基本结构如何组成 ...

  7. 深度学习:自编码器、深度信念网络和深度玻尔兹曼机

    最近自己会把自己个人博客中的文章陆陆续续的复制到CSDN上来,欢迎大家关注我的 个人博客,以及我的github. 本文主要讲解有关自编码器.深度信念网络和深度玻尔兹曼机的相关知识. 一.自编码器 1. ...

  8. 玻尔兹曼机、深度信念网络、编码器等生成模型

    受限玻尔兹曼机 -训练方式:对比散度方法(示例代码如下,原博客为https://blog.csdn.net/slx_share/article/details/92072228?ops_request ...

  9. 常见的五种神经网络(4)-深度信念网络(下)篇之深度信念网络的原理解读、参数学习

    该系列的其他文章: 常见的五种神经网络(1)-前馈神经网络 常见的五种神经网络(2)-卷积神经网络 常见的五种神经网络(3)-循环神经网络(上篇) 常见的五种神经网络(3)-循环神经网络(中篇) 常见 ...

  10. 机器学习:深度信念网络(DBN)原理和实现

    深度信念网络结构,经典结构,直接上图: DBN由多个RBM堆叠而成,训练过程由预训练和微调构成 深度信念网络训练步骤: (1)预训练:分别单独无监督的训练每一层RBM网络,确保特征向量映射到不同特征空 ...

最新文章

  1. gradle项目 避免每次下载gradle文件/解决依赖下载慢的问题
  2. 百亿级数据分表后怎么分页查询?
  3. 你适合编程吗?你喜欢编程吗?
  4. 局域网win7计算机如何互访,局域网win7电脑的互访步骤
  5. mail发送的内容显示为附件的解决办法
  6. [HEOI2016TJOI2016]排序(二分+线段树)
  7. echarts数据可视化_Golang 数据可视化利器 go-echarts 开源啦
  8. UVA13029 Emoticons【文本处理】
  9. html小写罗马字符怎么写,如何在 LATEX 中插入大小写的罗马字符
  10. 使用screw一键生成数据库文档
  11. 我学了这套性能优化方法论,领导年终奖给我发了6个月
  12. 基于STM32的智能快递箱(快递驿站)设计
  13. safari看html5卡顿,MacOS下Safari 10浏览器卡顿解决方案整理 - YangJunwei
  14. AE 或PR等软件载入素材时,无法访问网络驱动器资源的问题
  15. JAVA基础第三章 面向对象进阶--多态等
  16. BJ模拟:医院(支配树)
  17. ubuntu server 14.04 编译安装xen4.4.2配置vtpm(一)——xen4.4.2源码编译安装
  18. 撑起“Web III”的支柱:信息 + 契约 + 身份
  19. ERP : 能力需求计划
  20. phpstudy网站或站点创建成功,打开无响应

热门文章

  1. 在Linux 中安装cmus 用命令行中玩转音乐库
  2. CorelDRAW2023安装下载教程精简版矢量绘图软件
  3. C++程序设计课程设计报告
  4. linux安装多路径软件,IBM服务器多路径软件RDAC安装详解
  5. 深度学习笔记(19) 多任务学习
  6. 将人工智能(AI)应用于软件测试中
  7. 商业智能的研究,主要集中在哪三个方面?
  8. capacity和capability的区别
  9. 支付网关路由之设计方案实战
  10. 不重启linux服务器禁用U盘,如何在Linux服务器上禁用U盘?