深度玻尔兹曼机的推导过程
深度波尔兹曼机相对于深度信念网络来说是完全无向的一个模型,拥有一个显层和若干个隐层。层与层之间是全连接的,层之间是不连接的。本博客主要是推导深度波尔兹曼机的训练过程,为了推导方便,我们以一层显层和两层隐层为例。
首先给出能量公式
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
个可见变量 训练集,调整参数使得对数似然最大,训练的函数为
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
=
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=∂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
∂
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
]
那么我们可以得到
∂L∂W(1)=1m∑i=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 和的交叉熵,当两者分布一样时为 0 0 ,所以我们从优化转而优化 L L 。
所以
所以我们首先第一步选择合适的 Q Q 来逼近,然后再对优化的函数进行求导。为了问题更简化,我们假设 Q Q 是伯努利分布,那么我们即可假设, 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(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
)
)
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 的参数,即
这个时候我们得到更新规则
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
)
=
σ
(
∑
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=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)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 个可见变量 训练集训练样本集,那么我们即优化
LL=1m∑i=1mL(v^(i))
L
L
=
1
m
∑
i
=
1
m
L
(
v
^
(
i
)
)
参数更新,即令
∂LL∂W(1)=1m∑i=1mvTh^(1)−∂lnZ∂W(1)∂LL∂W(2)=1m∑i=1mh^(1)Th^(2)−∂lnZ∂W(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
)
我们碰到了第二个难点在于计算 ∂lnZ∂W(1) ∂ ln Z ∂ W ( 1 ) 和 ∂lnZ∂W(2) ∂ ln Z ∂ 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)]
∂
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)≈1m∑j=1mf(yj)
∑
y
p
(
y
)
f
(
y
)
≈
1
m
∑
j
=
1
m
f
(
y
j
)
所以我们只需要进行吉布斯采样得到服从 p(v,h) p ( v , h ) 分布的 v v 和即可。