深度玻尔兹曼机的推导过程
深度波尔兹曼机相对于深度信念网络来说是完全无向的一个模型,拥有一个显层和若干个隐层。层与层之间是全连接的,层之间是不连接的。本博客主要是推导深度波尔兹曼机的训练过程,为了推导方便,我们以一层显层和两层隐层为例。
首先给出能量公式
E(v,h(1),h(2))=vTW(1)h(1)+h(1)TW(2)h(2)E(v,h(1),h(2))=vTW(1)h(1)+h(1)TW(2)h(2)
然后我们有联合概率分布
p(v,h(1),h(2))=1Zexp(−E(v,h(1),h(2)))p(v,h(1),h(2))=1Zexp(−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(vi=1|h(1))=σ(Wi,:(1)h(1))P(hi(1)=1|v,h(2))=σ(vTW:,i(1)+Wi,:(2)h(2))P(hk(2)=1|h(1))=σ(h(1)TW:,k(2))
下面我们详细推导深度玻尔兹曼机的训练过程
给定mm个可见变量 训练集,调整参数使得对数似然最大,训练的函数为
L=1m∑i=1mlogp(v^(i))=1m∑i=1mlog∑hp(v^(i),h)=1m∑i=1mlog∑hexp(−E(v^(n),h))∑v,hexp(−E(v,h))L=1m∑i=1mlogp(v^(i))=1m∑i=1mlog∑hp(v^(i),h)=1m∑i=1mlog∑hexp(−E(v^(n),h))∑v,hexp(−E(v,h))
下面开始对参数进行求导,我们知道
∂logp(v^(i))∂ωij=∂log∑hp(v^(i),h)∂ωij=∑h∂(log∑hexp(−E(v^(i),h))−log∑v,hexp(−E(v,h)))∂ωij=∑hexp(−E(v^(i),h))∑hexp(−E(v^(i),h))vih(1)j−∑v,hexp(−E(v,h))∑v,hexp(−E(v,h))vih(1)j=∑hp(h|v^(i))vih(1)j−∑v,hp(v,h)vih(1)j∂logp(v^(i))∂ωij=∂log∑hp(v^(i),h)∂ωij=∑h∂(log∑hexp(−E(v^(i),h))−log∑v,hexp(−E(v,h)))∂ωij=∑hexp(−E(v^(i),h))∑hexp(−E(v^(i),h))vihj(1)−∑v,hexp(−E(v,h))∑v,hexp(−E(v,h))vihj(1)=∑hp(h|v^(i))vihj(1)−∑v,hp(v,h)vihj(1)
所以,我们有
∂logp(v^(i))∂W(1)=Ep(h|v^(i))[vh(1)T]−Ep(v,h)[vh(1)T]∂logp(v^(i))∂W(1)=Ep(h|v^(i))[vh(1)T]−Ep(v,h)[vh(1)T]
那么我们可以得到
∂L∂W(1)=1m∑i=1mEp(h|v^(i))[vh(1)T]−Ep(v,h)[vh(1)T]∂L∂W(1)=1m∑i=1mEp(h|v^(i))[vh(1)T]−Ep(v,h)[vh(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)=∏jQ(hj(1)|v)∏kQ(hk(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=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)]
减去的一项是PP和的交叉熵,当两者分布一样时为00,所以我们从优化转而优化LL。
所以
所以我们首先第一步选择合适的QQ来逼近,然后再对优化的函数进行求导。为了问题更简化,我们假设QQ是伯努利分布,那么我们即可假设,h^(2)k=Q(h(2)k=1|v)h^k(2)=Q(hk(2)=1|v),这个时候
Q(h(1),h(2)|v)=∏j(h^(1)j)h(1)j(1−h^(1)j)(1−h(1)j)×∏k(h^(2)k)h(2)k(1−h^(2)k)(1−h(2)k)Q(h(1),h(2)|v)=∏j(h^j(1))hj(1)(1−h^j(1))(1−hj(1))×∏k(h^k(2))hk(2)(1−h^k(2))(1−hk(2))
利用均匀场理论,我们只需求解下面的不动点方程即可确定QQ的参数,即
这个时候我们得到更新规则
h^(1)j=σ(∑iviW(1)i,j+∑k′W(2)j,k′h^(2)k′)h^(2)k=σ(∑j′W(2)j′,kh^(1)j′)h^j(1)=σ(∑iviWi,j(1)+∑k′Wj,k′(2)h^k′(2))h^k(2)=σ(∑j′Wj′,k(2)h^j′(1))
确定好QQ之后,我们就可以来优化我们的函数
L=E[lnP(v,h)]+H(Q)=−E[E(v,h)]−lnZ+H(Q)L=E[lnP(v,h)]+H(Q)=−E[E(v,h)]−lnZ+H(Q)
以计算E[h(1)TW(2)h(2)]E[h(1)TW(2)h(2)]为例,由h^(1)j=Q(h(1)j=1|v)h^j(1)=Q(hj(1)=1|v)以及h^(2)k=Q(h(2)k=1|v)h^k(2)=Q(hk(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)在QQ分布下是独立的,所以
因此
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)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)
所以得到
L=vTW(1)h^(1)+h^(1)TW(2)h^(2)−logZ+H(Q)L=vTW(1)h^(1)+h^(1)TW(2)h^(2)−logZ+H(Q)
给定mm个可见变量 训练集训练样本集,那么我们即优化
LL=1m∑i=1mL(v^(i))LL=1m∑i=1mL(v^(i))
参数更新,即令
∂LL∂W(1)=1m∑i=1mvTh^(1)−∂lnZ∂W(1)∂LL∂W(2)=1m∑i=1mh^(1)Th^(2)−∂lnZ∂W(2)∂LL∂W(1)=1m∑i=1mvTh^(1)−∂lnZ∂W(1)∂LL∂W(2)=1m∑i=1mh^(1)Th^(2)−∂lnZ∂W(2)
我们碰到了第二个难点在于计算∂lnZ∂W(1)∂lnZ∂W(1)和∂lnZ∂W(2)∂lnZ∂W(2)
∂lnZ∂W(1)=ln∑v∑hP(v,h)W(1)=exp(−E(v,h))∑v∑hexp(−E(v,h))×(∂(−E(v,h))∂W(1))=EP(v,h)[vTh(1)]∂lnZ∂W(1)=ln∑v∑hP(v,h)W(1)=exp(−E(v,h))∑v∑hexp(−E(v,h))×(∂(−E(v,h))∂W(1))=EP(v,h)[vTh(1)]
得到的期望并不好计算,所以我们来计算它的近似期望。
我们根据下面事实,近似f(y)f(y)在分布p(y)p(y)上的期望,假设依概率p(y)p(y)选取采样点y1,y2,⋯,ymy1,y2,⋯,ym,那么
∑yp(y)f(y)≈1m∑j=1mf(yj)∑yp(y)f(y)≈1m∑j=1mf(yj)
所以我们只需要进行吉布斯采样得到服从p(v,h)p(v,h)分布的vv和即可。