算法_EM算法

基于最大似然估计(交叉熵)的模型,模型中存在隐变量,则用EM(Expectation maximization algorithm)算法做参数估计。

一、基本原理

算法的原理,强烈推荐直接看《参考资料2》,简明易懂。

无监督的K-means、GMM算法,就属于包含了隐变量的例子。又如:假设有三枚硬币A、B、C,每个硬币正面出现的概率是π、p、qπ、p、q。进行如下的掷硬币实验:先掷硬币A,正面向上选B,反面选C;然后掷选择的硬币,正面记1,反面记0。

简单来说,就是先假定两枚硬币各自正面的概率,推算某个实验结果为A\B各自的概率(E),然后基于此,更新两枚硬币各自正面的概率(M),不断迭代。

二、应用场景

K-means算法可以纳入EM框架去理解,那么对应的收敛性即与EM的收敛性采用相同的方式证明。

求解参数的极大似然估计,由于隐变量的存在或直接对连乘的似然函数求导太复杂,可用EM算法来求解。

EM算法有意思的地方在于,既然由于隐变量的存在,无法计算,索性做个假定,将不完全数据补全成完全数据,解决了鸡生蛋、蛋生鸡的矛盾。在数学上,当无法直接对某个含参式子求极大值时,考虑对它的下界求极大值,当确定下界取极大值的参数时也能让含参式子值变大,也就是不断求解下界的极大值逼近求解对数似然函数极大化(李航.《统计学习方法》)

三、局限性

收敛性受初始化值的影响,不同初始化值可能会得到完全不同的结论,类似深度学习的初始化问题,可以参阅《参考资料3》,一般采用He initialization或Batch Normalization。

考虑到EM算法会陷入局部最优、不收敛,要设置停止条件。

附,参考资料

1、再论EM算法的收敛性和K-Means的收敛性,https://blog.csdn.net/u010161630/article/details/52585764

2、如何感性地理解EM算法?https://www.jianshu.com/p/1121509ac1dc

3、【机器学习算法系列之一】EM算法实例分析,https://chenrudan.github.io/blog/2015/12/02/emexample.html

你可能感兴趣的:(算法_EM算法)