之前粗略看了一下 EM 算法,但没有深入,最近看到 GMM( 混合高斯 )和聚类,发现EM算法的用途,又了解到之后的HMM还会用到,在这里稍微深入研究一下。
相关资料主要是参考了下面内容
书籍内容
周志华 机器学习
李航 统计学习方法
视频内容
本文大致思路是先按照吴恩达讲义中的思路,然后利用统计学习方法中的方法进行补充说明
1. Jensen 不等式
如果函数 f 是定义在实数上的凸函数,也就是二阶导数 f″(x)≥0 大于等于零。如果变量 x 是向量,则 Hessen 矩阵为半正定矩阵。特别的,如果二阶导数恒大于0或 Hessen 矩阵正定,则函数 f 为严格凸函数。
对于凸函数,有下面的不等式成立:
E[f(X)] ≥f(EX)
需要说明的是,如果函数 f 是严格的凸函数,那么上面的等号成立,也就是说,当等号成立的时候,有下式成立:
E[X]=X
上面这个式子说明,随机变量 X 是一个常量,因为 E[X] 是一个常量,换句话说,X 以1的概率是某个常量。
对于凹函数来说,将上面的不等号符号全部翻转即可,对于等号成立的条件不变,也就是随机变量 X 是一个常量。这一点在后面的证明也会用到。
2. EM算法
对于一个参数估计问题,假设我们有 m 个相互独立的样本组成的训练集是 {x(1), ... ,x(m)} ,我们假设存在隐变量 z,并符合概率模型 p(x, z),所以,估计的似然函数由下式给出:
ℓ(θ)=∑mi=1log p(x;θ) =∑mi=1log ∑zp(x,z;θ)
但是由于直接计算 θ 的似然函数又比较困难,在这里 zi 是一个隐随机变量。在通常情况下,如果 zi 是一个能够被观测到的量,那么进行似然估计将会变得很容易。
在这样的前提假设下,EM 算法给出了一个用来计算参数估计的十分有效的算方法。因为直接进行 ℓ(θ) 的最大化可能会比较困难,我们采取的策略是不断重复的利用 ℓ 的下界来逼近 ℓ (E-step),然后在对这个下界进行取最值(最优化这个下界)。
对于每一个 i ,我们令 Qi 是 zi 的一个分布,因此有 ∑zQi(z)=1,Qi(z)⩾0 ,考虑下面的等式: ∑ilog p(x(i);θ)=∑ilog∑z(i)p(x(i),z(i);θ) (1) =∑ilog∑z(i)Q(i)(z(i))p(x(i),z(i);θ)Q(i)(z(i)) (2) ≧∑i∑z(i)Q(i)(z(i))log p(x(i),z(i);θ)Q(i)(z(i)) (3)
上面第二步是在分子和分母同时引入 Qi ,第三步是利用前面说到的 Jessen 不等式 ,因为 log 函数是凹函数,所以是大于等于。在这里我们把 Qi(z(i)) 当做是 z(i) 的分布函数,而后面的 p(x(i),z(i);θ)Q(i)(z(i)) 当做是 Qi(z(i)) 的函数,可以这样想,我们令 Qi(z(i))=X ,所以 p(x(i),z(i);θ)Q(i)(z(i))=f(X) ,所以,上面第二步中间部分就可以转化为下面的式子:
∑ilog∑X⋅f(X)=∑ilog E[f(X)]≥∑iE[logf(X)]=∑i∑X⋅logf(X)
现在,对于任意的 Qi 分布,,从上面的公式(3)中都能给出似然函数 ℓ(θ) 的下界。所以,现在的问题是,应该选择什么样的 Qi 才能够使得算出的下界更贴合 ℓ(θ) 。
在前面讨论 Jessen 不等式的时候我们说到过,当 E[X]=X 的时候等号成立,也就是我们要寻求的下界。也就是说,当变量 X 是一个常量时,原不等式可以去等号。对于上面的公式 (3),也就是说又下面的公式成立:
也就是说,我们可以选择这样的 Qi :
Qi∝p(xi,zi;θ)
也就是 Qi 应该正比于 p(xi,zi;θ) 。事实上,因为我们已经知道这个等式 ∑zQi(z)=1 (因为 Qi 是一个分布),所以这也就告诉我们应该选择下面这样的 Qi :
Q(i)(z(i))=p(x(i),z(i);θ)∑zp(x(i),z(i);θ) =p(x(i),z(i);θ)p(x(i);θ) =p(z(i)|x(i);θ)
如果 Qi 满足上面这样的方程,首先可以看出对 Qi 进行求和的结果为1,而且 Qi 正比于 p(xi,zi;θ) 。因此,我们可以通过前面给出的 z(i), x(i) 和参数 θ 就能算出相应的 Qi 。
到这里,我们已经找到了满足方程(3)中最紧下界条件的 Qi ,也就是接下来我们要在最大化似然函数 ℓ(θ) 中使用的 Qi 。上面的过程都是 EM 算法中的 E-step,在接下来的 M-step 中,我们利用已知的参数对方程(3) 进行最大化从而得出一组新的参数 θ 。重复的进行 E-step 和 M-step 我们就可以得到 EM 算法,算法大致流程如下所示:
Repeat until convergence {
(E-step) For each i, set
Qi(z(i)):=p(z(i)|x(i);θ)
(M-step) Set
θ:=argmaxθ∑i∑z(i)Qi(z(i))logp(x(i),z(i); θ)Qi(z(i))
}
3. EM算法的收敛性
上面已经给出了EM算法的流程,然而我们如何证明这个算法会收敛呢?在这里我们假设 θ(t) 和 θ(t+1) 是在相邻的两次迭代过程中求得的参数 θ ,现在我们来证明一下 ℓ(θ)≥ℓ(θ+1) ,通过这个证明可以说明 EM 算法总是单调增的来提升 log 似然函数。来证明这个结论的关键是依赖我们选择的 Q 函数。特别的,在 EM 算法迭代过程从 θ(t) 开始,这是我们选择的 Q 函数是 Q(t)i(z(i)):=p(xi,zi;θ(t)) 。并且我们也已经知道此时这个 Q 可以使 Jessen 不等式的等号成立。
将 Q 函数应用于方程(3),并且令等号成立,我们可以得到下式:
ℓ(θ(t))=∑i∑z(i)Q(t)i(z(i))logp(x(i),z(i); θ(t))Q(t)i(z(i))
通过最大化上式中的右式我们可以得到参数 θ(t+1) ,所以可以得知:
ℓ(θ(t+1))≥∑i∑z(i)Q(t)i(z(i))logp(x(i),z(i); θ(t+1))Q(t)i(z(i)) (4) ≥∑i∑z(i)Q(t)i(z(i))logp(x(i),z(i); θ(t))Q(t)i(z(i)) (5) =ℓ(θ(t)) (6)
上面第一个不等式(方程 4)是根据下面的公式得来的:
ℓ(θ)≧∑i∑z(i)Q(i)(z(i))log p(x(i),z(i);θ)Q(i)(z(i))
上式对任意的 Qi 和 θ 都成立,在这里我们令 Qi=Q(t)i , θ=θ(t+1) 。为了得到方程(5),我们可以利用 θ(t+1) 是从下面的方程中得到的:
argmaxθ∑i∑z(i)Qi(z(i))logp(x(i),z(i); θ)Qi(z(i))
所以从上面这个公式中在参数 θ(t+1) 一定大于等于在参数 θ(t) 的取值。
因此,EM 算法会使得似然函数单调收敛。在我们对 EM 算法的描述中说,算法一直执行到收敛为止。一种判断收敛的方法是两次迭代后得到的参数 θ 的差是否足够小,然后根据 EM 算法收敛得是不是太慢来判断是否到收敛。