参考文献:
[1] Training Products of Experts by Minimizing Contrastive Divergence
[2] Training Restricted Boltzmann Machines using Approximations to the Likelihood Gradient
[3]Training Products of Experts by Minimizing Contrastive Divergence阅读笔记
Contrastive Divergence是为了解决最大似然的求解问题。
CD的原理
参考文献[1]给出下式:
p
(
d
∣
θ
1
…
θ
n
)
=
∏
m
p
m
(
d
∣
θ
m
)
∑
c
∏
m
p
m
(
c
∣
θ
m
)
p(d|\theta_1\ldots\theta_n)=\frac{\prod_mp_m(d|\theta_m)}{\sum_c \prod_mp_m(c|\theta_m)}
p(d∣θ1…θn)=∑c∏mpm(c∣θm)∏mpm(d∣θm)这个式子中的
n
n
n个
θ
\theta
θ表示
n
n
n个experts(模型)的参数,
d
d
d表示离散空间中的一个数据向量,
c
c
c索引了数据空间中所有可能的数据向量。如果空间是连续的,分母就可以用积分来表示。
p
m
(
d
∣
θ
m
)
p_m(d|\theta_m)
pm(d∣θm)表示在模型
m
m
m下,数据向量
d
d
d的概率。
描述的是给定了在
n
n
n个experts的构成的模型中,数据
d
d
d出现的概率。如果对于一个真实的数据
d
d
d,我们当然希望我们构建的模型在这个数据点上的概率密度很大(最大似然)。由于分母需要对整个数据空间中所有可能的数据向量做累加(或者积分),这个计算非常困难,所以作者提出可以考虑以下求概率的对数梯度。
∂
log
p
(
d
∣
θ
1
…
θ
n
)
∂
θ
m
=
∂
log
p
m
(
d
∣
θ
m
)
∂
θ
m
−
∑
c
p
(
c
∣
θ
1
…
θ
n
)
∂
log
p
m
(
c
∣
θ
m
)
∂
θ
m
\frac{\partial \log p\left(\mathbf{d} \mid \theta_{1} \ldots \theta_{n}\right)}{\partial \theta_{m}}=\frac{\partial \log p_{m}\left(\mathbf{d} \mid \theta_{m}\right)}{\partial \theta_{m}}-\sum_{\mathbf{c}} p\left(\mathbf{c} \mid \theta_{1} \ldots \theta_{n}\right) \frac{\partial \log p_{m}\left(\mathbf{c} \mid \theta_{m}\right)}{\partial \theta_{m}}
∂θm∂logp(d∣θ1…θn)=∂θm∂logpm(d∣θm)−c∑p(c∣θ1…θn)∂θm∂logpm(c∣θm)
推导过程可以看参考文献[3]。
一般来说,极大似然估计等同于最小化KL散度,原因可以看本文最后一个部分。
Q
0
Q^0
Q0是数据的原始分布,
Q
∞
Q^\infty
Q∞是由Gibbs采样产生的,这里的
Q
d
∞
Q_d^\infin
Qd∞是
p
(
d
∣
θ
1
…
θ
m
)
p(d|\theta_1\ldots\theta_m)
p(d∣θ1…θm)的另一种表示。
Q
0
∣
∣
Q
∞
=
∑
d
Q
0
l
o
g
Q
d
0
−
∑
d
Q
d
0
l
o
g
Q
d
∞
=
−
H
(
Q
0
)
−
<
l
o
g
Q
d
∞
>
Q
0
Q^0||Q^\infin =\sum_dQ^0logQ_d^0-\sum_dQ^0_dlogQ^\infin_d=-H(Q^0)-<logQ^\infin_d>_{Q^0}
Q0∣∣Q∞=d∑Q0logQd0−d∑Qd0logQd∞=−H(Q0)−<logQd∞>Q0其中,前面一项就是一个常数,后面一项的关于
θ
m
\theta_m
θm的导数如下(参考上上个式子):
<
∂
l
o
g
Q
d
∞
∂
θ
m
>
Q
0
=
<
∂
l
o
g
p
m
(
d
∣
θ
m
)
∂
θ
m
>
Q
0
−
<
∂
l
o
g
p
m
(
c
∣
θ
m
)
∂
θ
m
>
Q
∞
<\frac{\partial logQ^\infin_d}{\partial \theta_m}>_{Q^0}=<\frac{\partial logp_m(d|\theta_m)}{\partial \theta_m}>_{Q^0}-<\frac{\partial logp_m(c|\theta_m)}{\partial \theta_m}>_{Q^\infin}
<∂θm∂logQd∞>Q0=<∂θm∂logpm(d∣θm)>Q0−<∂θm∂logpm(c∣θm)>Q∞
如果我们的目的是计算极大似然估计,也许我们目前的工作就已经能够完成了:数据原始分布为
Q
0
Q^0
Q0,我们构建的模型是由一系列
θ
m
\theta_m
θm参数化的模型,每次更新参数需要从原始分布
Q
0
Q^0
Q0中选择一个数据样本,计算上式右边第一项,再用MCMC采样得到一个
Q
∞
Q^\infin
Q∞的一个样本,计算得到上式的梯度值后,我们可以通过梯度下降法,计算KL散度损失值的梯度,每次沿着梯度的负方向更新参数。
但这种做法有一个问题,
Q
∞
Q^\infin
Q∞需要采样很多很多很多步,才能得到一个满足该分布的样本,这需要很大的计算量。作者提出不是优化目标
Q
0
∣
∣
Q
∞
Q^0||Q^\infin
Q0∣∣Q∞,而是优化
Q
0
∣
∣
Q
∞
−
Q
1
∣
∣
Q
∞
Q^0||Q^\infin-Q^1||Q^\infin
Q0∣∣Q∞−Q1∣∣Q∞(其中,
Q
1
Q^1
Q1是采样迭代一次)。经作者计算发现,后面这个目标函数的梯度可以表示成下式:
右边的最后一项是由于数值过小,可以忽略(虽然最近有论文认为,这一项不能忽略)。所以操作就变成了:每次更新参数,采样只需要迭代一次得到一个样本,计算该梯度值,然后更新参数。
至于为什么将目标改成
Q
0
∣
∣
Q
∞
−
Q
1
∣
∣
Q
∞
Q^0||Q^\infin-Q^1||Q^\infin
Q0∣∣Q∞−Q1∣∣Q∞:
Q
1
Q^1
Q1比
Q
0
Q^0
Q0肯定离
Q
∞
Q^\infin
Q∞更近一些,所以这个式子一定不会是负数,当这个式子为0的时候,也就表示了
Q
0
=
Q
1
Q^0=Q^1
Q0=Q1,而Markov链所有的转移都有着非负的概率,那也就意味着
Q
0
=
Q
∞
Q^0=Q^\infin
Q0=Q∞。
Persistent CD
这个版本的CD改了一点点,每次重启采样不是从低密度区域出发,而是从上一次采样走到的位置出发。
极大似然估计和KL散度
极大似然估计的计算:
θ
=
a
r
g
m
a
x
θ
1
N
∑
i
=
1
N
l
o
g
p
(
x
(
i
)
∣
θ
)
=
a
r
g
m
a
x
θ
∫
x
p
d
a
t
a
(
x
)
l
o
g
p
(
x
∣
θ
)
d
x
=
a
r
g
m
i
n
θ
∫
x
−
p
d
a
t
a
(
x
)
l
o
g
p
(
x
∣
θ
)
d
x
\theta=argmax_\theta \frac{1}{N}\sum_{i=1}^{N}log\,p(x^{(i)}|\theta)\\ =argmax_\theta \int_x p_{data}(x)log\, p(x|\theta)dx\\ =argmin_\theta \int_x -p_{data}(x)log\, p(x|\theta)dx
θ=argmaxθN1i=1∑Nlogp(x(i)∣θ)=argmaxθ∫xpdata(x)logp(x∣θ)dx=argminθ∫x−pdata(x)logp(x∣θ)dx
KL散度的计算:
θ
=
a
r
g
m
i
n
θ
∫
x
p
d
a
t
a
(
x
)
l
o
g
p
d
a
t
a
(
x
)
p
(
x
∣
θ
)
d
x
=
a
r
g
m
i
n
θ
∫
x
−
p
d
a
t
a
(
x
)
l
o
g
p
(
x
∣
θ
)
d
x
+
c
o
n
s
t
a
n
t
\theta=argmin_\theta \int_xp_{data}(x)log\, \frac{p_{data}(x)}{p(x|\theta)}dx\\ =argmin_\theta \int_x -p_{data}(x)log\, p(x|\theta)dx+constant
θ=argminθ∫xpdata(x)logp(x∣θ)pdata(x)dx=argminθ∫x−pdata(x)logp(x∣θ)dx+constant
其中,
c
o
n
s
t
a
n
t
=
∫
x
p
d
a
t
a
(
x
)
l
o
g
p
d
a
t
a
(
x
)
d
x
constant=\int_x p_{data}(x) log\, p_{data}(x)dx
constant=∫xpdata(x)logpdata(x)dx,这个和参数无关,只和数据自身分布有关。所以在优化的过程中可以社区,因而极大似然估计和最小化KL散度是等价的。