EM算法与GMM高斯混合模型

参考知乎上的这篇文章:EM算法详解 by Microstrong,感谢大佬写得非常详细。

EM算法

预备知识:MLE,Jensen不等式。(不展开介绍)
EM算法可以理解为,从MLE出发,为了解决包含隐变量(或缺失数据)的参数估计问题而设计的一种迭代算法,该算法的迭代步骤分为E步和M步,E步在有了初始化参数值的情况下,需要求解隐变量的条件分布,进而求得一个包含隐变量的函数的期望(目标函数),M步需要最大化目标函数,求得更新后的参数值。

数学推导

MLE中的对数似然函数,可以简单写为,
ln ⁡ L = ∑ i ln ⁡ P ( x = x i ) \ln{L}=\sum_i{\ln{P(x=x_i)}} lnL=ilnP(x=xi)
或者考虑隐变量 z z z(或缺失数据),以及模型参数时,公式写为,
ln ⁡ L = ∑ i ln ⁡ P ( x = x i , z ; θ ) \ln{L}=\sum_i{\ln{P(x=x_i,z;\theta)}} lnL=ilnP(x=xi,z;θ)
这里用了一个很神奇的思路,就是利用不等式和等号成立的条件进行恒等变换,以方便设计迭代算法。
这里就用了Jensen不等式,以上凸函数(凹函数)为例( g ( x ) = ln ⁡ x g(x)=\ln{x} g(x)=lnx),
g ( E ( X ) ) ≥ E ( g ( X ) ) g(E(X))\ge E(g(X)) g(E(X))E(g(X))
假设 X X X服从一个分布 P ( X ) P(X) P(X),上式可以写为,
g ( ∑ i x i p ( x = x i ) ) ≥ ∑ i g ( x i ) p ( x = x i ) g(\sum_i{x_ip(x=x_i)})\ge \sum_i{g(x_i)p(x=x_i)} g(ixip(x=xi))ig(xi)p(x=xi)
或连续情况下,
g ( ∫ x f ( x ) d x ) ≥ ∫ g ( x i ) f ( x ) d x g(\int{xf(x)dx})\ge \int{g(x_i)f(x)dx} g(xf(x)dx)g(xi)f(x)dx
考虑对前面的对数似然函数用Jensen不等式,假设 x = x i x=x_i x=xi条件下, z z z服从某个分布 Q i ( z ) Q_i(z) Qi(z),可以写为,
ln ⁡ L = ∑ i ln ⁡ P ( x = x i , z ; θ ) = ∑ i ln ⁡ { ∑ z Q i ( z ) P ( x = x i , z ; θ ) Q i ( z ) } ≥ ∑ i ∑ z Q i ( z ) ln ⁡ P ( x = x i , z ; θ ) Q i ( z ) \begin{aligned} \ln{L}&=\sum_i{\ln{P(x=x_i,z;\theta)}} \\ &= \sum_i{\ln\{\sum_zQ_i(z)\frac{{P(x=x_i,z;\theta)}}{Q_i(z)}\}} \\ &\ge \sum_i{\sum_zQ_i(z)\ln\frac{{P(x=x_i,z;\theta)}}{Q_i(z)}} \\ \end{aligned} lnL=ilnP(x=xi,z;θ)=iln{zQi(z)Qi(z)P(x=xi,z;θ)}izQi(z)lnQi(z)P(x=xi,z;θ)
这里不等式等号成立的条件为,严格凸函数上取的坐标点都是同一点,也就是
P ( x = x i , z ; θ ) Q i ( z ) = C o n s t \frac{{P(x=x_i,z;\theta)}}{Q_i(z)}=Const Qi(z)P(x=xi,z;θ)=Const
再根据分布满足的条件,
∑ z Q i ( z ) = 1 \sum_zQ_i(z)=1 zQi(z)=1
联立求得,
Q i ( z ) = P ( x = x i , z ; θ ) ∑ z P ( x = x i , z ; θ ) Q_i(z)=\frac{P(x=x_i,z;\theta)}{\sum_z{P(x=x_i,z;\theta)}} Qi(z)=zP(x=xi,z;θ)P(x=xi,z;θ)
z z z的取值连续,也可用上面这个公式表示,而这个式子就是贝叶斯公式(后验概率),即,
Q i ( z ) = P ( z ∣ x i ; θ ) Q_i(z)=P(z|x_i;\theta) Qi(z)=P(zxi;θ)

E步和M步

E步首先需要求出 P ( z ∣ x i ; θ ) P(z|x_i;\theta) P(zxi;θ),至于具体怎么求,就是由模型决定的了,用贝叶斯公式总能算出来。注意,因为求这个后验概率时,用的是上一步(或初始化)得到的 θ \theta θ,这里可以记为,
P ( z ∣ x i ; θ t ) P(z|x_i;\theta_t) P(zxi;θt)
有了这个之后,就可以写出目标函数,也就是MLE的对数似然函数再用Jensen不等式放缩得到的目标函数,
l ( θ , θ t ) = ∑ i ∑ z P ( z ∣ x i ; θ t ) ln ⁡ P ( x = x i , z ; θ ) P ( z ∣ x i ; θ t ) l(\theta,\theta_t)=\sum_i{\sum_zP(z|x_i;\theta_t)\ln\frac{{P(x=x_i,z;\theta)}}{P(z|x_i;\theta_t)}} l(θ,θt)=izP(zxi;θt)lnP(zxi;θt)P(x=xi,z;θ)
之后进入M步,最大化这个目标函数以求得更新后的 θ \theta θ
θ t + 1 = min ⁡ θ l ( θ , θ t ) \theta_{t+1}=\min_{\theta}l(\theta,\theta_t) θt+1=θminl(θ,θt)
如果把E步和M步合起来,我们可以说EM算法就是下面这个更新公式。
θ t + 1 = min ⁡ θ ∑ i ∑ z P ( z ∣ x i ; θ t ) ln ⁡ P ( x = x i , z ; θ ) P ( z ∣ x i ; θ t ) \theta_{t+1}=\min_{\theta}\sum_i{\sum_zP(z|x_i;\theta_t)\ln\frac{{P(x=x_i,z;\theta)}}{P(z|x_i;\theta_t)}} θt+1=θminizP(zxi;θt)lnP(zxi;θt)P(x=xi,z;θ)

GMM(Gaussian Mixture Model)

GMM是一种聚类算法,认为所有样本服从若干个高斯分布(正态分布)的叠加,模型为,
p ( x = x i ) = ∑ j p ( x = x i , μ = μ j ) = ∑ j p ( μ = μ j ) p ( x = x i ∣ μ = μ j ) = ∑ j p ( μ = μ j ) 1 ( 2 π ) p / 2 ∣ Σ j ∣ 1 / 2 e x p { − 1 2 ( x i − μ j ) T Σ j − 1 ( x i − μ j ) } \begin{aligned} p(x=x_i)&=\sum_j{p(x=x_i,\mu=\mu_j)} \\ &= \sum_j{p(\mu=\mu_j)p(x=x_i|\mu=\mu_j)} \\ &= \sum_j{p(\mu=\mu_j)\frac{1}{{(2\pi)}^{p/2}{|\Sigma_j|}^{1/2}}exp\{-\frac{1}{2}{(x_i-\mu_j)}^T\Sigma_j^{-1}{(x_i-\mu_j)}\}} \\ \end{aligned} p(x=xi)=jp(x=xi,μ=μj)=jp(μ=μj)p(x=xiμ=μj)=jp(μ=μj)(2π)p/2Σj1/21exp{21(xiμj)TΣj1(xiμj)}
注意这个模型中的参数除了 μ j \mu_j μj Σ j \Sigma_j Σj外,还有 p ( μ = μ j ) p(\mu=\mu_j) p(μ=μj),这个其实是一个定义每个分布权重或高度的,和为1的系数,也可以写作 w j w_j wj

而聚类问题其实就是缺失标签值的分类问题,因此标签值 μ \mu μ 其实就相当于一个离散的隐变量,可以用EM算法解决。
此外,我们可以定义,
z i j = { 1 if  x i ∈ μ j 0 if  x i ∉ μ j z_{ij}= \begin{cases} 1 &\text{if } x_i\isin \mu_j \\ 0 &\text{if } x_i \notin \mu_j \end{cases} zij={10if xiμjif xi/μj
z i j z_{ij} zij求一下期望,也就是,
E ( z i j ) = P ( x i ∈ μ j ) = p ( μ = μ j ∣ x = x i ) E(z_{ij})=P(x_i\isin \mu_j)=p(\mu=\mu_j|x=x_i) E(zij)=P(xiμj)=p(μ=μjx=xi)
发现, E ( z i j ) E(z_{ij}) E(zij)就是把 μ \mu μ作为隐变量时,要求的隐变量的后验概率。

E步

在初始化参数之后,首先求隐变量的条件分布,也就是 E ( z i ⋅ ) E(z_{i\cdot}) E(zi) p ( μ ∣ x = x i ) p(\mu|x=x_i) p(μx=xi)
E ( z i j ) = p ( μ = μ j ∣ x = x i ) = p ( μ = μ j ) p ( x = x i ∣ μ = μ j ) ∑ s p ( μ = μ s ) p ( x = x i ∣ μ = μ s ) = p ( μ = μ j ) 1 ( 2 π ) p / 2 ∣ Σ j ∣ 1 / 2 e x p { − 1 2 ( x i − μ j ) T Σ j − 1 ( x i − μ j ) } ∑ s p ( μ = μ s ) 1 ( 2 π ) p / 2 ∣ Σ s ∣ 1 / 2 e x p { − 1 2 ( x i − μ s ) T Σ s − 1 ( x i − μ s ) } \begin{aligned} E(z_{ij})&=p(\mu=\mu_j|x=x_i) \\ &= \frac{p(\mu=\mu_j)p(x=x_i|\mu=\mu_j)}{\sum_s{p(\mu=\mu_s)p(x=x_i|\mu=\mu_s)}} \\ &= \frac{p(\mu=\mu_j)\frac{1}{{(2\pi)}^{p/2}{|\Sigma_j|}^{1/2}}exp\{-\frac{1}{2}{(x_i-\mu_j)}^T\Sigma_j^{-1}{(x_i-\mu_j)}\}}{\sum_s{p(\mu=\mu_s)\frac{1}{{(2\pi)}^{p/2}{|\Sigma_s|}^{1/2}}exp\{-\frac{1}{2}{(x_i-\mu_s)}^T\Sigma_s^{-1}{(x_i-\mu_s)}\}}} \\ \end{aligned} E(zij)=p(μ=μjx=xi)=sp(μ=μs)p(x=xiμ=μs)p(μ=μj)p(x=xiμ=μj)=sp(μ=μs)(2π)p/2Σs1/21exp{21(xiμs)TΣs1(xiμs)}p(μ=μj)(2π)p/2Σj1/21exp{21(xiμj)TΣj1(xiμj)}
这里 E ( z i j ) E(z_{ij}) E(zij)求出后就是个常数了,代入EM算法的目标函数中,
l ( μ , Σ , w ) = ∑ i ∑ j E ( z i j ) ln ⁡ P ( x = x i , μ = μ j ; μ , Σ , w ) E ( z i j ) = ∑ i ∑ j E ( z i j ) ln ⁡ w j 1 ( 2 π ) p / 2 ∣ Σ j ∣ 1 / 2 e x p { − 1 2 ( x i − μ j ) T Σ j − 1 ( x i − μ j ) } E ( z i j ) \begin{aligned} l(\mu,\Sigma,w)&=\sum_i\sum_jE(z_{ij})\ln\frac{{P(x=x_i,\mu=\mu_j;\mu,\Sigma,w)}}{E(z_{ij})} \\ &=\sum_i\sum_jE(z_{ij})\ln\frac{w_j\frac{1}{{(2\pi)}^{p/2}{|\Sigma_j|}^{1/2}}exp\{-\frac{1}{2}{(x_i-\mu_j)}^T\Sigma_j^{-1}{(x_i-\mu_j)}\}}{E(z_{ij})} \end{aligned} l(μ,Σ,w)=ijE(zij)lnE(zij)P(x=xi,μ=μj;μ,Σ,w)=ijE(zij)lnE(zij)wj(2π)p/2Σj1/21exp{21(xiμj)TΣj1(xiμj)}

M步

把对数部分展开化简,
l ( μ , Σ , w ) = ∑ i ∑ j E ( z i j ) { ln ⁡ w j − p 2 ln ⁡ 2 π − 1 2 ln ⁡ ∣ Σ j ∣ − 1 2 ( x i − μ j ) T Σ j − 1 ( x i − μ j ) − ln ⁡ E ( z i j ) } l(\mu,\Sigma,w)=\sum_i\sum_jE(z_{ij})\{\ln{w_j}-\frac{p}{2}\ln{2\pi}-\frac{1}{2}\ln{|\Sigma_j|}-\frac{1}{2}{(x_i-\mu_j)}^T\Sigma_j^{-1}{(x_i-\mu_j)}-\ln{E(z_{ij})}\} l(μ,Σ,w)=ijE(zij){lnwj2pln2π21lnΣj21(xiμj)TΣj1(xiμj)lnE(zij)}
去除常数项后,
l ∗ ( μ , Σ , w ) = ∑ i ∑ j E ( z i j ) { ln ⁡ w j − 1 2 ln ⁡ ∣ Σ j ∣ − 1 2 ( x i − μ j ) T Σ j − 1 ( x i − μ j ) } l^*(\mu,\Sigma,w)=\sum_i\sum_jE(z_{ij})\{\ln{w_j}-\frac{1}{2}\ln{|\Sigma_j|}-\frac{1}{2}{(x_i-\mu_j)}^T\Sigma_j^{-1}{(x_i-\mu_j)}\} l(μ,Σ,w)=ijE(zij){lnwj21lnΣj21(xiμj)TΣj1(xiμj)}
注意这里有一个约束条件是,
∑ j w j = 1 \sum_j{w_j}=1 jwj=1
我们可以把包含 w j w_j wj的部分单独拿出来研究,
max ⁡ w ∑ j [ ln ⁡ w j ∑ i E ( z i j ) ] s . t . ∑ j w j = 1 \begin{aligned} \max_w &\sum_j[\ln{w_j}\sum_iE(z_{ij})] \\ s.t. &\sum_j{w_j}=1 \end{aligned} wmaxs.t.j[lnwjiE(zij)]jwj=1
可以直接写出拉格朗日函数求解,
L 1 ( w j , α ) = ∑ j [ ln ⁡ w j ∑ i E ( z i j ) ] − α ( ∑ j w j − 1 ) L_1(w_j,\alpha)=\sum_j[\ln{w_j}\sum_iE(z_{ij})]-\alpha(\sum_jw_j-1) L1(wj,α)=j[lnwjiE(zij)]α(jwj1)
w j w_j wj α \alpha α分别求导,
∂ L 1 ∂ w j = ∑ i E ( z i j ) w j − α = 0 ∂ L 1 ∂ α = ∑ j w j − 1 = 0 \begin{aligned} \frac{\partial L_1}{\partial w_j}&=\frac{\sum_iE(z_{ij})}{w_j}-\alpha=0 \\ \frac{\partial L_1}{\partial \alpha}&=\sum_jw_j-1=0 \end{aligned} wjL1αL1=wjiE(zij)α=0=jwj1=0
又根据,
∑ j E ( z i j ) = ∑ j p ( μ = μ j ∣ x = x i ) = 1 \sum_jE(z_{ij})=\sum_jp(\mu=\mu_j|x=x_i)=1 jE(zij)=jp(μ=μjx=xi)=1
很容易求得,(式子中的 n n n为样本数量)
α = ∑ j ∑ i E ( z i j ) = n w j = 1 α ∑ j E ( z i j ) = 1 n ∑ j E ( z i j ) \alpha=\sum_j\sum_iE(z_{ij})=n \\ w_j=\frac{1}{\alpha}\sum_j{E(z_{ij})}=\frac{1}{n}\sum_j{E(z_{ij})} α=jiE(zij)=nwj=α1jE(zij)=n1jE(zij)
再看目标函数 l ∗ ( ⋅ ) l^*(\cdot) l()去除 w j w_j wj后的剩余部分为,
L 2 ( μ j , Σ j ) = ∑ i ∑ j E ( z i j ) { − 1 2 ln ⁡ ∣ Σ j ∣ − 1 2 ( x i − μ j ) T Σ j − 1 ( x i − μ j ) } L_2(\mu_j,\Sigma_j)=\sum_i\sum_jE(z_{ij})\{-\frac{1}{2}\ln{|\Sigma_j|}-\frac{1}{2}{(x_i-\mu_j)}^T\Sigma_j^{-1}{(x_i-\mu_j)}\} L2(μj,Σj)=ijE(zij){21lnΣj21(xiμj)TΣj1(xiμj)}
μ j \mu_j μj求导,
∂ L 2 ∂ μ j = ∑ i E ( z i j ) Σ j − 1 ( x i − μ j ) = 0 \frac{\partial L_2}{\partial \mu_j}=\sum_i{E(z_{ij})\Sigma_j^{-1}(x_i-\mu_j)}=0 μjL2=iE(zij)Σj1(xiμj)=0
很容易求得,
μ j = ∑ i E ( z i j ) x i ∑ i E ( z i j ) \mu_j=\frac{\sum_iE(z_{ij})x_i}{\sum_iE(z_{ij})} μj=iE(zij)iE(zij)xi
Σ j \Sigma_j Σj求导(这里不会可以见我写的多元正态分布的最大似然估计),
∂ L 2 ∂ Σ j = ∑ i E ( z i j ) { − Σ j ∗ 2 ∣ Σ j ∣ + 1 2 Σ j − 2 ( x i − μ j ) ( x i − μ j ) T } = 0 \frac{\partial L_2}{\partial \Sigma_j}=\sum_i E(z_{ij})\{-\frac{\Sigma_j^*}{2|\Sigma_j|}+\frac{1}{2}\Sigma_j^{-2}{(x_i-\mu_j){(x_i-\mu_j)}^T}\}=0 ΣjL2=iE(zij){2∣ΣjΣj+21Σj2(xiμj)(xiμj)T}=0
化简,
Σ j − 1 ∑ i E ( z i j ) = Σ j − 2 ∑ i E ( z i j ) ( x i − μ j ) ( x i − μ j ) T \Sigma_j^{-1}\sum_iE(z_{ij})=\Sigma_j^{-2}\sum_iE(z_{ij})(x_i-\mu_j){(x_i-\mu_j)}^T Σj1iE(zij)=Σj2iE(zij)(xiμj)(xiμj)T
得到,
Σ j = ∑ i E ( z i j ) ( x i − μ j ) ( x i − μ j ) T ∑ i E ( z i j ) \Sigma_j=\frac{\sum_iE(z_{ij})(x_i-\mu_j){(x_i-\mu_j)}^T}{\sum_iE(z_{ij})} Σj=iE(zij)iE(zij)(xiμj)(xiμj)T

这样,我们就得到了GMM用EM算法求解时的参数更新公式,最后整理一遍,如下,
w j t + 1 = 1 n ∑ j E t ( z i j ) w_j^{t+1}=\frac{1}{n}\sum_j{E^t(z_{ij})} wjt+1=n1jEt(zij) μ j t + 1 = ∑ i E t ( z i j ) x i ∑ i E t ( z i j ) \mu_j^{t+1}=\frac{\sum_iE^t(z_{ij})x_i}{\sum_iE^t(z_{ij})} μjt+1=iEt(zij)iEt(zij)xi Σ j t + 1 = ∑ i E t ( z i j ) ( x i − μ j t + 1 ) ( x i − μ j t + 1 ) T ∑ i E t ( z i j ) \Sigma_j^{t+1}=\frac{\sum_iE^t(z_{ij})(x_i-\mu_j^{t+1}){(x_i-\mu_j^{t+1})}^T}{\sum_iE^t(z_{ij})} Σjt+1=iEt(zij)iEt(zij)(xiμjt+1)(xiμjt+1)T
其中, E t ( z i j ) E^t(z_{ij}) Et(zij)由E步,根据迭代前的参数值 w j t w_j^t wjt μ j t \mu_j^t μjt Σ j t \Sigma_j^t Σjt求得。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值