讨论到EM算法,纯看公式推导就觉得非常的复杂,其实如果单纯从感性认知的角度,能更好的的了解EM算法。在哔哩哔哩等相关的分享中看到相关的课程学习内容,主要介绍如何感性的认识EM算法,但是他们分享的时候,大多数都是理论和感性认知分开讲的,这篇文章就希望能够在感谢认知的基础上,对应上其理论题推导。
下面就根据视频教学里的例子,来介绍一下EM算法的感谢认知。
首先介绍了知乎上比较简单明了的一个EM算法入门:如何感性地理解EM算法?
具体的例子是:
假设现在有两枚硬币1和2,,随机抛掷后正面朝上概率分别为P1,P2。为了估计这两个概率,做实验,每次取一枚硬币,连掷5下,但是并不知道到底是抛的哪儿个硬币,记录下结果,如下图,希望求P1,P2:
这个时候,由于我们完全不知道,每次抛的是哪儿枚硬币,所以无法估算P1和P2,所以EM算法,会先给一个P1和P2的初值,假设初值:P1=0.7,P2=0.4,
根据现在这个初值,我们需要估计每次抛的到底是哪儿个硬币,比如第一次抛是 正正反正反,如果用的是硬币1,则硬币1抛出这个观测值的概率为:0.7 * 0.7 * 0.7 * 0.3 * 0.3=0.03087,而如果是硬币2,抛出这个观测值的概率为:0.4 * 0.4 * 0.4 * 0.6 * 0.6=0.02304
这个时候我们可以得到下表:
此时,我们可以得到,第一次使用的是硬币1的概率为: 0.03087/(0.03087+0.02304)=0.5726,硬币2的概率为 0.02304/(0.03087+0.02304)=0.4274,以此类推后如下图,
这个时候,我们怎么确定P1和P2的值呢,按照朴素的统计学概率观点,数到底正面出现的次数,占所以次数的几次,就可以得到P1和P2的概率:
以第一次举例,因为用硬币1的概率为0.5726,而第一次为三次正,两次反面,所以对于硬币1,
第一次:正面次数:0.57263=1.7178 ,反面次数:0.57262=1.1452
同理,对于硬币2: 第一次,正面次数:0.42743=1.2822 反面次数 0.42742=0.8548,依次类推,有:
所以有:P1_new=4.641662/(4.641662+4.345867)=0.516456,P2_new=6.358338/(6.358338+2.169492)=0.397087
一次迭代就完成了,现在就需要继续根据新的P1和P2值,每次抛的是硬币1还是硬币2的概率了。
完成了感性 的理解之后,我们怎么将EM算法的推导和实际的例子结合在一起呢:
如果从概率上来讲,隐变量z为抛掷的是硬币1还是硬币2,Y是我们的观测变量,P1和P2是要求解的量 θ \theta θ,
其实不管用不用EM算法,我们最终的目的是用最大似然估计,求解
θ
\theta
θ,但是显然,现在的P(Y|
θ
\theta
θ)给不出表达式,因为我们中间有一环不知道,在这里就是不知道到底每次抛的是哪儿个硬币,所以才提出了隐变量z,
将目标函数L(
θ
\theta
θ):
其中n为N个data。
但是虽然已经引入了隐变量z,我们还是无法求解
θ
\theta
θ,这种情况下,EM算法的做法是,不直接求解L(
θ
\theta
θ),而是,给L(
θ
\theta
θ)找一个可以求解的下界,通过不断的提高下届的值,从而不断的逼近L(
θ
\theta
θ)的最大值,那么L(
θ
\theta
θ)的下界是什么呢,有很多教程都有推导,推荐一个博客,逻辑非常清楚:https://blog.csdn.net/v_july_v/article/details/81708386,总的来说下界就是:
可以证明在第i次E步之后,即在第i次,根据
θ
i
θ_i
θi构建的P(Z|Y,
θ
i
θ_i
θi),这个下界Q(
θ
θ
θ)与L(
θ
θ
θ)在此点
θ
i
θ_i
θi处相等,也就是两个函数在
θ
i
θ_i
θi点是贴在一起的,此时,可以求Q(
θ
i
θ_i
θi)的最大值,得到
θ
i
+
1
θ_{i+1}
θi+1->
θ
i
θ_i
θi,然后再进行第i+1次E步,再次使下界Q(
θ
θ
θ)紧贴L(
θ
θ
θ),即整个过程如下图:
整个过程不再赘述,可以直接去看推荐的博客,证明都非常详细。
现在我们已经明确了整个EM算法的求解过程,那么就可以开始计算了
EM算法的E步,就是要求解P(z|Y, θ \theta θ)
根据贝叶斯公式:
P(z|Y,
θ
\theta
θ)=
P
(
Y
∣
z
,
θ
)
P
(
z
∣
θ
)
P
(
Y
∣
z
=
1
,
θ
)
P
(
z
=
1
∣
θ
)
+
P
(
Y
∣
z
=
2
,
θ
)
P
(
z
=
2
∣
θ
)
\frac{P(Y|z,θ)P(z|θ)}{P(Y|z=1,θ)P(z=1|θ)+P(Y|z=2,θ)P(z=2|θ)}
P(Y∣z=1,θ)P(z=1∣θ)+P(Y∣z=2,θ)P(z=2∣θ)P(Y∣z,θ)P(z∣θ)
此时,我们知道当z=1的时候:
观测到Y(正正反正反)的概率为:P(Y|z=1)=0.7 * 0.7 * 0.7 * 0.3 * 0.3=0.03087
同理,当z=2的时候,P(Y|z=2)=0.4 * 0.4 * 0.4 * 0.6 * 0.6=0.02304
这里默认了P(z=1)=P(z=2)=0.5 (个人理解)
所以有了第一次使用的是硬币1的概率为: 0.03087/(0.03087+0.02304)=0.5726,硬币2的概率为 0.02304/(0.03087+0.02304)=0.4274
到这一步,其实我们已经知道了P(z|Y,
θ
1
θ_1
θ1),也就是完成了EM算法的E步,下面是M步,根据P(z|Y,
θ
1
θ_1
θ1),求解能够使得下界Q(θ)的最大值,此处注意,在将P(z|Y,
θ
1
θ_1
θ1)带入下界Q(θ)中时,P(z|Y,
θ
1
θ_1
θ1)已经是一个固定的值,这个值确定了当前的下界函数,所以有:
此时我们希望求一个θ,使得Q(θ,
θ
1
θ_1
θ1) (表示由P(z|Y,
θ
1
θ_1
θ1)确定的下界函数),最大,我们结合上面的例子带入:
这里同样默认了P(z=1)=P(z=2)=0.5 ,然后以第一次为例,
第一次P(z=1|Y,
θ
1
θ_1
θ1)=0.5726,因为有3次正面,两次反面,所以P(Y|Z=1,
θ
θ
θ)=
P
1
3
(
1
−
P
1
)
2
P1^3(1-P1)^2
P13(1−P1)2
第一次P(z=2|Y,
θ
1
θ_1
θ1)=0.4274,因为有3次正面,两次反面,所以P(Y|Z=2,
θ
θ
θ)=
P
2
3
(
1
−
P
2
)
2
P2^3(1-P2)^2
P23(1−P2)2
然后基本就是伯努利分布的最大似然估计了:
这里的最大值可以直接用求导就能求出最大值:以P1为例:
可以看出,30.5726就是我们上面说的第一次硬币1的正面次数,20.5726就是第一次硬币1的反面次数,
所以上面这个式子可以化简为:
其中m为五次投掷,硬币1正面的次数,n为反面的次数,这里具体的可以根据上面的查表看出,m=4.641662,n=4.345867
则能求出P1=0.516456和上面用直观做法做的完全一致