Skip to content

EM 算法与高斯混合模型 (GMM)

核心思想

EM (Expectation-Maximization) 是一种用于含隐变量的概率模型的参数估计迭代算法。GMM 是 EM 最经典的应用:用多个高斯分布的加权和来建模数据分布。

高斯混合模型

模型定义

p(x)=k=1KπkN(xμk,Σk)
  • πk:第 k 个高斯的混合系数kπk=1πk0
  • N(xμk,Σk):多元高斯密度
N(xμ,Σ)=1(2π)d/2|Σ|1/2exp(12(xμ)TΣ1(xμ))

隐变量

引入隐变量 zi{1,,K} 表示样本 xi 来自哪个分量。

为什么不能直接 MLE?

对数似然:

lnL=i=1Nln[k=1KπkN(xiμk,Σk)]

对数内有求和,无法分解,直接求导没有闭式解。

EM 算法的理论基础

Jensen 不等式

对于凹函数 ln

ln(kqkpkqk)kqklnpkqk

构造对数似然的下界 (ELBO),EM 通过交替最大化下界来逼近似然极大值。

ELBO (Evidence Lower Bound)

lnLi=1Nk=1KγiklnπkN(xiμk,Σk)γik=ELBO

γik=P(zi=kxi)(后验概率)时,下界取等号。

E 步 (Expectation)

计算隐变量的后验概率(责任度):

γik=πkN(xiμk,Σk)j=1KπjN(xiμj,Σj)

M 步 (Maximization)

利用 γik 更新参数:

Nk=i=1Nγikμknew=1Nki=1NγikxiΣknew=1Nki=1Nγik(xiμknew)(xiμknew)Tπknew=NkN

收敛性

每次迭代 lnL 单调不减。EM 算法收敛到局部极大值(不保证全局最优)。

代码对应

bash
python -m pipelines.probabilistic.em