上面的学生属于男生还是女生我们称之为隐含参数,女生和男生的身高分布参数称为模型参数。 EM 算法解决这个的思路是使用启发式的迭代方法,既然我们无法直接求出模型分布参数,那么我们可以先猜想隐含参数(EM 算法的 E 步),接着基于观察数据和猜测的隐含参数一起来极大化对数似然,求解我们的模型参数(EM算法的M步)。由于我们之前的隐含参数是猜测的,所以此时得到的模型参数一般还不是我们想要的结果。我们基于当前得到的模型参数,继续猜测隐含参数(EM算法的 E 步),然后继续极大化对数似然,求解我们的模型参数(EM算法的M步)。以此类推,不断的迭代下去,直到模型分布参数基本无变化,算法收敛,找到合适的模型参数。 一个最直观了解 EM 算法思路的是 K-Means 算法。在 K-Means 聚类时,每个聚类簇的质心是隐含数据。我们会假设 K 个初始化质心,即 EM 算法的 E 步;然后计算得到每个样本最近的质心,并把样本聚类到最近的这个质心,即 EM 算法的 M 步。重复这个 E 步和 M 步,直到质心不再变化为止,这样就完成了 K-Means 聚类。
http://ai.stanford.edu/~chuongdo/papers/em_tutorial.pdf
假设有两枚硬币A、B,以相同的概率随机选择一个硬币,进行如下的掷硬币实验:共做 5 次实验,每次实验独立的掷十次,结果如图中 a 所示,例如某次实验产生了H、T、T、T、H、H、T、H、T、H (H代表正面朝上)。a 是在知道每次选择的是A还是B的情况下进行,b是在不知道选择的是A还是B的情况下进行,问如何估计两个硬币正面出现的概率?CASE a已知每个实验选择的是硬币A 还是硬币 B,重点是如何计算输出的概率分布,这其实也是极大似然求导所得。 上面这个式子求导之后发现,5 次实验中A正面向上的次数再除以总次数作为即为 ,5次实验中B正面向上的次数再除以总次数作为即为 ,即:CASE b由于并不知道选择的是硬币 A 还是硬币 B,因此采用EM算法。 E步:初始化和 ,计算每个实验中选择的硬币是 A 和 B 的概率,例如第一个实验中选择 A 的概率为:计算出每个实验为硬币 A 和硬币 B 的概率,然后进行加权求和。 M步:求出似然函数下界 , 代表第 次实验正面朝上的个数, 代表第 次实验选择硬币 A 的概率, 代表第 次实验选择硬币B的概率 。针对L函数求导来对参数求导,例如对 求导:求导等于 0 之后就可得到图中的第一次迭代之后的参数值:当然,基于Case a 我们也可以用一种更简单的方法求得: 第二轮迭代:基于第一轮EM计算好的 , 进行第二轮 EM,计算每个实验中选择的硬币是 A 和 B 的概率(E步),然后在计算M步,如此继续迭代......迭代十步之后 引用文献:1.《从最大似然到EM算法浅解》(https://blog.csdn.net/zouxy09/article/details/8537620)2. Andrew Ng 《Mixtures of Gaussians and the EM algorithm》3. 《What is the expectation maximization algorithm?》http://ai.stanford.edu/~chuongdo/papers/em_tutorial.pdf