Expectation maximization
Expectation Maximization (a.k.a. EM algorithm) is popular in estimating parameters in model which contains hidden random variable.
I give a specific example which is simple and intuitive to explain the principle here.
For more advanced techniques about EM algorithm, you may refer to <统计学习方法>统计学习方法>
硬币模型例子
假设有三枚硬币A、B、C,它们正面朝上的概率是,按如下规则掷硬币:先掷硬币A,如果A正面朝上则选择硬币B进行投掷,如果A反面朝上则选择硬币C进行投掷,最后记录B或者C的投掷结果作为输出。 这样独立重复地进行n次实验,可得到一系列观测结果(比如,1表示正面朝上)。
假如只能观察到硬币最后的投掷结果,而不知道投掷过程中的隐变量,现在想通过观测结果估计硬币模型的参数(即),该如何进行?
该问题可用概率模型进行形式化描述:
这里表示隐变量,表示模型输出结果,是模型参数。 该模型符合直觉,第一项的含义是当已知参数时,隐变量取某值的概率。 第二项的含义是当隐变量和模型参数确定时,产生最终输出的概率。
在硬币模型例子中,分别考虑的正反两种取值
对于一系列的某观测结果发生的概率是
进行极大似然估计,取对数可以得到下面的目标函数
一个自然的想法是,对目标函数关于各个参数求偏导,并令偏导数为0即可。 不过这里
是否等于0不受控制,也就是说没有最优解析解,对于这个目标函数通常需要用初值迭代的方式进行。
EM算法迭代
E步:用当前的参数估计值来估计隐变量的概率分布
放到这个硬币模型中来说就是在给定观测和参数的情况下,计算即第二次掷的是硬币B还是硬币C的概率。
M步:计算关于估计得到的隐变量的期望,使该期望最大化,即
E步很符合直觉,而M步初看之下似乎是反直觉的。 为什么要计算关于估计得到的隐变量的期望,这样一个奇怪的东西。
直觉上讲,E步估计了隐变量的概率分布之后, 直接用这个隐变量结果来让最大化不就行了吗? (半监督学习中的伪标签策略就是这样做的) 注意这种是对EM算法最常见的错误理解,我之前也是这么认为的。
但这种理解是自训练,而并不是EM算法。 M步中奇怪的背后是有数学原因的。
EM算法的导出
对于一个包含隐变量的概率模型,目标是进行观测数据对参数的极大似然估计
由于这里含有求和(或者积分)的对数,这给目标函数的优化带来了困难。 而EM算法并不直接优化上式,而是希望逐渐的使得增大(迭代式的优化) 即 (第i+1次迭代比第i次大), 为了视觉上容易区分,下面的推导用代替 这里的推导用了Jensen不等式: ,其中。
我们希望使得每次迭代尽可能大,因此我们可以最大化。 注意到上面推导最后一行只有第一项与有关,因此问题等价于求解
这个就是上面的计算关于估计 得到的隐变量的期望
至此,我们说明了为什么EM算法的M步要计算关于隐变量的期望最大化。 从上面的推导也不难发现,EM的本质是不断的迭代提升的下界来近似最大化的。