(别打我,我可能会变为标题党 hhhhhhhhh)理解EM算法背后的物理意义(idea),个人认为比繁锁公式(见最后插图)推导重要。
人需要感性,idea更能给人一种直观的感受,理解算法的合理性,数学推导只是用一种严谨的话表达出来而已。就好比一个梨很甜,你可以说它含糖量95%,但真的有多甜只有你咬一口才知道吧。EM算法就好比这个梨,我想带大家咬一口,而不是死磕繁琐的公式。本文我会用一个及其简单的例子循序渐进地讲清楚EM背后的idea,至于数学推导证明其正确性,见我下一篇吧。
Expectation Maximization (EM)算法是什么呢?用我的话就是:当你想估计两个参数的值,这两个参数之间又是鸡和蛋的关系,知道其中一个都能得到另外一个。在这样的情况下,用EM能够比较好的估计出这两个值。
001、一道小学题
假设有两枚硬币1和2,随机抛掷后正面朝上的概率为,,为了估计这两个概率,每一次抛一个硬币,抛掷5次,结果如下:
硬币 | 结果 | 统计 |
---|---|---|
1 | 正正反正反 | 3正2反 |
2 | 反反正正反 | 2正3负 |
1 | 正反反反反 | 1正4负 |
2 | 正反反正正 | 3正2负 |
1 | 反正正反反 | 2正3负 |
所以我们可以直接估计出
011、加入隐含变量
继续上面的问题,但我们现在抹去硬币的标记。也就是说我们不知道每轮丢的哪个硬币:
硬币 | 结果 | 统计 |
---|---|---|
\ | 正正反正反 | 3正2反 |
\ | 反反正正反 | 2正3负 |
\ | 正反反反反 | 1正4负 |
\ | 正反反正正 | 3正2负 |
\ | 反正正反反 | 2正3负 |
而且现在还多了一个隐藏变量来表示每一轮的硬币是1还是2,其中。但是现在问题是我们不知道,就不能像上面那样直接估计。所以我们必须先估计出,才能进一步估计。
但要估计,我们又要知道。所以,这就好比是一个鸡生蛋还是蛋生鸡的故事?如何破 (这里可以思考1分钟)
庆幸的是,我们可以通过最大似然估计来解决上述的问题。也就是说我们可以初始化两个的值,然后按照最大似然概率估计出,然后在基于,再按照最大似然概率反过来估计出。如此循环估计直到与上一轮的值相等,就意味着我们估计的值达到真实值了。
011 EM初级版
正如上面所说,我们先假设因此,根据001中的统计结果,我们可以得到第一轮中是硬币1的概率为,硬币2 的概率为。依次类推我们可以得到第2轮到第5轮,硬币1和2的概率如下:
轮数 | 硬币1 | 硬币2 |
---|---|---|
1 | 0.00512 | 0.03087 |
2 | 0.02048 | 0.01323 |
3 | 0.08192 | 0.00567 |
4 | 0.00512 | 0.03087 |
5 | 0.02048 | 0.01323 |
按照最大似然的准则:
第1轮中最有可能的是硬币2
第2轮中最有可能的是硬币1
第3轮中最有可能的是硬币1
第4轮中最有可能的是硬币2
第5轮中最有可能的是硬币1
即:
因此,是不是比我们假设的值更加接近(0.4和0.5)。接下来我们继续用得到的的值重复上述的步骤。最后就会得到。
这里有两个问题:
Q1: 每一轮新估计的会更加接近真实值吗?
A1:会,一定会!数学上可以证明,但这不是我这篇文章想讨论的范围,有兴趣的看我下一篇理论推导。
Q2:最后一定会收敛于真实值吗?
A2 :不一定,取决于初始值。我们上面的例子能收敛是因为初始值恰好能达到。
100、EM进阶版
OK,我们继续上面的问题。上面我们用随机的两个估计出最可能的,而不是所有的。想一想是不是?
如果我们考虑所有的,并估计出对应的 ,并按照相应的权重对也进行加权,最后得到的就会更加靠谱了。
一共有种可能。那我们要把32种可能都穷尽吗?那也不用全算,我们可以用期望来简化。
结合上面,我们可以算出每轮是硬币1,2的概率,以第一轮为例:是硬币1的概率为,则硬币2的概率为。依次类推,其他4轮的概率如下:
轮数 | 硬币1 | 硬币2 |
---|---|---|
1 | 0.14 | 0.86 |
2 | 0.61 | 0.39 |
3 | 0.94 | 0.06 |
4 | 0.14 | 0.86 |
5 | 0.61 | 0.39 |
上表中的右两列表示期望值。看第一行,0.86表示,从期望的角度看,这轮抛掷使用硬币2的概率是0.86。相比于前面的方法,我们按照最大似然概率,直接将第1轮估计为用的硬币2,此时的我们更加谨慎,我们只说,有0.14的概率是硬币1,有0.86的概率是硬币2,不再是非此即彼。这样我们在估计P1或者P2时,就可以用上全部的数据,而不是部分的数据,显然这样会更好一些。
这一步,我们实际是估计出了的概率分布,这就是Expectation 。
结合第一个表,我们按照期望最大似然的法则来估计新的:
以估计为例,第一轮的3正2反相当于:
依次算出其他四轮:
轮数 | 正面 | 反面 |
---|---|---|
1 | 0.42 | 0.28 |
2 | 1.22 | 1.83 |
3 | 0.94 | 3.76 |
4 | 0.42 | 0.28 |
5 | 1.22 | 1.83 |
总计 | 4.22 | 7.98 |
因此,.
可以看到,改变了值的估计方法后,新估计出的要更加接近0.4。原因就是我们使用了所有抛掷的数据,而不是之前只使用了部分的数据。
这步中,我们根据E步中求出的的概率分布,依据最大似然概率法则去估计,被称作M步。
101、总结
以上,我们用一个实际的小例子,来实际演示了EM算法背后的idea,共性存于个性之中,通过这个例子,我们可以对EM算法究竟在干什么有一个深刻感性的认识,掌握EM算法的思想精髓。