我在知乎上看到一篇博文解释了EM背后的原理。 解释很容易理解,太棒了!
EM算法简介(百度百科提供):
最大期望算法 (- , EM) 或 -Laird-Rubin 算法是一种优化算法,它执行最大似然估计(带有变量 ( ) 或缺失数据 (-data) 的概率模型以进行参数估计。
EM算法的标准计算框架由交替的E步(-steps)和M步(steps)组成。 算法的收敛性可以保证迭代至少逼近局部最大值。
这是官方的介绍:
如果采用基于最大似然估计的模型,并且模型中存在隐变量,则必须使用EM算法进行参数估计。 就我个人而言,我认为理解 EM 算法背后的思想远比理解其数学推导重要。 Idea会给你一个直观的感受来理解算法的合理性。 数学推导只是用更严谨的语言表达了这种合理性。 例如,梨非常甜。 用数学语言可以表示为含糖量90%。 然而,只有咬一口,你才能真正感受到梨子有多甜,才能真正理解90%糖分的数学意义。 怎么样。 如果EM是梨子,那么这篇文章的目的就是指导你咬一口。
001.一个非常简单的例子
假设有两枚硬币1和2,随机抛掷后出现正面的概率分别为P1和P2。 为了估计这两个概率,做一个实验,每次取一枚硬币,连续抛5次,记录结果,如下:
P1和P2可以很容易地估计如下:
P1 = (3+1+2)/15 = 0.4
P2=(2+3)/10=0.5
到目前为止,一切似乎都很顺利,现在让我们增加难度。
010.添加隐藏变量z
还是上面同样的问题,现在我们把每轮投掷时使用的硬币标记擦掉,如下:
好吧,现在我们的目标没有改变。 我们仍然估计P1和P2。 我们应该做什么?
显然,此时我们多了一个隐藏变量z,它可以认为是一个5维向量(z1,z2,z3,z4,z5),代表每次抛掷所用的硬币。 例如,z1代表一轮抛掷中使用的硬币要么是1,要么是2。但是,如果不知道这个变量z,我们就无法估计P1和P2。 因此,我们必须先估计z,然后才能进一步估计P1和P2。
但要估计z,我们需要知道P1和P2,这样我们就可以使用最大似然概率规则来估计z。 这不是先有鸡还是先有蛋的问题吗? 怎么解决呢?
答案是首先随机初始化一个P1和P2,用它来估计z,然后根据z,或者根据最大似然概率规则来估计新的P1和P2。 如果新的P1和P2与我们初始化的P1和P2相同,这意味着什么? (这里思考1分钟)
这表明我们初始化的 P1 和 P2 是一个相当可靠的估计!
也就是说,我们初始化的P1和P2可以根据最大似然概率估计z,然后基于z,我们可以依次根据最大似然概率估计P1和P2。 当它们与我们初始化的P1和P2相同时,说明P1和P2很可能是真实值。 这包含两种相互作用的最大似然估计。
如果新估计的 P1 和 P2 与我们的初始化值相差很大,我们该怎么办? 只需继续迭代新的 P1 和 P2 直到收敛。
这是下面的 EM 的初级版本。
011.EM少年版
我们不妨先给P1和P2赋值,比如:
P1 = 0.2
P2 = 0.7
然后我们看看哪枚硬币最有可能是第一次抛掷。
如果是硬币1,得到3个正面和2个反面的概率是0.2*0.2*0.2*0.8*0.8 = 0.00512
如果是硬币2,则得到3个正面和2个反面的概率为0.7*0.7*0.7*0.3*0.3=0.03087
然后依次求其他4轮中对应的概率。 形式如下:
根据最大似然法则:
第 1 轮中最有可能的是硬币 2
第 2 轮最有可能的是硬币 1
第 3 轮最有可能的是硬币 1
第 4 轮最有可能的是硬币 2
第 5 轮最有可能的是硬币 1
我们将上述值作为z的估计值。 然后根据最大似然概率规则估计新的P1和P2。
P1 = (2+1+2)/15 = 0.33
P2=(3+3)/10 = 0.6
假设我们是无所不知的神,知道每轮抛掷的硬币都是如本文第001部分所标记的。 那么,P1和P2的最大似然估计分别为0.4和0.5(下文中这两个值分别称为P1和P2的真实值)。 因此,将我们初始化的 P1 和 P2 与新估计的 P1 和 P2 进行比较:
你有没有看到? 我们估计的P1和P2比它们的初始值更接近它们的真实值!
可以预见,我们会继续遵循上面的思路,用估计的P1和P2来估计z,然后用z来估计新的P1和P2。 经过反复迭代,最终可以得到P1=0.4,P2=0.5。 此时无论如何迭代,P1和P2的值都会保持在0.4和0.5不变,所以我们找到了P1和P2的最大似然估计。
这里有两个问题:
1. 新估计的P1和P2会更接近真实的P1和P2吗?
答案是:是的,肯定会更接近真实的P1和P2,数学可以证明,但这超出了本文的主题,请参考其他书籍或文章。
2.迭代一定会收敛到真实的P1和P2吗?
答案是:不一定,取决于P1和P2的初始化值。 我们之所以能够收敛到上面的P1和P2,是因为我们很幸运地找到了好的初始化值。
100.EM高级版
接下来我们想一想,上述方法还有改进的空间吗?
我们使用最大似然概率规则来估计z值,然后使用z值根据最大似然概率规则来估计新的P1和P2。 也就是说,我们使用最可能的 z 值,而不是所有可能的 z 值。
如果考虑所有可能的z值,则对每个z值估计一个新的P1和P2,将每个z值的概率作为权重,将所有新的P1和P2分别加权相加,使得P1和P2 P2 应该会更好。
z值有多少个? 显然有2^5=32种类型,需要我们进行32次估值? ?
不,我们可以使用期望来简化操作。
使用上表,我们可以计算每次抛掷硬币 1 或硬币 2 的概率。 例如,在第 1 轮中,使用硬币 1 的概率为:
0.00512/(0.00512+0.03087)=0.14
使用硬币2的概率为1-0.14=0.86
可以依次计算其他四轮的概率,如下:
上表中右侧两列代表预期值。 看第一行,0.86 意味着从期望的角度来看,这次抛掷硬币 2 的概率是 0.86。 与之前的方法相比,我们根据最大似然概率直接将第一轮估计为硬币2。 这个时候我们就更加谨慎了。 我们只说有0.14的概率是硬币1,还有0.86的概率。 硬币 2,它不再是非此即彼。 这样,当我们估计P1或P2时,我们可以使用全部数据而不是部分数据,这显然更好。
在这一步中,我们实际上估计了 z 的概率分布。 该步骤称为E步骤。
结合下表:
我们根据期望最大似然概率的规则来估计新的P1和P2:
以P1估计为例,第一轮3个正数和2个负数相当于
0.14*3=0.42正
0.14*2=0.28倒数
其他四轮依次计算,列表如下:
P1=4.22/(4.22+7.98)=0.35
可以看出,改变z值的估计方法后,新估计的P1更接近0.4。 原因是我们使用了抛出的所有数据,而不是只使用了之前的部分数据。
在这一步中,我们根据步骤E中得到的z的概率分布和最大似然概率规则来估计P1和P2,称为M步骤。
101.总结
上面,我们用一个实际的小例子来实际演示了 EM 算法背后的思想。 共性存在于个性中。 通过这个例子,我们可以深入感性地了解EM算法是做什么的,掌握EM算法。 思想的本质。