EM算法 Expectation-Maximization,期望最大算法
E-step:求期望,M-step:求极大
EM算法就是从观察样本得到的是样本的分布情况的算法,训练得到的模型逼近真实分布
例子:100个学生的身高
比如某个学生身高1.7(样本),那么在我们模型下,选择1.7左右的同学的时候我们会希望抽到这个学生,
抽到这个学生的可能性越大,那么我们的模型拟合的也就越好,越接近真实的情况
也就是
我们根据样本的情况,在有这个样本的情况下,是这个模型会表达和这个样本一致的可能性是多少
也就有了
那么我希望在100个学生下我都能把相应的学生抽到,因此就用概率的乘积来表达我们模型总体的情况
于是我们就有了我们的极大似然函数
模型的参数逼近真实情况下的时候,能够出现样本情况的可能性也就越大
例如 一个选手某一场(数据中有多场,每场水平可能都不同,但里面有一个分布的规律)发挥的水平是0.7 0.8 0.7 那么我们模型综合所有数据拟合这个选手发挥的水平,训练出来发现,出现0.7水平的是接近0.65的可能性,出现0.8的可能性是0.3 ,那么我们模型出现该样本情况的可能性也就很大了
(可能是0.7 0.7 0.7 又或者是0.8 0.7 0.7之类的,比较接近)
那这个时候模型训练的效果就是好的
也就是说,模型能够有较大几率出现样本情况,也就是模型的分布和真实的分布就很像了
所以EM算法的问题就是:
那么对于EM算法,不仅需要考虑数据中含有单一的分布(这种比较好求解,即使不用算法也能解,上面只是为了方便解释EM算法),还需要考虑更贴合实际情况——数据中有多个分布
还是以身高的例子
这次100个学生里有男生也有女生,那么男女分布很可能就是不一样的(有这样的假设),那么就不能直接求解,需要EM算法去求解男生的身高分布是怎么样的,女生的身高分布又是怎么样(但是我们不知道数据是从男生来的还是女生来的,但是如果两个分布融合在一起就有像两个不同的高斯分布融合在一起的样子,不像单一的高斯分布),同时这也就是个隐变量问题
因此
用Z来标记分布,最大似然函数也就需要去考虑来自不同分布这个问题了
我们要求解最大似然函数最大,通常是对其求偏导,求=0的位置是吧(梯度上升 ,偏导=0位置为最大值)
但是这个并不能直接求解(里面还有一个求和)
所以我们只能利用迭代,去逼近最优解
在表达数学公式之前,我们先利用一个例子来了解求解的过程
首先我有两枚硬币,我想知道其在正面的几率,但我们只有用他们得到样本数据(最开始一堆H、T那里)
(假设每个样本只用一个硬币来抛,但是什么时候用并不知道)
那我们按照常理,可以先假设一个几率(A:0.6 B:0.5)
(初始假设的几率如果和实际相差比较大就需要比较多的迭代,模型训练到最后可以发现,两个几率基本不变的时候就是说明收敛了,最后得到的这个几率很可能就是真实几率)
对于第一个样本,出现了5次H(正面),5次T(反面),
那么我们来看看以我们假设的情况下,A和B各自出现5次正5次负的几率是多大呢,那我们就得到pa 和 pb
再来看哪个硬币出现这种情况的可能性更大呢 A硬币概率是0.45 B硬币概率是 0.55
那么在第一个样本的情况下,A的期望是0.45*5 =2.2H 0.45*5=2.2H 同理B的期望
之后后面几个样本同样是在A:0.6 B:0.5 计算在H、T的期望
最后统计各自H和T ,更新出现H的概率是多少 (A:0.71 B:0.58)
那么这个(A:0.71 B:0.58) 又去做下一次迭代
每个概率更新需要考虑的是所有样本的情况,所以是每跑完所有样本一次才更新参数,更新参数直到参数趋于稳定
这个就是我们以硬币作为例子来简单讲解一下迭代的过程
下面我们用数学公式来表达过程
关于凸函数,在同济版数学中这是凸函数,看的是图像下部,那么凹函数是和上图相反的
凸函数满足上面的不等式,凹函数就是满足小于等于
为什么不等式成立可从上面左图看到,E(x)=(a+b)/2
Q(z)是z的分布函数,那么 概率值*变量 = 该变量的期望
因此我们可以知道 引用jensen是为了把累和的的符号都移去外面方便求解
优化下界的时候因为大于等于的缘故,只需迭代直到下界有最大值,也就是目标函数收敛(最高点)
那这个点很明显是当下界取到最大值时,在能取等号条件下的参数值
Q(z)是z的分布函数,那么所有的数据中的分布的和肯定为1
(例如 男生(z=1)占了0.8,女生(z=0)占了0.2 都是对于总体数据而言)
p是含参数的概率值,那么就下来就需要对Q(z)求解(知道Q(z)的含义 后面迭代就只需要更新参数即可)
因此得到Q(z)代表含义 (本来是z的分布函数)
(其实也就是我们硬币例子中的 这个样本是A抛的可能性 还是 B抛的可能性)
那么此时我们知道了下界中除了参数以外的值了,之后就可以去迭代参数求出最优解
因此就有EM算法的流程:
最后在用例子来结合理解一下