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)=Z1​i=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(θ)1​P^(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θmax​P(X;θ)=argθmax​i=1∏N​Z(θ)1​P^(xi​;θ)=argθmax​i=1∏N​Z(θ)1​P^(xi​;θ)=argθmax​logi=1∏N​Z(θ)1​P^(xi​;θ)=argθmax​i=1∑N​logZ(θ)1​P^(xi​;θ)=argθmax​i=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=1N​logZ(θ)=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θmax​target function  N1​i=1∑N​logP^(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(θ)=N1​i=1∑N​logP^(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(θ)=N1​i=1∑N​log∇θ​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=1N​logP^(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(θ)=N1​i=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 Pm​odel 是自定义的假设,希望用这个假设的模型通过对经验分布的学习去逼近真实分布。梯度为零时,这两个分布近似相等,也就达到了我们的目的。 下面我们将对梯度函数进行具体的分析,梯度函数可以分成两部分,第一部分是 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:

  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。
  2. 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 个样本点。很显然,并行的方法采样效率更高,但是对内存的消耗也就越大。
  3. 最后可以得到 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θmax​N1​i=1∑N​logP(xi​;θ)=argθmax​EPdata ​​[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θmax​EPdata ​​[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θmin​KL(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θmax​L(θ)=argθmin​KL(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=⎣⎢⎢⎢⎡​x1​x2​⋮xp​​⎦⎥⎥⎥⎤​=[hv​],h=⎣⎢⎢⎢⎡​h1​h2​⋮hm​​⎦⎥⎥⎥⎤​,v=⎣⎢⎢⎢⎡​v1​v2​⋮vn​​⎦⎥⎥⎥⎤​,w=⎣⎢⎢⎢⎡​wij​jm×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)​=Z1​exp(−E(v,h))=−hTwv+αTv+βTh=−(i=1∑m​j=1∑n​hi​wij​vi​+j=1∑n​αj​vj​+i=1∑m​βi​hi​)​
其中, α \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) N1​v∈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∈S​logP(v)logP(v)=log∑h​P(h,v)=log∑h​Z1​exp{−E(h,v)}​
而归一化因子 Z 的表达式即为: Z = ∑ h ∑ v exp ⁡ { − E ( h , v ) } , Z=\sum_{h} \sum_{v} \exp \{-\mathbb{E}(h, v)\}, Z=∑h​∑v​exp{−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)}=∑h​exp{−E(h,v)}−1​h∑​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)\} ∑h​exp{−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∑​∑h​exp{−E(h,v)exp{−E(h,v)}​∂θ∂​E(h,v)=−h∑​Z1​∑h​exp{−E(h,v)Z1​exp{−E(h,v)}​∂θ∂​E(h,v)=−h∑​Z1​exp{−E(v)Z1​exp{−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​∑v​exp{−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​∑v​exp{−E(h,v)}−1​h∑​v∑​exp{−E(h,v)}∂θ∂​E(h,v)=−h∑​v∑​∑h​∑v​exp{−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​∑v​P(h,v)∂θ∂​E(h,v)−∑h​P(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​∑v​P(h,v)∂wij​∂​E(h,v)−∑h​P(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∑m​j=1∑n​hi​wij​vi​+Δ)
所以:
∂ ∂ 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)(−hi​vj​)−h∑​P(h∣v)(−hi​vj​)=h∑​P(h∣v)hi​vj​−h∑​v∑​P(h,v)hi​vj​​
那么,下一步的问题就是如何求解 ∑ h P ( h ∣ v ) h i v j \sum_{h} P(h | v) h_{i} v_{j} ∑h​P(h∣v)hi​vj​ 和 ∑ h ∑ v P ( h , v ) h i v j \sum_{h} \sum_{v} P(h, v) h_{i} v_{j} ∑h​∑v​P(h,v)hi​vj​ 。为了简化运算,我们令 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)hi​vj​=h1​∑​h2​∑​⋯hi​∑​⋯hm​∑​P(h1​,h2​,⋯,hi​,⋯,hm​∣v)hi​vj​
因为,后面的 h i v j h_{i} v_{j} hi​vj​ 只和 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)hi​vj​=hi​∑​P(hi​∣v)hi​vj​
又因为 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)hi​vj​=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∑n​wij​vi​+β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)hi​vj​=σ(j=1∑n​wij​vi​+β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)hi​vj​​=h∑​v∑​P(v)P(h∣v)hi​vj​=v∑​P(v)h∑​P(h∣v)hi​vj​​
而 ∑ h P ( h ∣ v ) h i v j \sum_{h} P(h | v) h_{i} v_{j} ∑h​P(h∣v)hi​vj​ 已经计算过了,而下一步则是求解 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)=Z1​exp(αTv+i=1∑m​log(1+exp(wi​v+β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} ∑h​P(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} ∑v​P(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}, ∑v​P(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} ∑v​P(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} N1​v∈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 采样方法来进行近似。确定了梯度,我们就可以利用梯度上升法了。

24 直面配分函数Confronting Partition Function相关推荐

  1. 2020-4-12 深度学习笔记18 - 直面配分函数 5 ( 去噪得分匹配,噪声对比估计NCE--绕开配分函数,估计配分函数)

    第十八章 直面配分函数 Confronting the Partition Function 中文 英文 2020-4-8 深度学习笔记18 - 直面配分函数 1 ( 配分函数概念,对数似然梯度) 2 ...

  2. 花书+吴恩达深度学习(二五)直面配分函数(CD, SML, SM, RM, NCE)

    文章目录 0. 前言 1. 对数似然梯度 1.1 朴素 MCMC 算法 1.2 对比散度算法 CD 1.3 随机最大似然 SML 2. 伪似然 3. 得分匹配 SM 4. 比率匹配 RM 5. 去噪得 ...

  3. 学习笔记:直面配分函数(待完善)

    配分函数,是未归一化概率所有状态的积分(对于连续变量)或求和(对于离散变量) 直面配分函数,是由于配分函数,在很多模型上,在积分和求和上面很难计算,所以书中在本章,我认为主要介绍了7种方法,3种策略. ...

  4. 机器学习笔记之配分函数(一)对数似然梯度

    机器学习笔记之配分函数--对数似然梯度 引言 回顾:过去介绍配分函数的相关结点 配分函数介绍 配分函数在哪些情况下会"直面"到? 场景构建 包含配分函数的极大似然估计 引言 从本节 ...

  5. 配分函数|机器学习推导系列(二十六)

    一.概述 对于有向概率图模型来说,由于图中存在天然的拓扑排序关系,所以有向概率图的因式分解的形式很容易写出来.而对于无向图来说就需要根据它图中的最大团来写成一个因式分解的形式,无向图模型在局部并没有表 ...

  6. 终极事务处理(XTP,Hekaton)——万能大招?

    在SQL Server 2014里,微软引入了终极事务处理(Extreme Transaction Processing),即大家熟知的Hekaton.我在网上围观了一些文档,写这篇文章,希望可以让大 ...

  7. 拉马努金:“与神对话”的数学天才

    不管你 一个无法表达神的思想的方程, 对我而言毫无意义 -- 斯里尼瓦瑟·拉马努金 本文摘自人民邮电出版社图灵文化出版的图书<悠扬的素数:二百年数学绝唱黎曼假设> 当哈代和利特尔伍德步履维 ...

  8. 条件随机场介绍(5)—— An Introduction to Conditional Random Fields

    5. 参数估计 本节我们讨论如何估计条件随机场的参数\(\theta = \{ \theta_k \}\).在最简单最典型情况下,我们面对的数据是完全标注的独立数据,但是也有关于半监督学习的条件随机场 ...

  9. 北大马剑竹 | 结构性和功能性基因组学的机器学习算法

    智源导读:在生物医学领域,将深度学习用于蛋白结构预测成为近年大热门.在6月3日智源大会的AI赋能生命健康与生物医药论坛上,北京大学教授马剑竹做了题为"结构性和功能性基因组学的机器学习算法&q ...

最新文章

  1. [原]three.js 地形纹理混合
  2. 互联网大脑的发育与元宇宙的兴起
  3. C#设置Cookies
  4. 【C 语言】内存四区原理 ( 常量区示例 | 不同函数返回的相同字符串的指针地址相同 )
  5. 网络安全-XSS笔记
  6. 微软在Skype推出LGBT骄傲月表情与贴纸
  7. 【原创】Ajax的用法总结
  8. CRM系统能否用好 究竟是谁说了算?
  9. python获取post请求中的所有参数_Django从POST reques获取请求参数
  10. Mybatis之执行自定义SQL举例
  11. 系统集成项目管理工程师教程重点、笔记和试题大全
  12. FlashFXP使用阿里云ECS私钥登录
  13. 数据结构之图的基本介绍
  14. 微信 php收藏功能,怎样使用微信小程序做出添加收藏
  15. 手机怎样和宽带连接无线路由器设置路由器连接服务器,手机设置路由器步骤_用手机怎么设置路由器?-192路由网...
  16. 破解 zip 压缩包程序
  17. 360全景拼接 opencv_GitHub - hellojiawa/AndroidPanoDemo: 使用Opencv全景照片拼接
  18. IDEA 2020.1.2 无法显示图片的魔幻解决方法
  19. 简述Android操作系统和IOS系统的区别;
  20. hexo博客中插入图片失败——解决思路及个人最终解决办法

热门文章

  1. 【微机接口】可编程串行异步通信芯片8250
  2. 倒计时1天丨相信边缘的力量!
  3. error: #20: identifier “uint16_t“ is undefined
  4. html + css 面试
  5. gluoncv与mxnet的model转换
  6. “性冷淡”的企业聊天工具,里面的秘密比陌陌还多
  7. CPI公式 CPI含义 CPI意义 CPI什么意思
  8. android第三方应用商店,Android第三方应用商店成长迅猛
  9. libjpeg 库的安装
  10. comsol移动网格_[转载]COMSOL动网格调试