资讯

期望最大化 EM 算法是什么?在有隐藏变量时迭代地估计参数

2026-11-053 分钟阅读百科
TL;DR期望最大化(EM)算法是 Dempster、Laird 和 Rubin 在 1977 年系统提出的迭代算法,用于含有隐变量或缺失数据的概率模型的最大似然估计,交替执行 E 步(根据当前参数推断隐变量的期望)和 M 步(据此重新估计参数),广泛用于高斯混合模型、隐马尔可夫模型和缺失数据处理。

期望最大化算法(Expectation-Maximization,EM 算法)是一种用来估计概率模型参数的迭代算法,特别适用于数据中含有隐变量或者存在缺失数据的情况。它由 Arthur Dempster、Nan Laird 和 Donald Rubin 在 1977 年发表的一篇经典论文中系统地提出并命名,这篇论文成为统计学中被引用次数最多的论文之一。

它要解决的问题

在统计中,最大似然估计是估计模型参数的常用方法:选择能让观测到的数据出现的可能性最大的参数。但在很多问题中,有一些重要的变量是我们观察不到的,它们叫作隐变量。这时,直接进行最大似然估计就变得非常困难。

举个例子:假设有一批学生的身高数据,我们知道其中既有男生也有女生,男生和女生的身高各自服从一个正态分布,但数据中没有记录每个人的性别。我们想估计男生和女生各自的平均身高和身高的分布。如果知道每个人的性别,问题就很简单:分别计算男生和女生的平均值就行了。如果知道男女身高的分布,也很容易推断每个人更可能是男生还是女生。难点在于这两件事我们都不知道,它们相互依赖,就像一个先有鸡还是先有蛋的问题。这里的“性别”就是隐变量。

EM 算法的思路

EM 算法的办法是:先随便猜一组参数,然后交替地进行两个步骤,不断地改进。E 步(期望步):根据当前的参数,计算隐变量的概率分布。在上面的例子中,就是根据当前估计的男女身高分布,计算每个学生是男生的概率和是女生的概率,比如一个身高 180 厘米的学生,可能有 90% 的概率是男生。M 步(最大化步):把 E 步得到的概率当作已知的信息,重新估计参数,使似然最大。在上面的例子中,就是用每个学生是男生的概率作为权重,计算加权平均的男生身高,女生也一样。然后用新的参数回到 E 步,如此反复迭代,直到参数基本不再变化为止。

可以证明,EM 算法的每一次迭代都不会让似然函数变小,因此它一定会收敛。但它收敛到的可能只是一个局部最优,而不一定是全局最优,结果会受到初始值的影响,所以在实践中常常用不同的初始值多运行几次,选取最好的结果。

应用

高斯混合模型:用多个正态分布的组合来描述数据,EM 算法是估计其参数的标准方法,常用于聚类。它可以看作 K 均值聚类的一种“软”的推广:K 均值把每个点硬性地分给一个簇,而高斯混合模型给出每个点属于各个簇的概率。隐马尔可夫模型:用于语音识别、词性标注、生物序列分析等,其参数估计使用的 Baum-Welch 算法就是 EM 算法的一个特例。处理缺失数据:当数据中有部分值缺失时,把缺失的值当作隐变量,用 EM 算法进行估计。此外还用于主题模型、图像分割、医学影像重建等。EM 算法的思想也影响了后来的变分推断等方法,变分自编码器的训练目标与 EM 算法中的证据下界密切相关。