EM算法-硬币实验的理解
时间 2021-08-15
标签
机器学习
EM算法
硬币实验
EM算法-使用硬币实验的例子理解
EM算法,即最大期望算法(Expectation-Maximization algorithm, EM),是一类通过迭代进行极大似然估计(Maximum Likelihood Estimation, MLE)的优化算法 ,通常作为牛顿迭代法的替代用于对包含隐变量(latent variable)或缺失数据(incomplete-data)的概率模型进行参数估计 。
EM算法的标准计算框架由E步(Expectation-step)和M步(Maximization step)交替组成,算法的收敛性可以确保迭代至少逼近局部极大值 。
由于迭代规则容易实现并可以灵活考虑隐变量 ,EM算法被广泛应用于处理数据的缺测值 ,以及很多机器学习算法,包括高斯混合模型和隐马尔可夫模型的参数估计。
本文通过一个实例讲讲EM算法在具体实例中的使用和体现。
一、硬币实验概述
- 首先要明确硬币实验本身的问题是
两块硬币A、B与我们熟知的硬币不同,它们形状不是均匀分布的,所以抛出正面的概率并不是简单的50%,现在我们想知道这两块硬币分别抛出正面的概率
- 探究的方法:做实验,将A硬币抛
n次,记正面次数为
nh,在n足够大情况下的,硬币A抛出正面的概率为实验出现的频率,即
pA=nnh。B硬币同理。
- 遇到的问题:研究员做实验的时候对A、B硬币分别做实验,但是他忘记记录他每次抛的时候抛的硬币是A还是B了。也就是说我们只有一堆正面、反面的事件记录,但是我们不知道发生该事件的硬币是A还是B,问怎么求原来的问题。
二、解决方案
1. 情况a:可以观测到实验数据中每次选择的是A还是B
解:直接计算实验数据,A硬币、B硬币出现正面的频率作为概率即可,即
θA=24/(24+6)=0.80θB=9/(9+11)=0.45
2. 情况b:实验数据对A和B的选择是未知的。
-
算法思想:
此处引入了隐变量:硬币的种类
Z
使用EM算法,我们首先需要假定我们运算的目标的初始值
θ^A(0)=0.6θ^B(0)=0.5
之后使用上述值对
Z的分布做最大似然估计(这也就是E步)。
估计出
Z后,我们使用z去对
θ进行最大似然估计,得到新的
θ(也就是M步)
重复上述E步、M步,直到
θ即为我们的解
-
详细解决过程:
E步
我们以第一轮掷硬币为例(其他类比做同样的运算):
HTTTHHTHTH即5次朝上,5次朝下
如果是硬币A,出现上述情况的概率为
pA=θA5(1−θA)5=0.0007962624
如果是硬币B,出现上述情况的概率为
pB=θB5(1−θB)5=0.0009765625
那么在第一轮掷硬币时,该硬币为A的概率为
pA/(pA+pB)=0.45
该硬币为B的概率为
pB/(pA+pB)=0.55
所以五轮计算下来结果如下表:
轮次 |
是硬币A的概率 |
是硬币B的概率 |
1 |
0.45 |
0.55 |
2 |
0.80 |
0.20 |
3 |
0.73 |
0.27 |
4 |
0.35 |
0.65 |
5 |
0.65 |
0.35 |
那么根据该表,我接下来要对
θ进行求解。与第一题的情况类似,我们首先使用这种概率,计算出每轮如果是A的期望,以及每轮是B的期望,然后直接用算出的值模拟A、B硬币出现正面的频率。
M步
轮次 |
若为硬币A出现的情况 |
若为硬币B出现的情况 |
1 |
2.2H,2.2T |
2.8H,2.8T |
2 |
7.2H,0.8T |
1.8H,0.2T |
3 |
5.9H,1.5T |
2.1H,0.5T |
4 |
1.4H,2.1T |
2.6H,1.9T |
5 |
4.5H,1.9T |
2.5H,1.1T |
此时分别计算硬币A、硬币B出现正面的概率,则为新的
θ值。即
θ^A(1)=(21.3)/(21.3+8.6)≈0.71θ^B(1)=(11.7)/(11.7+8.4)≈0.58
之后重复E步、M步,最后收敛至
θ^A=0.80θ^B=0.52
三、总结
也就是说,我们在求解我们的最终结果时发现有隐变量导致无法计算。我们可以先假设我们知道结果,然后通过结果求出隐变量取值,再用该隐变量作为已知条件求出结果。这个过程第一次看会觉得有技巧性,我们可能会去想这样做科学吗?怎么保证最后迭代的结果是我们想要的,或者说迭代结果趋于不变呢,这就要看EM算法本身收敛性的证明了。(主要用到了琴生不等式,这里不进行推导)