EM算法推导可以根据Andrew NG的,他的推导逻辑性非常强,没有考虑概率模型,但是推导完了还是觉得云里雾里。李航老师的是根据概率模型过来,意义比较清晰,但是!!!书上有bug!吐血........还有就是书上的表达有点不适合我们通常的定义法。
感谢大牛为我解疑惑:
http://www.cnblogs.com/Determined22/p/5776791.html
1 EM算法
EM是一种迭代算法,用于含有隐变量的概率模型参数的极大似然估计,或极大后验概率估计。EM算法每次迭代由两步组成:(1)E步,求期望(expected)的下线;
(2)M步,求期望极大值。GMM是EM的一种应用。
如果没有隐变量,可直接用极大似然估计(最大熵模型),或极大后验概率(朴素贝叶斯)估计模型参数。
E步:计算期望
是个能求出来的值,表示给定了和观测数据Y求出的。
M步:求使最大的参数,确定第i+1次迭代的参数的估计是
2 EM通俗理解
什么是含有隐变量的概率模型参数?
当输入的数据不是来源于一个概率分布模型的时候,就涉及到含有隐变量的概率模型。比如身高和性别问题,如果告诉你身高X=x=1.65,这个人是男还是女(y)?。因为这个是概率模型,所以如果p(男|X=1.65)>p(女|X=1.65),那这个就是男生可能性大。原来遇到这种问题,就是假设身高服从一定的分布规律,如正态分布,那我建立模型,根据极大似然估计估计出正态分布的均值和方差,然后把x带入求的概率。但这在这个问题中显然不合理,因为男生和女生的身高分布是不一样的,男生的身高是一个正态分布,女生的身高也是一个正态分布,二者的均值和方差肯定有区别。
所以我们不得不判断是来自于男生还是女生,确定来源于哪个模型,才能用极大似然的方法估计。ok,导出公式:
假设模型参数为,Y为观测数据,未观测数据,则观测数据的似然函数:
(表示模型参数下的联合概率值P(Y),表示参数下条件概率)
3 EM算法导出(基于极大似然估计的)
面对一个含有隐变量的概率模型,目标是极大化观测数据X关于参数的对数似然函数:
3.1 建立L的下界(jensen不等式)
因为EM算法是迭代算法,我们希望每次迭代都能让L增大,即新估计的参数和第i次迭代估计的参数做差值:
这里引入jensen不等式定理,对于凹函数f,,凸函数则相反
log是凸函数,然后根据jensen不等式,我们构造一下f(E(x))。
(这里插一句李航老师的那本书有点问题!!!想了半天总在想为什么是这样?后面才知道他那错了。)
为了构造f(E(x)),我们选择,因为,则:
根据jensen不等式:
又因为,
所以
3.2 最大化下界
是的下界。任何可以使增大的,也可以使L增大,为了让L尽可能大,就要让它的下界B尽可能大,即:
排除不含变量θ的表达式,定义Q函数:
这个时候可以用求导的方法来获得让Q最大的θ了。
4 EM的应用--GMM高斯混合模型
高斯混合模型:假设存在K个高斯模型(正态分布)的数据,如男女身高问题则K=2,数据来自第k个模型的概率为,则GMM表示为:
,是第k个高斯分布密度,
步骤:
(1)明确隐变量,写出完全数据的对数似然函数:
(2)E步,确定Q函数
(3)M步,最大化Q函数