受限玻尔兹曼机

本文介绍了受限玻尔兹曼机相关知识。先阐述Hopfield神经网络,包括其特点、联想记忆及能量函数等;接着介绍玻尔兹曼机,可避免局部最优解;然后引出受限玻尔兹曼机,由可见层和隐藏层构成;还提及对比散度算法。最后介绍深度信念网络,由受限玻尔兹曼机堆叠组成,可作生成或判别模型。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

受限玻尔兹曼机起源于图模型的神经网络。这种神经网络是由Hopfield\text{Hopfield}Hopfield神经网络那样的相互连接型网络衍生而来的。本部分首先介绍Hopfield\text{Hopfield}Hopfield神经网络和玻尔兹曼机,然后介绍受限玻尔兹曼机,最后介绍由多个受限玻尔兹曼机堆叠组成的深度信念网络。
Hopfield\text{Hopfield}Hopfield神经网络
神经网络可分为两大类:一类是之前的多层神经网络,另一类是如下图所示的相互连接型网络。相互连接型网络不分层,单元之间相互连接。它能够根据单元的值记忆网络状态,这称为联想记忆。

图片名称

霍普费尔德于1982年提出的神经网络是最典型的相互连接型网络,它具有以下优点:

  • 单元之间的连接权重对称(wij=wji)(w_{i j}=w_{j i})(wij=wji)
  • 每个单元没有到自身的连接(wii=0)(w_{i i}=0)(wii=0)
  • 单元的状态变化采用随机异步更新方式,每次只有一个单元改变状态。

Hopfield\text{Hopfield}Hopfield神经网络是由nnn个二值单元组成的二值神经网络,每个单元i(i=1,2,⋯ ,n)i(i=1,2, \cdots, n)i(i=1,2,,n) 的输出只能是000111两个值,故而网络有2n2^n2n种状态。联想记忆就是当输入模式为某种状态时,输出端要给出与之相应的输出模式yyy 。如果输入模式于输出模式一致,就称为自联想记忆,否则称为异联想记忆。
自联想记忆
设有由个单元组成的Hopfield\text{Hopfield}Hopfield神经网络,第iii个单元在t&ThickSpace;(t=0,1,2,⋯&ThinSpace;)t\;(t=0,1,2, \cdots )t(t=0,1,2,)时刻的输入记作ui(t)u_{i}(t)ui(t),输出记作xi(t)x_{i}(t)xi(t),连接权重为wijw_{i j}wij,阈值为bi(t)b_{i}(t)bi(t),则t+1t+1t+1时刻单元的输出xi(t+1)x_{i}(t+1)xi(t+1)可用下式表示。xi(t+1)={1ui(t)&gt;0xi(t)ui(t)=0(1)0ui(t)&lt;0 x_{i}(t+1)=\left\{\begin{array}{ll}{1} &amp; {u_{i}(t)&gt;0} \\ {x_{i}(t)} &amp; {u_{i}(t)=0}\qquad(1) \\ {0} &amp; {u_{i}(t)&lt;0}\end{array}\right. xi(t+1)=1xi(t)0ui(t)>0ui(t)=0(1)ui(t)<0 ui(t)=∑j=1nwijxj(t)−bi(t)(2) u_{i}(t)=\sum_{j=1}^{n} w_{i j} x_{j}(t)-b_{i}(t) \qquad(2) ui(t)=j=1nwijxj(t)bi(t)(2)如果单元接收的来自其他单元的输xj(t)x_{j}(t)xj(t)入的权重总和∑j=1nwijxj(t)\sum_{j=1}^{n} w_{i j} x_{j}(t)j=1nwijxj(t)大于阈值bi(t)b_{i}(t)bi(t),则单元的输出就取值为111。如果小于阈值bi(t)b_{i}(t)bi(t),则单元的输出就取值为000
Hopfield\text{Hopfield}Hopfield神经网络中,每个时刻都只有一个随机选择的单元会发生状态变化。对于一个由nnn个单元组成的网络,如果要完成全部单元的状态变化,至少需要nnn个时刻。实际上,单元的状态变化会一直进行下去,直到网络达到稳定状态。各单元的最终状态就是输出模式yyy
根据输入模式联想输出模式时,需要事先确定连接权重wijw_{i j}wij。而连接权重wijw_{i j}wij要对输入模式的训练样本进行训练后才能确定。和神经网络一样,一次训练并不能确定连接权重,而是要不断重复这个训练过程,直到满足终止判断条件。而这个满足条件的指标就是表示Hopfield\text{Hopfield}Hopfield神经网络状态的能量函数EEE,其定义如下:E=−12∑i=1n∑j=1nwijxixj+∑i=1nbixi(3)E=-\frac{1}{2} \sum_{i=1}^{n} \sum_{j=1}^{n} w_{i j} x_{i} x_{j}+\sum_{i=1}^{n} b_{i} x_{i} \qquad(3)E=21i=1nj=1nwijxixj+i=1nbixi(3)
当输入模式与输出模式一致时,能力函数EEE的结果为000
根据公式(1)(1)(1)(2)(2)(2)中定义的状态变化规则改变网络状态时,公式(3)(3)(3)中定义的能力函数EEE总是非递增的,即随时间的不断增加而逐渐减小,直到网络达到稳定状态。
下面证明能力函数的这种性质,即随时间的不断增加而逐渐减小,将公式(3)(3)(3)的能量函数分解成单元kkk的能量函数和kkk以外的单元的能量函数,这样公式(3)(3)(3)可表示如下:E=−12∑i≠kn∑j≠knwijxixj−∑i≠knbixi−12(∑jnwkjxj+∑inwikxi)xk+bkxk(4)\begin{aligned} E=&amp;-\frac{1}{2} \sum_{i \neq k}^{n} \sum_{j \neq k}^{n} w_{i j} x_{i} x_{j}-\sum_{i \neq k}^{n} b_{i} x_{i} \\ &amp;-\frac{1}{2}\left(\sum_{j}^{n} w_{k j} x_{j}+\sum_{i}^{n} w_{i k} x_{i}\right) x_{k}+b_{k} x_{k} \qquad(4)\end{aligned} E=21i̸=knj̸=knwijxixji̸=knbixi21(jnwkjxj+inwikxi)xk+bkxk(4)

ttt时刻至t+1t+1t+1时刻,单元kkk的输出值变化如下:xk(t)→xk(t+1)(5)x_{k}(t) \rightarrow x_{k}(t+1) \qquad(5)xk(t)xk(t+1)(5)此时,Δxk=xk(t+1)−xk(t)\Delta x_{k}=x_{k}(t+1)-x_{k}(t)Δxk=xk(t+1)xk(t)的结果会变为111−1-11
由于Hopfield\text{Hopfield}Hopfield神经网络采用随机异步更新方式,所以除单元kkk以外,其他单元的状态不发生变化。同时Hopfield\text{Hopfield}Hopfield神经网络为对称网络,wij=wjiw_{i j}=w_{j i}wij=wji,故于单元kkk的状态变化量Δxk\Delta x_{k}Δxk相应的能量函数变化量ΔEk\Delta E_{k}ΔEk如下所示:ΔEk=−12(∑j=1nwkjxj+∑i=1nwikxi)Δxk+bkΔxk=−(∑j=1nwkjxj−bk)Δxk(6)\begin{aligned} \Delta E_{k} &amp;=-\frac{1}{2}\left(\sum_{j=1}^{n} w_{k j} x_{j}+\sum_{i=1}^{n} w_{i k} x_{i}\right) \Delta x_{k}+b_{k} \Delta x_{k} \\ &amp;=-\left(\sum_{j=1}^{n} w_{k j} x_{j}-b_{k}\right) \Delta x_{k} \qquad(6)\end{aligned}ΔEk=21(j=1nwkjxj+i=1nwikxi)Δxk+bkΔxk=(j=1nwkjxjbk)Δxk(6)uku_{k}uk表示公式(6)(6)(6)中最终结果括号内的内容,则可得到下式。ΔEk=−ukΔxk(7)\Delta E_{k}=-u_{k} \Delta x_{k} \qquad(7)ΔEk=ukΔxk(7)根据公式(1)(1)(1)中定义的状态变化规则,当Δxk&gt;0\Delta x_{k}&gt;0Δxk>0时,xkx_{k}xk的值从000变为111,即如果uk&gt;0u_{k}&gt;0uk>0,则ΔEk&lt;0\Delta E_{k}&lt;0ΔEk<0,当Δxk&lt;0\Delta x_{k}&lt;0Δxk<0时,xkx_{k}xk的值从111变为000,这时由于uk&lt;0u_{k}&lt;0uk<0,则ΔEk&lt;0\Delta E_{k}&lt;0ΔEk<0。另外,当Δxk=0\Delta x_{k}=0Δxk=0时,ΔEk=0\Delta E_{k}=0ΔEk=0,因此任何情况下,下式都成立ΔEk⩽0(8)\Delta E_{k} \leqslant 0 \qquad(8)ΔEk0(8)由此可见,随着时间的推移,能量函数EEE会不断减小。
接下来,我们将PPP个模式输入到网络中,训练网络的连接权重,以记忆这些模式。模式用xs=(x1s,x2s,⋯&ThinSpace;,xns)(s=1,2,⋯&ThinSpace;,P)x^{s}=\left(x_{1}^{s}, x_{2}^{s}, \cdots, x_{n}^{s}\right)(s=1,2, \cdots, P)xs=(x1s,x2s,,xns)(s=1,2,,P)表示。所谓记忆模式xsx^sxs,就是求与模式对应的能量函数的极小值。阈值为000时,与模式xsx^sxs 对应的能量函数如下所示:Es=12∑i=1n∑j=1nwijsxisxjs(9)E^{s}=\frac{1}{2} \sum_{i=1}^{n} \sum_{j=1}^{n} w_{i j}^{s} x_{i}^{s} x_{j}^{s}\qquad(9)Es=21i=1nj=1nwijsxisxjs(9)为了使能量函数收敛于极小值,可以作如下假设:wijs=xisxjs(10)w_{i j}^{s}=x_{i}^{s} x_{j}^{s} \qquad(10)wijs=xisxjs(10)
这样能量函数可以用公式(11)(11)(11)这样的相互影响矩阵来表示Es=−12∑i=1n∑j=1n(xis)2(xjs)2(11)E^{s}=-\frac{1}{2} \sum_{i=1}^{n} \sum_{j=1}^{n}\left(x_{i}^{s}\right)^{2}\left(x_{j}^{s}\right)^{2} \qquad(11)Es=21i=1nj=1n(xis)2(xjs)2(11)网络需要记忆PPP个模式,因此所有模式的连接权重如下所示wij=1P∑s=1Pwijs=1P∑s=1Pxisxjs(12)w_{i j}=\frac{1}{P} \sum_{s=1}^{P} w_{i j}^{s}=\frac{1}{P} \sum_{s=1}^{P} x_{i}^{s} x_{j}^{s} \qquad(12)wij=P1s=1Pwijs=P1s=1Pxisxjs(12)

玻尔兹曼机

如果发生串扰或陷入局部最优解,Hopfield\text{Hopfield}Hopfield神经网络就不能正确地辨别模式。而玻尔兹曼机则可以通过让每个单元按照一定的概率分布发生状态变化,来避免陷入局部最优解。各单元之间的连接权重是对称的,即wij=wjiw_{i j}=w_{j i}wij=wji,且没有到自身的连接(wii=0)\left(w_{i i}=0\right)(wii=0)。此外,每个单元的输出要么是000,要么是111.这些假设与Hopfield\text{Hopfield}Hopfield神经网络相同,两者最大的区别是,Hopfield\text{Hopfield}Hopfield神经网络的输出是按照某种确定性决定的,而玻尔兹曼机的输出则如下所示,是按照某种概率分布决定的。{p(xi=1∣ui)=exp⁡(xkT)1+exp⁡(xkT)(13)p(xi=0∣ui)=11+exp⁡(xkT) \left\{\begin{array}{l}{p\left(x_{i}=1 | u_{i}\right)=\frac{\exp \left(\frac{x}{k T}\right)}{1+\exp \left(\frac{x}{k T}\right)}}\qquad(13) \\ {p\left(x_{i}=0 | u_{i}\right)=\frac{1}{1+\exp \left(\frac{x}{k T}\right)}}\end{array}\right. p(xi=1ui)=1+exp(kTx)exp(kTx)(13)p(xi=0ui)=1+exp(kTx)1
TTT表示温度系数(&gt;0)(&gt;0)(>0)。如下图所示,随着kTkTkT值的增大,xix_ixi等于111的概率没有显著变化,相反kTkTkT值的减小,曲线在000附近的斜率急剧增大。当TTT趋于无穷时,无论uiu_iui取值如何,xix_ixi等于111000的概率都分别是12\frac{1}{2}21,这种状态称为稳定状态。对于玻尔兹曼机来说,温度系数越大,跳出局部最优解的概率越高。但是温度系数增大时,获得能量函数极小值的概率就会越低,反之温度系数减小时,虽然获得能量函数极小值的概率增加了,但是玻尔兹曼机需要经历较长时间才能达到稳定状态。不过,模拟退火算法能够解决这个问题,这个算法会先采用较大的温度系数进行粗调,然后逐渐减小温度系数进行微调。根据下面的公式,就可以获得温度系数TTT的极小值。T=clog⁡(t+1)(14)T=\frac{c}{\log (t+1)} \qquad(14)T=log(t+1)c(14)

图片名称

Hopfield\text{Hopfield}Hopfield神经网络一样,玻尔兹曼机也是相互连接型网络。网络中的所有单元都通过连接权重与其他单元相连接,训练过程也和Hopfield\text{Hopfield}Hopfield神经网络一样,步骤如下所示:

玻尔兹曼机的训练
0.0.0.训练准备
初始化连接权重wijw_{i j}wij和阈值bib_ibi
1.1.1.调整参数

  • 1.11.11.1 选取一个单元iii,求uiu_iui
  • 1.21.21.2 根据uiu_iui的值,计算输出xix_ixi
  • 1.31.31.3 根据输出xix_ixiuju_juj的值,调整连接权重wijw_{i j}wij和阈值bib_ibi
    重复上述步骤1.11.11.11.31.31.3

首先,使用随机数或相关系数矩阵初始化连接权重。接下来,选取一个单元iii,根据公式(2)(2)(2)计算该单元的激活值uiu_iui。根据公式(1)(1)(1)可知,当ui&gt;0u_{i}&gt;0ui>0xi=1x_i=1xi=1,当ui&lt;0u_{i}&lt;0ui<0xi=1x_i=1xi=1,当ui=0u_{i}=0ui=0xi=xix_i=x_ixi=xi。然后根据xix_ixi的值,利用公式(13)(13)(13)计算出xix_ixi等于111000的概率,并根据这个概率调整xix_ixi的值。计算公式(13)(13)(13)得到的概率,不能直接作为xix_ixi的值使用,而应该把这个概率作为出现概率来决定xix_ixi的值。在调整连接权重wijw_{i j}wij时,按照相同步骤计算单元jjj的值xjx_jxj。如果xix_ixixjx_jxj两者均为111,则增大wijw_{i j}wij,并对所有单元迭代实施相同处理。然后,向网络输入任意的训练样本,按照相同步骤计算xix_ixixjx_jxj。如果两者均为111,则降低wijw_{i j}wij,并对所有单元迭代实施相同处理。这两种更新连接权重的处理分别称为训练和遗忘。迭代过程中使用的是模拟退火算法,逐渐减小温度系数TTT
下面根据上述训练规则,调整连接权重wijw_{i j}wij和偏置bib_ibi。这里使用似然函数L(θ)L(\theta)L(θ)导出调整值L(θ)=∏n=1Np(xn∣θ)(15)L(\theta)=\prod_{n=1}^{N} p\left(x_{n} | \theta\right) \qquad(15)L(θ)=n=1Np(xnθ)(15)这里的θ\thetaθ是一个参数,表示所有的连接权重和偏置。根据公式(15)(15)(15)可以计算出所有组合的似然函数。此外,概率分布p(xn∣θ)p\left(x_{n} | \theta\right)p(xnθ)的定义如下所示。p(xn∣θ)=1Z(θ)exp⁡{−E(x,θ)}(16) p\left(x_{n} | \theta\right)=\frac{1}{Z(\theta)} \exp \{-E(x, \theta)\} \qquad(16) p(xnθ)=Z(θ)1exp{E(x,θ)}(16)公式(16)(16)(16)的概率分布就称为玻尔兹曼机。和公式(3)(3)(3)一样,EEE表示能量函数。Z(θ)Z(\theta)Z(θ)是归一化常数,能够使所有概率分布的总和等于111,可用下式表示:Z(θ)=∑xexp⁡{−E(x,θ)}(17) Z(\theta)=\sum_{x} \exp \{-E(x, \theta)\} \qquad(17) Z(θ)=xexp{E(x,θ)}(17)玻尔兹曼机引入概率分布后,公式(15)(15)(15)的似然函数可以像下面这样转换为对数似然函数。log⁡L(θ)=∑n=1Nlog⁡p(xn∣θ)(18) \log L(\theta)=\sum_{n=1}^{N} \log p\left(x_{n} | \theta\right) \qquad(18) logL(θ)=n=1Nlogp(xnθ)(18)当对数似然函数的梯度为000时,就可以得到最大似然估计量。而对于对似然函数,通过求连接权重wijw_{i j}wij和偏置bib_ibi的相关梯度,可以求出调整值。但是,因为似然函数是基于所有单元组合来计算的,所以单元数过多将会导致组合数异常庞大,无法进行实时计算。为了解决这个问题,人们提出了一种近似算法,即对比散度(Contrastive Divergence,CD)\text{(Contrastive Divergence,CD)}(Contrastive DivergenceCD)算法。
玻尔兹曼机有两种构成形式:第一种全部由可见单元构成;第二种则由可见单元和隐藏单元构成。
隐藏单元与输入数据没有直接联系,但会影响可见单元的概率。假设可见单元为可见变量vvv、隐藏单元为隐藏变量hhh。玻尔兹曼机中含有隐藏变量时,概率分布仍然与前面计算的结果相同,所以这并没有解决似然函数中组合数庞大的问题。与不含隐藏变量的情况相比,玻尔兹曼机中增加隐藏变量后,参数量相应增加了一个输入数据维度。因此组合数增加,计算愈发困难。
如下图所示:


图片名称

受限玻尔兹曼机
含有隐藏变量的玻尔兹曼机的网络训练非常困难。所以辛顿等人在玻尔兹曼机中加入了“层内单元之间无连接”的限制,提出了受限玻尔兹曼机。受限玻尔兹曼机是由可见层和隐藏层构成的两层结构,可见层和隐藏层又分别由可见变量了和隐藏变量构成。可见层与隐藏层之间是相互连接着的,而相同层内单元之间均无连接。受限玻尔兹曼机的能量函数如下所示:E(v,h,θ)=−∑i=1nbivi−∑j=1mcjhj−∑i=1n∑j=1mwijvihj(19) E(v, h, \theta)=-\sum_{i=1}^{n} b_{i} v_{i}-\sum_{j=1}^{m} c_{j} h_{j}-\sum_{i=1}^{n} \sum_{j=1}^{m} w_{i j} v_{i} h_{j} \qquad(19) E(v,h,θ)=i=1nbivij=1mcjhji=1nj=1mwijvihj(19) bib_ibi是可见变量的偏置,cjc_jcj是隐藏变量的偏置,wijw_{ij}wij是连接权重,θ\thetaθ是表示所有连接权重和偏置的参数集合。能量函数E(v,h,θ)E(v, h, \theta)E(v,h,θ),可见变量viv_ivi和隐藏变量hjh_jhj的乘积即表示两者之间的相关程度,其与连接权重wijw_{ij}wij一致时,能够得到参数的最大似然估计量。状态(v,h)(v, h)(v,h)的联合概率分布如下所示。p(v,h∣θ)=1Zexp⁡{−E(v,h,θ)}(20) p(v, h | \theta)=\frac{1}{Z} \exp \{-E(v, h, \theta)\} \qquad(20) p(v,hθ)=Z1exp{E(v,h,θ)}(20) Z=∑v,hexp⁡{−E(v,h,θ)}(21) Z=\sum_{v, h} \exp \{-E(v, h, \theta)\} \qquad(21) Z=v,hexp{E(v,h,θ)}(21)

图片名称

在受限玻尔兹曼机的训练过程中,需要计算的参数包括可见变量的bib_ibi,隐藏变量的偏置cjc_jcj,以及连接权重wijw_{ij}wij。和玻尔兹曼机一样,计算时也需要使用对数似然函数。log⁡L(θ∣v)=log⁡1Z∑hexp⁡{−E(v,h,θ)}=log⁡∑hexp⁡{−E(v,h,θ)}−log⁡∑v,hexp⁡{−E(v,h,θ)}(22) \begin{aligned} \log L(\theta | v) &amp;=\log \frac{1}{Z} \sum_{h} \exp \{-E(v, h, \theta)\} \\ &amp;=\log \sum_{h} \exp \{-E(v, h, \theta)\}-\log \sum_{v, h} \exp \{-E(v, h, \theta)\} \end{aligned} \qquad(22) logL(θv)=logZ1hexp{E(v,h,θ)}=loghexp{E(v,h,θ)}logv,hexp{E(v,h,θ)}(22)对公式(22)(22)(22)求导计算梯度
然后计算连接权重wijw_{ij}wij和偏置bi,cjb_{i}, c_{j}bi,cj
∂log⁡L(θ∣v)∂θ=∂∂θ(log⁡∑hexp⁡(−E(v,h,θ)))−∂∂θ(log⁡∑v,hexp⁡(−E(v,h,θ)))=−1∑nexp⁡{−E(v,h,θ)}∑v,hexp⁡{−E(v,h,θ)}∂E(v,h,θ)∂θ+1∑v,hexp⁡{−E(v,h,θ)}∑v,hexp⁡{−E(v,h,θ)}∂E(v,h,θ)∂θ=−∑hp(v∣h)∂E(v,h,θ)∂θ+∑v,hp(v,h)∂E(v,h,θ)∂θ(23) \begin{aligned} \frac{\partial \log L(\theta | v)}{\partial \theta}=&amp; \frac{\partial}{\partial \theta}\left(\log \sum_{h} \exp (-E(v, h, \theta))\right)-\frac{\partial}{\partial \theta}\left(\log \sum_{v, h} \exp (-E(v, h, \theta))\right) \\ =&amp;-\frac{1}{\sum_{n} \exp \{-E(v, h, \theta)\}} \sum_{v, h} \exp \{-E(v, h, \theta)\} \frac{\partial E(v, h, \theta)}{\partial \theta} \\ &amp;+\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} \\=&amp;-\sum_{h} p(v | h) \frac{\partial E(v, h, \theta)}{\partial \theta}+\sum_{v, h} p(v, h) \frac{\partial E(v, h, \theta)}{\partial \theta} \qquad(23) \end{aligned} θlogL(θv)===θ(loghexp(E(v,h,θ)))θlogv,hexp(E(v,h,θ))nexp{E(v,h,θ)}1v,hexp{E(v,h,θ)}θE(v,h,θ)+v,hexp{E(v,h,θ)}1v,hexp{E(v,h,θ)}θE(v,h,θ)hp(vh)θE(v,h,θ)+v,hp(v,h)θE(v,h,θ)(23) ∂log⁡L(θ∣v)∂wij=−∑hp(v∣h)∂E(v,h,θ)∂wij+∑v,hp(v,h)∂E(v,h,θ)∂wij=∑hp(v∣h)hjvi−∑vp(v)∑hp(h∣v)hjvi(24)=p(Hj=1∣v)vi−∑vp(v)p(Hj=1∣v)vi \begin{aligned} \frac{\partial \log L(\theta | v)}{\partial w_{i j}} &amp;=-\sum_{h} p(v | h) \frac{\partial E(v, h, \theta)}{\partial w_{i j}}+\sum_{v, h} p(v, h) \frac{\partial E(v, h, \theta)}{\partial w_{i j}} \\ &amp;=\sum_{h} p(v | h) h_{j} v_{i}-\sum_{v} p(v) \sum_{h} p(h | v) h_{j} v_{i} \qquad(24)\\ &amp;=p\left(H_{j}=1 | v\right) v_{i}-\sum_{v} p(v) p\left(H_{j}=1 | v\right) v_{i} \end{aligned} wijlogL(θv)=hp(vh)wijE(v,h,θ)+v,hp(v,h)wijE(v,h,θ)=hp(vh)hjvivp(v)hp(hv)hjvi(24)=p(Hj=1v)vivp(v)p(Hj=1v)vi ∂log⁡L(θ∣v)∂bi=vi−∑vp(v)vi(25) \frac{\partial \log L(\theta | v)}{\partial b_{i}}=v_{i}-\sum_{v} p(v) v_{i} \qquad(25) bilogL(θv)=vivp(v)vi(25) ∂log⁡L(θ∣v)∂cj=p(Hj=1∣v)−∑vp(v)p(Hj=1∣v)(26) \frac{\partial \log L(\theta | v)}{\partial c_{j}}=p\left(H_{j}=1 | v\right)-\sum_{v} p(v) p\left(H_{j}=1 | v\right) \qquad(26) cjlogL(θv)=p(Hj=1v)vp(v)p(Hj=1v)(26) 接下来,各参数形式就可以更新如下。wij←wij−∂log⁡L(θ∣v)∂wij(27) w_{i j} \leftarrow w_{i j}-\frac{\partial \log L(\theta | v)}{\partial w_{i j}} \qquad(27) wijwijwijlogL(θv)(27) bi←bi−∂log⁡L(θ∣v)∂bi(28) b_{i} \leftarrow b_{i}-\frac{\partial \log L(\theta | v)}{\partial b_{i}} \qquad(28) bibibilogL(θv)(28) cj←cj−∂log⁡L(θ∣v)∂cj(29) c_{j} \leftarrow c_{j}-\frac{\partial \log L(\theta | v)}{\partial c_{j}} \qquad(29) cjcjcjlogL(θv)(29) 然后迭代更新。不过,和玻尔兹曼机一样,受限玻尔兹曼机也同样存在问题。∑vP(v)\sum_{v} P(v)vP(v)是所有输入模式的总和,不可避免会产生庞大的计算量。要想解决这个问题,可以使用Gibbs\text{Gibbs}Gibbs采样(Gibbs Sampling)(\text{Gibbs Sampling})(Gibbs Sampling)算法进行迭代计算求近似解,但即使这样处理,迭代次数也仍然非常多,于是,人们又提出了对比散度算法这种近似算法。

对比散度算法
对比散度算法也是一种近似算法,能够通过较少的迭代次数求出参数调整值。参数的调整步骤如下所示。
0.0.0.训练准备
初始化连接权重wijw_{i j}wij和阈值bib_ibi
1.1.1.调整参数

  • 1.11.11.1 在可见层v(0)v^{(0)}v(0)设置输入模式
  • 1.21.21.2 调整隐藏层中单元h(0)h^{(0)}h(0)的值
  • 1.31.31.3 根据输出xix_ixixjx_jxj的值,调整连接权重wijw_{i j}wij偏置bib_ibi和偏置cjc_jcj
  • 1.41.41.4调整连接权重和偏置
    重复上述步骤1.11.11.11.41.41.4

深度信念网络
深度信念网络由受限玻尔兹曼机通过堆叠组成,与多层神经网络或卷积神经网络最大的区别是网络的训练方法不同。训练神经网络或卷积神经网络时,首先要确定网络结构,根据最顶层的误差调整连接权重和偏置。具体做法是使用误差反向传播算法,把误差反向传播到下一层,调整所有的连接权重和偏置。而深度信念网络则如图所示,是使用对比散度算法,逐层来调整连接权重和偏置的。具体做法是首先训练输入层和隐藏层之间的参数,把训练后得到的参数作为下一层的输入,再调整该层与下一个隐藏层之间的参数。然后逐次迭代,完成多层网络的训练。

图片名称

深度信念网络既可以当作生成模型来使用,也可以当作判别模型来使用。作为生成模型使用时,网络会按照某种概率分布生成训练数据。概率分布可根据训练样本导,但是覆盖全部数据模式的概率分布很难导出。所以,这里使用最大似然估计法训练参数,得到最能覆盖训练样本的概率分布。这种生成模型能够去除输入数据中含有的噪声,得到新的数据,也能够进行输入数据压缩和特征表达。而作为判别模型使用时,需要在模型顶层添加一层来达到分类的功能。就像手写字符识别那样,判别模型能够对输入数据进行分类。受限玻尔兹曼机不能单独作为判别模型使用,必须在顶层增加特殊的层才能进行数据分类。
设深度信念网络的各层为l=0,1,⋯&ThinSpace;,Ll=0,1, \cdots, Ll=0,1,,L,可见层为v(0)v(0)v(0),隐藏层的单元为h(l)h^{(l)}h(l)。各层的条件概率分布如下所示。p(h(l)∣h(l−1))=(∏if(bi(l)+∑jwij(l−1)hj(l−1)))p\left(h^{(l)} | h^{(l-1)}\right)=\left(\prod_{i} f\left(b_{i}^{(l)}+\sum_{j} w_{i j}^{(l-1)} h_{j}^{(l-1)}\right)\right)p(h(l)h(l1))=(if(bi(l)+jwij(l1)hj(l1)))隐藏层中一个单元的条件概率分布如下所示。
p(hj(1)∣h(l−1))=f(bi(l)+∑jwij(l−1)hj(l−1))p\left(h_{j}^{(1)} | h^{(l-1)}\right)=f\left(b_{i}^{(l)}+\sum_{j} w_{i j}^{(l-1)} h_{j}^{(l-1)}\right)p(hj(1)h(l1))=f(bi(l)+jwij(l1)hj(l1))利用上式,设h(0)=vh^{(0)}=vh(0)=v,迭代调整各层的参数。
玻尔兹曼机起源于Hopfield\text{Hopfield}Hopfield神经网络这种相互连接型神经网络,在此基础上人们又提出了受限玻尔兹曼机。深度学习之所以变得如此流行,受限玻尔兹曼机功不可没,堆叠式的想法也由此诞生。虽然当前的主流技术是卷积神经网络和自编码器,但是受限玻尔兹曼机可用于卷积神经网络的预训练等,因此仍然是一项非常重要的技术。

《图解深度学习》 山下隆义著 张弥译
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值