1 Background
1.1 直面配分函数的来源
在概率图模型中,所有的问题基本上都是这三个问题组成的:模型表示(Representation);学习(Learning);推断(Inference)。而Inference 中,有精确推断和近似推断(Variational Inference 和MCMC)。在之前我们Restricted Boltzmann Machine 对模型表示和推断的问题作出了详细的推导,而学习问题当时没有进行推导,这个问题保留到了现在。
在前面的Restricted Boltzmann Machine 问题中,我们对随机变量的联合概率建模,并利用势函数等于Boltzmann Distribution 的形式来表示变量的联合概率密度函数:
P
(
X
)
=
1
Z
∏
i
=
1
k
ϕ
i
(
x
c
i
)
,
ϕ
i
(
x
c
i
)
=
exp
{
−
E
(
x
c
1
)
}
P(X)=\frac{1}{Z} \prod_{i=1}^{k} \phi_{i}\left(x_{c_{i}}\right), \quad \phi_{i}\left(x_{c_{i}}\right)=\exp \left\{-\mathrm{E}\left(x_{c_{1}}\right)\right\}
P(X)=Z1i=1∏kϕi(xci),ϕi(xci)=exp{−E(xc1)}
其中,能量函数 E(
x
x
x ) 的参数需要通过从样本中Learning 来得到。如果是在有向图模型中,这个联合概率很容易被写成因式分解的形式,但是在无向图中没有top 排序的形式。所以,只能根据Markov性质,来将联合概率分布写成最大团的势函数相乘的形式。而大家观察一下无向图模型中,就可以发现,局部没有表现为一个概率,而整体才表现出一个概率。
回想 Restricted Boltzmann Machine,很容易发现,实际上势函数 ϕ i ( ⋅ ) \phi_{i}(\cdot) ϕi(⋅) 的表亦形式比较的简单, 而配分函数 Z 很不好求。在求解的过程中,我们无法避免对 Z 的处理,所以叫“直面配分函数”,这, 个章名字的来由是有点奇怪,而另一种叶法“連選配分函数”也是一个意思。
1.2 求解符号说明
假设随机变量 X 为 p 维的,即为 X
∈
\in
∈
R
p
,
\mathbb{R}^{p},
Rp, 而假设每一个维度是
0
/
1
0 / 1
0/1 分布. 所以,
X
∈
{
0
,
1
}
p
X \in\{0,1\}^{p}
X∈{0,1}p 。随机变量的联合概率分布为:
P
(
X
;
θ
)
=
1
Z
(
θ
)
P
^
(
X
;
θ
)
(
1
)
P(X ; \theta)=\frac{1}{Z(\theta)} \hat{P}(X ; \theta) \ \ \ \ \ \ (1)
P(X;θ)=Z(θ)1P^(X;θ) (1)
其中,
P
^
(
X
;
θ
)
\hat{P}(X ; \theta)
P^(X;θ) 代表势函数的积,
Z
(
θ
)
=
∫
P
^
(
X
;
θ
)
d
X
,
Z(\theta)=\int \hat{P}(X ; \theta) d X,
Z(θ)=∫P^(X;θ)dX, 给定的数据集为
{
x
i
}
i
=
1
N
,
\left\{x_{i}\right\}_{i=1}^{N},
{xi}i=1N, 其中
x
i
(
j
)
x_{i}^{(j)}
xi(j) 代表第
i
i
i 个数据的第 j 维。
2 极大似始代让法 (Maximum Likelihood Estimation)
θ
^
=
arg
max
θ
P
(
X
;
θ
)
=
arg
max
θ
∏
i
=
1
N
1
Z
(
θ
)
P
^
(
x
i
;
θ
)
=
arg
max
θ
∏
i
=
1
N
1
Z
(
θ
)
P
^
(
x
i
;
θ
)
=
arg
max
θ
log
∏
i
=
1
N
1
Z
(
θ
)
P
^
(
x
i
;
θ
)
=
arg
max
θ
∑
i
=
1
N
log
1
Z
(
θ
)
P
^
(
x
i
;
θ
)
=
arg
max
θ
∑
i
=
1
N
[
log
P
^
(
x
i
;
θ
)
−
log
Z
(
θ
)
]
\begin{aligned} \hat{\theta} &=\arg \max _{\theta} P(X ; \theta)=\arg \max _{\theta} \prod_{i=1}^{N} \frac{1}{Z(\theta)} \hat{P}\left(x_{i} ; \theta\right) \\ &=\arg \max _{\theta} \prod_{i=1}^{N} \frac{1}{Z(\theta)} \hat{P}\left(x_{i} ; \theta\right) \\ &=\arg \max _{\theta} \log \prod_{i=1}^{N} \frac{1}{Z(\theta)} \hat{P}\left(x_{i} ; \theta\right) \\ &=\arg \max _{\theta} \sum_{i=1}^{N} \log \frac{1}{Z(\theta)} \hat{P}\left(x_{i} ; \theta\right)=\arg \max _{\theta} \sum_{i=1}^{N}\left[\log \hat{P}\left(x_{i} ; \theta\right)-\log Z(\theta)\right] \end{aligned}
θ^=argθmaxP(X;θ)=argθmaxi=1∏NZ(θ)1P^(xi;θ)=argθmaxi=1∏NZ(θ)1P^(xi;θ)=argθmaxlogi=1∏NZ(θ)1P^(xi;θ)=argθmaxi=1∑NlogZ(θ)1P^(xi;θ)=argθmaxi=1∑N[logP^(xi;θ)−logZ(θ)]
其中,log
Z
(
θ
)
Z(\theta)
Z(θ) 和
i
i
i 没有关系。所以
,
∑
i
=
1
N
log
Z
(
θ
)
=
N
log
Z
(
θ
)
, \sum_{i=1}^{N} \log Z(\theta)=N \log Z(\theta)
,∑i=1NlogZ(θ)=NlogZ(θ) 。而最大化问题和常数项系数没 有太大的关系,所以,将整个等式除以 N。
θ
^
=
arg
max
θ
1
N
∑
i
=
1
N
log
P
^
(
x
i
;
θ
)
−
log
Z
(
θ
)
⏟
target function
\hat{\theta}=\arg \max _{\theta} \underbrace{\frac{1}{N} \sum_{i=1}^{N} \log \hat{P}\left(x_{i} ; \theta\right)-\log Z(\theta)}_{\text {target function }}
θ^=argθmaxtarget function
N1i=1∑NlogP^(xi;θ)−logZ(θ)
下一步,则是求梯度,利用梯度上升法来求解参数,令:
L
(
θ
)
=
1
N
∑
i
=
1
N
log
P
^
(
x
i
;
θ
)
−
log
Z
(
θ
)
\mathcal{L}(\theta)=\frac{1}{N} \sum_{i=1}^{N} \log \hat{P}\left(x_{i} ; \theta\right)-\log Z(\theta)
L(θ)=N1i=1∑NlogP^(xi;θ)−logZ(θ)
而梯度为:
∇
θ
L
(
θ
)
=
1
N
∑
i
=
1
N
log
∇
θ
P
^
(
x
i
;
θ
)
−
∇
θ
log
Z
(
θ
)
\nabla_{\theta} \mathcal{L}(\theta)=\frac{1}{N} \sum_{i=1}^{N} \log \nabla_{\theta} \hat{P}\left(x_{i} ; \theta\right)-\nabla_{\theta} \log Z(\theta)
∇θL(θ)=N1i=1∑Nlog∇θP^(xi;θ)−∇θlogZ(θ)
因为,
P
^
(
x
i
;
θ
)
\hat{P}\left(x_{i} ; \theta\right)
P^(xi;θ) 是势函数的乘积,势函数的形式一般假设为 Boltzmann 分布,导数比较简单。而主要 是
∇
θ
log
Z
(
θ
)
\nabla_{\theta} \log Z(\theta)
∇θlogZ(θ) 比较难求。那么这一项怎么求呢?
∇
θ
log
Z
(
θ
)
=
1
Z
(
θ
)
∇
θ
Z
(
θ
)
\nabla_{\theta} \log Z(\theta)=\frac{1}{Z(\theta)} \nabla_{\theta} Z(\theta)
∇θlogZ(θ)=Z(θ)1∇θZ(θ)
这里,遇到了一个问题
1
Z
(
θ
)
,
\frac{1}{Z(\theta)},
Z(θ)1, 求不出来。那么, 根据等式
(
1
)
,
(1),
(1), 可以得到
Z
(
θ
)
=
P
^
(
X
;
θ
)
P
(
X
;
θ
)
=
∫
P
^
(
X
;
θ
)
d
X
Z(\theta)=\frac{\hat{P}(X ; \theta)}{P(X ; \theta)}=\int \hat{P}(X ; \theta) d X
Z(θ)=P(X;θ)P^(X;θ)=∫P^(X;θ)dX。看到这有很多同学就受不了了,我也是其中一个。你不是要求 P(X;
θ
\theta
θ ) 吗?怎么又用起来了,这里是 这样的,我们采用的是梯度上升的迭代方法,P
(
X
;
θ
t
+
1
)
(X;\theta^{t+1})
(X;θt+1)的具体形式我们不知道。但是
θ
(
t
)
\theta^{(t)}
θ(t) 是知道的,可以利用
P
(
X
;
θ
(
t
)
)
P\left(X ; \theta^{(t)}\right)
P(X;θ(t)) 这个分布来对
t
+
1
t+1
t+1 时刻的梯度方向进行近似求解。然后,下一步的替换有点 Initutive,主要的想法是 Z
(
θ
)
(\theta)
(θ) 求不出来,那么就造一个和
P
(
X
;
θ
)
P(X ; \theta)
P(X;θ) 相关的期望,通过在
P
(
X
;
θ
)
P(X ; \theta)
P(X;θ) 中采样就可以近似处理这个问题。那么:
∇
θ
log
Z
(
θ
)
=
1
Z
(
θ
)
∇
θ
Z
(
θ
)
=
1
Z
(
θ
)
∇
θ
∫
P
^
(
X
;
θ
)
d
X
=
1
Z
(
θ
)
∫
∇
θ
P
^
(
X
;
θ
)
d
X
=
∫
1
Z
(
θ
)
∇
θ
P
^
(
X
;
θ
)
d
X
=
∫
P
(
X
;
θ
)
P
^
(
X
;
θ
)
∇
θ
P
^
(
X
;
θ
)
d
X
=
∫
P
(
X
;
θ
)
∇
θ
log
P
^
(
X
;
θ
)
d
X
=
E
P
(
X
;
θ
)
[
∇
θ
log
P
^
(
X
;
θ
)
]
\begin{aligned} \nabla_{\theta} \log Z(\theta) &=\frac{1}{Z(\theta)} \nabla_{\theta} Z(\theta) \\ &=\frac{1}{Z(\theta)} \nabla_{\theta} \int \hat{P}(X ; \theta) d X \\ &=\frac{1}{Z(\theta)} \int \nabla_{\theta} \hat{P}(X ; \theta) d X \\ &=\int \frac{1}{Z(\theta)} \nabla_{\theta} \hat{P}(X ; \theta) d X \\ &=\int \frac{P(X ; \theta)}{\hat{P}(X ; \theta)} \nabla_{\theta} \hat{P}(X ; \theta) d X \\ &=\int P(X ; \theta) \nabla_{\theta} \log \hat{P}(X ; \theta) d X \\ &=\mathbb{E}_{P(X ; \theta)}\left[\nabla_{\theta} \log \hat{P}(X ; \theta)\right] \end{aligned}
∇θlogZ(θ)=Z(θ)1∇θZ(θ)=Z(θ)1∇θ∫P^(X;θ)dX=Z(θ)1∫∇θP^(X;θ)dX=∫Z(θ)1∇θP^(X;θ)dX=∫P^(X;θ)P(X;θ)∇θP^(X;θ)dX=∫P(X;θ)∇θlogP^(X;θ)dX=EP(X;θ)[∇θlogP^(X;θ)]
其实,大家学到这有这种感觉,积分很多时候都被看成是期望。对于复杂的积分 (无向图中的配分 函数 Z 积分求不出来),用期望的思路来从分布中采样来求得,这是一个很常见的思路。而期望可以 使用 MCMC 等方法,从分布中进行采样来求得。 这样,我们就可以求得近似梯度,一步步的求解出近似的最优
θ
^
\hat{\theta}
θ^。
2.1 小结
本小节,我们介绍了无向图模型中Learning 问题,在利用极大似然估计进行求解的过程中,将面临着配分函数求解不出来的问题。所以,要直面配分函数,我们的思路是通过在未知分布中采样来求解近似梯度,从而通过梯度上升的方法来求得近似的最优参数。下一小节,我们会详细的梳理一下。
3 随机极大似然(Stochastic Maximum Likelihood)
其实,我觉得这种是对近似梯度的一个较为详细的解读,这一章看课程还是听有点绕的。我希望可以把思路理一理来帮助大家进行理解。
3.1 损失函数梯度优化
在上一节中,我们定义了求解的目标为:
{
θ
^
=
arg
max
θ
L
(
θ
)
L
(
θ
)
=
1
N
∑
i
=
1
N
log
P
^
(
x
i
;
θ
)
−
log
Z
(
θ
)
\left\{\begin{array}{l} \hat{\theta}=\arg \max _{\theta} \mathcal{L}(\theta) \\ \\ \mathcal{L}(\theta)=\frac{1}{N} \sum_{i=1}^{N} \log \hat{P}\left(x_{i} ; \theta\right)-\log Z(\theta) \end{array}\right.
⎩⎨⎧θ^=argmaxθL(θ)L(θ)=N1∑i=1NlogP^(xi;θ)−logZ(θ)
我们将采用梯度上升法来求解最优参数,梯度公式为:
∇
θ
L
(
θ
)
=
1
N
∑
i
=
1
N
∇
θ
log
P
^
(
x
i
;
θ
)
−
E
P
(
X
;
θ
)
[
∇
θ
log
P
^
(
X
;
θ
)
]
(
8
)
\nabla_{\theta} \mathcal{L}(\theta)=\frac{1}{N} \sum_{i=1}^{N} \nabla_{\theta} \log \hat{P}\left(x_{i} ; \theta\right)-\mathbb{E}_{P(X ; \theta)}\left[\nabla_{\theta} \log \hat{P}(X ; \theta)\right] \ \ \ \ \ \ \ (8)
∇θL(θ)=N1i=1∑N∇θlogP^(xi;θ)−EP(X;θ)[∇θlogP^(X;θ)] (8)
因为,我们假设给定的数据集为
{
x
i
}
i
=
1
N
,
\left\{x_{i}\right\}_{i=1}^{N},
{xi}i=1N, 如果全部使用就是 Batch-Gradient Descent。如果觉得
N
N
N 太 大了,就从 N 个样本中选取一部分,这就称之为 mini-Batch Gradient Descent。
实际上,
{
x
i
}
i
=
1
N
\left\{x_{i}\right\}_{i=1}^{N}
{xi}i=1N 是来自一个真实的概率分布
P
data
,
P_{\text {data }},
Pdata , Pdata,这个分布具体是什么我们永远都不知道。我们所得到的样本都是从这个真实分布中采样的结果。而从真实分布中采样的结果,也就是我们拿到的样本可以构成了一个经验分布为
P
^
data
\hat{P}_{\text {data }}
P^data
所以,
1
N
∑
i
=
1
N
∇
θ
log
P
^
(
x
i
;
θ
)
\frac{1}{N} \sum_{i=1}^{N} \nabla_{\theta} \log \hat{P}\left(x_{i} ; \theta\right)
N1∑i=1N∇θlogP^(xi;θ) 可以是从真实分布中
(
P
data
)
\left(P_{\text {data }}\right)
(Pdata ) 采样得到的关于势函数乘积的均值。 而我们想要求的联合概率分布
P
(
X
;
θ
)
,
P(X ; \theta),
P(X;θ), 是我们建立的一个模型,,我们的目标就是利用这个模型,根据从真实分布中采样得到的数据来拟合真实分布,从而实现对其他未知数据的推断,这个模型被称为
P
model
P_{\text {model }}
Pmodel 。那么公式 (8) 可以被简化为:
∇
θ
L
(
θ
)
=
E
P
data
[
∇
θ
log
P
^
(
x
i
;
θ
)
]
−
E
P
madet
[
∇
θ
log
P
^
(
X
;
θ
)
]
\nabla_{\theta} \mathcal{L}(\theta)=\mathbb{E}_{P_{\text {data }}\left[\nabla_{\theta} \log \hat{P}\left(x_{i} ; \theta\right)\right]}-\mathbb{E}_{P_{\text {madet }}\left[\nabla_{\theta} \log \hat{P}(X ; \theta)\right]}
∇θL(θ)=EPdata [∇θlogP^(xi;θ)]−EPmadet [∇θlogP^(X;θ)]
而极大似然估计的目的就是使真实分布
P
data
P_{\text {data }}
Pdata 和建立的模型
P
model
P_{\text {model }}
Pmodel 靠的越近越好。如何从
P
model
P_{\text {model }}
Pmodel 中进 行采样呢?因为是梯度上升法,在
t
t
t 时刻,想要求
t
+
1
t+1
t+1 时刻的参数,那么
θ
(
t
)
\theta^{(t)}
θ(t) 是已知的。即为在
t
+
1
t+1
t+1 时刻,
P
model
=
P
(
X
;
θ
(
t
)
)
P_{\text {model }}=P\left(X ; \theta^{(t)}\right)
Pmodel =P(X;θ(t)) 。然后用 Gibbs 采样法,从
P
model
P_{\text {model }}
Pmodel 中采出
m
m
m 个样本
{
x
^
i
}
i
=
1
m
,
\left\{\hat{x}_{i}\right\}_{i=1}^{m},
{x^i}i=1m, Gibbs 采样时 MCMC 的一种,前面在 MCMC 那一章有非常详细的分析。
3.2 梯度分析
为了使似然函数最大化,采用的是梯度上升法,对参数进行更新。
θ
(
t
+
1
)
=
θ
(
t
)
+
η
∇
θ
L
(
θ
(
t
)
)
\theta^{(t+1)}=\theta^{(t)}+\eta \nabla_{\theta} \mathcal{L}\left(\theta^{(t)}\right)
θ(t+1)=θ(t)+η∇θL(θ(t))
然后将(8) 中的结果代入就可以得到,梯度上升法的完整表达形式为:
θ
(
t
+
1
)
=
θ
(
t
)
+
η
[
1
m
[
∑
i
=
1
m
∇
θ
log
P
^
(
x
i
;
θ
)
∣
θ
=
θ
(
t
)
]
−
1
m
[
∑
i
=
1
m
∇
θ
log
P
^
(
x
^
i
;
θ
)
∣
θ
=
θ
(
t
)
]
]
\theta^{(t+1)}=\theta^{(t)}+\eta\left[\frac{1}{m}\left[\left.\sum_{i=1}^{m} \nabla_{\theta} \log \hat{P}\left(x_{i} ; \theta\right)\right|_{\theta=\theta^{(t)}}\right]-\frac{1}{m}\left[\left.\sum_{i=1}^{m} \nabla_{\theta} \log \hat{P}\left(\hat{x}_{i} ; \theta\right)\right|_{\theta=\theta^{(t)}}\right]\right]
θ(t+1)=θ(t)+η[m1[i=1∑m∇θlogP^(xi;θ)∣∣∣∣∣θ=θ(t)]−m1[i=1∑m∇θlogP^(x^i;θ)∣∣∣∣∣θ=θ(t)]]
注意:
x
i
x_{i}
xi 是从真实分布中采样得到的样本点
,
x
^
i
, \hat{x}_{i}
,x^i 是指通过 Gibbs 采样从
P
modol
=
P
(
X
;
θ
(
t
)
)
P_{\text {modol }}=P\left(X ; \theta^{(t)}\right)
Pmodol =P(X;θ(t)) 中得到的 样本。这就是 Gradient Ascent Based Markov Chain Monte Carol。 最终当
θ
\theta
θ 收劍时,梯度等于 0,则表示得到了最优解。此时,
∑
i
=
1
m
∇
θ
log
P
^
(
x
i
;
θ
)
∣
θ
=
θ
(
t
)
=
∑
i
=
1
m
∇
θ
log
P
^
(
x
^
i
;
θ
)
∣
θ
=
θ
(
t
)
\left.\sum_{i=1}^{m} \nabla_{\theta} \log \hat{P}\left(x_{i} ; \theta\right)\right|_{\theta=\theta^{(t)}}=\left.\sum_{i=1}^{m} \nabla_{\theta} \log \hat{P}\left(\hat{x}_{i} ; \theta\right)\right|_{\theta=\theta^{(t)}}
i=1∑m∇θlogP^(xi;θ)∣∣∣∣∣θ=θ(t)=i=1∑m∇θlogP^(x^i;θ)∣∣∣∣∣θ=θ(t)
可以近似的认为
P
data
=
P
modol
P
data
P_{\text {data }}=P_{\text {modol }} \quad P_{\text {data }}
Pdata =Pmodol Pdata 是真实分布,是不知道的,我们只能通过从中采样来得到经验 分布。
P
m
o
d
e
l
P_model
Pmodel 是自定义的假设,希望用这个假设的模型通过对经验分布的学习去逼近真实分布。梯度为零时,这两个分布近似相等,也就达到了我们的目的。 下面我们将对梯度函数进行具体的分析,梯度函数可以分成两部分,第一部分是 Postive phase:
∑
i
=
1
m
∇
θ
log
P
^
(
x
i
;
θ
)
∣
;
\sum_{i=1}^{m} \nabla_{\theta} \log \hat{P}\left(x_{i} ; \theta\right) | ;
∑i=1m∇θlogP^(xi;θ)∣; 第二部分是 Negative phase :
∑
i
=
1
m
∇
θ
log
P
^
(
x
^
i
;
θ
)
,
θ
\sum_{i=1}^{m} \nabla_{\theta} \log \hat{P}\left(\hat{x}_{i} ; \theta\right), \theta
∑i=1m∇θlogP^(x^i;θ),θ 的改变会对
P
model
P_{\text {model }}
Pmodel 产生影
响,记住我们的目标是令
P
data
=
P
model
P_{\text {data }}=P_{\text {model }}
Pdata =Pmodel 假设,对
P
data
P_{\text {data }}
Pdata 和
P
model
P_{\text {model }}
Pmodel 的采样结果如下所示:
其中红色表示从
P
data
P_{\text {data }}
Pdata 中的采样结果
{
x
i
}
i
=
1
m
;
\left\{x_{i}\right\}_{i=1}^{m} ;
{xi}i=1m; 绿色表示从
P
model
P_{\text {model }}
Pmodel 中的采样结果
{
x
^
i
}
i
=
1
m
\left\{\hat{x}_{i}\right\}_{i=1}^{m}
{x^i}i=1m。 采样都 是会趋向于采出概率函数大的区域,如上图所示。因为改变
θ
,
\theta,
θ, 实际上是对
P
model
P_{\text {model }}
Pmodel 带来变化。那么对 于
P
d
a
t
a
P_{data}
Pdata 概率值高的地方,自然也希望
P
m
o
d
e
l
P_{model}
Pmodel 的概率值也高,所以是 Postive phase。而对于
P
m
o
d
e
l
P_{model}
Pmodel概率值高的地方,是不准确的,我们希望降低它的概率值,这就是 Negative Phase。而从另一个方面想, 概率密度函数的积分为 1,有地方升高就要有地方降低。这就是我对 Negative phase 和 Postive phase 的理解。 刚刚将的是对梯度函数的分析。而对目标函数
L
(
θ
)
,
\mathcal{L}(\theta),
L(θ), 另外又给出了一个 Intuitive 的解权, 为什么
Z
(
θ
)
Z(\theta)
Z(θ) 要变少?
Z
(
θ
)
=
∫
P
^
(
X
;
θ
)
d
X
,
Z(\theta)=\int \hat{P}(X ; \theta) d X,
Z(θ)=∫P^(X;θ)dX, 这个积分代表的是
P
^
(
X
;
θ
)
\hat{P}(X ; \theta)
P^(X;θ) 函数曲线和坐标轴围起来的面积。而
P
model
P_{\text {model }}
Pmodel 中的样本称之为“fantasy particle”, 是不信任它的,我们信任的是
P
data
P_{\text {data }}
Pdata 真实分布中的样本,所以要把
P
model
P_{\text {model }}
Pmodel 中样本对应的概率往下拉。
3.3 小结
本小节主要对梯度函数为什么写成这样,做了一个比较直观的解释,个人觉得自己的逻辑思路还算清晰,欢迎各位小伙伴指正。在理解的时候一定要牢记,我们的目的是构建一个假设的分布来通过从真实分布中采样得到的经验分布去逼近真实分布。牢记这一点之后,再去看Negative phase 和Postive phase 的理解,为什么要拉高Pdata 中的采样结果降低Pmodel 中的采样结果,以及为什么要降低 Z ( θ ) Z(θ) Z(θ)等就变得很简单了,对梯度函数中每一项的理解就会清晰很多。
4 The Problem of Gradient Ascent in MCMC
4.1 算法简介
When t + 1:
- Sampling for Postive phase from P data : { x 1 , x 2 , ⋯ , x m } ∼ P data , P_{\text {data }}:\left\{x_{1}, x_{2}, \cdots, x_{m}\right\} \sim P_{\text {data }}, Pdata :{x1,x2,⋯,xm}∼Pdata , 直接从经验分布中采样得到 training data。
- Sampling for Negative phase from
P
model
=
P
(
X
;
θ
(
t
)
)
P_{\text {model }}=P\left(X ;\theta^{(t)}\right)
Pmodel =P(X;θ(t))
(
θ
(
t
)
(\theta^{(t)}
(θ(t)已知):
{
x
^
1
,
x
^
2
,
⋯
,
x
^
m
}
∼
P
model
\left\{\hat{x}_{1}, \hat{x}_{2}, \cdots, \hat{x}_{m}\right\} \sim P_{\text {model }}
{x^1,x^2,⋯,x^m}∼Pmodel 需要使用 Gibbs 采样来实现从
P
model
P_{\text {model }}
Pmodel 中采样:
(a) 初始化 x ^ i , \hat{x}_{i}, x^i, 这个样本可以从任意分布中采样,比如均勿分布或者标准高斯分布,初始化分布 和最后的结果没有关系,可以随意选取。
(b) 构建一条链,在经过一段时间 (Mixing time) 后,收敘到平稳随机分布,如下图所示:
我们假设在第 k k k 步收劍到平稳的状态,之后从平稳分布采一个样本即可。从串行和并行的角 度来考虑这个问题,串行角度可以单独使用一条链,待到分布收簽之后,从分布中采 m 次 样; 并行角度可以使用 m 条链,从每条链的平稳分布中采 1 次样,这样就能得到 m m m 个样本点。很显然,并行的方法采样效率更高,但是对内存的消耗也就越大。 - 最后可以得到
t
+
1
t+1
t+1 时刻的参数为:
θ ( t + 1 ) = θ ( t ) + η [ 1 m [ ∑ i = 1 m ∇ θ log P ^ ( x i ; θ ) ∣ θ = θ ( t ) ] − 1 m [ ∑ i = 1 m ∇ θ log P ^ ( x ^ i ; θ ) ∣ θ = θ ( t ) ] ] \theta^{(t+1)}=\theta^{(t)}+\eta\left[\frac{1}{m}\left[\left.\sum_{i=1}^{m} \nabla_{\theta} \log \hat{P}\left(x_{i} ; \theta\right)\right|_{\theta=\theta^{(t)}}\right]-\frac{1}{m}\left[\left.\sum_{i=1}^{m} \nabla_{\theta} \log \hat{P}\left(\hat{x}_{i} ; \theta\right)\right|_{\theta=\theta^{(t)}}\right]\right] θ(t+1)=θ(t)+η[m1[i=1∑m∇θlogP^(xi;θ)∣∣∣∣∣θ=θ(t)]−m1[i=1∑m∇θlogP^(x^i;θ)∣∣∣∣∣θ=θ(t)]]
4.2 算法带来的问题
主要问题就是Mixing time 时间太长了,有可能 k → ∞ k → ∞ k→∞,这个值实在是太大了。如果,无向图比较简单还好,如果无向图模型过于复杂的话,MCMC 很难知道什么时候会到达平稳状态。于是,需要想想别的办法。
4.3 对比散度(Contrastive Divergence)
对比散度(Contrastive Divergence) 是Hinton 在2000 年提出来的大作,核心目的是:通过寻找合适的初始值来缩短收敛到平稳分布的时间(Mixing time)。CD 在之前的Gradient Ascent in MCMC上只做出了一点点的改动。
之前,Gibbs 采样的初始值是从任意分布中进行采样得到的,我们想找一个合适的初始值,一开始就靠近真实分布,这样就可以压缩Mixing time 了。
那么,如何来实现这呢?做法就是从training data 中直接采样,这样的效果非常的好。也就是令Gibbs 采样的初始值直接等于training data 的值:
x
^
1
=
x
1
,
x
^
2
=
x
2
,
⋯
,
x
^
m
=
x
m
\hat{x}_{1}=x_{1}, \quad \hat{x}_{2}=x_{2}, \cdots, \hat{x}_{m}=x_{m}
x^1=x1,x^2=x2,⋯,x^m=xm
所以,Mixing time 可以被大大缩短,称之为CD-K 算法。k 是可以自己控制的,表示更新k 次以后就从分布中进行采样,这里的k 是几都可以,而且更新k 次以后也不需要一定达到平稳分布。注意,这里的一个step,表示从每一个维度都进行采样后得到一个完整的样本,和样本的维数有关。得到一个样本,m 维就需要采m 次。
4.4 小结
本小节首先是完整的描述了Gradient Ascent in MCMC,然后讲述了这个算法的确点:收敛所需时间太长了,在模型复杂的情况下没法用。为了压缩到达收敛的时间,然后,描述了Hinton 的解决方法,“K-Contrastive Divergence”算法的具体做法,和Gradient Ascent in MCMC 唯一的区别即为用training data 来代替Gibbs 采样的初始值。
5 The Name of Contrastive Divergence
第 4 节中,我们介绍了 Contrastive Divergence, 主要目的是为了缩短 mixing time, 其中
K
−
C
D
K-C D
K−CD 代表的是不管到不到平稳分布,只执行 K 步转移,就从分布中进行采样。那么,为什么叫对比散度呢?
和之前学习的 KL Divergence 有什么区别和联系呢?么,我们对极大似然估计的过程,做一些变换: 那
θ
^
=
arg
max
θ
1
N
∑
i
=
1
N
log
P
(
x
i
;
θ
)
=
arg
max
θ
E
P
data
[
log
P
(
x
i
;
θ
)
]
\begin{aligned} \hat{\theta} &=\arg \max _{\theta} \frac{1}{N} \sum_{i=1}^{N} \log P\left(x_{i} ; \theta\right) \\ &=\arg \max _{\theta} \mathbb{E}_{P_{\text {data }}}\left[\log P\left(x_{i} ; \theta\right)\right] \end{aligned}
θ^=argθmaxN1i=1∑NlogP(xi;θ)=argθmaxEPdata [logP(xi;θ)]
其中,
P
(
x
i
;
θ
)
P\left(x_{i} ; \theta\right)
P(xi;θ) 是
P
model
,
P_{\text {model }},
Pmodel , 所有有:
θ
^
=
arg
max
θ
E
P
data
[
log
P
model
]
=
arg
max
θ
∫
P
data
log
P
model
d
x
(
12
)
\hat{\theta}=\arg \max _{\theta} \mathbb{E}_{P_{\text {data }}}\left[\log P_{\text {model }}\right]=\arg \max _{\theta} \int P_{\text {data }} \log P_{\text {model }} d x \ \ \ \ \ (12)
θ^=argθmaxEPdata [logPmodel ]=argθmax∫Pdata logPmodel dx (12)
而
P
d
a
t
a
P_{data}
Pdata 和
θ
θ
θ 之间并没有任何关联,所以添加和
P
d
a
t
a
P_{data}
Pdata相关的项,对整体结果没有影响。那么,紧接着公式(12) 很显然可以得到:
θ
^
=
arg
max
θ
∫
P
data
log
P
model
d
x
−
P
data
log
P
data
d
x
=
arg
max
θ
∫
P
data
log
P
model
P
data
=
arg
max
θ
−
K
L
(
P
data
∥
P
model
)
=
arg
min
θ
K
L
(
P
data
∥
P
model
)
\begin{aligned} \hat{\theta} &=\arg \max _{\theta} \int P_{\text {data }} \log P_{\text {model }} d x-P_{\text {data }} \log P_{\text {data }} d x \\ &=\arg \max _{\theta} \int P_{\text {data }} \log \frac{P_{\text {model }}}{P_{\text {data }}} \\ &=\arg \max _{\theta}-\mathrm{KL}\left(P_{\text {data }} \| P_{\text {model }}\right) \\ &=\arg \min _{\theta} \mathrm{KL}\left(P_{\text {data }} \| P_{\text {model }}\right) \end{aligned}
θ^=argθmax∫Pdata logPmodel dx−Pdata logPdata dx=argθmax∫Pdata logPdata Pmodel =argθmax−KL(Pdata ∥Pmodel )=argθminKL(Pdata ∥Pmodel )
这样,我们就再次证明了极大似然估计的目的就是使真实分布与建模分布越靠近越好,靠近的程度用 KL 散度来衡量,这样就建立 KL 紫度和极大似然估计的联系。总结一下为:
θ
^
=
arg
max
θ
L
(
θ
)
=
arg
min
θ
K
L
(
P
data
∥
P
model
)
\hat{\theta}=\arg \max _{\theta} \mathcal{L}(\theta)=\arg \min _{\theta} \mathrm{KL}\left(P_{\text {data }} \| P_{\text {model }}\right)
θ^=argθmaxL(θ)=argθminKL(Pdata ∥Pmodel )
看到上面的公式表达,结合之前的分析,用 MCMC 从
P
model
P_{\text {model }}
Pmodel 中采样时一件很困难的事情 (到达 平稳分佈所需时间太长)。而 K-CD 的想法是,转移 K 次,到不到平稳分布都不管了,之前从第 K 转移的分布中进行采样。 在 K-CD 中,使用的是 training data 为 Gibbs 采样的初始值,记为 P
(
0
)
^{(0)}
(0); 假设模型很复杂,转 移到平稳分布
P
model
P_{\text {model }}
Pmodel 所需的时间太长为,记为
P
(
∞
)
;
P^{(\infty)} ;
P(∞); 而实际上,是从第 K 次转移中就进行采样,记 为
P
(
k
)
;
P^{(k)} ;
P(k); 那么我们将目标函数做了一个改变:
K
L
(
P
(
0
)
∥
P
(
∞
)
)
⟹
K
L
(
P
(
0
)
∥
P
(
k
)
)
\mathrm{KL}\left(P^{(0)} \| P^{(\infty)}\right) \Longrightarrow \mathrm{KL}\left(P^{(0)} \| P^{(k)}\right)
KL(P(0)∥P(∞))⟹KL(P(0)∥P(k))
而 KL(
P
(
0
)
∥
P
(
k
)
)
P^{(0)} \| P^{(k))}
P(0)∥P(k)) 可以等价的写为:
K
L
(
P
(
0
)
∥
P
(
k
)
)
=
K
L
(
P
(
0
)
∥
P
(
∞
)
)
−
K
L
(
P
(
k
)
∥
P
(
∞
)
)
(
15
)
\mathrm{KL}\left(P^{(0)} \| P^{(k)}\right)=\mathrm{KL}\left(P^{(0)} \| P^{(\infty)}\right)-\mathrm{KL}\left(P^{(k)} \| P^{(\infty)}\right) \ \ \ \ \ \ (15)
KL(P(0)∥P(k))=KL(P(0)∥P(∞))−KL(P(k)∥P(∞)) (15)
这个公式 (15) 就被定义为“Contrastive Divergence”,这时计算出来的是一个近似的梯度,因为
x
^
i
\hat{x}_{i}
x^i 是 来自于
P
(
k
)
,
P^{(k)},
P(k), 而不是
P
(
∞
)
,
P^{(\infty)},
P(∞), 这个算的上是系统误差了。公式完整表达如下所示:
θ
^
=
KL
(
P
(
0
)
∥
P
(
∞
)
)
−
KL
(
P
(
k
)
∥
P
(
∞
)
)
⏟
Contrastive Divergenco
=
η
[
1
m
[
∑
i
=
1
m
∇
θ
log
P
^
(
x
i
;
θ
)
∣
θ
=
θ
(
t
)
]
−
1
m
[
∑
i
=
1
m
∇
θ
log
P
^
(
x
^
i
;
θ
)
∣
θ
=
θ
(
t
)
]
]
\hat{\theta}=\underbrace{\operatorname{KL}\left(P^{(0)} \| P^{(\infty)}\right)-\operatorname{KL}\left(P^{(k)} \| P^{(\infty)}\right)}_{\text {Contrastive Divergenco }}=\eta\left[\frac{1}{m}\left[\left.\sum_{i=1}^{m} \nabla_{\theta} \log \hat{P}\left(x_{i} ; \theta\right)\right|_{\theta=\theta^{(t)}}\right]-\frac{1}{m}\left[\left.\sum_{i=1}^{m} \nabla_{\theta} \log \hat{P}\left(\hat{x}_{i} ; \theta\right)\right|_{\theta=\theta^{(t)}}\right]\right]
θ^=Contrastive Divergenco
KL(P(0)∥P(∞))−KL(P(k)∥P(∞))=η[m1[i=1∑m∇θlogP^(xi;θ)∣∣∣∣∣θ=θ(t)]−m1[i=1∑m∇θlogP^(x^i;θ)∣∣∣∣∣θ=θ(t)]]
整个算法为CD-Learning,变化之前原始的版本是Maximum Likelihood Learning。
5.1 小结
这一小节中,通过将Likelihood 变化成KL 散度的形式,我们看到了损失函数和散度的关系。然后,通过变换了解了Contrastive Divergence 算法中Divergence 的来源,实际上就是KL 散度的一个变形,只不过是对一个中间分布求KL 散度,而不是对最后的精准分布求。我感觉这个算法的近似尺度有点大,但是神奇的很work。看到这里,不少同学会觉得有点抽象,下面我们就用之前遗留下来的RBM 的学习问题为基础来讲述CD 算法在其中的运用。
6 Restricted Boltzmann Machine Learning
之前的描述是站在一个较高的高度来看无向图模型中Learning 问题是如何解决的,接下来就以RBM 中的Learning 为例,来看看CD 算法是如何工作的。RBM 的Learning 问题中,由于Gibbs Sampling 收敛所需时间过长的问题,所以采用基于CD 的高效的Gibbs 采样。在之前的描述中, P ^ ( X ) \hat P(X) P^(X)中都是observed 的节点,没有hidden 节点,这里和RBM 有点不太一样,不过基本都是一样的。
6.1 Restricted Boltzmann Machine 模型描述
这里只做简要的描述,具体请看之前有关RBM 的详细描述。这里只做简要概述,RBM 概率图模型如下所示:
公式化表达如下所示:
X
=
[
x
1
x
2
⋮
x
p
]
=
[
h
v
]
,
h
=
[
h
1
h
2
⋮
h
m
]
,
v
=
[
v
1
v
2
⋮
v
n
]
,
w
=
[
w
i
j
j
m
×
n
,
α
=
[
α
1
α
2
⋮
α
n
]
,
β
=
[
β
1
β
2
⋮
β
m
]
,
\begin{aligned} X=\left[\begin{array}{c} x_{1} \\ x_{2} \\ \vdots \\ x_{p} \end{array}\right]=\left[\begin{array}{c} h \\ v \end{array}\right], \quad h=\left[\begin{array}{c} h_{1} \\ h_{2} \\ \vdots \\ h_{m} \end{array}\right], \quad v=\left[\begin{array}{c} v_{1} \\ v_{2} \\ \vdots \\ v_{n} \end{array}\right], \quad w=\left[w_{i j} j_{m \times n}, \quad \alpha=\left[\begin{array}{c} \alpha_{1} \\ \alpha_{2} \\ \vdots \\ \alpha_{n} \end{array}\right], \quad \beta=\left[\begin{array}{c} \beta_{1} \\ \beta_{2} \\ \vdots \\ \beta_{m} \end{array}\right],\right. \end{aligned}
X=⎣⎢⎢⎢⎡x1x2⋮xp⎦⎥⎥⎥⎤=[hv],h=⎣⎢⎢⎢⎡h1h2⋮hm⎦⎥⎥⎥⎤,v=⎣⎢⎢⎢⎡v1v2⋮vn⎦⎥⎥⎥⎤,w=⎣⎢⎢⎢⎡wijjm×n,α=⎣⎢⎢⎢⎡α1α2⋮αn⎦⎥⎥⎥⎤,β=⎣⎢⎢⎢⎡β1β2⋮βm⎦⎥⎥⎥⎤,
P
(
X
)
=
1
Z
exp
(
−
E
(
v
,
h
)
)
E
(
v
,
h
)
=
−
h
T
w
v
+
α
T
v
+
β
T
h
=
−
(
∑
i
=
1
m
∑
j
=
1
n
h
i
w
i
j
v
i
+
∑
j
=
1
n
α
j
v
j
+
∑
i
=
1
m
β
i
h
i
)
\begin{aligned} P(X) &=\frac{1}{Z} \exp (-\mathrm{E}(v, h)) \\ \mathrm{E}(v, h) &=-h^{T} w v+\alpha^{T} v+\beta^{T} h \\ &=-\left(\sum_{i=1}^{m} \sum_{j=1}^{n} h_{i} w_{i j} v_{i}+\sum_{j=1}^{n} \alpha_{j} v_{j}+\sum_{i=1}^{m} \beta_{i} h_{i}\right) \end{aligned}
P(X)E(v,h)=Z1exp(−E(v,h))=−hTwv+αTv+βTh=−(i=1∑mj=1∑nhiwijvi+j=1∑nαjvj+i=1∑mβihi)
其中,
α
\alpha
α 和
β
\beta
β 都是一样的,我们重点的关注对象是关于
w
i
j
w_{i j}
wij 的求解,这个的求解难度大一点。求
程分为两部分,求 Likelihood Function 和 Log Likelihood Gradient。
6.2 Likelihood Function
假定 training set 为 observed data set,
v
∈
S
,
∣
S
∣
=
N
v \in S,|S|=N
v∈S,∣S∣=N 。那么 Likelihood function 的形式很简单,可ル表示为:
1
N
∑
v
∈
S
log
P
(
v
)
\frac{1}{N} \sum_{v \in S} \log P(v)
N1v∈S∑logP(v)
6.3 Log Likelihood Gradient
Likelihood Function 的梯度求解为:
1
N
∂
∂
θ
∑
v
∈
S
log
P
(
v
)
log
P
(
v
)
=
log
∑
h
P
(
h
,
v
)
=
log
∑
h
1
Z
exp
{
−
E
(
h
,
v
)
}
\begin{array}{c} \frac{1}{N} \frac{\partial}{\partial \theta} \sum_{v \in S} \log P(v) \\ \\ \log P(v)=\log \sum_{h} P(h, v)=\log \sum_{h} \frac{1}{Z} \exp \{-\mathbb{E}(h, v)\} \end{array}
N1∂θ∂∑v∈SlogP(v)logP(v)=log∑hP(h,v)=log∑hZ1exp{−E(h,v)}
而归一化因子 Z 的表达式即为:
Z
=
∑
h
∑
v
exp
{
−
E
(
h
,
v
)
}
,
Z=\sum_{h} \sum_{v} \exp \{-\mathbb{E}(h, v)\},
Z=∑h∑vexp{−E(h,v)}, 所以:
log
P
(
v
)
=
∑
h
exp
{
−
E
(
h
,
v
)
}
⏟
(
1
)
−
∑
h
∑
v
exp
{
−
E
(
h
,
v
)
}
⏟
(
2
)
\log P(v)=\underbrace{\sum_{h} \exp \{-\mathbb{E}(h, v)\}}_{(1)}-\underbrace{\sum_{h} \sum_{v} \exp \{-\mathbb{E}(h, v)\}}_{(2)}
logP(v)=(1)
h∑exp{−E(h,v)}−(2)
h∑v∑exp{−E(h,v)}
而
θ
=
{
w
,
α
,
β
}
,
\theta=\{w, \alpha, \beta\},
θ={w,α,β}, 梯度公式为:
∂
∂
θ
log
P
(
v
)
=
∂
∂
θ
(
1
)
−
∂
∂
θ
\frac{\partial}{\partial \theta} \log P(v)=\frac{\partial}{\partial \theta}(1)-\frac{\partial}{\partial \theta}
∂θ∂logP(v)=∂θ∂(1)−∂θ∂
其中:
∂
∂
θ
(
1
)
=
∂
∂
θ
∑
h
exp
{
−
E
(
h
,
v
)
}
=
−
1
∑
h
exp
{
−
E
(
h
,
v
)
}
∑
h
exp
{
−
E
(
h
,
v
)
}
∂
∂
θ
E
(
h
,
v
)
\begin{aligned} \frac{\partial}{\partial \theta}(1) &=\frac{\partial}{\partial \theta} \sum_{h} \exp \{-\mathbb{E}(h, v)\} \\ &=\frac{-1}{\sum_{h} \exp \{-\mathbb{E}(h, v)\}} \sum_{h} \exp \{-\mathbb{E}(h, v)\} \frac{\partial}{\partial \theta} \mathbb{E}(h, v) \end{aligned}
∂θ∂(1)=∂θ∂h∑exp{−E(h,v)}=∑hexp{−E(h,v)}−1h∑exp{−E(h,v)}∂θ∂E(h,v)
由于
∑
h
exp
{
−
E
(
h
,
v
)
}
=
exp
{
−
E
(
v
)
}
\sum_{h} \exp \{-\mathbb{E}(h, v)\}=\exp \{-\mathbb{E}(v)\}
∑hexp{−E(h,v)}=exp{−E(v)} 是和
h
h
h 无关的项。所所以,可以写到
∑
h
\sum_{h}
∑h 里面,即为:
∂
∂
θ
(
1
)
=
−
∑
h
exp
{
−
E
(
h
,
v
)
}
∑
h
exp
{
−
E
(
h
,
v
)
∂
∂
θ
E
(
h
,
v
)
=
−
∑
h
1
Z
exp
{
−
E
(
h
,
v
)
}
1
Z
∑
h
exp
{
−
E
(
h
,
v
)
∂
∂
θ
E
(
h
,
v
)
=
−
∑
h
1
Z
exp
{
−
E
(
h
,
v
)
}
1
Z
exp
{
−
E
(
v
)
∂
∂
θ
E
(
h
,
v
)
=
−
∑
h
P
(
h
,
v
)
P
(
v
)
∂
∂
θ
E
(
h
,
v
)
=
−
∑
h
P
(
h
∣
v
)
∂
∂
θ
E
(
h
,
v
)
\begin{aligned} \frac{\partial}{\partial \theta}(1) &=-\sum_{h} \frac{\exp \{-\mathbb{E}(h, v)\}}{\sum_{h} \exp \{-\mathbb{E}(h, v)} \frac{\partial}{\partial \theta} \mathbb{E}(h, v) \\ &=-\sum_{h} \frac{\frac{1}{Z} \exp \{-\mathbb{E}(h, v)\}}{\frac{1}{Z} \sum_{h} \exp \{-\mathbb{E}(h, v)} \frac{\partial}{\partial \theta} \mathbb{E}(h, v) \\ &=-\sum_{h} \frac{\frac{1}{Z} \exp \{-\mathbb{E}(h, v)\}}{\frac{1}{Z} \exp \{-\mathbb{E}(v)} \frac{\partial}{\partial \theta} \mathbb{E}(h, v) \\ &=-\sum_{h} \frac{P(h, v)}{P(v)} \frac{\partial}{\partial \theta} \mathbb{E}(h, v) \\ &=-\sum_{h} P(h | v) \frac{\partial}{\partial \theta} \mathbb{E}(h, v) \end{aligned}
∂θ∂(1)=−h∑∑hexp{−E(h,v)exp{−E(h,v)}∂θ∂E(h,v)=−h∑Z1∑hexp{−E(h,v)Z1exp{−E(h,v)}∂θ∂E(h,v)=−h∑Z1exp{−E(v)Z1exp{−E(h,v)}∂θ∂E(h,v)=−h∑P(v)P(h,v)∂θ∂E(h,v)=−h∑P(h∣v)∂θ∂E(h,v)
同样,
∑
h
∑
v
exp
{
−
E
(
h
,
v
)
}
\sum_{h} \sum_{v} \exp \{-\mathbb{E}(h, v)\}
∑h∑vexp{−E(h,v)} 和
h
,
v
h, v
h,v 都没有关系,所以,
∂
∂
θ
(
2
)
=
∂
∂
θ
∑
h
∑
v
exp
{
−
E
(
h
,
v
)
}
=
−
1
∑
h
∑
v
exp
{
−
E
(
h
,
v
)
}
∑
h
∑
v
exp
{
−
E
(
h
,
v
)
}
∂
∂
θ
E
(
h
,
v
)
=
−
∑
h
∑
v
exp
{
−
E
(
h
,
v
)
}
∑
h
∑
v
exp
{
−
E
(
h
,
v
)
∂
∂
θ
E
(
h
,
v
)
=
−
∑
h
∑
v
exp
{
−
E
(
h
,
v
)
}
Z
∂
∂
θ
E
(
h
,
v
)
=
−
∑
h
∑
v
P
(
h
,
v
)
∂
∂
θ
E
(
h
,
v
)
\begin{aligned} \frac{\partial}{\partial \theta}(2) &=\frac{\partial}{\partial \theta} \sum_{h} \sum_{v} \exp \{-\mathbb{E}(h, v)\} \\ &=\frac{-1}{\sum_{h} \sum_{v} \exp \{-\mathbb{E}(h, v)\}} \sum_{h} \sum_{v} \exp \{-\mathbb{E}(h, v)\} \frac{\partial}{\partial \theta} \mathbb{E}(h, v) \\ &=-\sum_{h} \sum_{v} \frac{\exp \{-\mathbb{E}(h, v)\}}{\sum_{h} \sum_{v} \exp \{-\mathbb{E}(h, v)} \frac{\partial}{\partial \theta} \mathbb{E}(h, v) \\ &=-\sum_{h} \sum_{v} \frac{\exp \{-\mathbb{E}(h, v)\}}{Z} \frac{\partial}{\partial \theta} \mathbb{E}(h, v) \\ &=-\sum_{h} \sum_{v} P(h, v) \frac{\partial}{\partial \theta} \mathbb{E}(h, v) \end{aligned}
∂θ∂(2)=∂θ∂h∑v∑exp{−E(h,v)}=∑h∑vexp{−E(h,v)}−1h∑v∑exp{−E(h,v)}∂θ∂E(h,v)=−h∑v∑∑h∑vexp{−E(h,v)exp{−E(h,v)}∂θ∂E(h,v)=−h∑v∑Zexp{−E(h,v)}∂θ∂E(h,v)=−h∑v∑P(h,v)∂θ∂E(h,v)
综上所述,
1
N
∂
∂
θ
log
P
(
v
)
\frac{1}{N} \frac{\partial}{\partial \theta} \log P(v)
N1∂θ∂logP(v) 可以表达为:
1
N
∂
∂
θ
log
P
(
v
)
=
1
N
(
∂
∂
θ
(
1
)
−
∂
∂
θ
(
2
)
)
=
1
N
(
∑
h
∑
v
P
(
h
,
v
)
∂
∂
θ
E
(
h
,
v
)
−
∑
h
P
(
h
∣
v
)
∂
∂
θ
E
(
h
,
v
)
)
\begin{aligned} \frac{1}{N} \frac{\partial}{\partial \theta} \log P(v) &=\frac{1}{N}\left(\frac{\partial}{\partial \theta}(1)-\frac{\partial}{\partial \theta}(2)\right) \\ &=\frac{1}{N}\left(\sum_{h} \sum_{v} P(h, v) \frac{\partial}{\partial \theta} \mathbb{E}(h, v)-\sum_{h} P(h | v) \frac{\partial}{\partial \theta} \mathbb{E}(h, v)\right) \end{aligned}
N1∂θ∂logP(v)=N1(∂θ∂(1)−∂θ∂(2))=N1(h∑v∑P(h,v)∂θ∂E(h,v)−h∑P(h∣v)∂θ∂E(h,v))
那么,基于 Energy 函数的带隐变量的 Likelihood Gradient 的形式就表达出来了。
6.4 针对 w w w 参数的Log Likelihood Gradient
前面已经说了,
θ
=
{
w
,
α
,
β
}
,
\theta=\{w, \alpha, \beta\},
θ={w,α,β}, 其中
α
\alpha
α 和
β
\beta
β 的求解比较简单,我们主要是求解
w
∘
w_{\circ}
w∘
∂
∂
θ
log
P
(
v
)
=
∑
h
∑
v
P
(
h
,
v
)
∂
∂
θ
E
(
h
,
v
)
−
∑
h
P
(
h
∣
v
)
∂
∂
θ
E
(
h
,
v
)
\begin{array}{c} \frac{\partial}{\partial \theta} \log P(v)=\sum_{h} \sum_{v} P(h, v) \frac{\partial}{\partial \theta} \mathbb{E}(h, v)-\sum_{h} P(h | v) \frac{\partial}{\partial \theta} \mathbb{E}(h, v) \\ \end{array}
∂θ∂logP(v)=∑h∑vP(h,v)∂θ∂E(h,v)−∑hP(h∣v)∂θ∂E(h,v)
令
θ
=
w
i
j
:
\theta=w_{ij}:
θ=wij:
∂
∂
w
i
j
log
P
(
v
)
=
∑
h
∑
v
P
(
h
,
v
)
∂
∂
w
i
j
E
(
h
,
v
)
−
∑
h
P
(
h
∣
v
)
∂
∂
w
i
j
E
(
h
,
v
)
\begin{array}{c} \frac{\partial}{\partial w_{i j}} \log P(v)=\sum_{h} \sum_{v} P(h, v) \frac{\partial}{\partial w_{i j}} \mathbb{E}(h, v)-\sum_{h} P(h | v) \frac{\partial}{\partial w_{i j}} \mathbb{E}(h, v) \end{array}
∂wij∂logP(v)=∑h∑vP(h,v)∂wij∂E(h,v)−∑hP(h∣v)∂wij∂E(h,v)
而
E
(
v
,
h
)
=
−
h
T
w
v
+
α
T
v
+
β
T
h
,
\mathrm{E}(v, h)=-h^{T} w v+\alpha^{T} v+\beta^{T} h,
E(v,h)=−hTwv+αTv+βTh, 因为
α
T
v
+
β
T
h
\alpha^{T} v+\beta^{T} h
αTv+βTh 和
w
i
j
w_{i j}
wij 之间没有关系,基本不用看,我们就用
△
\triangle
△来表示。那么,
E
(
v
,
h
)
=
−
h
T
w
v
+
Δ
,
\mathrm{E}(v, h)=-h^{T} w v+\Delta,
E(v,h)=−hTwv+Δ, 那么:
E
(
v
,
h
)
=
−
(
∑
i
=
1
m
∑
j
=
1
n
h
i
w
i
j
v
i
+
Δ
)
\mathrm{E}(v, h)=-\left(\sum_{i=1}^{m} \sum_{j=1}^{n} h_{i} w_{i j} v_{i}+\Delta\right)
E(v,h)=−(i=1∑mj=1∑nhiwijvi+Δ)
所以:
∂
∂
w
i
j
log
P
(
v
)
=
∑
h
∑
v
P
(
h
,
v
)
(
−
h
i
v
j
)
−
∑
h
P
(
h
∣
v
)
(
−
h
i
v
j
)
=
∑
h
P
(
h
∣
v
)
h
i
v
j
−
∑
h
∑
v
P
(
h
,
v
)
h
i
v
j
\begin{aligned} \frac{\partial}{\partial w_{i j}} \log P(v) &=\sum_{h} \sum_{v} P(h, v)\left(-h_{i} v_{j}\right)-\sum_{h} P(h | v)\left(-h_{i} v_{j}\right) \\ &=\sum_{h} P(h | v) h_{i} v_{j}-\sum_{h} \sum_{v} P(h, v) h_{i} v_{j} \end{aligned}
∂wij∂logP(v)=h∑v∑P(h,v)(−hivj)−h∑P(h∣v)(−hivj)=h∑P(h∣v)hivj−h∑v∑P(h,v)hivj
那么,下一步的问题就是如何求解
∑
h
P
(
h
∣
v
)
h
i
v
j
\sum_{h} P(h | v) h_{i} v_{j}
∑hP(h∣v)hivj 和
∑
h
∑
v
P
(
h
,
v
)
h
i
v
j
\sum_{h} \sum_{v} P(h, v) h_{i} v_{j}
∑h∑vP(h,v)hivj 。为了简化运算,我们令
R
B
M
\mathrm{RBM}
RBM中每个节点都是 0/1 分布,即为
y
i
,
h
i
∈
{
0
,
1
}
y_{i}, h_{i} \in\{0,1\}
yi,hi∈{0,1}
6.4.1 P ( h ∣ v ) P(h | v) P(h∣v) 求解
P
(
h
∣
v
)
h
i
v
j
=
∑
h
1
∑
h
2
⋯
∑
h
i
⋯
∑
h
m
P
(
h
1
,
h
2
,
⋯
,
h
i
,
⋯
,
h
m
∣
v
)
h
i
v
j
P(h | v) h_{i} v_{j}=\sum_{h_{1}} \sum_{h_{2}} \cdots \sum_{h_{i}} \cdots \sum_{h_{m}} P\left(h_{1}, h_{2}, \cdots, h_{i}, \cdots, h_{m} | v\right) h_{i} v_{j}
P(h∣v)hivj=h1∑h2∑⋯hi∑⋯hm∑P(h1,h2,⋯,hi,⋯,hm∣v)hivj
因为,后面的
h
i
v
j
h_{i} v_{j}
hivj 只和
h
i
h_{i}
hi 相关。所りん,把
P
(
h
∣
v
)
P(h | v)
P(h∣v) 中除了
h
i
h_{i}
hi 以外所有的项都求和掉,得到的就是边缘概率分布:
P
(
h
∣
v
)
h
i
v
j
=
∑
h
i
P
(
h
i
∣
v
)
h
i
v
j
P(h | v) h_{i} v_{j}=\sum_{h_{i}} P\left(h_{i} | v\right) h_{i} v_{j}
P(h∣v)hivj=hi∑P(hi∣v)hivj
又因为
h
i
∈
{
0
,
1
}
,
h_{i} \in\{0,1\},
hi∈{0,1}, 所以:
∑
h
i
P
(
h
i
∣
v
)
h
i
v
j
=
P
(
h
i
=
0
∣
v
)
0
v
j
+
P
(
h
i
=
1
∣
v
)
1
v
j
=
P
(
h
i
=
1
∣
v
)
v
j
\sum_{h_{i}} P\left(h_{i} | v\right) h_{i} v_{j}=P\left(h_{i}=0 | v\right) 0 v_{j}+P\left(h_{i}=1 | v\right) 1 v_{j}=P\left(h_{i}=1 | v\right) v_{j}
hi∑P(hi∣v)hivj=P(hi=0∣v)0vj+P(hi=1∣v)1vj=P(hi=1∣v)vj
而在之前的章节中,我们就已经详细的推导过了:
P
(
h
i
=
1
∣
v
)
=
σ
(
h
i
(
v
)
)
=
σ
(
∑
j
=
1
n
w
i
j
v
i
+
β
i
)
P\left(h_{i}=1 | v\right)=\sigma\left(h_{i}(v)\right)=\sigma\left(\sum_{j=1}^n w_{i j} v_{i}+\beta_{i}\right)
P(hi=1∣v)=σ(hi(v))=σ(j=1∑nwijvi+βi)
我们使用的是梯度上升的思路,所以这里的
β
i
\beta_{i}
βi 和
w
i
j
w_{i j}
wij 都是上一个时刻计算出的,即为:
β
i
(
t
)
\beta_{i}^{(t)}
βi(t) 和
w
i
j
(
t
)
w_{i j}^{(t)}
wij(t) 那么:
P
(
h
∣
v
)
h
i
v
j
=
σ
(
∑
j
=
1
n
w
i
j
v
i
+
β
i
)
v
j
P(h | v) h_{i} v_{j}=\sigma\left(\sum_{j=1}^{n} w_{i j} v_{i}+\beta_{i}\right) v_{j}
P(h∣v)hivj=σ(j=1∑nwijvi+βi)vj
6.4.2 P ( h , v ) P(h, v) P(h,v) 求解
P
(
h
,
v
)
h
i
v
j
=
∑
h
∑
v
P
(
v
)
P
(
h
∣
v
)
h
i
v
j
=
∑
v
P
(
v
)
∑
h
P
(
h
∣
v
)
h
i
v
j
\begin{aligned} P(h, v) h_{i} v_{j} &=\sum_{h} \sum_{v} P(v) P(h | v) h_{i} v_{j} \\ &=\sum_{v} P(v) \sum_{h} P(h | v) h_{i} v_{j} \end{aligned}
P(h,v)hivj=h∑v∑P(v)P(h∣v)hivj=v∑P(v)h∑P(h∣v)hivj
而
∑
h
P
(
h
∣
v
)
h
i
v
j
\sum_{h} P(h | v) h_{i} v_{j}
∑hP(h∣v)hivj 已经计算过了,而下一步则是求解
P
(
v
)
P(v)
P(v) 。而根据我们之前求解的结果
P
(
v
)
=
1
Z
exp
(
α
T
v
+
∑
i
=
1
m
log
(
1
+
exp
(
w
i
v
+
β
i
)
)
)
P(v)=\frac{1}{Z} \exp \left(\alpha^{T} v+\sum_{i=1}^{m} \log \left(1+\exp \left(w_{i} v+\beta_{i}\right)\right)\right)
P(v)=Z1exp(αTv+i=1∑mlog(1+exp(wiv+βi)))
这个计算太复杂了,精确的计算出来太难了,所以我们需要使用 MCMC,Gibbs 采样的方法来近似求
解。
6.5 CD-K for Restricted Boltzmann Machine
∂
∂
w
i
j
log
P
(
v
)
=
∑
h
P
(
h
i
=
1
∣
v
)
v
j
−
∑
v
P
(
v
)
P
(
h
i
=
1
,
v
)
v
j
\frac{\partial}{\partial w_{i j}} \log P(v)=\sum_{h} P\left(h_{i}=1 | v\right) v_{j}-\sum_{v} P(v) P\left(h_{i}=1, v\right) v_{j}
∂wij∂logP(v)=h∑P(hi=1∣v)vj−v∑P(v)P(hi=1,v)vj
其中,
∑
h
P
(
h
i
=
1
∣
v
)
v
j
\sum_{h} P\left(h_{i}=1 | v\right) v_{j}
∑hP(hi=1∣v)vj 可以计算出来,可以直接用 training set 表示
;
;
; 而
∑
v
P
(
v
)
P
(
h
i
=
1
,
v
)
v
j
\sum_{v} P(v) P\left(h_{i}=1, v\right) v_{j}
∑vP(v)P(hi=1,v)vj 是 intractable,那么我们的主要目标就是求解这个 intractable 的部分,主要思想是用采样法 (CD-K) 来 解决。CD-K 直接以 training set 为剂始值。
实际上,
∑
v
P
(
v
)
P
(
h
i
=
1
,
v
)
v
j
,
\sum_v P(v) P\left(h_{i}=1, v\right) v_{j},
∑vP(v)P(hi=1,v)vj, 可以看成是期望
E
P
(
v
)
[
P
(
h
i
=
1
,
v
)
v
j
]
,
\mathbb{E}_{P(v)}\left[P\left(h_{i}=1, v\right) v_{j}\right],
EP(v)[P(hi=1,v)vj], 那么我们的重点是如何 从
P
(
v
)
中进行采样,把采样的结果代入到
P
(
h
i
=
1
,
v
)
v
j
]
\left.P(v) \text { 中进行采样,把采样的结果代入到 } P\left(h_{i}=1, v\right) v_{j}\right]
P(v) 中进行采样,把采样的结果代入到 P(hi=1,v)vj] 中即可。由于,
P
(
v
)
P(v)
P(v) 非常的复杂,所以采用基于CD-K 的Gibbs 采样,v 的初始值是训练数据集,采样模型如下所示:
注意,传统的 Gibbs 采样时固定是一维一维的采。由于 RBM 的良好性质,
v
v
v 中的节点都是相互独立的,所以可以多个节点一起采,被称之“块Gibbs 采样”。这样,
v
(
0
)
v^{(0)}
v(0) 是 training set,
v
(
k
)
∼
P
(
v
)
v^{(k)} \sim P(v)
v(k)∼P(v)这样就可以成功的计算
∑
v
P
(
v
)
P
(
h
i
=
1
,
v
)
v
j
\sum_{v} P(v) P\left(h_{i}=1, v\right) v_{j}
∑vP(v)P(hi=1,v)vj 了,那么这个梯度的计算也就搞定了。
最后,来总结一下 CD-K for Restricted Boltzmann Machine:
其中
,
P
(
h
i
=
1
∣
v
(
0
)
)
, P\left(h_{i}=1 | v^{(0)}\right)
,P(hi=1∣v(0)) 和
P
(
h
i
=
1
∣
v
(
k
)
)
P\left(h_{i}=1 | v^{(k)}\right)
P(hi=1∣v(k)) 都已经计算出来了
∘
P
(
h
i
=
1
∣
v
(
0
)
)
v
j
(
0
)
\circ P\left(h_{i}=1 | v^{(0)}\right) v_{j}^{(0)}
∘P(hi=1∣v(0))vj(0) 是 training
set
,
v
j
(
k
)
\operatorname{set}, v_{j}^{(k)}
set,vj(k)
是以 training set 为起点,经过 K 步后采出来的 N 个样本。根据公式 (19),那么最终得到的梯度为:
1
N
∑
v
∈
S
∂
∂
w
i
j
log
P
(
v
)
=
1
N
Δ
w
i
j
\frac{1}{N} \sum_{v \in S} \frac{\partial}{\partial w_{i j}} \log P(v)=\frac{1}{N} \Delta w_{i j}
N1v∈S∑∂wij∂logP(v)=N1Δwij
既然,梯度已经计算出来了,使用梯度上升的方法就可以得到最终的结果了,后面的过程很简单的。
6.6 小节
本小节主要是介绍了RBM 模型中Learning 问题的求解,也是对无向图Learning 问题的一个实
例。主要问题在求解Likelihood function gradient 的过程中,P(v) 的模型过于复杂,不好进行求解,所以采用基于CD-K 的Gibbs 采样方法来进行近似。确定了梯度,我们就可以利用梯度上升法愉快的更新了,直到计算中最优值。
7 总结
在这一章节中,主要介绍的是无向图中参数Learning 的问题。主要思想是对联合概率密度函数求极大似然估计,通过对极大似然函数求梯度来求最优参数。在对配分函数Z 进行化简的过程中,得到了一个关于
P
(
X
;
θ
)
P(X; θ)
P(X;θ) 的分布,这个分布过于复杂只能通过MCMC 采样的方法来近似。
然后,我们对似然梯度的组成成分进行了分析,似然函数的最终目的是使建立的模型Pmodel 和
P
d
a
t
a
P_{data}
Pdata 靠近。
之后,MCMC 由于存在mixing time 时间过长的问题,收敛太慢。于是,Hinton 提出了,KContrastive Divergence (K-CD) 算法的具体做法,和MCMC 唯一的区别即为用training data 来代替 Gibbs 采样的初始值,而且K-CD 算法并不在乎是否收敛,执行K 步后直接进行采样。
为了充分的理解CD,我们介绍了CD 与KL 散度之间的区别和联系,并在其中成功的把Likelihood function 转换成了使KL 散度最小的问题,这帮助我们进一步的理解了Likelihood Function 的作用。
最后,为了具体的理解无向图中的Learning 问题,以Restricted Boltzmann Machine 问题中的Learning 问题为例,来帮助读者加深对前面描述的抽象求解过程的理解。在求解过程中由于
P
(
v
)
P(v)
P(v) 的模型过于复杂,不好进行求解,所以采用基于CD-K 的Gibbs 采样方法来进行近似。确定了梯度,我们就可以利用梯度上升法了。