EM算法原理介绍

1. 引言

    EM算法是Dempster等人在1977年提出来的一种迭代算法,用于含有隐变量的概率模型参数的极大似然估计或极大后验概率估计。EM算法的每次迭代由两步组成:E步,求期望;M步,求极大,因此,该算法也被称为期望极大算法,简称EM算法。

2. EM算法原理介绍

2.1 EM算法的原理

    一般地,用YY表示观测随机变量的数据,ZZ表示隐随机变量的数据,YYZZ连在一起称为完全数据,观测数据YY又称为不完全数据。假设给定观测数据YY,其概率分布是P(Yθ)P(Y | \theta),其中θ\theta是需要估计的模型参数,那么不完全数据YY的似然函数是P(Yθ)P(Y | \theta),对数似然函数是L(θ)=logP(Yθ)L(\theta)=\log P(Y | \theta),假设YYZZ的联合概率分布是P(Y,Zθ)P(Y, Z | \theta),那么完全数据对数似然函数是logP(Y,Zθ)\log P(Y, Z | \theta)

    EM算法就是通过极大化不完全数据YY的对数似然函数来对参数θ\theta进行估计,即极大化:
L(θ)=logP(Yθ)=logZP(Y,Zθ)=log(ZP(YZ,θ)P(Zθ)) \begin{aligned} L(\theta) &=\log P(Y | \theta)=\log \sum_{Z} P(Y, Z | \theta) \\ &=\log \left(\sum_{Z} P(Y | Z, \theta) P(Z | \theta)\right) \end{aligned} 由于上式中含有未观测的数据和求和的对数,因此,没法直接对参数进行极大化估计。事实上,EM算法是通过迭代逐步近似极大化L(θ)L(\theta),假设在第ii次迭代后θ\theta的估计值是θ(i)\theta^{(i)},我们希望估计值θ\theta能使L(θ)L(\theta)增加,即L(θ)>L(θ(i))L(\theta)>L\left(\theta^{(i)}\right),并逐步达到极大值,因此,可以直接考虑两者的差:
L(θ)L(θ(i))=log(ZP(YZ,θ)P(Zθ))logP(Yθ(i)) L(\theta)-L\left(\theta^{(i)}\right)=\log \left(\sum_{Z} P(Y | Z, \theta) P(Z | \theta)\right)-\log P\left(Y | \theta^{(i)}\right) 利用Jensen不等式可以得到其下界:
L(θ)L(θ(i))=log(ZP(ZY,θ(i))P(YZ,θ)P(Zθ)P(ZY,θ(i)))logP(Yθ(i))ZP(ZY,θ(i))logP(YZ,θ)P(Zθ)P(ZY,θ(i))logP(Yθ(i))=ZP(ZY,θ(i))logP(YZ,θ)P(Zθ)P(ZY,θ(i))P(Yθ(i)) \begin{aligned} L(\theta)-L\left(\theta^{(i)}\right) &=\log \left(\sum_{Z} P\left(Z | Y, \theta^{(i)}\right) \frac{P(Y | Z, \theta) P(Z | \theta)}{P\left(Z | Y, \theta^{(i)}\right)}\right)-\log P\left(Y | \theta^{(i)}\right) \\ & \geqslant \sum_{Z} P\left(Z | Y, \theta^{(i)}\right) \log \frac{P(Y | Z, \theta) P(Z | \theta)}{P\left(Z | Y, \theta^{(i)}\right)}-\log P\left(Y | \theta^{(i)}\right) \\ &=\sum_{Z} P\left(Z | Y, \theta^{(i)}\right) \log \frac{P(Y | Z, \theta) P(Z | \theta)}{P\left(Z | Y, \theta^{(i)}\right) P\left(Y | \theta^{(i)}\right)} \end{aligned}
B(θ,θ(i))=^L(θ(i))+ZP(ZY,θ(i))logP(YZ,θ)P(Zθ)P(ZY,θ(i))P(Yθ(i)) B\left(\theta, \theta^{(i)}\right) \hat{=} L\left(\theta^{(i)}\right)+\sum_{Z} P\left(Z | Y, \theta^{(i)}\right) \log \frac{P(Y | Z, \theta) P(Z | \theta)}{P\left(Z | Y, \theta^{(i)}\right) P\left(Y | \theta^{(i)}\right)}
L(θ)B(θ,θ(i)) L(\theta) \geqslant B\left(\theta, \theta^{(i)}\right) 即函数B(θ,θ(i))B\left(\theta, \theta^{(i)}\right)L(θ)L(\theta)的一个下界,并且有:
L(θ(i))=B(θ(i),θ(i)) L\left(\theta^{(i)}\right)=B\left(\theta^{(i)}, \theta^{(i)}\right) 因此,任何可以使B(θ,θ(i))B\left(\theta, \theta^{(i)}\right)增大的θ\theta也可以使L(θ)L(\theta)增大,因此,每次迭代时可以直接对B(θ,θ(i))B\left(\theta, \theta^{(i)}\right)进行极大化更新θ\theta
θ(i+1)=argmaxθB(θ,θ(i)) \theta^{(i+1)}=\arg \max _{\theta} B\left(\theta, \theta^{(i)}\right) 对其求θ\theta偏导,有:
θ(i+1)=argmaxθ(L(θ(i))+ZP(ZY,θ(i))logP(YZ,θ)P(Zθ)P(ZY,θ(i))P(Yθ(i)))=argmaxθ(ZP(ZY,θ(i))log(P(YZ,θ)P(Zθ)))=argmaxθ(ZP(ZY,θ(i))logP(Y,Zθ))=argmaxθQ(θ,θ(i)) \begin{aligned} \theta^{(i+1)} &=\arg \max _{\theta}\left(L\left(\theta^{(i)}\right)+\sum_{Z} P\left(Z | Y, \theta^{(i)}\right) \log \frac{P(Y | Z, \theta) P(Z | \theta)}{P\left(Z | Y, \theta^{(i)}\right) P\left(Y | \theta^{(i)}\right)}\right) \\ &=\arg \max _{\theta}\left(\sum_{Z} P\left(Z | Y, \theta^{(i)}\right) \log (P(Y | Z, \theta) P(Z | \theta))\right) \\ &=\arg \max _{\theta}\left(\sum_{Z} P\left(Z | Y, \theta^{(i)}\right) \log P(Y, Z | \theta)\right) \\ &=\arg \max _{\theta} Q\left(\theta, \theta^{(i)}\right) \end{aligned} 上式等价于EM算法的一次迭代,即求QQ函数及其极大化,EM算法是通过不断求解下界的极大化逼近求解对数似然函数极大化的算法。最终,EM算法可以归纳如下:

    EM算法:

  • 输入:观测变量YY,隐变量数据ZZ,联合分布P(Y,Zθ)P(Y, Z | \theta),条件分布P(ZY,θ)P(Z | Y, \theta)
  • 输出:模型参数θ\theta
  • 选择参数初始值θ(0)\theta^{(0)},开始迭代;
  • E步:记θ(i)\theta^{(i)}为第ii次迭代参数θ\theta的估计值,在第i+1i+1次迭代的E步,计算期望,即Q函数:Q(θ,θ(i))=Ez[logP(Y,Zθ)Y,θ(i)]=ZlogP(Y,Zθ)P(ZY,θ(i)) \begin{aligned} Q\left(\theta, \theta^{(i)}\right) &=E_{z}\left[\log P(Y, Z | \theta) | Y, \theta^{(i)}\right] \\ &=\sum_{Z} \log P(Y, Z | \theta) P\left(Z | Y, \theta^{(i)}\right) \end{aligned} 这里,P(ZY,θ(i))P\left(Z | Y, \theta^{(i)}\right)是在给定观测数据YY和当前的参数估计θ(i)\theta^{(i)}下的隐变量数据ZZ的条件概率分布;
  • M步:求使Q(θ,θ(i))Q\left(\theta, \theta^{(i)}\right)极大化的θ\theta,确定第i+1i+1次迭代的参数的估计值:
    θ(i+1)=argmaxθQ(θ,θ(i)) \theta^{(i+1)}=\arg \max _{\theta} Q\left(\theta, \theta^{(i)}\right)
  • 重复4、5步骤,直到收敛,即θ(i+1)θ(i)<ε1\left\|\theta^{(i+1)}-\theta^{(i)}\right\|<\varepsilon_{1}或者Q(θ(i+1),θ(i))Q(θ(i),θ(i))<ε2\left\|Q\left(\theta^{(i+1)}, \theta^{(i)}\right)-Q\left(\theta^{(i)}, \theta^{(i)}\right)\right\|<\varepsilon_{2},其中,ε1,ε2\varepsilon_{1}, \varepsilon_{2}为设定的阈值。

2.2 EM算法在高斯混合模型中的应用

    EM算法的一个重要的应用是高斯混合模型的参数估计。首先,先看下什么是高斯混合模型。

    高斯混合模型: 高斯混合模型是指具有如下形式的概率分布模型:
P(yθ)=k=1Kαkϕ(yθk) P(y | \theta)=\sum_{k=1}^{K} \alpha_{k} \phi\left(y | \theta_{k}\right) 其中,αk\alpha_{k}是系数,αk0,k=1Kαk=1\alpha_{k} \geqslant 0, \quad \sum_{k=1}^{K} \alpha_{k}=1ϕ(yθk)\phi\left(y | \theta_{k}\right)是高斯分布函数,θk=(μk,σk2)\theta_{k}=\left(\mu_{k}, \sigma_{k}^{2}\right)
ϕ(yθk)=12πσkexp((yμk)22σk2) \phi\left(y | \theta_{k}\right)=\frac{1}{\sqrt{2 \pi} \sigma_{k}} \exp \left(-\frac{\left(y-\mu_{k}\right)^{2}}{2 \sigma_{k}^{2}}\right) 称为第kk个分模型。

    假设观测数据y1,y2, ,yNy_{1}, y_{2}, \cdots, y_{N}由高斯混合模型生成,
P(yθ)=k=1Kαkϕ(yθk) P(y | \theta)=\sum_{k=1}^{K} \alpha_{k} \phi\left(y | \theta_{k}\right) 其中,θ=(α1,α2, ,αK;θ1,θ2, ,θK)\theta=\left(\alpha_{1}, \alpha_{2}, \cdots, \alpha_{K} ; \theta_{1}, \theta_{2}, \cdots, \theta_{K}\right),接下来用EM算法估计高斯混合模型的参数θ\theta

    可以设想观测数据yj,j=1,2, ,Ny_{j}, \quad j=1,2, \cdots, N是这样产生的:首先依概率αk\alpha_{k}选择第kk个高斯分布模型ϕ(yθk)\phi\left(y | \theta_{k}\right),然后依第kk个分模型的概率分布ϕ(yθk)\phi\left(y | \theta_{k}\right)生成观测数据yjy_{j},这时,观测数据yj,j=1,2, ,Ny_{j}, \quad j=1,2, \cdots, N是已知的,反映观测数据yjy_{j}来自第kk个分模型是未知的,用隐变量γjk\gamma_{j k}表示,其定义如下:
EM算法原理介绍 其中,γjk\gamma_{j k}是0-1随机变量。因此,可以得到完全数据的似然函数:
EM算法原理介绍其中,nk=j=1Nγjk,k=1Knk=Nn_{k}=\sum_{j=1}^{N} \gamma_{j k}, \quad \sum_{k=1}^{K} n_{k}=N。因此,完全数据的对数似然函数可以表达为:
logP(y,γθ)=k=1Knklogαk+j=1Nγjk[log(12π)logσk12σk2(yjμk)2] \log P(y, \gamma | \theta)=\sum_{k=1}^{K} n_{k} \log \alpha_{k}+\sum_{j=1}^{N} \gamma_{j k}\left[\log \left(\frac{1}{\sqrt{2 \pi}}\right)-\log \sigma_{k}-\frac{1}{2 \sigma_{k}^{2}}\left(y_{j}-\mu_{k}\right)^{2}\right]

    接下来,可以计算Q函数:
Q(θ,θ(i))=E[logP(y,γθ)y,θ(i)]=E{k=1Knklogαk+j=1Nγjk[log(12π)logσk12σk2(yjμk)2]}=k=1K{j=1N(Eγjk)logαk+j=1N(Eγjk)[log(12π)logσk12σk2(yjμk)2]} \begin{aligned} Q\left(\theta, \theta^{(i)}\right) &=E\left[\log P(y, \gamma | \theta) | y, \theta^{(i)}\right] \\ &=E\left\{\sum_{k=1}^{K} n_{k} \log \alpha_{k}+\sum_{j=1}^{N} \gamma_{j k}\left[\log \left(\frac{1}{\sqrt{2 \pi}}\right)-\log \sigma_{k}-\frac{1}{2 \sigma_{k}^{2}}\left(y_{j}-\mu_{k}\right)^{2}\right]\right\} \\ &=\sum_{k=1}^{K}\left\{\sum_{j=1}^{N}\left(E \gamma_{j k}\right) \log \alpha_{k}+\sum_{j=1}^{N}\left(E \gamma_{j k}\right)\left[\log \left(\frac{1}{\sqrt{2 \pi}}\right)-\log \sigma_{k}-\frac{1}{2 \sigma_{k}^{2}}\left(y_{j}-\mu_{k}\right)^{2}\right]\right\} \end{aligned} 这里需要计算E(γjky,θ)E\left(\gamma_{j k} | y, \theta\right),记为γ^jk\hat{\gamma}_{j k},其计算如下:
EM算法原理介绍
γ^jk=Eγjk\hat{\gamma}_{j k}=E \gamma_{j k}nk=j=1NEγjkn_{k}=\sum_{j=1}^{N} E \gamma_{j k}代入Q函数得:
Q(θ,θ(i))=k=1Knklogαk+j=1Nγ^jk[log(12π)logσk12σk2(yjμk)2] Q\left(\theta, \theta^{(i)}\right)=\sum_{k=1}^{K} n_{k} \log \alpha_{k}+\sum_{j=1}^{N} \hat{\gamma}_{j k}\left[\log \left(\frac{1}{\sqrt{2 \pi}}\right)-\log \sigma_{k}-\frac{1}{2 \sigma_{k}^{2}}\left(y_{j}-\mu_{k}\right)^{2}\right]

    接下来是M步,计算Q函数的极大值,
θ(i+1)=argmaxθQ(θ,θ(i)) \theta^{(i+1)}=\arg \max _{\theta} Q\left(\theta, \theta^{(i)}\right) μ^k,σ^k2α^k,k=1,2, ,K\hat{\mu}_{k}, \hat{\sigma}_{k}^{2}\hat{\alpha}_{k}, k=1,2, \cdots, K分别表示θ(i+1)\theta^{(i+1)}的各参数,分别对μk,σk2,αk\mu_{k}, \sigma_{k}^{2}, \alpha_{k}求偏导并令其为0得:
μ^k=j=1Nγ^jkyjj=1Nγ^jk,k=1,2, ,Kσ^k2=j=1Nγ^jk(yjμk)2j=1Nγ^jk,k=1,2, ,Kα^k=nkN=j=1Nγ^jkN,k=1,2, ,K \begin{array}{c}{\hat{\mu}_{k}=\frac{\sum_{j=1}^{N} \hat{\gamma}_{j k} y_{j}}{\sum_{j=1}^{N} \hat{\gamma}_{j k}}, \quad k=1,2, \cdots, K} \\\\ {\hat{\sigma}_{k}^{2}=\frac{\sum_{j=1}^{N} \hat{\gamma}_{j k}\left(y_{j}-\mu_{k}\right)^{2}}{\sum_{j=1}^{N} \hat{\gamma}_{j k}}, \quad k=1,2, \cdots, K} \\\\ {\hat{\alpha}_{k}=\frac{n_{k}}{N}=\frac{\sum_{j=1}^{N} \hat{\gamma}_{j k}}{N}, \quad k=1,2, \cdots, K}\end{array} 重复以上过程,直到收敛为止。高斯混合模型参数估计的EM算法可以总结如下:

    高斯混合模型参数估计的EM算法

  1. 输入:观测数据y1,y2, ,yNy_{1}, y_{2}, \cdots, y_{N},高斯混合模型;
  2. 输出:高斯混合模型的参数;
  3. 取参数的初始值开始迭代
  4. E步:依据当前的参数,计算分模型kk对观测数据yjy_j的响应度:
    γ^jk=αkϕ(yjθk)k=1Kαkϕ(yjθk),j=1,2, ,N;k=1,2, ,K \hat{\gamma}_{j k}=\frac{\alpha_{k} \phi\left(y_{j} | \theta_{k}\right)}{\sum_{k=1}^{K} \alpha_{k} \phi\left(y_{j} | \theta_{k}\right)}, \quad j=1,2, \cdots, N ; \quad k=1,2, \cdots, K
  5. M步:计算新一轮迭代的模型参数:
    μ^k=j=1Nγ^jkyjj=1Nγ^jk,k=1,2, ,Kσ^k2=j=1Nγ^jk(yjμk)2j=1Nγ^jk,k=1,2, ,Kα^k=nkN=j=1Nγ^jkN,k=1,2, ,K \begin{array}{c}{\hat{\mu}_{k}=\frac{\sum_{j=1}^{N} \hat{\gamma}_{j k} y_{j}}{\sum_{j=1}^{N} \hat{\gamma}_{j k}}, \quad k=1,2, \cdots, K} \\\\ {\hat{\sigma}_{k}^{2}=\frac{\sum_{j=1}^{N} \hat{\gamma}_{j k}\left(y_{j}-\mu_{k}\right)^{2}}{\sum_{j=1}^{N} \hat{\gamma}_{j k}}, \quad k=1,2, \cdots, K} \\\\ {\hat{\alpha}_{k}=\frac{n_{k}}{N}=\frac{\sum_{j=1}^{N} \hat{\gamma}_{j k}}{N}, \quad k=1,2, \cdots, K}\end{array}
  6. 重复4、5步,直到收敛。

3. 总结

  • EM算法对初始值比较敏感。
  • EM算法由于是通过迭代的思想,采用下界不断逼近对数似然函数,因此,得到的参数估计可能是局部最优解。