EM算法及其应用(一)
EM算法是期望最大化 (Expectation Maximization) 算法的简称,用于含有隐变量的情况下,概率模型参数的极大似然估计或极大后验估计。EM算法是一种迭代算法,每次迭代由两步组成:E步,求期望 (expectation),即利用当前估计的参数值来计算对数似然函数的期望值;M步,求极大 (maximization),即求参数θ 来极大化E步中的期望值,而求出的参数θ将继续用于下一个E步中期望值的估计。EM算法在机器学习中应用广泛,本篇和下篇文章分别探讨EM算法的原理和其两大应用 —— K-means和高斯混合模型。
§1 先验知识
凸函数、凹函数和 Jensen不等式
设f(x)为定义在区间I=[a,b]上的实值函数,对于任意∀x1,x2∈I,λ∈[0,1],有:
f(λx1+(1−λ)x2)≤λf(x1)+(1−λ)f(x2)
则f(x)为凸函数 (convex function),如下图所示。相应的,若上式中 ⩽ 变为 ⩾ ,则f(x)为凹函数 (concave function)。 凸函数的判定条件是二阶导 f′′(x)⩾0,而凹函数为 f′′(x)⩽0 。后文要用到的对数函数ln(x)的二阶导为−1x2<0,所以是凹函数。

Jensen不等式就是上式的推广,设f(x)为凸函数,λi⩾0,∑iλi=1,则:
f(n∑i=1λixi)≤n∑i=1λif(xi)
如果是凹函数,则将不等号反向,若用对数函数来表示,就是:
ln(n∑i=1λixi)≥n∑i=1λiln(xi)
若将λi视为一个概率分布,则可表示为期望值的形式,在后文中同样会引入概率分布:
f(E[x])≤E[f(x)]
KL散度
KL散度(Kullback-Leibler divergence) 又称相对熵 (relative entropy),主要用于衡量两个概率分布p和q的差异,也可理解为两个分布对数差的期望。
KL(p||q)=∑ip(xi)logp(xi)q(xi)=Ex∼p[logp(x)q(x)]=Ex∼p[logp(x)−logq(x)]
KL散度总满足KL(p||q)⩾0,而当且仅当q=p时,KL(p||q)=0 。 一般来说分布p(x)比较复杂,因而希望用比较简单的q(x)去近似p(x),而近似的标准就是KL散度越小越好。
KL散度不具备对称性,即KL(p||q)≠KL(q||p),因此不能作为一个距离指标。
极大似然估计和极大后验估计
极大似然估计 (Maximum likelihood estimation) 是参数估计的常用方法,基本思想是在给定样本集的情况下,求使得该样本集出现的“可能性”最大的参数θ。将参数θ视为未知量,则参数θ对于样本集X的对数似然函数为:
L(θ)=lnP(X|θ)
这个函数反映了在观测结果X已知的条件下,θ的各种值的“似然程度”。这里是把观测值X看成结果,把参数θ看成是导致这个结果的原因。参数θ虽然未知但是有着固定值 (当然这是频率学派的观点),并非事件或随机变量,无概率可言,因而改用 “似然(likelihood)" 这个词。
于是通过求导求解使得对数似然函数最大的参数θ,θ=argmaxθL(θ),即为极大似然法。
极大后验估计 (Maximum a posteriori estimation) 是贝叶斯学派的参数估计方法,相比于频率学派,贝叶斯学派将参数θ视为随机变量,并将其先验分布P(θ)包含在估计过程中。运用贝叶斯定理,参数θ的后验分布为:
P(θ|X)=P(X,θ)P(X)=P(θ)P(X|θ)P(X)∝P(θ)P(X|θ)
上式中P(X)不依赖于θ因而为常数项可以舍去,则最终结果为 θ=argmaxθP(θ)P(X|θ)
§2 EM算法初探
概率模型有时既含有观测变量 (observable variable),又含有隐变量 (hidden variable),隐变量顾名思义就是无法被观测到的变量。如果都是观测变量,则给定数据,可以直接使用极大似然估计。但如果模型含有隐变量时,直接求导得到参数比较困难。而EM算法就是解决此类问题的常用方法。
对于一个含有隐变量Z的概率模型,一般将{X,Z}称为完全数据,而观测数据X为不完全数据。
我们的目标是极大化观测数据X关于参数θ的对数似然函数。由于存在隐变量,因而也可表示为极大化X的边缘分布 (marginal distribution),即:
L(θ)=lnP(X|θ)=ln∑ZP(X,Z|θ)(1.1)
上式中存在“对数的和” —— ln∑(⋅),如果直接求导将会非常困难。因而EM算法采用曲线救国的策略,构建(1.1)式的一个下界,然后通过极大化这个下界来间接达到极大化(1.1)的效果。
要想构建下界,就需要运用上文中的Jensen不等式。记θ(t)为第t步迭代参数的估计值,考虑引入一个分布P(Z|X,θ(t)),由于:
- P(Z|X,θ(t))⩾0
- ∑ZP(Z|X,θ(t))=1
- ln(⋅)为凹函数
因而可以利用Jensen不等式求出L(θ)的下界:
L(θ)=ln∑ZP(X,Z|θ)=ln∑ZP(Z|X,θ(t))P(X,Z|θ)P(Z|X,θ(t))⩾∑ZP(Z|X,θ(t))lnP(X,Z|θ)P(Z|X,θ(t))=∑ZP(Z|X,θ(t))lnP(X,Z|θ)Q(θ,θ(t))−∑ZP(Z|X,θ(t))lnP(Z|X,θ(t))entropy(1.2)(1.3)(1.4)
(1.3)式构成了L(θ)的下界,而(1.4)式的右边为P(Z|X,θ(t))的熵⩾0 ,其独立于我们想要优化的参数θ,因而是一个常数。所以极大化L(θ)的下界(1.3)式就等价于极大化Q(θ,θ(t)),Q(θ,θ(t)) (Q函数) 亦可表示为 EZ|X,θ(t)lnP(X,Z|θ),其完整定义如下:
基于观测数据 X 和 当前参数θ(t)计算未观测数据 Z 的条件概率分布P(Z|X,θ(t)),则Q函数为完全数据的对数似然函数关于Z的期望。
此即E步中期望值的来历。
接下来来看M步。在(1.3)式中若令θ=θ(t),则下界(1.3)式变为:
∑ZP(Z|X,θ(t))lnP(X,Z|θ(t))P(Z|X,θ(t))=∑ZP(Z|X,θ(t))lnP(Z|X,θ(t))P(X|θ(t))P(Z|X,θ(t))=∑ZP(Z|X,θ(t))lnP(X|θ(t))=lnP(X|θ(t))=L(θ(t))
可以看到在第t步,L(θ(t))的下界与L(θ(t))相等,又由于极大化下界与极大化Q函数等价,因而在M步选择一个新的θ来极大化Q(θ,θ(t)),就能使L(θ)⩾Q(θ,θ(t))⩾Q(θ(t),θ(t))=L(θ(t)) (这里为了便于理解就将Q(θ,θ(t))与(1.3)式等同了),也就是说L(θ)是单调递增的,通过EM算法的不断迭代能保证收敛到局部最大值。
EM算法流程:
输入: 观测数据X,隐变量Z,联合概率分布P(X,Z|θ)
输出:模型参数θ
- 初始化参数θ(0)
- E步: 利用当前参数θ(t)计算Q函数, Q(θ,θ(t))=∑ZP(Z|X,θ(t))lnP(X,Z|θ)
- M步: 极大化Q函数,求出相应的 θ=argmaxθQ(θ,θ(t))
- 重复 2. 和3. 步直至收敛。
EM算法也可用于极大后验估计,极大后验估计仅仅是在极大似然估计的基础上加上参数θ的先验分布,即 p(θ)p(X|θ),则取对数后变为lnp(X|θ)+lnp(θ),由于后面的lnp(θ)不包含隐变量Z,所以E步中求Q函数的步骤不变。而在M步中需要求新的参数θ,因此需要包含这一项,所以M步变为
θ=argmaxθ[Q(θ,θ(t))+ln(p(θ)]
§3 EM算法深入
上一节中遗留了一个问题:为什么式(1.2)中引入的分布是P(Z|X,θ(t))而不是其他分布? 下面以另一个角度来阐述。
假设一个关于隐变量Z的任意分布q(Z),则运用期望值的定义,(1.1)式变为:
L(θ)=lnP(X|θ)=∑Zq(Z)lnP(X|θ)上下同乘以 q(Z)P(X,Z|θ)=∑Zq(Z)lnP(X|θ)q(Z)P(X,Z|θ)q(Z)P(X,Z|θ)=∑Zq(Z)lnP(X,Z|θ)q(Z)+∑Zq(Z)lnP(X|θ)q(Z)P(X,Z|θ)=∑Zq(Z)lnP(X,Z|θ)q(Z)+∑Zq(Z)lnq(Z)P(Z|X,θ)=∑Zq(Z)lnP(X,Z|θ)q(Z)L(q,θ)+KL(q(Z)||P(Z|X,θ)))(2.1)
(2.1)式的右端为q(Z)和后验分布P(Z|X,θ)的KL散度,由此 lnP(X|θ)被分解为L(q,θ)和KL(q||p) 。由于KL散度总大于等于0,所以L(q,θ)是lnP(X|θ)的下界,如图:

由此可将EM算法视为一个坐标提升(coordinate ascent)的方法,分别在E步和M步不断提升下界L(q,θ),进而提升lnP(X|θ) 。
在E步中,固定参数θold,当且仅当KL(q||p)=0,即L(q,θ)=lnP(X|θ)时,L(q,θ)达到最大,而KL(q||p)=0的条件是q(Z)=P(Z|X,θ),因此这就是式(1.2)中选择分布P(Z|X,θold)的原因,如此一来L(q,θ) 也就与(1.3)式一致了。
在M步中,固定分布P(Z|X,θold),选择新的θnew来极大化L(q,θ) 。同时由于P(Z|X,θold)≠P(Z|X,θnew),所以KL(P(Z|X,θold)||P(Z|X,θnew))>0,导致lnP(X|θ)提升的幅度会大于L(q,θ)提升的幅度,如图:

因此在EM算法的迭代过程中,通过交替固定θ 和 P(Z|X,θold)来提升下界L(q,θ) ,进而提升对数似然函数L(θ) ,从而在隐变量存在的情况下实现了极大似然估计。在下一篇中将探讨EM算法的具体应用。
Reference:
- Christopher M. Bishop. Pattern Recognition and Machine Learning
- 李航. 《统计学习方法》
- CS838. The EM Algorithm
/
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异