EM算法(Expectation-maximization algorithm)小结

EM算法(Expectation-Maximization algorithm)是一类通过迭代进行极大似然估计的优化算法,今天翻出了之前的笔记,在这里也放一下吧。

EM算法背景

EM(expectation-maximization)算法是Dempster,Laird和Rubin(DLR)三个人在1977年正式提出的.主要是用于在不完全数据的情况下计算最大似然估计.在EM算法正式提出以来,人们对EM算法的性质有更加深入的研究.并且在此基础上,提出了很多改进的算法.在数理统计,数据挖掘,机器学习以及模式识别等领域有广泛的应用.

问题背景

给定一些观察数据y,假设y符合如下的高斯分布:
p ( y ) = ∑ k = 1 K θ k N ( y ∣ μ k , Σ k ) p(y)=\sum_{k=1}^{K} \theta_{k} N\left(y \mid \mu_{k}, \Sigma_{k}\right) p(y)=k=1KθkN(yμk,Σk)
需要求出混合高斯分布的三组参数: θ k , μ k , Σ k \theta_{k}, \mu_{k}, \Sigma_{k} θk,μk,Σk
我们注意到,该混合高斯分布一共有K个分布函数,对于每一个观察到的样本y,如果知道它是属于K中的哪个分布,那么求这些参数就会变得很简单。因此我们考虑引入一组新的变量z,用 z i z_{i} zi来表示这些高斯分布,那么我们的样本集就会变为 { ( y 1 , z 2 ) , ( y 2 , z 5 ) , ( y 3 , z 1 ) , … } \left\{\left(y_{1}, z_{2}\right),\left(y_{2}, z_{5}\right),\left(y_{3}, z_{1}\right), \ldots\right\} {(y1,z2),(y2,z5),(y3,z1),}

隐变量

上面提到的新的变量z就是隐藏变量,这是由于实际问题中我们往往不知道每个y属于哪个分布,我们观察不到z.我们引入: Z = { b 1 , b 2 , … , b K } Z=\left\{b_{1}, b_{2}, \ldots, b_{K}\right\} Z={b1,b2,,bK}这里的 b K b_{K} bK取0或1,那么就有: p ( z k = 1 ) = θ k p\left(z_{k}=1\right)=\theta_{k} p(zk=1)=θk,更进一步我们可以得到:
p ( Z ) = ∏ k = 1 K θ k z k p\left(Z\right)=\prod_{k=1}^{K} \theta_{k}^{z_{k}} p(Z)=k=1Kθkzk
最终,我们可以得到:
p ( y ∣ z k = 1 ) = N ( y ∣ μ k , Σ k ) ⇒ p ( y ∣ Z ) = ∏ k = 1 K N ( y ∣ u k , Σ k ) z k p\left(y \mid z_{k}=1\right)=N\left(y \mid \mu_{k}, \Sigma_{k}\right)\\ \Rightarrow p\left(y \mid Z\right)=\prod_{k=1}^{K} N\left(y \mid u_{k}, \Sigma_{k}\right)^{z_{k}} p(yzk=1)=N(yμk,Σk)p(yZ)=k=1KN(yuk,Σk)zk

EM算法阐释

定义

根据上面的背景,我们可以正式引入EM算法了。
首先引入如下变量
定义两个样本空间X和Y,其中X是完整数据空间,Y是观察数据(即incomplete data),令Z表示添加数据,那么X =(Y,Z)。再令φ表示参数集合,则有:

  • g ( y ∣ ϕ ) g(y \mid \phi) g(yϕ)表示观察后验概率密度函数
  • f ( x ∣ ϕ ) f(x \mid \phi) f(xϕ)表示添加数据Z后得到的后验密度函数
  • k ( x ∣ y , ϕ ) k(x \mid y, \phi) k(xy,ϕ)表示给定数据φ和观察数据y下x的条件密度函数,根据之前的定义有:
    k ( x ∣ y , ϕ ) = f ( x ∣ ϕ ) / g ( y ∣ ϕ ) k(x \mid y, \phi)=f(x \mid \phi) / g(y \mid \phi) k(xy,ϕ)=f(xϕ)/g(yϕ)
  • 定义似然函数 L ( ϕ ) = log ⁡ ( g ( y ∣ ϕ ) ) L(\phi)=\log (g(y \mid \phi)) L(ϕ)=log(g(yϕ)),根据上面的式子有 L ( ϕ ) = log ⁡ ( f ( x ∣ ϕ ) ) − log ⁡ k ( x ∣ y , ϕ ) L(\phi)=\log (f(x \mid \phi))-\log k(x \mid y, \phi) L(ϕ)=log(f(xϕ))logk(xy,ϕ)
  • 定义Q-function和H-function
    Q ( ϕ ′ ∣ ϕ ) = E ( log ⁡ ( f ( x ∣ ϕ ′ ) ∣ y , ϕ ) Q\left(\phi^{\prime} \mid \phi\right)=E\left(\log \left(f\left(x \mid \phi^{\prime}\right) \mid y, \phi\right)\right. Q(ϕϕ)=E(log(f(xϕ)y,ϕ)
    H ( ϕ ′ ∣ ϕ ) = E ( log ⁡ ( k ( x ∣ y , ϕ ′ ) ) ∣ y , ϕ ) H\left(\phi^{\prime} \mid \phi\right)=E\left(\log \left(k\left(x \mid y, \phi^{\prime}\right)\right) \mid y, \phi\right) H(ϕϕ)=E(log(k(xy,ϕ))y,ϕ)
    则显而易见 Q ( ϕ ′ ∣ ϕ ) = L ( ϕ ′ ) + H ( ϕ ′ ∣ ϕ ) Q\left(\phi^{\prime} \mid \phi\right)=L\left(\phi^{\prime}\right)+H\left(\phi^{\prime} \mid \phi\right) Q(ϕϕ)=L(ϕ)+H(ϕϕ)

算法流程

我们的目的是计算 g ( y ∣ ϕ ) g(y \mid \phi) g(yϕ)的众数,记 ϕ i \phi^{i} ϕi为第i+1次迭代开始时参数的估计值,则第i+1次迭代的两步为:

  • E-step: Q ( ϕ ∣ ϕ i ) = E ( log ⁡ ( f ( x ∣ ϕ ) ) ∣ y , ϕ i ) Q\left(\phi \mid \phi^{i}\right)=E\left(\log (f(x \mid \phi)) \mid y, \phi^{i}\right) Q(ϕϕi)=E(log(f(xϕ))y,ϕi)
  • M-step: ϕ i + 1 = arg ⁡ max ⁡ ( Q ( ϕ ∣ ϕ i ) ) \phi^{i+1}=\arg \max \left(Q\left(\phi \mid \phi^{i}\right)\right) ϕi+1=argmax(Q(ϕϕi))
  • repeat until ∥ Q ( ϕ i + 1 ∣ ϕ i ) − Q ( ϕ i ∣ ϕ i ) ∥ \left\|Q\left(\phi^{i+1} \mid \phi^{i}\right)-Q\left(\phi^{i} \mid \phi^{i}\right)\right\| Q(ϕi+1ϕi)Q(ϕiϕi)充分小

算例

如果我们引入贝叶斯公式的话,通过上面的式子可以获得:
p ( Z ∣ Y , μ , Σ , π ) ∝ ∏ n = 1 N ∏ k = 1 K [ π k N ( y n ∣ μ k , Σ k ) ] z n k p(Z \mid Y, \mu, \Sigma, \pi)\propto\prod_{n=1}^{N} \prod_{k=1}^{K}\left[\pi_{k} N\left(y_{n} \mid \mu_{k}, \Sigma_{k}\right)\right]^{z_{n k}} p(ZY,μ,Σ,π)n=1Nk=1K[πkN(ynμk,Σk)]znk
这里的N表示观察样本数,而 z n k z_{n k} znk是未知的,需要求出它的期望:
E ( z n k ∣ y n ) = ∑ z n k z n k ⋅ p ( z n k ∣ y n ) = ∑ z n k z n k ⋅ p ( z n k ) p ( y n ∣ z n k ) p ( y n ) = 1 ⋅ p ( z n k = 1 ) p ( y n ∣ z n k = 1 ) + 0 ⋅ p ( z n k = 0 ) p ( y n ∣ z n k = 0 ) p ( y n ) = p ( z n k = 1 ) p ( y n ∣ z n k = 1 ) p ( y n ) = π k ⋅ N ( y n ∣ μ k , Σ k ) ∑ j π j ⋅ N ( y n ∣ μ j , Σ j ) = γ ( z n k ) \begin{array}{l} E\left(z_{n k} \mid y_{n}\right)=\sum_{z_{n k}} z_{n k} \cdot p\left(z_{n k} \mid y_{n}\right) \\ =\sum_{z_{n k}} z_{n k} \cdot \frac{p\left(z_{n k}\right) p\left(y_{n} \mid z_{n k}\right)}{p\left(y_{n}\right)} \\ =\frac{1 \cdot p\left(z_{n k}=1\right) p\left(y_{n} \mid z_{n k}=1\right)+0 \cdot p\left(z_{n k}=0\right) p\left(y_{n} \mid z_{n k}=0\right)}{p\left(y_{n}\right)} \\ =\frac{p\left(z_{n k}=1\right) p\left(y_{n} \mid z_{n k}=1\right)}{p\left(y_{n}\right)} \\ =\frac{\pi_{k} \cdot N\left(y_{n} \mid \mu_{k}, \Sigma_{k}\right)}{\sum_{j} \pi_{j} \cdot N\left(y_{n} \mid \mu_{j}, \Sigma_{j}\right)} \\ =\gamma\left(z_{n k}\right) \end{array} E(znkyn)=znkznkp(znkyn)=znkznkp(yn)p(znk)p(ynznk)=p(yn)1p(znk=1)p(ynznk=1)+0p(znk=0)p(ynznk=0)=p(yn)p(znk=1)p(ynznk=1)=jπjN(ynμj,Σj)πkN(ynμk,Σk)=γ(znk)
E ( Z n k ) E\left(Z_{n k}\right) E(Znk)代入 ln ⁡ p ( Y , Z ∣ μ , Σ , π ) \ln p(Y, Z \mid \mu, \Sigma, \pi) lnp(Y,Zμ,Σ,π)
Q = E ( ln ⁡ p ( Y , Z ) ∣ μ , Σ , π ) = ∑ n = 1 N ∑ k = 1 K γ ( z z k ) { ln ⁡ π k + ln ⁡ N ( x n ∣ μ k , Σ k ) } \begin{array}{l} Q=E(\ln p(Y, Z) \mid \mu, \Sigma, \pi) \\ =\sum_{n=1}^{N} \sum_{k=1}^{K} \gamma\left(z_{z k}\right)\left\{\ln \pi_{k}+\ln N\left(x_{n} \mid \mu_{k}, \Sigma_{k}\right)\right\} \end{array} Q=E(lnp(Y,Z)μ,Σ,π)=n=1Nk=1Kγ(zzk){lnπk+lnN(xnμk,Σk)}
然后只需要将期望最大化就好了,具体略,大体的流程如下图:
EM算法(Expectation-maximization algorithm)小结_第1张图片

算法解释

(1)如果缺失数据是已知的,就可以利用已知的完全数据处理技术对模型的未知参数进行估计.
(2)如果模型的参数已知,根据模型我们可以推导出缺失数据的值.
(3)核心是下界最大化,E-step构造后验分布的局部下界,M-step优化这个下界.
(4)算法的缺点是,收敛速度慢,算法高度依赖初始值的选择。

总结

从推导中可以看出,由于引入了隐变量,所以EM可以处理相对广泛的问题,尤其是一些缺失和值插补的问题。EM算法在一般情况是收敛的,但是不保证收敛到全局最优,即有可能进入局部的最优。EM算法在混合高斯模型,隐马尔科夫模型中都有应用,是著名的数据挖掘十大算法之一。

你可能感兴趣的:(算法,em)