本文尝试着从解题的思路来讲解EM算法。从一个多分类问题入手,然后讲解朴素的解题思路,逐步过渡到EM算法。构建完EM算法给出了算法合理的推导,文章的亮点在于对问题提出,和从朴素算法到理论算法的导引。
问题所在:
已知有一堆样本,这堆样本点是属于K个高斯分布,现在可以得到样本点的坐标数据;求这k个高斯分布概率函数。
进阶问题:
求样本中每个点属于每个高斯分布的概率,以及属于哪个高斯分布概率更大?
解题思路:
1、 如果可以知道每个样本属于哪个高斯分布,那么对属于同一个高斯分布的样本值加和求均值即可得到高斯分布抽样均值μ,以及高斯分布的方差系数σ,题目可解
2、 如何可以知道样本属于哪个高斯分布呢?根据高斯分布的特性,在6σ范围内99%可以涵盖99%的样本,且在6σ范围样本概率值比较大。是否可以通过这个特性,对样本进行确认属于哪个高斯分布?
3、 通过以上分析,我们可以把样本值带到K个高斯分布的方程中,求解在每个高斯分布下样本的概率值,选择在高斯分布下概率值比较大的作为第k个高斯作为样本的分布。然k个高斯分布是未知的,我们要如何求得样本的在不同高斯分布下的概率密度呢?
4、 是否我们可以先随意的假设K个高斯分布的参数,让高斯分布已知,然后用已知的高斯分布和样本点数据,求解该样本点归属于哪个假设的高斯分布;然后通过得到假设高斯分布下样本点的数据,来重新求这群样本下高斯参数;思路是否可行呢?
5、 根据朴素猜想思想,假设我们假定的k个高斯样本参数如果和实际样本分布是一一对应的,也就是猜想和实际是完全吻合的,那么根据猜测高斯参数得到的样本群求解得打的高斯分布参数和实际应该差别不大。如果参数估计和实际差别比较大,那么估计得高斯分布和根据估计参数得到的样本群求得的高斯参数有较大差别,可以利用新高斯参数作为样本参数,重复以上过程直到收敛到实际高斯分布参数。然,这种方法,是否会手链呢?
6、 样本点事多个高斯分布的混合(近似于多个高斯的线性叠加),因为高斯分布的非凸性,近似多个高斯线性叠加后分布应该还是非凸的;如果对高斯分布进行log处理,分布会变成近似凸函数,那么对于混合高斯即近似的线性高斯叠加做log处理,根据凸函数线性叠加仍为凸函数性质;混合高斯log化后应该是近似凸函数,可以近似收敛的。
7、 根据以上的朴素的思想推导,我们可以:
1) 假设k个高斯分布的参数,假定高斯分布已知
2) 对每个样本利用已知的k个高斯分布求解概率密度,
3) 比较在k个高斯下的概率密度,去最大值;得到样本属于哪个高斯
4) 利用得到的样本数据,求解高斯参数
5) 不停迭代以上2)-3)步骤,直到参数收敛到一个值
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
思路2:
1、 根据上面分析,可以假设k个高斯分布的参数已知,然后利用样本在每个高斯分布下概率密度求得概率最大值,即样本属于这个高斯,然后用得到的样本重新估算参数,如此重复直到参数收敛。
2、 其实在概率学派每个样本应该是既可以属于第1个也可以属于第2个……第k个,只是属于每个的概率不同罢了;根据多项式概率分布一个样本可以属于k个高斯分布,它的概率应该等于,属于每个高斯稳步概率的乘积。
3、 按照上面分析的思路,一群样本属于一个高斯分布,99%以上概率会在高斯分布6σ范围内,且每个样本概率较高;对于一群样本,那么如果每个样本在实际高斯分布的参数下,所有样本概率乘积会达到最大;(有点绕)可以这么理解,给定概率分布参数情况下,求得在给定高斯分布下的概率样本概率最大值
4、 按照以上思路,就可以利用极大似然估计,利用似然概率最大得到在给定当前k个高斯分布参数条件下,样本群最合适的高斯参数
5、 根据给定高斯参数,样本分类数据重新求新的参数;重复2)-4)步骤直到参数收敛
通过上面凭直觉的分析,得到了这么一个梯度上升的求解方法;下面我们来建立模型对方法做理论推导。
随机变量X是K个高斯分布函数混合而成,取各个高斯分布的概率为π1π2... πK,第i个高斯分布的均值为μi,方差为Σi。弱观测的随机变量X的一系列样本x1,x2,...,xn,试估计参数π,μ,Σ。
建立目标函数:
对数似然函数:
目标函数:
EM算法的提出
假定有训练集:
包含m个独立样本,希望从中找到该组数据的模型p(x,z)的参数。
建立目标函数——极大似然估计
取对数似然函数
m——每个样本
θ——高斯分布参数
Ζ——数据包含几个类
这里,z是隐随机变量,直接找到参数的估计是很困难的。我们的策略是建立l(θ)的下界,并且求该下界的最大值;重复这个过程,直到收敛到局部最大值。(其实这就是一个把一步求导找到极大值问题,转化为阶梯逼近梯度上升的近似求解的过程)
利用Jensen不等式来确定对数极大似然函数的下届,然后利用梯度上升法逐步的逼近真实值。要利用Jensen不等式,就得先构造一个Jensen不等式。
令Qi是z的某一个分布,Qi≥0,有:
构造好Jensen不等式,下一步就是寻找尽量紧的下界:
为了使等号成立
在这里构造Jensen不等式中加入的Q函数,可以理解为样本点在给定参数下符合某个高斯分布函数的近似。如果P概率和Q函数越符合取等号可能越大。
好的经过上面的讲解和分析,对EM的理论原理就讲完了,也证明了咋们前面直观的思路是可行的,并且在数学上证明了算法是会收敛可以工作的。(梯度上升法)下面我们将从伪代码形式讲解EM算法的结构。
EM算法整体框架:
随机变量X是有K个高斯分布混合而成,取各个高斯分布的概率为φ1,φ2...φK,第i个高斯分布的均值为μi,方差为Σi。若观测到随机变量X的一系列样x1,x2...xn,试估计参数φ,μ,Σ。
E-step
利用已知高斯分布参数,求解每个样本属于j分布的概率:
M-step
将多项式分布和高斯分布的参数代入,求得对数极大似然函数:
对对数极大似然求偏导,求得在已知参数下的最好的近似
令上式等于0,解的均值:
方差求偏导,等于0:
多项式分布参数(属于某个类概率权值)求解:
考察M-step的目标函数,对于φ,删除常数项
得到
由于多项分布的概率和为1,建立拉格朗日方程
注: 这样求解的φi一定非负,所以,不用考虑φi≥0这个条件
总结以上:
对于所有的数据点,可以看作组份k生成了这些点。组份k是一个标准的高斯分布,利用上面的结论:
例子: