EM算法(Expectation-Maximization,期望最大化)

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(θ)=log⁡p(X∣θ)=∑i=1Nlog⁡p(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(xz,θ)p(zθ)

其中:

  • p(x∣z,θ)p(x|z, \theta)p(xz,θ) 是观测数据的条件分布。
  • 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 连续)

直接最大化 log⁡p(X∣θ)=∑ilog⁡∑zip(xi,zi∣θ)\log p(\mathbf{X}|\theta) = \sum_i \log \sum_{z_i} p(x_i, z_i|\theta)logp(Xθ)=ilogzip(xi,ziθ) 通常很困难,因为对数函数内部的求和(或积分)使得优化问题变得非凸且复杂。

2.2 似然函数与最大化

我们的目标是通过优化以下对数似然函数来找到最优参数 θ\thetaθ

θ∗=arg⁡max⁡θ∑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(θ)。它将问题分解为两个步骤:

  1. E步(期望)

    • 假设当前参数为 θ(t)\theta^{(t)}θ(t),计算隐变量 zzz后验分布 p(z∣x,θ(t))p(z|x, \theta^{(t)})p(zx,θ(t))
    • 基于此后验分布,构造一个下界(即期望对数似然),用来近似真正的对数似然函数。
  2. M步(最大化)

    • 通过最大化E步构造的下界,更新参数 θ\thetaθθ(t+1)\theta^{(t+1)}θ(t+1)
    • 这个新参数会使得似然函数至少不低于上一步。

通过反复执行E步和M步,EM算法逐步逼近对数似然函数的局部最大值。


4. 算法推导

为了深入理解EM算法,我们从数学角度推导其原理。

4.1 对数似然的下界

对任意一个观测数据点 xix_ixi,其边际对数似然为:

log⁡p(xi∣θ)=log⁡∑zip(xi,zi∣θ)\log p(x_i|\theta) = \log \sum_{z_i} p(x_i, z_i|\theta)logp(xiθ)=logzip(xi,ziθ)

我们引入一个辅助分布 q(zi)q(z_i)q(zi),表示隐变量 ziz_izi 的分布。利用Jensen不等式(对数函数是凹函数),可以得到:

log⁡p(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(

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱看烟花的码农

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值