EM算法学习总结
最大似然估计:
对“模型已知,参数未知”的情况对参数估计,可以使用最大似然估计的方法进行。假如已知男生和女生的身高的分布都是服从正态发分布,分别获得100个女生和100个男生的身高数据,利用最大似然估计的方法,可以估计得到这两个正态分布的均值和方差。最大似然估计得一般步骤如下:
1、根据模型,构建似然函数;
2、求似然函数的对数似然函数;
3、对估计的参数进行求导;
4、令导数为0,求解参数;
举个例子如下:如果已知男生的身高服从正态分布(但正态分布的均值和方差都不知道),现在获得男生身高的100个样本,考虑怎么估计均值和方差这两个参数的问题。
具体过程如下:
EM算法
但是当另外一种情况出现时,这种用最大似然的求法就不是用了。如:给定200个男女身高的样本,但不知道每个样本来自于男生或是女生,要从这200个样本里估计出男女生正态分布的参数,就要用到EM算法,即EM算法适用于具有隐藏变量的最大似然的参数估计。
还是上面男女生身高的例子,当不知道样本是男生女生时u,写出的似然函数中,如下:
写出对数似然函数,下一步原本是求导,但会发现log函数有一个加和,求导困难,从而导致利用最大似然函数求解参数变得不可行,转而利用EM算法求导参数。
其实:EM也是去找最大似然的参数,唯一的不同是这次给出的数据中存在缺失,需要你在一批的缺失的数据中用最大似然的方法估计参数
举例说明所谓的缺失数据是指:不知道每个数据的所属的类别是什么,不知道每个数据点所属的分布是哪个。
那EM算法是怎么做的呢
当知道每个样本属于哪一个类别时,就可以用最大似然的方法估计出参数;当知道参数时,就可以知道每个类别来源于哪个类别,这是一个相互连接循环的过程。既然是这样一种无限循环嵌套的过程,那为什么不从一个点开始进行循环呢?EM就是这样做的,先从一个点开始循环迭代,而迭代的过程中要使得最后的目标函数能一直保持增大即可。
那EM算法是怎么保证每次迭代的过程,迭代步骤中的t+1会比迭代步骤中的t的似然函数单调递增的呢?,这个是可以用数学进行严格证明的。
假设手中有m个样本,似然函数构建如下:
由于其中有隐藏变量的存在,log里存在着一个加和,直接求导会很复杂,可以先找这个似然函数的一个下界,当最大化这个下界时,就可以最大化原来的似然函数。至于这个下界的寻找,需要用到一个叫Jensen不等式的东西:
如果f是凸函数,X是随机变量,那么:E[f(X)]>=f(E[X]),特别地,如果f是严格凸函数,当且仅当X是常量时,上式取等号。当f是凹函数时,不等号方向要改变。
这个图是Jensen不等式的一个形象表示。
利用Jensen不等式,获得最大似然函数的一个下界如下:
第二行中的等号是分子分母同时乘上一个Q(zi)的常数,第三行的不等式是将Q(zi)看成是第i个样本来自于第(zi)个分布的概率,所以 可以看成是
的一个期望,利用Jensen不等式,就可以得到第三行的不等式。
而根据J恩森不等式等号成立的条件,只有当 是常数时,等号才能成立,即
即有: 又因为:
,所以有:
可以有很多种选择,只有当
满足上面那个式子的时候,等号才可以成立,,即求得似然函数的一个下界,但这个下界是在参数
固定的情况下确定下来的,还可以调整
,使这个下界取最大值。
M步:由于 上面的下界是在参数 固定的情况下求得,还可以在参数
固定的情况下,最大化这个下界,即M步:
证明EM算法最后面会收敛:
第一步:是利用了Jensen不等式,只有当 更新到(t+1)时,等式才有可能成立。
第二步:用的是M步的定义
可以证明t+1步中的似然函数是会比t步中的似然函数更大的,固是单调递增
EM算法步骤:
随机初始化参数
E步骤:根据参数初始值或上一次迭代的模型参数来计算出隐性变量的后验概率,其实就是隐性变量的期望。作为隐藏变量的现估计值:
M步:最大化似然函数,获得参数theta
总结
(1)、EM算法是求似然函数参数最大化的一种方法,但由于存在隐变量,似然函数中有加和的log计算,直接求导太困难;
(2)、EM算法是迭代求最优的过程,通过迭代提高下界的最大值,去近似逼近似然函数的最大值;
(3)、E步可以看成是获得似然函数的紧密下界,M步可以看成是将这个下界求极值的过程;
(4)、迭代的过程中可以保证,经过一个完整的E步和M步后,似然函数都会比上一个时刻有提高,所以迭代是可以最终得到最优解的;但由于是梯度求极值,只能得到局部最优解,有可能得不到全局最优解;不同的theta初始值会得到不同的结果;
(5)、另外一种直观的理解是:初始化的theta没有考虑数据的分布,而通过这个theta可以估计出每个样本属于哪个隐藏变量的期望,根据这个期望再结合最大似然函数可以获得新的theta,新的theta由于考虑了数据的分布,更能分映出数据的真实情况,再利用这个稍微好一点的theta估计隐藏变量,再最大似然,最后可以得到更加好的theta,最后会收敛到一个比较好的theta值。