在前面的讨论中,我们一直假设训练样本所有属性变量的值都已被观测到,即训练样本是“完整”的。但在现实应用中往往会遇到“不完整”的训练样本。在这种存在“未观测”变量的情形下,是否仍能对模型参数进行估计呢?未观测变量的学名是“隐变量”(Latent Variable)。令表示已观测变量集,
表示隐变量集,
表示模型参数。若欲对
做极大似然估计,则应最大化对数似然:
然而由于是隐变量,上式无法直接求解。此时我们可通过对
计算期望,来最大化已观测数据的对数“边际似然:
EM(Expectation-Maximization)算法是常用的估计参数隐变量的利器,它是一种送代式的方法,其基本想法是:若参数已知,则可根据训练数据推断出最优隐变量
的值(E步);反之,若
的值已知,则可方便地对参数做极大似然估计(M步)。
于是,以初始值为起点,对上式,可选代执行以下步骤直至收敛:
- 基于
推断隐变量
的期望,记为
- 基于已观测变量
和
对参数
做极大似然估计,记为
这就是EM算法的原型。
进一步,若我们不是取的期望,而是基于
计算隐变量
的概率分布
,则EM算法的两个步骤是:
- E步(Expectation):以当前参数
推断隐变量分布
,并计算对数似然
关于
的期望:
- M步卡(Maximization):寻找参数最大化期望似然,即:
简要来说,EM算法使用两个步骤交替计算:第一步是期望E步,利用当前估计的参数值来计算对数似然的期望值;第二步是最大化M步,寻找能使E步产生的似然期望最大化的参数值。然后,新得到的参数值重新被用于E步。直至收敛到局部最优解。事实上,隐变量估计问题也可通过梯度下降等优化算法求解,但由于求和的项数将随着隐变量的数目以指数级上升,会给梯度计算带来麻烦;而EM算法则可看作一种非梯度优化方法
参考文献:
[1] 周志华. 机器学习[M]. 清华大学出版社, 2016.