Contrastive Divergence

参考文献:
[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)=cmpm(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}} θmlogp(dθ1θn)=θmlogpm(dθm)cp(cθ1θn)θmlogpm(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} Q0Q=dQ0logQd0dQd0logQd=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} <θmlogQd>Q0=<θmlogpm(dθm)>Q0<θmlogpm(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 Q0Q,而是优化 Q 0 ∣ ∣ Q ∞ − Q 1 ∣ ∣ Q ∞ Q^0||Q^\infin-Q^1||Q^\infin Q0QQ1Q(其中, Q 1 Q^1 Q1是采样迭代一次)。经作者计算发现,后面这个目标函数的梯度可以表示成下式:
在这里插入图片描述
右边的最后一项是由于数值过小,可以忽略(虽然最近有论文认为,这一项不能忽略)。所以操作就变成了:每次更新参数,采样只需要迭代一次得到一个样本,计算该梯度值,然后更新参数。

至于为什么将目标改成 Q 0 ∣ ∣ Q ∞ − Q 1 ∣ ∣ Q ∞ Q^0||Q^\infin-Q^1||Q^\infin Q0QQ1Q
在这里插入图片描述
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=1Nlogp(x(i)θ)=argmaxθxpdata(x)logp(xθ)dx=argminθxpdata(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θxpdata(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散度是等价的。

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值