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

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

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

首先给出能量公式

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(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))

下面我们详细推导深度玻尔兹曼机的训练过程
给定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))

下面开始对参数进行求导,我们知道
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))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]

那么我们可以得到
LW(1)=1mi=1mEp(h|v^(i))[vh(1)T]Ep(v,h)[vh(1)T]

在处理深度波尔兹曼机的时候,第一项我们需要知道p(h|v),但是它是很难处理的,所以我们想找一个函数来逼近它。我们令Q(h(1),h(2)|v)P(h(1),h(2)|v)的近似,为了更好的计算Q(h(1),h(2)|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)]

减去的一项是PQ的交叉熵,当两者分布一样时为0,所以我们从优化lnP(v)转而优化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来逼近P,然后再对优化的函数进行求导。为了问题更简化,我们假设Q是伯努利分布,那么我们即可假设h^j(1)=Q(hj(1)=1|v)h^k(2)=Q(hk(2)=1|v),这个时候
Q(h(1),h(2)|v)=j(h^j(1))hj(1)(1h^j(1))(1hj(1))×k(h^k(2))hk(2)(1h^k(2))(1hk(2))

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

这个时候我们得到更新规则
h^j(1)=σ(iviWi,j(1)+kWj,k(2)h^k(2))h^k(2)=σ(jWj,k(2)h^j(1))

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

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

h(1)h(2)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)

所以得到
L=vTW(1)h^(1)+h^(1)TW(2)h^(2)logZ+H(Q)

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

参数更新,即令
LLW(1)=1mi=1mvTh^(1)lnZW(1)LLW(2)=1mi=1mh^(1)Th^(2)lnZW(2)

我们碰到了第二个难点在于计算lnZW(1)lnZW(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)]

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

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

没有更多推荐了,返回首页