EM 算法完整推导与本质剖析

目录

  • [0. 符号约定](#0. 符号约定)
  • [1. 核心恒等式的拆解](#1. 核心恒等式的拆解)
  • [2. E 步详细推导 (Expectation Step)](#2. E 步详细推导 (Expectation Step))
  • [3. M 步详细推导 (Maximization Step)](#3. M 步详细推导 (Maximization Step))
  • [4. 核心问题:为什么 E 步只看 KL 散度,M 步只看 ELBO?](#4. 核心问题:为什么 E 步只看 KL 散度,M 步只看 ELBO?)
  • [5. 几何直观:两步协作的跷跷板](#5. 几何直观:两步协作的跷跷板)
  • [6. 算法流程总结](#6. 算法流程总结)

0. 符号约定

符号 含义
X X X 观测数据
Z Z Z 隐变量 (Latent Variable)
θ \theta θ 模型参数
q ( Z ) q(Z) q(Z) 关于隐变量 Z Z Z 的任意概率分布
θ ( t ) \theta^{(t)} θ(t) 第 t t t 轮迭代后的参数

最终目标 :最大化对数似然函数 log ⁡ P ( X ∣ θ ) \log P(X|\theta) logP(X∣θ)。


1. 核心恒等式的拆解

1.1 从条件概率出发

根据条件概率公式,观测数据的边缘概率可以写成联合概率除以后验概率:

P ( X ∣ θ ) = P ( X , Z ∣ θ ) P ( Z ∣ X , θ ) P(X|\theta) = \frac{P(X, Z|\theta)}{P(Z|X, \theta)} P(X∣θ)=P(Z∣X,θ)P(X,Z∣θ)

由于此等式对任意 Z Z Z 都成立,两边取对数:

log ⁡ P ( X ∣ θ ) = log ⁡ P ( X , Z ∣ θ ) − log ⁡ P ( Z ∣ X , θ ) \log P(X|\theta) = \log P(X, Z|\theta) - \log P(Z|X, \theta) logP(X∣θ)=logP(X,Z∣θ)−logP(Z∣X,θ)

1.2 引入辅助分布 q ( Z ) q(Z) q(Z) 并取期望

引入关于隐变量 Z Z Z 的任意分布 q ( Z ) q(Z) q(Z)。由于 log ⁡ P ( X ∣ θ ) \log P(X|\theta) logP(X∣θ) 本身与 Z Z Z 无关,用 q ( Z ) q(Z) q(Z) 对其求期望仍等于自身:

E q ( Z ) [ log ⁡ P ( X ∣ θ ) ] = log ⁡ P ( X ∣ θ ) ∑ Z q ( Z ) = log ⁡ P ( X ∣ θ ) \mathbb{E}_{q(Z)}[\log P(X|\theta)] = \log P(X|\theta) \sum_Z q(Z) = \log P(X|\theta) Eq(Z)[logP(X∣θ)]=logP(X∣θ)Z∑q(Z)=logP(X∣θ)

对右边同样取期望:

log ⁡ P ( X ∣ θ ) = ∑ Z q ( Z ) log ⁡ P ( X , Z ∣ θ ) − ∑ Z q ( Z ) log ⁡ P ( Z ∣ X , θ ) \log P(X|\theta) = \sum_Z q(Z) \log P(X, Z|\theta) - \sum_Z q(Z) \log P(Z|X, \theta) logP(X∣θ)=Z∑q(Z)logP(X,Z∣θ)−Z∑q(Z)logP(Z∣X,θ)

1.3 凑出 ELBO 与 KL 散度

在两项对数内分子分母同时除以 q ( Z ) q(Z) q(Z),利用 log ⁡ A B = log ⁡ A − log ⁡ B \log\frac{A}{B} = \log A - \log B logBA=logA−logB 重组:

log ⁡ P ( X ∣ θ ) = ∑ Z q ( Z ) log ⁡ P ( X , Z ∣ θ ) q ( Z ) ⏟ ELBO L ( q , θ ) − ∑ Z q ( Z ) log ⁡ P ( Z ∣ X , θ ) q ( Z ) ⏟ − D K L ( q   ∣ ∣   P ( Z ∣ X , θ ) ) \log P(X|\theta) = \underbrace{\sum_Z q(Z) \log \frac{P(X, Z|\theta)}{q(Z)}}{\text{ELBO } \mathcal{L}(q, \theta)} - \underbrace{\sum_Z q(Z) \log \frac{P(Z|X, \theta)}{q(Z)}}{-D_{KL}(q \,||\, P(Z|X,\theta))} logP(X∣θ)=ELBO L(q,θ) Z∑q(Z)logq(Z)P(X,Z∣θ)−−DKL(q∣∣P(Z∣X,θ)) Z∑q(Z)logq(Z)P(Z∣X,θ)

1.4 EM 算法的核心恒等式

log ⁡ P ( X ∣ θ ) = L ( q , θ ) + D K L ( q ( Z )   ∣ ∣   P ( Z ∣ X , θ ) ) \boxed{\log P(X|\theta) = \mathcal{L}(q, \theta) + D_{KL}(q(Z) \,||\, P(Z|X, \theta))} logP(X∣θ)=L(q,θ)+DKL(q(Z)∣∣P(Z∣X,θ))

由于 KL 散度恒有 D K L ≥ 0 D_{KL} \ge 0 DKL≥0,因此:

log ⁡ P ( X ∣ θ ) ≥ L ( q , θ ) \log P(X|\theta) \ge \mathcal{L}(q, \theta) logP(X∣θ)≥L(q,θ)

这就是 L ( q , θ ) \mathcal{L}(q, \theta) L(q,θ) 被称为 证据下界 (ELBO, Evidence Lower Bound) 的原因。


2. E 步详细推导 (Expectation Step)

2.1 目标

固定参数 θ ( t ) \theta^{(t)} θ(t),寻找 q ( Z ) q(Z) q(Z) 使下界 L ( q , θ ( t ) ) \mathcal{L}(q, \theta^{(t)}) L(q,θ(t)) 完全贴合真实对数似然 log ⁡ P ( X ∣ θ ( t ) ) \log P(X|\theta^{(t)}) logP(X∣θ(t))。

2.2 推导

由核心恒等式:

log ⁡ P ( X ∣ θ ( t ) ) = L ( q , θ ( t ) ) + D K L ( q ( Z )   ∣ ∣   P ( Z ∣ X , θ ( t ) ) ) \log P(X|\theta^{(t)}) = \mathcal{L}(q, \theta^{(t)}) + D_{KL}(q(Z) \,||\, P(Z|X, \theta^{(t)})) logP(X∣θ(t))=L(q,θ(t))+DKL(q(Z)∣∣P(Z∣X,θ(t)))

左边在 θ ( t ) \theta^{(t)} θ(t) 固定时为常数,因此最大化 L \mathcal{L} L 等价于最小化 D K L D_{KL} DKL。KL 散度最小值为 0 0 0,当且仅当两分布相等时取得:

q ( t ) ( Z ) = P ( Z ∣ X , θ ( t ) ) \boxed{q^{(t)}(Z) = P(Z | X, \theta^{(t)})} q(t)(Z)=P(Z∣X,θ(t))

2.3 Q 函数的定义

基于 q ( t ) ( Z ) q^{(t)}(Z) q(t)(Z),定义 Q 函数 (即对数完全似然的期望):

Q ( θ , θ ( t ) ) = ∑ Z q ( t ) ( Z ) log ⁡ P ( X , Z ∣ θ ) = E Z ∣ X , θ ( t )  ⁣ [ log ⁡ P ( X , Z ∣ θ ) ] Q(\theta, \theta^{(t)}) = \sum_Z q^{(t)}(Z) \log P(X, Z|\theta) = \mathbb{E}_{Z|X, \theta^{(t)}}\!\left[\log P(X, Z|\theta)\right] Q(θ,θ(t))=Z∑q(t)(Z)logP(X,Z∣θ)=EZ∣X,θ(t)[logP(X,Z∣θ)]

E 步结论 :把 q ( Z ) q(Z) q(Z) 设为当前参数下隐变量的后验分布,此时 D K L = 0 D_{KL}=0 DKL=0,下界与真实似然在 θ ( t ) \theta^{(t)} θ(t) 处相切。


3. M 步详细推导 (Maximization Step)

3.1 目标

固定 q ( t ) ( Z ) q^{(t)}(Z) q(t)(Z),寻找新参数 θ ( t + 1 ) \theta^{(t+1)} θ(t+1) 使下界 L ( q ( t ) , θ ) \mathcal{L}(q^{(t)}, \theta) L(q(t),θ) 最大化。

3.2 推导

展开下界:

L ( q ( t ) , θ ) = ∑ Z q ( t ) ( Z ) log ⁡ P ( X , Z ∣ θ ) − ∑ Z q ( t ) ( Z ) log ⁡ q ( t ) ( Z ) \mathcal{L}(q^{(t)}, \theta) = \sum_Z q^{(t)}(Z) \log P(X, Z|\theta) - \sum_Z q^{(t)}(Z) \log q^{(t)}(Z) L(q(t),θ)=Z∑q(t)(Z)logP(X,Z∣θ)−Z∑q(t)(Z)logq(t)(Z)

观察两项:

  • 第一项 :正是 E 步定义的 Q 函数 Q ( θ , θ ( t ) ) Q(\theta, \theta^{(t)}) Q(θ,θ(t))
  • 第二项 : q ( t ) ( Z ) q^{(t)}(Z) q(t)(Z) 的信息熵,与待优化变量 θ \theta θ 无关,可视为常数 C C C

因此最大化下界等价于最大化 Q 函数:

θ ( t + 1 ) = arg ⁡ max ⁡ θ Q ( θ , θ ( t ) ) \boxed{\theta^{(t+1)} = \arg\max_{\theta} Q(\theta, \theta^{(t)})} θ(t+1)=argθmaxQ(θ,θ(t))

M 步结论 :通过求导或其他最优化方法,找到使 Q 函数最大的 θ \theta θ 作为新一轮参数。


4. 核心问题:为什么 E 步只看 KL 散度,M 步只看 ELBO?

这种"不对称性"恰恰是 EM 算法的精妙之处。EM 本质上是一种 坐标上升法 (Coordinate Ascent) ------ 在 q q q 和 θ \theta θ 两个变量之间交替固定一个、优化另一个。

4.1 为什么 E 步只考虑 KL 散度?

核心原因 : θ \theta θ 固定时,真实对数似然是常数,最大化下界等价于最小化 KL 散度。

回看恒等式:

log ⁡ P ( X ∣ θ ( t ) ) ⏟ 常数 = L ( q , θ ( t ) ) + D K L ( q ( Z )   ∣ ∣   P ( Z ∣ X , θ ( t ) ) ) \underbrace{\log P(X|\theta^{(t)})}{\text{常数}} = \mathcal{L}(q, \theta^{(t)}) + D{KL}(q(Z) \,||\, P(Z|X, \theta^{(t)})) 常数 logP(X∣θ(t))=L(q,θ(t))+DKL(q(Z)∣∣P(Z∣X,θ(t)))

逻辑非常简洁 ------ 和为定值,此消彼长:

  • 要让 L \mathcal{L} L 尽可能大 ⟹ \Longrightarrow ⟹ 必须让 D K L D_{KL} DKL 尽可能小
  • D K L D_{KL} DKL 的下限是 0 0 0 (两分布相等时取得)

因此 E 步只需专注于"消灭" KL 散度。一旦 D K L = 0 D_{KL}=0 DKL=0,下界就被拉到最紧 (Tight),与真实似然完全贴合,E 步使命完成。

4.2 为什么 M 步只考虑证据下界 (ELBO)?

核心原因 : q q q 固定后,最大化下界既"算得出"又"等价于"最大化真实似然的代理目标;而管 KL 散度既算不了也没必要。

理由一:算不了

KL 散度内含 P ( Z ∣ X , θ ) P(Z|X, \theta) P(Z∣X,θ) ------ 带未知参数 θ \theta θ 的隐变量后验概率。正是因为这一项难以直接对 θ \theta θ 求导优化,我们才设计了 EM 算法。若 M 步还要优化包含它的 KL 散度,就陷入了死循环 ------ 为了避开难算的式子,结果又绕回了难算的式子。

理由二:没必要

这是 EM 最绝妙之处:不必管 KL 散度,只要把下界 L \mathcal{L} L 往上推,真实似然必然跟着上升

推演 M 步:

  1. M 步起点 (参数还是 θ ( t ) \theta^{(t)} θ(t)):由于 E 步的功劳, D K L = 0 D_{KL}=0 DKL=0,所以
    log ⁡ P ( X ∣ θ ( t ) ) = L ( q ( t ) , θ ( t ) ) \log P(X|\theta^{(t)}) = \mathcal{L}(q^{(t)}, \theta^{(t)}) logP(X∣θ(t))=L(q(t),θ(t))

  2. M 步执行 :找到新 θ ( t + 1 ) \theta^{(t+1)} θ(t+1) 使下界严格上升
    L ( q ( t ) , θ ( t + 1 ) ) > L ( q ( t ) , θ ( t ) ) \mathcal{L}(q^{(t)}, \theta^{(t+1)}) > \mathcal{L}(q^{(t)}, \theta^{(t)}) L(q(t),θ(t+1))>L(q(t),θ(t))

  3. 更新后的真实似然 :
    log ⁡ P ( X ∣ θ ( t + 1 ) ) = L ( q ( t ) , θ ( t + 1 ) ) + D K L ( ⋯   ) \log P(X|\theta^{(t+1)}) = \mathcal{L}(q^{(t)}, \theta^{(t+1)}) + D_{KL}(\cdots) logP(X∣θ(t+1))=L(q(t),θ(t+1))+DKL(⋯)

  4. 不等式链 (因为 D K L ≥ 0 D_{KL} \ge 0 DKL≥0):
    log ⁡ P ( X ∣ θ ( t + 1 ) ) ≥ L ( q ( t ) , θ ( t + 1 ) ) > L ( q ( t ) , θ ( t ) ) = log ⁡ P ( X ∣ θ ( t ) ) \log P(X|\theta^{(t+1)}) \ge \mathcal{L}(q^{(t)}, \theta^{(t+1)}) > \mathcal{L}(q^{(t)}, \theta^{(t)}) = \log P(X|\theta^{(t)}) logP(X∣θ(t+1))≥L(q(t),θ(t+1))>L(q(t),θ(t))=logP(X∣θ(t))

结论:真实对数似然在每轮迭代中单调不减 ------ 这就是 EM 算法收敛性的核心保证。


5. 几何直观:两步协作的跷跷板

步骤 固定变量 优化变量 几何效果
E 步 θ ( t ) \theta^{(t)} θ(t) q ( Z ) q(Z) q(Z) "把下界往上提",压扁 KL 散度至 0,使下界曲线在 θ ( t ) \theta^{(t)} θ(t) 处与真实对数似然曲线 相切
M 步 q ( t ) ( Z ) q^{(t)}(Z) q(t)(Z) θ \theta θ "沿下界爬到山顶",在 θ \theta θ 坐标系内找到下界 L \mathcal{L} L 的最高点 θ ( t + 1 ) \theta^{(t+1)} θ(t+1)

由于 L \mathcal{L} L 是 log ⁡ P \log P logP 的下界, L \mathcal{L} L 升高 ⟹ \Longrightarrow ⟹ 真实 log ⁡ P \log P logP 被"托举"着升高。两步交替进行,直至收敛。


6. 算法流程总结

输入 :观测数据 X X X,模型 P ( X , Z ∣ θ ) P(X, Z|\theta) P(X,Z∣θ),初始参数 θ ( 0 ) \theta^{(0)} θ(0)

重复直至收敛 (对 t = 0 , 1 , 2 , ... t = 0, 1, 2, \ldots t=0,1,2,...):

  1. E 步 :计算后验分布
    q ( t ) ( Z ) = P ( Z ∣ X , θ ( t ) ) q^{(t)}(Z) = P(Z|X, \theta^{(t)}) q(t)(Z)=P(Z∣X,θ(t))

    并构造 Q 函数
    Q ( θ , θ ( t ) ) = E Z ∣ X , θ ( t )  ⁣ [ log ⁡ P ( X , Z ∣ θ ) ] Q(\theta, \theta^{(t)}) = \mathbb{E}_{Z|X, \theta^{(t)}}\!\left[\log P(X, Z|\theta)\right] Q(θ,θ(t))=EZ∣X,θ(t)[logP(X,Z∣θ)]

  2. M 步 :更新参数
    θ ( t + 1 ) = arg ⁡ max ⁡ θ Q ( θ , θ ( t ) ) \theta^{(t+1)} = \arg\max_{\theta} Q(\theta, \theta^{(t)}) θ(t+1)=argθmaxQ(θ,θ(t))

输出 :收敛后的参数 θ ∗ \theta^* θ∗


相关推荐
foundbug9991 小时前
MATLAB实现:基于图像对比度和波段相关性的高光谱波段选择算法
开发语言·算法·matlab
嘿嘿嘿x31 小时前
Linux-实践
linux·运维·算法
搬砖的小码农_Sky2 小时前
如何在RX 7900 XTX显卡上运行ROCm?
深度学习·机器学习·gpu算力
Godspeed Zhao2 小时前
从零开始学AI14——最大似然估计与对数损失函数
算法·逻辑回归·最大似然
流年如夢2 小时前
排序算法详解
数据结构·算法·排序算法
会编程的土豆2 小时前
Go 语言中的 `new` 关键字(创建指针)
java·算法·golang
南宫萧幕2 小时前
HEV能量管理建模实战:从零搭建 Simulink 物理环境到 Python(DQN) 强化学习联合仿真调通
开发语言·python·算法·matlab·汽车·控制
x_yeyue2 小时前
2026第十七届蓝桥杯c++B组省赛题解
笔记·算法·蓝桥杯·acm·题解