EM算法学习笔记

引入

设袋子里有红白两种球,比例为p:1p。现在不知道比例值是多少,因此可以随机抽样:x1,x2...xn,每一个xi都是随机变量的随机抽样结果,并进行如下估计:p=|{xi=}|n

如果有两个袋子,各自都有红色的球和白色的球,抽取的时候先随机挑选一个袋子,设选第一个袋子的概率为w,第一个袋子中:=p:1p,第二个为:=q:1q

如果此时进行抽取,抽取到红球的概率为:P{x=}=w×p+(1w)×q,抽到白球的概率同理。

如果想要知道从第一个袋子中抽到红球的概率:P{|xi=},可以把概率乘以权重放到矩阵中:

(wpw(1p) (1w)q(1w)(1q) )

取矩阵的第一列分析,不难得出P{|xi=}=wpwp+(1w)q

此时模型的w,p,q三个参数均未知,可以使用极大似然法对其进行估计。令1代表红色,0代表白色,每个xi的密度函数为wpxi(1p)1xi+(1w)qxi(1q)1xi,如果xi=1(红色),带入上式可以发现结果就是wp+(1w)q,也就是矩阵第一列的和。

根据极大似然估计,需要把所有样本的密度函数做乘积,似然函数就是:

Πi=1n[wpxi(1p)1xi+(1w)qxi(1q)1xi],需要对其求极大值。如果按照极大似然的思路,会发现这个问题很复杂(中括号里的部分不易处理,不信你试试)。不过这个函数可以转换为如下的形式:

Πi=1n[(wp+(1w)q)xi(w(1p)+(1w)(1q))1xi],这直观上也很容易理解,因为xi只有0和1两种形式(带入xi=1 or 0试试)。对其处理的话,可以令P=wp+(1w)qQ=w(1p)+(1w)(1q),函数继续变形为Πi=1nPxiQ1xi=Πi=1nPxi(1P)1xi,对其取对数后得(Σi=1nxi)lnP+(nΣi=1nxi)ln(1P),对P求导并令导数为0,可得P=Σi=1nxin=knk为样本中1(红球)的个数,且有w(1p)+(1w)(1q)=nkn(本质上等于上面的方程)。

总结一下,刚才设计的模型(先随机选袋子,再随机选球)从极大似然估计的角度,wp+(1w)q=kn就是最佳估计,但是一个方程里含有三个未知数,所以只要三个参数满足这个方程就是一个合理的估计,即给出两个参数就可以把另一个参数解出来。

从另一个角度看问题

现在给出三个参数p(0),q(0),w(0),对于xi,要根据它的颜色判断它来自于哪个袋子(利用上面的矩阵来计算):

红球来自第一个袋子的概率:wpwp+(1w)q=ai,白球来自第一个袋子的概率:w(1p)w(1p)+(1w)(1q)=bi...同理设红球和白球来自第二个袋子的概率为ci,di,那么对于每个球,这四个概率都可以求出来,列成一张表:

x1 x2 ..
第一个-红 wpwp+(1w)q=a1
第一个-白 w(1p)wp+(1w)(1q)=b1
第二个-红 (1w)pwp+(1w)q=c1
第二个-白 (1w)(1p)wp+(1w)(1q)=d1

每一列的总和都是一样的(都是1),因为这里考虑的是后验概率,即每个球已知是红色还是白色,所以对于每一列只是把和已知颜色对应的行加起来(而非把所有的行加起来)。

因此来自于第一个袋子的概率w可以给出一个重新的估计:w(1)=Σxi=1ai+Σxi=1bin,即表中前两行相加再除以n。这个过程就是:选定w(0)为初值,根据初值计算出一个个概率值,再根据上表的概率值计算出新的w(1)

同理p(1)=Σxi=1aiΣxi=1ai+Σxi=0biq(1)=Σxi=1ciΣxi=1ci+Σxi=0di。如此可以继续迭代下去得到新的参数值,能够证明这个算法是收敛的,至少可以收敛到局部极大值(不一定是全局)

整个过程就叫做EM算法。

推广

对于高斯分布N(μ,σ2),设有K个高斯分布,从中随机抽取到的概率分别为w1,w2...wk,且满足Σi=1k=1

X的密度函数w1f1(x)+....+wkfk(x)f(x)=12πσe(xμ)22σ2

现在给出x1,...xn,如何估计出所有的μj,σj2,wi

按照极大似然的过程,max Πi=1n[Σj=1Kwjfj(xi)]等价于max Σi=1nlog(Σj=1Kwjfj(xi))。但是这样并没有对问题进行化简,所以根据前面的结果,给出一组参数μj(0),σj2(0),wi(0),考虑建一个表:

高斯分布 x1 x2 ..
1 w1f1(x1)w1f1(x1)+...+wkfk(x1)=w11 w1f1(x2)w1f1(x2)+...=w21 ..
2 w2f2(x1)w1f1(x1)+...=w12 .. ..
.. .. .. ..
k .. .. ..

这样就又可以进行估计了。同样,每一列的总和是1,则对于w1有一个很自然的估计:w1(1)=Σi=1nwi1n,其余的w值同理。现在看均值和方差:

μ1(1)=Σi=1nwi1xiΣi=1nwi1,注意这里分布是对每一行的wi1求和,并不是1。σ1(1)=Σi=1nwi1(xiμ1(1))2Σi=1nwi1

迭代若干次以后就会得到比较合适的高斯分布了。

对于二维高斯分布,其参数也都可以用EM算法进行估计。

需要注意的是,这里的K是超参数,需要人为给定。

posted @   脂环  阅读(53)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
历史上的今天:
2020-04-04 Codeforces Round #631 (Div. 2) B. Dreamoon Likes Permutations(排列组合)
2020-04-04 Codeforces Round #631 (Div. 2) A. Dreamoon and Ranking Collection(水题)
点击右上角即可分享
微信分享提示
主题色彩