1. 背景与动机
在机器学习和统计建模中,我们常遇到以下情况:
- 数据中存在缺失值。
- 模型中包含隐变量,这些变量无法直接观测,但对模型至关重要(例如,混合模型中的类别标签)。
- 我们希望通过最大化数据的似然函数来估计模型参数,但直接求解较为困难。
例如,在高斯混合模型(GMM)中,我们观测到一组数据点,但不知道每个点属于哪个高斯分布(隐变量)。直接最大化似然函数会涉及复杂的非线性优化问题,难以求解。
EM算法的动机:通过迭代的方式,将复杂的似然优化问题分解为两个更简单的步骤(E步和M步),逐步逼近最优参数。EM算法特别适合处理概率模型,如混合模型、隐马尔可夫模型(HMM)等。
2. 数学基础
为了理解EM算法,我们需要掌握以下概念:
2.1 概率模型与隐变量
假设我们有一个数据集 X={ x1,x2,…,xN}\mathbf{X} = \{x_1, x_2, \dots, x_N\}X={ x1,x2,…,xN},这些数据由概率模型 p(x∣θ)p(x|\theta)p(x∣θ) 生成,其中 θ\thetaθ 是模型参数。我们希望通过最大化对数似然函数来估计 θ\thetaθ:
L(θ)=logp(X∣θ)=∑i=1Nlogp(xi∣θ)L(\theta) = \log p(\mathbf{X}|\theta) = \sum_{i=1}^N \log p(x_i|\theta)L(θ)=logp(X∣θ)=∑i=1Nlogp(xi∣θ)
但在许多情况下,数据生成过程还涉及隐变量 Z={ z1,z2,…,zN}\mathbf{Z} = \{z_1, z_2, \dots, z_N\}Z={ z1,z2,…,zN},这些隐变量不可观测。完整的概率模型为:
p(x,z∣θ)=p(x∣z,θ)p(z∣θ)p(x, z|\theta) = p(x|z, \theta) p(z|\theta)p(x,z∣θ)=p(x∣z,θ)p(z∣θ)
其中:
- p(x∣z,θ)p(x|z, \theta)p(x∣z,θ) 是观测数据的条件分布。
- p(z∣θ)p(z|\theta)p(z∣θ) 是隐变量的先验分布。
此时,观测数据的边际似然为:
p(x∣θ)=∑zp(x,z∣θ)p(x|\theta) = \sum_z p(x, z|\theta)p(x∣θ)=∑zp(x,z∣θ) 或 p(x∣θ)=∫p(x,z∣θ)dzp(x|\theta) = \int p(x, z|\theta) dzp(x∣θ)=∫p(x,z∣θ)dz(若 zzz 连续)
直接最大化 logp(X∣θ)=∑ilog∑zip(xi,zi∣θ)\log p(\mathbf{X}|\theta) = \sum_i \log \sum_{z_i} p(x_i, z_i|\theta)logp(X∣θ)=∑ilog∑zip(xi,zi∣θ) 通常很困难,因为对数函数内部的求和(或积分)使得优化问题变得非凸且复杂。
2.2 似然函数与最大化
我们的目标是通过优化以下对数似然函数来找到最优参数 θ\thetaθ:
θ∗=argmaxθ∑i=1Nlog(∑zip(xi,zi∣θ))\theta^* = \arg\max_\theta \sum_{i=1}^N \log \left( \sum_{z_i} p(x_i, z_i|\theta) \right)θ∗=argmaxθ∑i=1Nlog(∑zip(xi,zi∣θ))
但由于对数内部的求和,梯度计算非常复杂。EM算法通过引入辅助分布和迭代优化来简化这个问题。
3. EM算法的核心思想
EM算法的核心是通过迭代的方式,逐步提高对数似然函数 L(θ)L(\theta)L(θ)。它将问题分解为两个步骤:
-
E步(期望):
- 假设当前参数为 θ(t)\theta^{(t)}θ(t),计算隐变量 zzz 的后验分布 p(z∣x,θ(t))p(z|x, \theta^{(t)})p(z∣x,θ(t))。
- 基于此后验分布,构造一个下界(即期望对数似然),用来近似真正的对数似然函数。
-
M步(最大化):
- 通过最大化E步构造的下界,更新参数 θ\thetaθ 到 θ(t+1)\theta^{(t+1)}θ(t+1)。
- 这个新参数会使得似然函数至少不低于上一步。
通过反复执行E步和M步,EM算法逐步逼近对数似然函数的局部最大值。
4. 算法推导
为了深入理解EM算法,我们从数学角度推导其原理。
4.1 对数似然的下界
对任意一个观测数据点 xix_ixi,其边际对数似然为:
logp(xi∣θ)=log∑zip(xi,zi∣θ)\log p(x_i|\theta) = \log \sum_{z_i} p(x_i, z_i|\theta)logp(xi∣θ)=log∑zip(xi,zi∣θ)
我们引入一个辅助分布 q(zi)q(z_i)q(zi),表示隐变量 ziz_izi 的分布。利用Jensen不等式(对数函数是凹函数),可以得到:
logp(xi∣θ)=log∑zip(xi,zi∣θ)=log∑ziq(zi)p(xi,zi∣θ)q(zi)\log p(x_i|\theta) = \log \sum_{z_i} p(x_i, z_i|\theta) = \log \sum_{z_i} q(z_i) \frac{p(x_i, z_i|\theta)}{q(z_i)}logp(

最低0.47元/天 解锁文章
714

被折叠的 条评论
为什么被折叠?



