第十二讲: k k k-means算法、高斯混合模型及最大期望算法
现在我们开始进入机器学习课程新的一章——无监督学习算法的应用。
k k k-means聚类算法( k k k-means clustering algorithm)
在聚类问题(clustering problem)中,对于给定的训练集 { x ( 1 ) , ⋯ , x ( m ) } \left\{x^{(1)},\cdots,x^{(m)}\right\} {x(1),⋯,x(m)},并且希望对样本分组,并找到能够使样本“紧密聚集”在一起的簇(clusters)。这里的 x ( i ) ∈ R n x^{(i)}\in\mathbb{R}^n x(i)∈Rn像原来一样,但是没有 y ( i ) y^{(i)} y(i)。因此,这是一个无监督学习问题。
k k k-means聚类算法的过程如下:
- 随机的初始化簇质心(cluster centroids) μ 1 , μ 2 , ⋯ , μ k ∈ R n \mu_1,\mu_2,\cdots,\mu_k\in\mathbb{R}^n μ1,μ2,⋯,μk∈Rn;
- 重复直到收敛
{
- 对每一个样本 i i i,令 c ( i ) : = a r g min j ∥ x ( i ) − μ j ∥ 2 c^{(i)}:=\mathrm{arg}\displaystyle\operatorname*{min}_j\left\lVert x^{(i)}-\mu_j\right\rVert^2 c(i):=argjmin x(i)−μj 2
- 对每一个簇 j j j,令 μ j : = ∑ i = 1 m 1 { c ( i ) = j } x ( i ) ∑ i = 1 m 1 { c ( i ) = j } \mu_j:=\frac{\sum_{i=1}^m1\left\{c^{(i)}=j\right\}x^{(i)}}{\sum_{i=1}^m1\left\{c^{(i)}=j\right\}} μj:=∑i=1m1{c(i)=j}∑i=1m1{c(i)=j}x(i)
}
在这个算法中,参数 k k k表示我们想要聚类的簇的数量, μ j \mu_j μj表示我们当前对于簇质心位置的猜测。为了初始化簇质心(即算法第一步),我们通常随机选择 k k k个训练样本,然后令 k k k个质心等于这 k k k个训练样本。(方法不唯一,其他初始化方法也是可以的。)
算法的内层循环重复这两步:(i)将每个训练样本 x ( i ) x^{(i)} x(i)分配给距离它们最近的簇质心 μ j \mu_j μj,(ii)移动每个簇质心 μ j \mu_j μj到其下辖样本集合的中心。下图为 k k k-means算法的简单演示:
图中圆点为训练样本,叉号为簇质心,演示的过程为:(a)原数据集;(b)随机初始化的簇质心(在本例中并不是由某两个随机样本作为簇质心);(c-f)演示了 k k k-means算法的两个迭代,在每次迭代中,我们都将训练样本分配给距离它们最近的簇质心(图中将样本与对应的簇质心标记为同一颜色);然后将每个簇质心移动到其下辖样本的中心。
那么, k k k-means算法一定收敛吗?在特定的场景下,答案是肯定的。我们先定义失真函数(distortion function):
J ( c , μ ) = ∑ i = 1 m ∥ x ( i ) − μ c ( i ) ∥ 2 J(c,\mu)=\sum_{i=1}^m\left\lVert x^{(i)}-\mu_{c^{(i)}}\right\rVert^2 J(c,μ)=i=1∑m x(i)−μc(i) 2
J J J为每个样本 x ( i ) x^{(i)} x(i)到其簇质心 μ c ( i ) \mu_{c^{(i)}} μc(i)的距离的平方之和,可以证明 k k k-means正是在 J J J上的坐标下降过程(参考第八讲)。尤其是 k k k-means算法的内循环实际上是在重复:保持 μ \mu μ不变最小化 J J J关于 c c c的函数,然后再保持 c c c不变最小化 J J J关于 μ \mu μ的函数。因此, J J J是单调递减的,它的函数值一定收敛。(通常这意味着 c c c和 μ \mu μ也会收敛。但在理论上, k k k-means算法的最终结果可能在少数簇之间振荡,比如少数几组 c c c或/且 μ \mu μ具有完全一样的 J J J值。不过在实际操作中,这种现象几乎不会发生。)
失真函数 J J J是一个非凸函数,所以对于 J J J的坐标下降并不能保证其收敛于全局最小值,即 k k k-means会被局部最小值影响。尽管如此, k k k-means算法通常都都能很好的完成聚类任务。不过,如果真的怕算法落入“不好的”局部最优中,一个可行的解决方案是为簇质心 μ j \mu_j μj赋上不同的初始化值,多运行几次,然后选出失真函数 J ( c , μ ) J(c,\mu) J(c,μ)最小的一组聚类结果即可。
混合高斯模型(Mixtures of Gaussians)与最大期望算法(EM algorithm)
在这一节我们将讨论对聚类样本密度估计(density estimation)的最大期望(EM: Expectation-Maximization)。
假设有给定训练集 { x ( 1 ) , ⋯ , x ( m ) } \left\{x^{(1)},\cdots,x^{(m)}\right\} {x(1),⋯,x(m)},因为现在研究无监督学习算法,所以训练样本没有对应的 y y y标记。
我们希望使用一个联合分布 p ( x ( i ) , z ( i ) ) = p ( x ( i ) ∣ z ( i ) ) p ( z ( i ) ) p\left(x^{(i)},z^{(i)}\right)=p\left(x^{(i)}\mid z^{(i)}\right)p\left(z^{(i)}\right) p(x(i),z(i))=p(x(i)∣z(i))p(z(i))(链式法则)对数据建模。这里的 z ( i ) ∼ M u l t i n o m i a l ( ϕ ) z^{(i)}\sim\mathrm{Multinomial}(\phi) z(i)∼Multinomial(ϕ)(即 ϕ j > 0 , ∑ j = 1 k ϕ j = 1 , ϕ j = p ( z ( i ) = j ) \phi_j\gt0,\ \sum_{j=1}^k\phi_j=1,\ \phi_j=p\left(z^{(i)}=j\right) ϕj>0, ∑j=1kϕj=1, ϕj=p(z(i)=j),当只有两个高斯分布时, z ( i ) z^{(i)} z(i)只有两种取值的可能,此时它是一个伯努利分布。),并且有 x ( i ) ∣ z ( i ) = j ∼ N ( μ j , Σ j ) x^{(i)}\mid z^{(i)}=j\sim\mathcal{N}\left(\mu_j,\varSigma_j\right) x(i)∣z(i)=j∼N(μj,Σj)。令 k k k表示事件 z ( i ) z^{(i)} z(i)可能取的值的总数,因此,我们的模型假设每个事件 x ( i ) x^{(i)} x(i)均由事件“ z ( i ) z^{(i)} z(i)随机的在 { 1 , ⋯ , k } \{1,\cdots,k\} {1,⋯,k}做出选择”生成,而 x ( i ) x^{(i)} x(i)可以表示为 k k k个“由 z ( i ) z^{(i)} z(i)确定的高斯分布”中的一个。这就是混合高斯模型(mixture of Gaussians model)。应注意 z ( i ) z^{(i)} z(i)是**潜在(latent)**随机变量,这意味着它们是隐藏的、未知的,也正是这一点加大了我们估值难度。(变量 z ( i ) z^{(i)} z(i)类似于样本 x ( i ) x^{(i)} x(i)的标记,只是我们并不知道这个变量是多少,也就是说我们不知道每个样本属于哪个标记类,在后面的算法中,我们会尝试猜测这个标记。)
模型的参数为 ϕ , μ , Σ \phi,\mu,\varSigma ϕ,μ,Σ,为了估计这些参数,可以写出参数在给定数据上的对数似然估计:
l ( ϕ , μ , Σ ) = ∑ i = 1 m log p ( x ( i ) ; ϕ , μ , Σ ) = ∑ i = 1 m log ∑ z ( i ) = 1 k p ( x ( i ) ∣ z ( i ) ; μ , Σ ) p ( z ( i ) ; ϕ ) \begin{align} \mathscr{l}\left(\phi,\mu,\varSigma\right)&=\sum_{i=1}^m\log p\left(x^{(i)};\phi,\mu,\varSigma\right)\\ &=\sum_{i=1}^m\log\sum_{z^{(i)}=1}^kp\left(x^{(i)}\mid z^{(i)};\mu,\varSigma\right)p\left(z^{(i)};\phi\right) \end{align} l(ϕ,μ,Σ)=i=1∑mlogp(x(i);ϕ,μ,Σ)=i=1∑mlogz(i)=1∑kp(x(i)∣z(i);μ,Σ)p(z(i);ϕ)
然而,如果对式中每个参数求偏导并置为零,并尝试解出极值时会发现,我们无法求出这些参数的最大似然估计的解析解。
随机变量 z ( i ) z^{(i)} z(i)指出了 x ( i ) x^{(i)} x(i)服从 k k k个高斯分布中的哪一个。可以看出,如果我们能够确定 z ( i ) z^{(i)} z(i),那么这个最大似然问题就会好解很多,我们可以将似然函数写成:
l ( ϕ , μ , Σ ) = ∑ i = 1 m log p ( x ( i ) ∣ z ( i ) ; μ , Σ ) + log p ( z ( i ) ; ϕ ) \mathscr{l}\left(\phi,\mu,\varSigma\right)=\sum_{i=1}^m\log p\left(x^{(i)}\mid z^{(i)};\mu,\varSigma\right)+\log p\left(z^{(i)};\phi\right) l(ϕ,μ,Σ)=i=1∑mlogp(x(i)∣z(i);μ,Σ)+logp(z(i);ϕ)
最大化上面这个关于 ϕ , μ , Σ \phi,\mu,\varSigma ϕ,μ,Σ的式子就能求得各参数:
ϕ j = 1 m ∑ i = 1 m 1 { z ( i ) = j } μ j = ∑ i = 1 m 1 { z ( i ) = j } x ( i ) ∑ i = 1 m 1 { z ( i ) = j } Σ j = ∑ i = 1 m 1 { z ( i ) = j } ( x ( i ) − μ j ) ( x ( i ) − μ j ) T ∑ i = 1 m 1 { z ( i ) = j } \begin{align} \phi_j&=\frac{1}{m}\sum_{i=1}^m1\left\{z^{(i)}=j\right\}\\ \mu_j&=\frac{\sum_{i=1}^m1\left\{z^{(i)}=j\right\}x^{(i)}}{\sum_{i=1}^m1\left\{z^{(i)}=j\right\}}\\ \varSigma_j&=\frac{\sum_{i=1}^m1\left\{z^{(i)}=j\right\}\left(x^{(i)}-\mu_j\right)\left(x^{(i)}-\mu_j\right)^T}{\sum_{i=1}^m1\left\{z^{(i)}=j\right\}} \end{align} ϕjμjΣj=m1i=1∑m1{z(i)=j}=∑i=1m1{z(i)=j}∑i=1m1{z(i)=j}x(i)=∑i=1m1{z(i)=j}∑i=1m1{z(i)=j}(x(i)−μj)(x(i)−μj)T
如果能确定 z ( i ) z^{(i)} z(i),则这里的参数估计与前面第五讲高斯判别分析模型中的参数估计几乎是一样的,只不过 z ( i ) z^{(i)} z(i)代替了原来的类标记 y ( i ) y^{(i)} y(i)。(式子里还有其它细节不同,在的高斯判别分析中我们一了解到:第一,不同与问题集中 y ( i ) ∈ { − 1 , 1 } y^{(i)}\in\{-1,1\} y(i)∈{−1,1}服从伯努利分布,我们已经将 z ( i ) z^{(i)} z(i)泛化为多项分布;第二,不同于问题集中不同的 y y y共用一个协方差矩阵,我们已经给每个高斯分布赋上了不同的协方差矩阵 Σ j \varSigma_j Σj。)
然而,在我们的密度估计问题中, z ( i ) z^{(i)} z(i)是未知的,我们该怎么办呢?
EM算法是一种迭代算法,有两个主要步骤。对于上面的问题,E步骤中,算法尝试猜测每个 z ( i ) z^{(i)} z(i)的值,在M步骤中算法会根据猜测更新模型。因为M步骤会假设E步骤中的猜测是正确的,那么,有了缺失的 z ( i ) z^{(i)} z(i),最大化就很简单了。算法的流程:
重复直到收敛:
- (E步骤)对于每个 i , j i,j i,j,令 w j ( i ) : = p ( z ( i ) = j ∣ x ( i ) ; ϕ , μ , Σ ) w_j^{(i)}:=p\left(z^{(i)}=j\mid x^{(i)};\phi,\mu,\varSigma\right) wj(i):=p(z(i)=j∣x(i);ϕ,μ,Σ)(样本 x ( i ) x^{(i)} x(i)属于第 j j j个高斯分布的概率)
- (M步骤)更新模型中的参数:
ϕ j = 1 m ∑ i = 1 m w j ( i ) μ j = ∑ i = 1 m w j ( i ) x ( i ) ∑ i = 1 m w j ( i ) Σ j = ∑ i = 1 m w j ( i ) ( x ( i ) − μ j ) ( x ( i ) − μ j ) T ∑ i = 1 m w j ( i ) \begin{align} \phi_j&=\frac{1}{m}\sum_{i=1}^mw_j^{(i)}\\ \mu_j&=\frac{\sum_{i=1}^mw_j^{(i)}x^{(i)}}{\sum_{i=1}^mw_j^{(i)}}\\ \varSigma_j&=\frac{\sum_{i=1}^mw_j^{(i)}\left(x^{(i)}-\mu_j\right)\left(x^{(i)}-\mu_j\right)^T}{\sum_{i=1}^mw_j^{(i)}} \end{align} ϕjμjΣj=m1i=1∑mwj(i)=∑i=1mwj(i)∑i=1mwj(i)x(i)=∑i=1mwj(i)∑i=1mwj(i)(x(i)−μj)(x(i)−μj)T
}
在E步骤中,我们使用 x ( i ) x^{(i)} x(i)以及当前的参数值计算所有的 z ( i ) z^{(i)} z(i),即使用贝叶斯定理:
p ( z ( i ) = j ∣ x ( i ) ; ϕ , μ , Σ ) = p ( x ( i ) ∣ z ( i ) = j ; μ , Σ ) p ( z ( i ) = j ; ϕ ) ∑ l = 1 k p ( x ( i ) ∣ z ( i ) = l ; μ , Σ ) p ( z ( i ) = l ; ϕ ) p\left(z^{(i)}=j\mid x^{(i)};\phi,\mu,\varSigma\right)=\frac{p\left(x^{(i)}\mid z^{(i)}=j;\mu,\varSigma\right)p\left(z^{(i)}=j;\phi\right)}{\sum_{l=1}^kp\left(x^{(i)}\mid z^{(i)}=l;\mu,\varSigma\right)p\left(z^{(i)}=l;\phi\right)} p(z(i)=j∣x(i);ϕ,μ,Σ)=∑l=1kp(x(i)∣z(i)=l;μ,Σ)p(z(i)=l;ϕ)p(x(i)∣z(i)=j;μ,Σ)p(z(i)=j;ϕ)
- 式中的 p ( x ( i ) ∣ z ( i ) = j ; μ , Σ ) p\left(x^{(i)}\mid z^{(i)}=j;\mu,\varSigma\right) p(x(i)∣z(i)=j;μ,Σ)为某个以 μ j \mu_j μj为期望、 Σ j \varSigma_j Σj为协方差的高斯分布在 x ( i ) x^{(i)} x(i)处的密度估计,即 1 ( 2 π ) n ∣ Σ j ∣ exp ( − 1 2 ( x ( i ) − μ j ) T Σ j − 1 ( x ( i ) − μ j ) ) \frac{1}{\sqrt{(2\pi)^n\left\lvert\varSigma_j\right\rvert}}\exp\left(-\frac{1}{2}\left(x^{(i)}-\mu_j\right)^T\varSigma_j^{-1}\left(x^{(i)}-\mu_j\right)\right) (2π)n∣Σj∣1exp(−21(x(i)−μj)TΣj−1(x(i)−μj));
- p ( z ( i ) = j ; ϕ ) p\left(z^{(i)}=j;\phi\right) p(z(i)=j;ϕ)为 ϕ j \phi_j ϕj。
E步骤中求出的 w j ( i ) w_j^{(i)} wj(i)表示我们对 z ( i ) z^{(i)} z(i)的“软”猜测。(“软”意味着一种概率上的猜测,从 [ 0 , 1 ] [0,1] [0,1]区间取值;相对的“硬”猜测意味着最佳的一次性猜测,是一种对于值的猜测,比如从集合 { 0 , 1 } \{0,1\} {0,1}或 { 1 , ⋯ , k } \{1,\cdots,k\} {1,⋯,k}中取值。)
我们也应该对比M步骤中 z ( i ) z^{(i)} z(i)已知时参数更新的式子,能够发现,只有式子里的由高斯分布中每个样本点求出的指示函数 1 { z ( i ) = j } 1\left\{z^{(i)}=j\right\} 1{z(i)=j}变为了 w j ( i ) w_j^{(i)} wj(i),其余部分同原来一样。
同样也可以用前面的 k k k-means聚类算法做对比,不同之处在于 k k k-means算法将样本“硬”分配给不同的簇,EM算法用 w j ( i ) w_j^{(i)} wj(i)做“软”分配。相似之处在于,EM算法也存在落入局部最优的可能。所以,使用不同的初始参数多运行几次的方法对EM算法同样适用。
显然,可以很自然的解释EM算法对于 z ( i ) z^{(i)} z(i)的迭代猜测,但是这个点子来自哪里?我们能对算法属性做出证明吗,比如证明其收敛性?在下一节,我们将给出一个更加泛化的EM算法的描述,它会使我们轻易的将EM算法应用在不同的具有潜在随机变量的估值问题中,而且也能够证明算法的收敛性。
第九部分:EM算法
在前面我们介绍了如何用EM算法应用在高斯混合模型的拟合上,在本节,我们将介绍EM算法更广泛的应用,并展示如何将其应用在含有潜在变量的估值问题族中。我们从**延森不等式(Jensen’s inequality)**这一通途广泛的的结论开始本节的讨论。
1. 延森不等式
令函数 f f f的值域为实数集,回忆以前的知识,如果 ∀ x ∈ R , f ′ ′ ( x ) ≥ 0 \forall x\in\mathbb{R},f''(x)\geq0 ∀x∈R,f′′(x)≥0则 f f f为凸函数(中文,英文)。在这里,一般化的 f f f的输入为向量,而函数的海森矩阵 H H H应为半正定矩阵( H ≥ 0 H\geq0 H≥0)。如果如果 ∀ x ∈ R , f ′ ′ ( x ) > 0 \forall x\in\mathbb{R},f''(x)\gt0 ∀x∈R,f′′(x)>0,则称其为**严格(strictly)**凸函数(再输入为向量的情形下,函数对应的 H H H应为为正定矩阵,记为 H > 0 H\gt0 H>0)。于是,延森不等式为:
**定理:**令 f f f为凸函数, X X X为随机变量,则有 E [ f ( x ) ] ≥ f ( E X ) \mathrm{E}\left[f(x)\right]\geq f(\mathrm{E}X) E[f(x)]≥f(EX)。
此外,如果 f f f严格凸,则当且仅当 X = E [ X ] X=\mathrm{E}[X] X=E[X]的概率为 1 1 1时(即 p ( X = E [ X ] ) = 1 p(X=\mathrm{E}[X])=1 p(X=E[X])=1,也就是说 X X X是常量),有 E [ f ( x ) ] = f ( E X ) \mathrm{E}\left[f(x)\right]=f(\mathrm{E}X) E[f(x)]=f(EX)。
根据惯例,我们可以在写期望的时候省略方括号, f ( E X ) = f ( E [ X ] ) f(\mathrm EX)=f(\mathrm E[X]) f(EX)=f(E[X])。
可以用下图解释这个定理:
图中的实现就是凸函数 f f f。X是一个随机变量,有 50 50% 50的概率取到 a a a、 50 50% 50的概率取到 b b b(沿 x x x轴),则 X X X的期望应在 a , b a,b a,b的中点。
再看 y y y轴上的 f ( a ) , f ( b ) , f ( E [ X ] ) f(a),f(b),f(\mathrm{E}[X]) f(a),f(b),f(E[X])和 E [ f ( x ) ] \mathrm E[f(x)] E[f(x)],其中 E [ f ( x ) ] \mathrm E[f(x)] E[f(x)]在 f ( a ) , f ( b ) f(a),f(b) f(a),f(b)的中点,从图中可以看出,因为 f f f是凸函数,必然有 E [ f ( x ) ] ≥ f ( E X ) \mathrm E[f(x)]\geq f(\mathrm EX) E[f(x)]≥f(EX)。(有些同学可能会把这个不等式的符号方向记反,记住上面的图就可以快速推导出符号的方向。)
**注意:**回忆以前的知识,当且仅当 − f -f −f是[严格]凸函数时, f f f是[严格]凹函数(即 f ′ ′ ( x ) ≤ 0 f''(x)\leq0 f′′(x)≤0或 H ≤ 0 H\leq0 H≤0)。延森不等式同样适用于凹函数,只不过所有不等式的不等号的方向相反(如 E [ f ( x ) ] ≤ f ( E X ) \mathrm E[f(x)]\leq f(\mathrm EX) E[f(x)]≤f(EX)等)。
2. EM算法
对于给定的包含 m m m个相互独立的样本的训练集 { x ( 1 ) , ⋯ , x ( m ) } \left\{x^{(1)},\cdots,x^{(m)}\right\} {x(1),⋯,x(m)},假设有估值问题:我们希望使用模型 p ( x , z ) p(x,z) p(x,z)拟合样本数据,对数似然函数为:
l ( θ ) = ∑ i = 1 m log p ( x ( i ) ; θ ) = ∑ i = 1 m log ∑ z ( i ) p ( x ( i ) , z ( i ) ; θ ) \begin{align} \mathscr l(\theta)&=\sum_{i=1}^m\log p\left(x^{(i)};\theta\right)\\ &=\sum_{i=1}^m\log\sum_{z^{(i)}}p\left(x^{(i)},z^{(i)};\theta\right) \end{align} l(θ)=i=1∑mlogp(x(i);θ)=i=1∑mlogz(i)∑p(x(i),z(i);θ)
但是直接计算出参数 θ \theta θ的最大似然估计可能会很难,因为这里的 z ( i ) z^{(i)} z(i)是潜在随机变量。不过,如果能够确定 z ( i ) z^{(i)} z(i)的值,参数的最大似然估计通常很容易计算。
在这种情形下,EM算法给出了一个能够有效的求出参数最大似然估计的方法。直接最大化 l ( θ ) \mathscr l(\theta) l(θ)可能很难,EM算法的思路是不停的构造 l \mathscr l l函数的下界(E步骤),然后最大化这些下界(M步骤)。(也就是说,算法先初始化一套参数 θ ( 0 ) \theta^{(0)} θ(0),然后构造一个下界 l \mathscr l l并求这个 l \mathscr l l的最大值,而取最大值时的的这套参数就是 θ ( 1 ) \theta^{(1)} θ(1);算法再从 θ ( 1 ) \theta^{(1)} θ(1)开始构造下一个下界并最大化得到 θ ( 2 ) \theta^{(2)} θ(2)……直到收敛于一个局部最优解)。下面介绍EM算法的形式描述:
对每一个 i i i,令 Q i Q_i Qi为某个关于 z z z的分布( ∑ z ( i ) Q i ( z ( i ) ) = 1 , Q i ( z ( i ) ) ≥ 0 \displaystyle\sum_{z^{(i)}}Q_i\left(z^{(i)}\right)=1,Q_i\left(z^{(i)}\right)\geq0 z(i)∑Qi(z(i))=1,Qi(z(i))≥0),考虑下面的式子(若 z z z是连续变量,则 Q i Q_i Qi为概率密度,此时讨论中的所有对 z z z的求和应变为对 z z z的积分):
∑ i log p ( x ( i ) ; θ ) = ∑ i log ∑ z ( i ) p ( x ( i ) , z ( i ) ; θ ) = ∑ i log ∑ z ( i ) Q i ( z ( i ) ) p ( x ( i ) , z ( i ) ; θ ) Q i ( z ( i ) ) ≥ ∑ i ∑ z ( i ) Q i ( z ( i ) ) log p ( x ( i ) , z ( i ) ; θ ) Q i ( z ( i ) ) \begin{align} \sum_i\log p\left(x^{(i)};\theta\right)&=\sum_i\log\sum_{z^{(i)}}p\left(x^{(i)},z^{(i)};\theta\right)\tag{1}\\ &=\sum_i\log\sum_{z^{(i)}}Q_i\left(z^{(i)}\right)\frac{p\left(x^{(i)},z^{(i)};\theta\right)}{Q_i\left(z^{(i)}\right)}\tag{2}\\ &\geq\sum_i\sum_{z^{(i)}}Q_i\left(z^{(i)}\right)\log\frac{p\left(x^{(i)},z^{(i)};\theta\right)}{Q_i\left(z^{(i)}\right)}\tag{3} \end{align} i∑logp(x(i);θ)=i∑logz(i)∑p(x(i),z(i);θ)=i∑logz(i)∑Qi(z(i))Qi(z(i))p(x(i),z(i);θ)≥i∑z(i)∑Qi(z(i))logQi(z(i))p(x(i),z(i);θ)(1)(2)(3)
( 2 ) (2) (2)式到 ( 3 ) (3) (3)式的推导使用了延森不等式,对于 f ( x ) = log ( x ) f(x)=\log(x) f(x)=log(x)有 f ′ ′ ( x ) = − 1 x 2 < 0 f''(x)=-\frac{1}{x^2}\lt0 f′′(x)=−x21<0,所以 f ( x ) f(x) f(x)是一个定义在 x ∈ R + x\in\mathbb R^+ x∈R+上的凹函数,则有 f ( E X ) ≥ E [ f ( X ) ] f(\mathrm EX)\geq \mathrm E[f(X)] f(EX)≥E[f(X)]。再看 ( 2 ) (2) (2)式中的 ∑ z ( i ) Q i ( z ( i ) ) ⏟ probability [ p ( x ( i ) , z ( i ) ; θ ) Q i ( z ( i ) ) ] ⏟ variable \displaystyle\sum_{z^{(i)}}\underbrace{Q_i\left(z^{(i)}\right)}_\textrm{probability}\underbrace{\left[\frac{p\left(x^{(i)},z^{(i)};\theta\right)}{Q_i\left(z^{(i)}\right)}\right]}_\textrm{variable} z(i)∑probability Qi(z(i))variable [Qi(z(i))p(x(i),z(i);θ)]项,恰好是 z ( i ) z^{(i)} z(i)服从 Q i Q_i Qi的分布时,变量 [ p ( x ( i ) , z ( i ) ; θ ) Q i ( z ( i ) ) ] \left[\displaystyle\frac{p\left(x^{(i)},z^{(i)};\theta\right)}{Q_i\left(z^{(i)}\right)}\right] [Qi(z(i))p(x(i),z(i);θ)]的期望表达式(期望的定义: E [ g ( x ) ] = ∑ x p ( x ) g ( x ) \mathrm E[g(x)]=\sum_xp(x)g(x) E[g(x)]=∑xp(x)g(x))。那么,根据延森不等式,应有:
f ( E z ( i ) ∼ Q i [ p ( x ( i ) , z ( i ) ; θ ) Q i ( z ( i ) ) ] ) ≥ E z ( i ) ∼ Q i [ f ( p ( x ( i ) , z ( i ) ; θ ) Q i ( z ( i ) ) ) ] f\left(\operatorname*E_{z^{(i)}\sim Q_i}\left[\frac{p\left(x^{(i)},z^{(i)};\theta\right)}{Q_i\left(z^{(i)}\right)}\right]\right)\geq\operatorname*E_{z^{(i)}\sim Q_i}\left[f\left(\frac{p\left(x^{(i)},z^{(i)};\theta\right)}{Q_i\left(z^{(i)}\right)}\right)\right] f(z(i)∼QiE[Qi(z(i))p(x(i),z(i);θ)])≥z(i)∼QiE[f(Qi(z(i))p(x(i),z(i);θ))]
式中的 E z ( i ) ∼ Q i \displaystyle\operatorname*E_{z^{(i)}\sim Q_i} z(i)∼QiE指在随机变量 z ( i ) z^{(i)} z(i)服从 Q i Q_i Qi分布的情况下求期望。最终我们得到 ( 3 ) (3) (3)式。
对于任意的分布 Q i Q_i Qi, ( 3 ) (3) (3)式都能给出一个 l ( θ ) \mathscr l(\theta) l(θ)的下界。而 Q i Q_i Qi有很多种选择,我们接下来该怎么做?如果我们对当前的参数 θ \theta θ做一次猜测,我们希望这个猜测能够紧贴着目标函数 l ( θ ) \mathscr l(\theta) l(θ),因为只有这样,我们才能确定每次迭代都是在逼近目标函数的局部最优解。也就是说我们希望特定的 θ \theta θ猜测能够使这个“下界不等式”取到等号部分。(后面会解释这个等号如何保证 l ( θ ) \mathscr l(\theta) l(θ)在每一次迭代中都单调递增。)
对于特定的 θ \theta θ猜测,要使下界紧贴着目标函数,可以再观察引入延森不等式的那一步推导,我们的目标是使不等式取到等号。而上面已经介绍了,如果要取等号,只能是对一个“常量随机变量”求期望,也就是需要令 p ( x ( i ) , z ( i ) ; θ ) Q i ( z ( i ) ) = c \displaystyle\frac{p\left(x^{(i)},z^{(i)};\theta\right)}{Q_i\left(z^{(i)}\right)}=c Qi(z(i))p(x(i),z(i);θ)=c, c c c是某个与 z ( i ) z^{(i)} z(i)无关的常量(对于任意 z ( i ) z^{(i)} z(i),都取同一个常量 c c c)。于是,令 Q i ( z ( i ) ) ∝ p ( x ( i ) , z ( i ) ; θ ) Q_i\left(z^{(i)}\right)\propto p\left(x^{(i)},z^{(i)};\theta\right) Qi(z(i))∝p(x(i),z(i);θ)即可(令分母与分子保持同一个比例)。
实际上,因为我们知道 Q i Q_i Qi是一个概率分布,有 ∑ z Q i ( z ( i ) ) = 1 = ∑ z p ( x ( i ) , z ( i ) ; θ ) c = ∑ z p ( x ( i ) , z ( i ) ; θ ) c ⟹ c = ∑ z p ( x ( i ) , z ( i ) ; θ ) \displaystyle\sum_zQ_i\left(z^{(i)}\right)=1=\sum_z\frac{p\left(x^{(i)},z^{(i)};\theta\right)}{c}=\frac{\sum_zp\left(x^{(i)},z^{(i)};\theta\right)}{c}\implies c=\sum_zp\left(x^{(i)},z^{(i)};\theta\right) z∑Qi(z(i))=1=z∑cp(x(i),z(i);θ)=c∑zp(x(i),z(i);θ)⟹c=z∑p(x(i),z(i);θ),则有:
Q i ( z ( i ) ) = p ( x ( i ) , z ( i ) ; θ ) ∑ z p ( x ( i ) , z ; θ ) = p ( x ( i ) , z ( i ) ; θ ) p ( x ( i ) ; θ ) = p ( z ( i ) ∣ x ( i ) ; θ ) \begin{align} Q_i\left(z^{(i)}\right)&=\frac{p\left(x^{(i)},z^{(i)};\theta\right)}{\sum_zp\left(x^{(i)},z;\theta\right)}\\ &=\frac{p\left(x^{(i)},z^{(i)};\theta\right)}{p\left(x^{(i)};\theta\right)}\\ &=p\left(z^{(i)}\mid x^{(i)};\theta\right) \end{align} Qi(z(i))=∑zp(x(i),z;θ)p(x(i),z(i);θ)=p(x(i);θ)p(x(i),z(i);θ)=p(z(i)∣x(i);θ)
因此,我们只需要将 Q i Q_i Qi设置为“对于给定的 x ( i ) x^{(i)} x(i)下 z ( i ) z^{(i)} z(i)的后验概率”即可,然后再此时的 θ \theta θ就行了。
对于用上面的后验概率确定的 Q i Q_i Qi, ( 3 ) (3) (3)式就能给出一个紧贴目标函数 l ( θ ) \mathscr l(\theta) l(θ)的“下界函数”,这就是E步骤,而后面我们会尝试最大化这个“下界函数”,也就是在M步骤中,我们会尝试最大化 ( 3 ) (3) (3)式得出的式子(用前面E步骤的 θ \theta θ确定的式子),并得到一组新的参数 θ \theta θ。不断重复这两部就是EM算法了:
重复直到收敛:{
- (E步骤)对于每个 i i i,令 Q i ( z ( i ) ) : = p ( z ( i ) ∣ x ( i ) ; θ ) Q_i\left(z^{(i)}\right):=p\left(z^{(i)}\mid x^{(i)};\theta\right) Qi(z(i)):=p(z(i)∣x(i);θ)
- (M步骤)更新参数,令 θ : = arg max θ ∑ i ∑ z ( i ) Q i ( z ( i ) ) log p ( x ( i ) , z ( i ) ; θ ) Q i ( z ( i ) ) \displaystyle\theta:=\arg\max_\theta\sum_i\sum_{z^{(i)}}Q_i\left(z^{(i)}\right)\log\frac{p\left(x^{(i)},z^{(i)};\theta\right)}{Q_i\left(z^{(i)}\right)} θ:=argθmaxi∑z(i)∑Qi(z(i))logQi(z(i))p(x(i),z(i);θ)
}
下一讲将继续EM算法的介绍。