EM算法

一般地,用YYY表示观测随机变量的数据,ZZZ表示隐随机变的数据。YYYZZZ连在一起称为完全数据。假设给定观测数据YYY,其概率分布是P(Y∣θ)P(Y|\theta)P(Yθ),其中θ\thetaθ是需要估计地模型参数。

EM算法通过迭代求L(θ)=logP(Y∣θ)L(\theta)=logP(Y|\theta)L(θ)=logP(Yθ)的极大似然估计。每次迭代包含两步:EEE步,求期望;MMM步,求极大化。

1. 算法流程

输入:观测变量数据Y,隐变量数据Z,联合分布P(Y,Z∣θ)输入:观测变量数据Y,隐变量数据Z,联合分布P(Y,Z|\theta)YZP(Y,Zθ),条件分布P(Z∣Y,θ)P(Z|Y,\theta)P(ZY,θ)

输出:模型参数θ输出:模型参数\thetaθ

  1. 选择参数的初值θ(0)\theta^{(0)}θ(0),开始迭代
  2. EEE步:记θ(i)\theta^{(i)}θ(i)为第iii次迭代参数的估计值,在第i+1i+1i+1次迭代的EEE步,计算
    Q(θ,θ(i))=Ez[logP(Y,Z∣θ)∣Y,θ(i)]=∑ZlogP(Y,Z∣θ)P(Z∣Y,θ(i))Q(\theta,\theta^{(i)})=E_z[logP(Y,Z|\theta)|Y,\theta^{(i)}]=\sum_ZlogP(Y,Z|\theta)P(Z|Y,\theta^{(i)})Q(θ,θ(i))=Ez[logP(Y,Zθ)Y,θ(i)]=ZlogP(Y,Zθ)P(ZY,θ(i))
    其中P(Z∣Y,θ(i))P(Z|Y,\theta^{(i)})P(ZY,θ(i))是在给定观测数据YYY和当前参数估计θ(i)\theta^{(i)}θ(i)下隐变量数据ZZZ的条件概率分布
  3. MMM步:求使Q(θ,θ(i))Q(\theta,\theta^{(i)})Q(θ,θ(i))的极大化的θ\thetaθ,确定第i+1i+1i+1次迭代的参数估计值θ(i+1)\theta^{(i+1)}θ(i+1)
    θ(i+1)=argmax⁡θQ(θ,θ(i))\theta^{(i+1)}=arg\max_{\theta}Q(\theta,\theta^{(i)})θ(i+1)=argθmaxQ(θ,θ(i))
  4. 重复第2步和第3步,直到收敛

函数Q(θ,θ(i))Q(\theta,\theta^{(i)})Q(θ,θ(i))是EM算法的核心,称为Q函数

完全数据的对数似然函数logP(Y,Z∣θ)logP(Y,Z|\theta)logP(Y,Zθ)关于在给定观测数据YYY和当前参数θ(i)\theta^{(i)}θ(i)下对未观测数据ZZZ的条件概率分布P(Z∣Y,θ(i))P(Z|Y,\theta^{(i)})P(ZY,θ(i))的期望称为Q函数

2. EM算法的导出

对于含有隐变量的概率模型,目标是极大化观测数据YYY关于参数θ\thetaθ的对数似然函数,即极大化
L(θ)=logP(Y∣θ)=log∑ZP(Y,Z∣θ)=log∑ZP(Y∣Z,θ)P(Z∣θ)L(\theta)=logP(Y|\theta)=log\sum_ZP(Y,Z|\theta)=log\sum_ZP(Y|Z,\theta)P(Z|\theta)L(θ)=logP(Yθ)=logZP(Y,Zθ)=logZP(YZ,θ)P(Zθ)
EMEMEM算法是通过迭代逐步近似极大化L(θ)L(\theta)L(θ)。假设在第iii次迭代后θ\thetaθ的估计值是θ(i)\theta^{(i)}θ(i),我们希望新估计值θ\thetaθ能使L(θ)L(\theta)L(θ)增加,即L(θ)>L(θ(i))L(\theta)>L(\theta^{(i)})L(θ)>L(θ(i)),并逐步到达极大值。为此,考虑两者的差:

L(θ)−L(θ(i))=log∑ZP(Y∣Z,θ)P(Z∣θ)−logP(Y∣θ(i))L(\theta)-L(\theta^{(i)})=log\sum_ZP(Y|Z,\theta)P(Z|\theta)-logP(Y|\theta^{(i)})L(θ)L(θ(i))=logZP(YZ,θ)P(Zθ)logP(Yθ(i))

利用Jensen不等式:

log∑jλjyi≥∑jλjlogyi,λj≥0,∑jλj=1log\sum_j\lambda_jy_i \geq \sum_j\lambda_jlogy_i, \quad \lambda_j \geq0,\sum_j\lambda_j=1logjλjyijλjlogyi,λj0,jλj=1

得到下界:
L(θ)−L(θ(i))=log(∑ZP(Z∣Y,θ(i))P(Y∣Z,θ)P(Z∣θ)P(Z∣Y,θ(i)))−logP(Y∣θ(i))≥∑ZP(Z∣Y,θ(i))logP(Y∣Z,θ)P(Z∣θ)P(Z∣Y,θ(i))−∑ZP(Z∣Y,θ(i))logP(Y∣θ(i))=∑ZP(Z∣Y,θ(i))logP(Y∣Z,θ)P(Z∣θ)P(Z∣Y,θ(i))P(Y∣θ(i))L(\theta)-L(\theta^{(i)})=log(\sum_ZP(Z|Y,\theta^{(i)})\frac{P(Y|Z,\theta)P(Z|\theta)} {P(Z|Y,\theta^{(i)})})-logP(Y|\theta^{(i)}) \\ \geq \sum_ZP(Z|Y,\theta^{(i)})log\frac{P(Y|Z,\theta)P(Z|\theta)} {P(Z|Y,\theta^{(i)})} - \sum_ZP(Z|Y,\theta^{(i)})logP(Y|\theta^{(i)}) \\ =\sum_ZP(Z|Y,\theta^{(i)})log\frac{P(Y|Z,\theta)P(Z|\theta)} {P(Z|Y,\theta^{(i)})P(Y|\theta^{(i)})} \quad \quad \quad \quad \quad \quad \quad \quad \quad \quad \quadL(θ)L(θ(i))=log(ZP(ZY,θ(i))P(ZY,θ(i))P(YZ,θ)P(Zθ))logP(Yθ(i))ZP(ZY,θ(i))logP(ZY,θ(i))P(YZ,θ)P(Zθ)ZP(ZY,θ(i))logP(Yθ(i))=ZP(ZY,θ(i))logP(ZY,θ(i))P(Yθ(i))P(YZ,θ)P(Zθ)


B(θ,θ(i))=L(θ(i))+∑ZP(Z∣Y,θ(i))logP(Y∣Z,θ)P(Z∣θ)P(Z∣Y,θ(i))P(Y∣θ(i))B(\theta,\theta^{(i)})=L(\theta^{(i)})+\sum_ZP(Z|Y,\theta^{(i)})log\frac{P(Y|Z,\theta)P(Z|\theta)} {P(Z|Y,\theta^{(i)})P(Y|\theta^{(i)})}B(θ,θ(i))=L(θ(i))+ZP(ZY,θ(i))logP(ZY,θ(i))P(Yθ(i))P(YZ,θ)P(Zθ)

L(θ)≥B(θ,θ(i))L(\theta) \geq B(\theta, \theta^{(i)})L(θ)B(θ,θ(i))

因此,任何可以使B(θ,θ(i))B(\theta,\theta^{(i)})B(θ,θ(i))增大的θ\thetaθ,也可以使L(θ)L(\theta)L(θ)增大。为了使L(θ)L(\theta)L(θ)有尽可能大的增大,选择θ(i+1)\theta^{(i+1)}θ(i+1)使B(θ,θ(i))B(\theta,\theta^{(i)})B(θ,θ(i))达到极大,即
θ(i+1)=argmax⁡θB(θ,θ(i))\theta^{(i+1)}=arg\max_\theta B(\theta,\theta^{(i)})θ(i+1)=argθmaxB(θ,θ(i))
θ(i+1)=argmax⁡θ(L(θ(i))+∑ZP(Z∣Y,θ(i))logP(Y∣Z,θ)P(Z∣θ)P(Z∣Y,θ(i))P(Y∣θ(i)))=argmax⁡θ(∑ZP(Z∣Y,θ(i))log(P(Y∣Z,θ)P(Z∣θ)))=argmax⁡θ(∑ZP(Z∣Y,θi)logP(Y,Z∣θ))=argmax⁡θQ(θ,θ(i))\theta^{(i+1)}=arg\max_\theta (L(\theta^{(i)})+\sum_ZP(Z|Y,\theta^{(i)})log\frac{P(Y|Z,\theta)P(Z|\theta)} {P(Z|Y,\theta^{(i)})P(Y|\theta^{(i)})}) \\ = arg\max_\theta (\sum_ZP(Z|Y,\theta^{(i)})log(P(Y|Z,\theta)P(Z|\theta))) \quad \quad \quad \\ = arg\max_\theta (\sum_ZP(Z|Y,\theta^{i})logP(Y,Z|\theta))=arg\max_\theta Q(\theta, \theta^{(i)})θ(i+1)=argθmax(L(θ(i))+ZP(ZY,θ(i))logP(ZY,θ(i))P(Yθ(i))P(YZ,θ)P(Zθ))=argθmax(ZP(ZY,θ(i))log(P(YZ,θ)P(Zθ)))=argθmax(ZP(ZY,θi)logP(Y,Zθ))=argθmaxQ(θ,θ(i))

3. EM算法在高斯混合模型学习中的应用

3.1 高斯混合模型

高斯混合模型是指具有如下形式的概率分布模型:
P(y∣θ)=∑k=1Kαkϕ(y∣θk)P(y|\theta)=\sum_{k=1}^K\alpha_k\phi(y|\theta_k)P(yθ)=k=1Kαkϕ(yθk)
其中,αk\alpha_kαk是系数,αk≥0,∑k=1Kαk=1;ϕ(y∣θk)\alpha_k \geq0, \sum_{k=1}^K\alpha_k=1;\phi(y|\theta_k)αk0,k=1Kαk=1;ϕ(yθk)是高斯密度函数,θk=(μk,σk)\theta_k=(\mu_k,\sigma_k)θk=(μk,σk)
ϕ(y∣θk)=12πσkexp(−(y−μk)22σk2)\phi(y|\theta_k)=\frac {1} {\sqrt {2 \pi}\sigma_k}exp(-\frac {(y-\mu_k)^2} {2\sigma_k^2})ϕ(yθk)=2πσk1exp(2σk2(yμk)2)
称为第kkk个模型

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

3.2.1 问题描述

假设观测数据y1,y2,...,yNy_1,y_2,...,y_Ny1,y2,...,yN由高斯混合模型生成
P(y∣θ)=∑k=1Kαkϕ(y∣θk)P(y|\theta)=\sum_{k=1}^K\alpha_k\phi(y|\theta_k)P(yθ)=k=1Kαkϕ(yθk)
其中,θ=(α1,α2,...,αK;θ1,θ2,...,θK)\theta=(\alpha_1,\alpha_2,...,\alpha_K;\theta_1,\theta_2,...,\theta_K)θ=(α1,α2,...,αK;θ1,θ2,...,θK)是我们需要利用EMEMEM算法估计的参数

3.2.2 明确隐变量,写出完全数据的对数似然函数

观测数据yj,j=1,2,...,Ny_j,j=1,2,...,Nyj,j=1,2,...,N是先以概率αk\alpha_kαk选择第kkk个高斯分布模型ϕ(y∣θk)\phi(y|\theta_k)ϕ(yθk),然后通过这个高斯分布模型生成观测数据yjy_jyj

观测数据yjy_jyj是已知的,反映观测数据yjy_jyj来自第kkk个高斯分布模型是未知的,以隐变量γjk\gamma_{jk}γjk表示,定义如下:
γjk={1,第j个观测数据来自第k个高斯分布模型0,otherj=1,2,...,N;k=1,2,...,K \gamma_{jk}= \begin{cases} 1, & \text{第j个观测数据来自第k个高斯分布模型} \\ 0, & \text{other} \end{cases} \\ j=1,2,...,N; \quad k=1,2,...,K \quad \quad \quad \quad \quad \quad γjk={1,0,j个观测数据来自第k个高斯分布模型otherj=1,2,...,N;k=1,2,...,K
有了观测数据yjy_jyj和未观测数据γjk\gamma_{jk}γjk,那么完全数据是
(yj,γj1,γj2,...,γjK)(y_j,\gamma_{j1},\gamma_{j2},...,\gamma_{jK})(yj,γj1,γj2,...,γjK)
完全数据的似然函数:
P(y,γ∣θ)=∏j=1NP(yj,γj1,γj2,...,γjK∣θ)=∏j=1N∏k=1K[αkϕ(yj∣θ)]γjk=∏k=1Kαknk∏j=1N[ϕ(yj∣k)]γjk=∏k=1Kαknk∏j=1N[12πσkexp(−(y−μk)22σk2)]γjkP(y,\gamma|\theta)=\prod_{j=1}^NP(y_j,\gamma_{j1},\gamma_{j2},...,\gamma_{jK}|\theta)\\=\prod_{j=1}^N\prod_{k=1}^K[\alpha_k\phi(y_j|\theta)]^{\gamma_{jk}}\\=\prod_{k=1}^K\alpha_k^{n_k}\prod_{j=1}^N[\phi(y_j|k)]^{\gamma_{jk}}\\=\prod_{k=1}^K\alpha_k^{n_k}\prod_{j=1}^N[\frac {1} {\sqrt {2 \pi}\sigma_k}exp(-\frac {(y-\mu_k)^2} {2\sigma_k^2})]^{\gamma_{jk}}P(y,γθ)=j=1NP(yj,γj1,γj2,...,γjKθ)=j=1Nk=1K[αkϕ(yjθ)]γjk=k=1Kαknkj=1N[ϕ(yjk)]γjk=k=1Kαknkj=1N[2πσk1exp(2σk2(yμk)2)]γjk
其中,nk=∑j=1Nγjk,∑k=1Knk=Nn_k=\sum_{j=1}^N\gamma_{jk}, \sum_{k=1}^Kn_k=Nnk=j=1Nγjk,k=1Knk=N

那么完全数据的对数似然函数为:
logP(y,γ∣θ)=∑k=1K{nklogαk+∑j=1Nγjk[log(12π)−logσk−12σk2(yj−μk)2]}logP(y,\gamma|\theta)=\sum_{k=1}^K\{n_klog\alpha_k+\sum_{j=1}^N\gamma_{jk}[log(\frac {1} {\sqrt {2\pi}})-log\sigma_k-\frac{1}{2\sigma_k^2}(y_j-\mu_k)^2]\}logP(y,γθ)=k=1K{nklogαk+j=1Nγjk[log(2π1)logσk2σk21(yjμk)2]}

3.2.3 EM算法的E步:确定Q函数

Q(θ,θ(i))=Eγ[logP(y,γ∣θ)∣y,θ(i)]=Eγ{∑k=1K{nklogαk+∑j=1Nγjk[log(12π)−logσk−12σk2(yj−μk)2]}}=∑k=1K{nklogαk+∑j=1N(Eγjk)[log(12π)−logσk−12σk2(yj−μk)2]}Q(\theta,\theta^{(i)})=E_\gamma[logP(y,\gamma|\theta)|y,\theta^{(i)}]\\=E_\gamma\{\sum_{k=1}^K\{n_klog\alpha_k+\sum_{j=1}^N\gamma_{jk}[log(\frac {1} {\sqrt {2\pi}})-log\sigma_k-\frac{1}{2\sigma_k^2}(y_j-\mu_k)^2]\}\}\\=\sum_{k=1}^K\{n_klog\alpha_k+\sum_{j=1}^N(E\gamma_{jk})[log(\frac {1} {\sqrt {2\pi}})-log\sigma_k-\frac{1}{2\sigma_k^2}(y_j-\mu_k)^2]\}Q(θ,θ(i))=Eγ[logP(y,γθ)y,θ(i)]=Eγ{k=1K{nklogαk+j=1Nγjk[log(2π1)logσk2σk21(yjμk)2]}}=k=1K{nklogαk+j=1N(Eγjk)[log(2π1)logσk2σk21(yjμk)2]}

其中
E(γrk∣y,θ)=P(γjk=1∣y,θ)=P(γjk=1,yj∣θ)∑k=1KP(γjk=1,yj∣θ)=P(yj∣γjk=1,θ)P(γjk=1∣θ)∑k=1KP(yj∣γjk=1,θ)P(γjk=1∣θ)=αkϕ(yj∣θk)∑k=1Kαkϕ(yj∣θk),j=1,...,N;k=1,..,KE(\gamma_{rk}|y,\theta)=P(\gamma_{jk}=1|y,\theta)=\frac {P(\gamma_{jk}=1,y_j|\theta)} {\sum_{k=1}^KP(\gamma_{jk}=1,y_j|\theta)}\\=\frac {P(y_j|\gamma_{jk}=1,\theta)P(\gamma_{jk}=1|\theta)}{\sum_{k=1}^KP(y_j|\gamma_{jk}=1,\theta)P(\gamma_{jk}=1|\theta)}\\=\frac {\alpha_k\phi(y_j|\theta_k)} {\sum_{k=1}^K\alpha_k\phi(y_j|\theta_k)},\quad j=1,...,N;k=1,..,KE(γrky,θ)=P(γjk=1y,θ)=k=1KP(γjk=1,yjθ)P(γjk=1,yjθ)=k=1KP(yjγjk=1,θ)P(γjk=1θ)P(yjγjk=1,θ)P(γjk=1θ)=k=1Kαkϕ(yjθk)αkϕ(yjθk),j=1,...,N;k=1,..,K

E(γjk)E(\gamma_{jk})E(γjk)表示在当前模型参数下第jjj个观测数据来自第kkk个高斯分布模型的概率,称为第kkk个高斯分布模型对观测数据yjy_jyj的响应度。

3.2.4 确定EM算法的M步

θ(i+1)=argmax⁡θQ(θ,θ(i))\theta^{(i+1)}=arg\max_\theta Q(\theta,\theta^{(i)})θ(i+1)=argθmaxQ(θ,θ(i))
分别对μk,σk2\mu_k,\sigma_k^2μk,σk2求偏导并令其为0
∂Q(θ,θ(i))∂μk=∑j=1NE(γjk)yi−μkσk2=0∑j=1NE(γjk)(yj−μk)=0μ^k=∑j=1NE(γjk)yj∑j=1NE(γjk)\frac {\partial Q(\theta,\theta^{(i)})}{\partial \mu_k}=\sum_{j=1}^N E(\gamma_{jk})\frac{y_i-\mu_k}{\sigma_k^2}=0\\ \sum_{j=1}^NE(\gamma_{jk})(y_j-\mu_k)=0 \\ \hat \mu_k=\frac {\sum_{j=1}^NE(\gamma_{jk})y_j} {\sum_{j=1}^NE(\gamma_{jk})}μkQ(θ,θ(i))=j=1NE(γjk)σk2yiμk=0j=1NE(γjk)(yjμk)=0μ^k=j=1NE(γjk)j=1NE(γjk)yj


∂Q(θ,θ(i))∂σk2=∑j=1NE(γjk)[−12σk2+(yj−μk)22(σk2)2]=0∑j=1NE(γjk)[(yj−μk)2−σk2]=0σ^k2=∑j=1NE(γjk)(yj−μk)2∑j=1NE(γjk)\frac {\partial Q(\theta,\theta^{(i)})}{\partial \sigma_k^2}=\sum_{j=1}^N E(\gamma_{jk})[-\frac {1} {2\sigma_k^2}+\frac {(y_j-\mu_k)^2} {2(\sigma_k^2)^2}]=0\\\sum_{j=1}^N E(\gamma_{jk})[(y_j-\mu_k)^2-\sigma_k^2]=0 \\ \hat \sigma_k^2=\frac {\sum_{j=1}^N E(\gamma_{jk})(y_j-\mu_k)^2} {\sum_{j=1}^N E(\gamma_{jk})}σk2Q(θ,θ(i))=j=1NE(γjk)[2σk21+2(σk2)2(yjμk)2]=0j=1NE(γjk)[(yjμk)2σk2]=0σ^k2=j=1NE(γjk)j=1NE(γjk)(yjμk)2


∑k=1Kαk=1\sum_{k=1}^K\alpha_k=1k=1Kαk=1的条件下对αk\alpha_kαk求偏导并令其为0。采用拉格朗日乘子法,有:
L(θ)=Q(θ,θ(i))+λ(∑k=1Kαk−1)L(\theta)=Q(\theta,\theta^{(i)})+\lambda(\sum_{k=1}^K\alpha_k-1)L(θ)=Q(θ,θ(i))+λ(k=1Kαk1)

∂L(θ)∂αk=nkαk+λ=0  ⟺  α^k=−nkλ∑k=1K(nk+αkλ)=0N+λ=0  ⟺  λ=−Nα^k=nkN=∑j=1NE(γjk)N\frac {\partial L(\theta)}{\partial \alpha_k}=\frac{n_k}{\alpha_k}+\lambda=0 \iff \hat \alpha_k=-\frac{n_k}{\lambda}\\ \sum_{k=1}^K(n_k+\alpha_k\lambda)=0\\N+\lambda=0 \iff \lambda=-N \\ \hat \alpha_k=\frac {n_k} {N} = \frac {\sum_{j=1}^N E(\gamma_{jk})} {N}αkL(θ)=αknk+λ=0α^k=λnkk=1K(nk+αkλ)=0N+λ=0λ=Nα^k=Nnk=Nj=1NE(γjk)

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

输入:观测数据y1,y2,...,yN,高斯混合模型输入:观测数据y_1,y_2,...,y_N,高斯混合模型y1,y2,...,yN

输出:高斯混合模型参数输出:高斯混合模型参数

  1. 取参数的初始值开始迭代
  2. EEE步:依据当前模型参数,计算高斯分布模型kkk对观测数据yjy_jyj的响应度
    E(γrk∣y,θ)=αkϕ(yj∣θk)∑k=1Kαkϕ(yj∣θk)E(\gamma_{rk}|y,\theta)=\frac {\alpha_k\phi(y_j|\theta_k)} {\sum_{k=1}^K\alpha_k\phi(y_j|\theta_k)}E(γrky,θ)=k=1Kαkϕ(yjθk)αkϕ(yjθk)
  3. MMM步:计算新一轮迭代的模型参数
    μ^k=∑j=1NE(γjk)yj∑j=1NE(γjk)σ^k2=∑j=1NE(γjk)(yj−μk)2∑j=1NE(γjk)α^k=∑j=1NE(γjk)N\hat \mu_k=\frac {\sum_{j=1}^NE(\gamma_{jk})y_j} {\sum_{j=1}^NE(\gamma_{jk})} \\ \hat \sigma_k^2=\frac {\sum_{j=1}^N E(\gamma_{jk})(y_j-\mu_k)^2} {\sum_{j=1}^N E(\gamma_{jk})} \\ \hat \alpha_k= \frac {\sum_{j=1}^N E(\gamma_{jk})} {N}μ^k=j=1NE(γjk)j=1NE(γjk)yjσ^k2=j=1NE(γjk)j=1NE(γjk)(yjμk)2α^k=Nj=1NE(γjk)
  4. 重复第2步和第3步,直到收敛
Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐