深度玻尔兹曼机训练过程推导

深度玻尔兹曼机的推导过程

深度波尔兹曼机相对于深度信念网络来说是完全无向的一个模型,拥有一个显层和若干个隐层。层与层之间是全连接的,层之间是不连接的。本博客主要是推导深度波尔兹曼机的训练过程,为了推导方便,我们以一层显层和两层隐层为例。

首先给出能量公式

E(v,h(1),h(2))=vTW(1)h(1)+h(1)TW(2)h(2) E ( v , h ( 1 ) , h ( 2 ) ) = v T W ( 1 ) h ( 1 ) + h ( 1 ) T W ( 2 ) h ( 2 )

然后我们有 联合概率分布
p(v,h(1),h(2))=1Zexp(E(v,h(1),h(2))) p ( v , h ( 1 ) , h ( 2 ) ) = 1 Z exp ⁡ ( − E ( v , h ( 1 ) , h ( 2 ) ) )

根据联合概率分布得到每一层的 条件概率分布
P(vi=1|h(1))=σ(W(1)i,:h(1))P(h(1)i=1|v,h(2))=σ(vTW(1):,i+W(2)i,:h(2))P(h(2)k=1|h(1))=σ(h(1)TW(2):,k) P ( v i = 1 | h ( 1 ) ) = σ ( W i , : ( 1 ) h ( 1 ) ) P ( h i ( 1 ) = 1 | v , h ( 2 ) ) = σ ( v T W : , i ( 1 ) + W i , : ( 2 ) h ( 2 ) ) P ( h k ( 2 ) = 1 | h ( 1 ) ) = σ ( h ( 1 ) T W : , k ( 2 ) )

下面我们详细推导深度玻尔兹曼机的训练过程
给定 m m 个可见变量v^(1),v^(2),,v^(m) 训练集,调整参数使得对数似然最大,训练的函数为

L=1mi=1mlogp(v^(i))=1mi=1mloghp(v^(i),h)=1mi=1mloghexp(E(v^(n),h))v,hexp(E(v,h)) L = 1 m ∑ i = 1 m log ⁡ p ( v ^ ( i ) ) = 1 m ∑ i = 1 m log ⁡ ∑ h p ( v ^ ( i ) , h ) = 1 m ∑ i = 1 m log ⁡ ∑ h exp ⁡ ( − E ( v ^ ( n ) , h ) ) ∑ v , h exp ⁡ ( − E ( v , h ) )

下面开始对参数进行求导,我们知道
logp(v^(i))ωij=loghp(v^(i),h)ωij=h(loghexp(E(v^(i),h))logv,hexp(E(v,h)))ωij=hexp(E(v^(i),h))hexp(E(v^(i),h))vih(1)jv,hexp(E(v,h))v,hexp(E(v,h))vih(1)j=hp(h|v^(i))vih(1)jv,hp(v,h)vih(1)j ∂ log ⁡ p ( v ^ ( i ) ) ∂ ω i j = ∂ log ⁡ ∑ h p ( v ^ ( i ) , h ) ∂ ω i j = ∑ h ∂ ( log ⁡ ∑ h exp ⁡ ( − E ( v ^ ( i ) , h ) ) − log ⁡ ∑ v , h exp ⁡ ( − E ( v , h ) ) ) ∂ ω i j = ∑ h exp ⁡ ( − E ( v ^ ( i ) , h ) ) ∑ h exp ⁡ ( − E ( v ^ ( i ) , h ) ) v i h j ( 1 ) − ∑ v , h exp ⁡ ( − E ( v , h ) ) ∑ v , h exp ⁡ ( − E ( v , h ) ) v i h j ( 1 ) = ∑ h p ( h | v ^ ( i ) ) v i h j ( 1 ) − ∑ v , h p ( v , h ) v i h j ( 1 )

所以,我们有
logp(v^(i))W(1)=Ep(h|v^(i))[vh(1)T]Ep(v,h)[vh(1)T] ∂ log ⁡ p ( v ^ ( i ) ) ∂ W ( 1 ) = E p ( h | v ^ ( i ) ) [ v h ( 1 ) T ] − E p ( v , h ) [ v h ( 1 ) T ]

那么我们可以得到
LW(1)=1mi=1mEp(h|v^(i))[vh(1)T]Ep(v,h)[vh(1)T] ∂ L ∂ W ( 1 ) = 1 m ∑ i = 1 m E p ( h | v ^ ( i ) ) [ v h ( 1 ) T ] − E p ( v , h ) [ v h ( 1 ) T ]

在处理深度波尔兹曼机的时候,第一项我们需要知道 p(h|v) p ( h | v ) ,但是它是很难处理的,所以我们想找一个函数来逼近它。我们令 Q(h(1),h(2)|v) Q ( h ( 1 ) , h ( 2 ) | v ) P(h(1),h(2)|v) P ( h ( 1 ) , h ( 2 ) | v ) 的近似,为了更好的计算 Q(h(1),h(2)|v) Q ( h ( 1 ) , h ( 2 ) | v ) ,我们假设是一个均匀场,根据均匀场理论假设我们得到
Q(h(1),h(2)|v)=jQ(h(1)j|v)kQ(h(2)k|v) Q ( h ( 1 ) , h ( 2 ) | v ) = ∏ j Q ( h j ( 1 ) | v ) ∏ k Q ( h k ( 2 ) | v )

所以我们优化
L=lnP(v)D(Q(h|v)||P(h|v))=E[lnP(v)+lnP(h|v)Q(h|v)]=E[lnP(h|v)P(v)Q(h|v)] L = ln ⁡ P ( v ) − D ( Q ( h | v ) | | P ( h | v ) ) = E [ ln ⁡ P ( v ) + ln ⁡ P ( h | v ) Q ( h | v ) ] = E [ ln ⁡ P ( h | v ) P ( v ) Q ( h | v ) ]

减去的一项是 P P Q的交叉熵,当两者分布一样时为 0 0 ,所以我们从优化lnP(v)转而优化 L L
所以
L=E[lnP(v,h)Q(h|v)]=E[lnP(v,h)Q(h|v)]=E[lnP(v,h)]E[lnQ(h|v)]=hQ(h|v)lnP(v,h)+H(Q)

所以我们首先第一步选择合适的 Q Q 来逼近P,然后再对优化的函数进行求导。为了问题更简化,我们假设 Q Q 是伯努利分布,那么我们即可假设h^j(1)=Q(hj(1)=1|v) h^(2)k=Q(h(2)k=1|v) h ^ k ( 2 ) = Q ( h k ( 2 ) = 1 | v ) ,这个时候
Q(h(1),h(2)|v)=j(h^(1)j)h(1)j(1h^(1)j)(1h(1)j)×k(h^(2)k)h(2)k(1h^(2)k)(1h(2)k) Q ( h ( 1 ) , h ( 2 ) | v ) = ∏ j ( h ^ j ( 1 ) ) h j ( 1 ) ( 1 − h ^ j ( 1 ) ) ( 1 − h j ( 1 ) ) × ∏ k ( h ^ k ( 2 ) ) h k ( 2 ) ( 1 − h ^ k ( 2 ) ) ( 1 − h k ( 2 ) )

利用均匀场理论,我们只需求解下面的不动点方程即可确定 Q Q 的参数,即
Lh^j(1)=0Lh^j(2)=0

这个时候我们得到更新规则
h^(1)j=σ(iviW(1)i,j+kW(2)j,kh^(2)k)h^(2)k=σ(jW(2)j,kh^(1)j) h ^ j ( 1 ) = σ ( ∑ i v i W i , j ( 1 ) + ∑ k ′ W j , k ′ ( 2 ) h ^ k ′ ( 2 ) ) h ^ k ( 2 ) = σ ( ∑ j ′ W j ′ , k ( 2 ) h ^ j ′ ( 1 ) )

确定好 Q Q 之后,我们就可以来优化我们的函数L
L=E[lnP(v,h)]+H(Q)=E[E(v,h)]lnZ+H(Q) L = E [ ln ⁡ P ( v , h ) ] + H ( Q ) = − E [ E ( v , h ) ] − ln ⁡ Z + H ( Q )

以计算 E[h(1)TW(2)h(2)] E [ h ( 1 ) T W ( 2 ) h ( 2 ) ] 为例,由 h^(1)j=Q(h(1)j=1|v) h ^ j ( 1 ) = Q ( h j ( 1 ) = 1 | v ) 以及 h^(2)k=Q(h(2)k=1|v) h ^ k ( 2 ) = Q ( h k ( 2 ) = 1 | v ) 得到
E[h(1)]=h^(1)E[h(2)]=h^(2) E [ h ( 1 ) ] = h ^ ( 1 ) E [ h ( 2 ) ] = h ^ ( 2 )

h(1) h ( 1 ) h(2) h ( 2 ) Q Q 分布下是独立的,所以
E[h(1)h(2)T]=E[h(1)]E[h(2)]=h^(1)h^(2)

因此
E[h(1)TW(2)h(2)]=E[tr(h(1)TW(2)h(2))]=E[tr(W(2)h(2)h(1)T)]=tr(W(2)E[h(2)h(1)T])=tr(W(2)h^(2)h^(1)T)=h^(1)TW(2)h^(2) E [ h ( 1 ) T W ( 2 ) h ( 2 ) ] = E [ t r ( h ( 1 ) T W ( 2 ) h ( 2 ) ) ] = E [ t r ( W ( 2 ) h ( 2 ) h ( 1 ) T ) ] = t r ( W ( 2 ) E [ h ( 2 ) h ( 1 ) T ] ) = t r ( W ( 2 ) h ^ ( 2 ) h ^ ( 1 ) T ) = h ^ ( 1 ) T W ( 2 ) h ^ ( 2 )

所以得到
L=vTW(1)h^(1)+h^(1)TW(2)h^(2)logZ+H(Q) L = v T W ( 1 ) h ^ ( 1 ) + h ^ ( 1 ) T W ( 2 ) h ^ ( 2 ) − log ⁡ Z + H ( Q )

给定 m m 个可见变量v^(1),v^(2),,v^(m) 训练集训练样本集,那么我们即优化
LL=1mi=1mL(v^(i)) L L = 1 m ∑ i = 1 m L ( v ^ ( i ) )

参数更新,即令
LLW(1)=1mi=1mvTh^(1)lnZW(1)LLW(2)=1mi=1mh^(1)Th^(2)lnZW(2) ∂ L L ∂ W ( 1 ) = 1 m ∑ i = 1 m v T h ^ ( 1 ) − ∂ ln ⁡ Z ∂ W ( 1 ) ∂ L L ∂ W ( 2 ) = 1 m ∑ i = 1 m h ^ ( 1 ) T h ^ ( 2 ) − ∂ ln ⁡ Z ∂ W ( 2 )

我们碰到了第二个难点在于计算 lnZW(1) ∂ ln ⁡ Z ∂ W ( 1 ) lnZW(2) ∂ ln ⁡ Z ∂ W ( 2 )
lnZW(1)=lnvhP(v,h)W(1)=exp(E(v,h))vhexp(E(v,h))×((E(v,h))W(1))=EP(v,h)[vTh(1)] ∂ ln ⁡ Z ∂ W ( 1 ) = ln ⁡ ∑ v ∑ h P ( v , h ) W ( 1 ) = exp ⁡ ( − E ( v , h ) ) ∑ v ∑ h exp ⁡ ( − E ( v , h ) ) × ( ∂ ( − E ( v , h ) ) ∂ W ( 1 ) ) = E P ( v , h ) [ v T h ( 1 ) ]

得到的期望并不好计算,所以我们来计算它的近似期望。
我们根据下面事实,近似 f(y) f ( y ) 在分布 p(y) p ( y ) 上的期望,假设依概率 p(y) p ( y ) 选取采样点 y1,y2,,ym y 1 , y 2 , ⋯ , y m ,那么
yp(y)f(y)1mj=1mf(yj) ∑ y p ( y ) f ( y ) ≈ 1 m ∑ j = 1 m f ( y j )

所以我们只需要进行吉布斯采样得到服从 p(v,h) p ( v , h ) 分布的 v v h即可。

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
深度玻尔兹曼机Deep Belief Network,DBN)是一种集深度学习、概率论、统计学习等多个领域知识于一体的机器学习技术。它是受限玻尔兹曼机(Restricted Boltzmann Machine,RBM)的扩展,可以表示多层次的非线性结构。DBN的预训练过程包括两个步骤:单独训练每一个受限玻尔兹曼机,然后将每一个受限玻尔兹曼机深入展开,构成一个前向传播的深层网络。在预训练阶段,每一层的权重参数通过无监督学习的方式进行训练,以逐步学习输入数据的特征表示。预训练完成后,可以使用反向传播算法(BP)对整个网络进行微调,从而优化网络的性能。因此,预训练深度玻尔兹曼机中重要的一步,它可以帮助网络学习到更好的特征表示,提高模型的泛化能力和性能。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [【总结】关于玻尔兹曼机(BM)、受限玻尔兹曼机(RBM)、深度玻尔兹曼机(DBM)、深度置信网络(DBN)理论总结和...](https://blog.csdn.net/qq_43462005/article/details/108712717)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *3* [深度玻尔兹曼机训练方法](https://blog.csdn.net/universsky2015/article/details/132202265)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值