期望最大化(EM)(expectation-maximization)
/ ek-spek-TAY-shun MAK-sih-mih-ZAY-shun /
期望最大化,是一种巧妙的「自举」,专门对付那些「先有鸡还是先有蛋」的难题——只要你有一部分数据缺失或隐藏,这类难题就会冒出来。设想要按重量把一堆混在一起的硬币分成两摞,可你既不知道每一类典型的重量,也不知道每枚硬币该归哪一摞。若你知道分摞,便能算出平均重量;若你知道重量,便能给硬币归位。EM打破这个僵局的办法是:先猜出其一,用它来估计另一个,如此来回往复,直到两者都安定下来。
这两步给了方法以其名。在期望(E)步,你拿当前对模型的猜测,用它去「柔和地」补全那些隐藏信息——不是「这枚硬币是A类」,而是「这枚硬币有70%可能是A类、30%是B类」。在最大化(M)步,你把这些柔和的归属当成真的,重新估计模型,让它对它们拟合得最好。如此循环。一条保证让这一切值得信赖:每一整轮,只会让对数据的拟合变好(或持平)——这个过程绝不会把事情弄糟。
它为何重要:在统计学与机器学习中,EM是拟合混合模型、训练隐马尔可夫模型、以及处理缺失数据背后的标准引擎。它诚实的局限有二。其一,「绝不变糟」不等于「找到最好」:EM爬上的是附近的一座峰,而那可能只是个局部最优,所以初始猜测很要紧,人们常常从好几个起点分别跑它。其二,它给你的是一组单一的最佳拟合设定,而非一份完整的不确定性——它是用于估计的工具,而非用于贝叶斯那个更宽阔的目标:把你所有不知道的东西通通描绘出来。
一群混杂成年人的身高,你怀疑其中有两个群体,却没记录性别。先猜两个平均身高作为起点。E步:对每个人,依当前的猜测算出他属于「较矮」与「较高」两群的可能性各有多大。M步:用所有人来重算每一群的平均值,并以那些概率作为权重。几轮过后,两个平均值便锁定到合理的取值上,柔和的归属也趋于稳定。
EM在「柔和地猜测隐藏标签」(E)与「按这些猜测重拟合模型」(M)之间交替往复,直至收敛。
EM保证不会把拟合弄糟,但这并不保证能找到全局最优——它可能卡在一个局部最优上,而那个最优取决于你从哪里出发。从好几个随机初始点分别去跑、再留下最好的那个结果,是惯常的做法。