EM算法-原理详解
Posted huangyc
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了EM算法-原理详解相关的知识,希望对你有一定的参考价值。
1. 前言
概率模型有时既含有观测变量(observable variable),又含有隐变量或潜在变量(latent variable),如果仅有观测变量,那么给定数据就能用极大似然估计或贝叶斯估计来估计model参数;但是当模型含有隐变量时,需要一种含有隐变量的概率模型参数估计的极大似然方法估计——EM算法
2. EM算法原理
EM算法称为期望极大值算法(expectation maximizition algorithm,EM),是一种启发式的迭代算法。
EM算法的思路是使用启发式的迭代方法,既然我们无法直接求出模型分布参数,那么我们可以先猜想隐含数据(EM算法的E步),接着基于观察数据和猜测的隐含数据一起来极大化对数似然,求解我们的模型参数(EM算法的M步)。
可以通过K-Means算法来简单理解EM算法的过程。
E步:
在初始化K个中心点后,我们对所有的样本归到K个类别。
M步:
在所有的样本归类后,重新求K个类别的中心点,相当于更新了均值。
3. EM算法公式
对于(m)个样本观察数据(x=(x^{(1)},x^{(2)},...x^{(m)}))中,找出样本的模型参数( heta),极大化模型分布的对数似然函数如下,假设数据中有隐含变量(z=(z^{(1)},z^{(2)},...z^{(m)}))
[
L( heta) = sumlimits_{i=1}^m logP(x^{(i)}| heta)
]
加入隐含变量公式变为如下,注意到下式中(Q_i(z(i)))是一个分布,因此(sum Q_i(z(i))logP(x(i),z(i)|θ))可以理解为(logP(x(i),z(i)|θ))基于条件概率分布(Q_i(z(i)))的期望。
[ L( heta) = sumlimits_{i=1}^m logsumlimits_{z^{(i)}}Q_i(z^{(i)})P(x^{(i)},z^{(i)}| heta);;;s.t.sumlimits_{z}Q_i(z^{(i)}) =1;;;;;(1) ]
根据Jensen不等式,(1)式变为(2)
[
E [f left ( g(X)
ight ) ] ge f left (E[g(X)]
ight )
]
[
L( heta) = sumlimits_{i=1}^m logsumlimits_{z^{(i)}}Q_i(z^{(i)})P(x^{(i)},z^{(i)}| heta)gesumlimits_{i=1}^m sumlimits_{z^{(i)}}Q_i(z^{(i)})logP(x^{(i)},z^{(i)}| heta);;;s.t.sumlimits_{z}Q_i(z^{(i)}) =1;;;;;(2)
]
4. EM算法流程
输入:观察数据(x=(x^{(1)},x^{(2)},...x^{(m)})),联合分布(p(x,z| heta)), 条件分布(p(z|x, heta)), EM算法退出的阈值(gamma)。
- 随机初始化模型参数( heta)的初值( heta^0)。
- E步:计算联合分布的条件概率期望
[ heta^{j+1} = arg max limits_{ heta}L( heta, heta^{j}) ]
[ L( heta, heta^{j}) = sumlimits_{i=1}^msumlimits_{z^{(i)}}Q_i(z^{(i)})log{P(x^{(i)},z^{(i)}| heta)} ]
- M步:极大化(L( heta, heta^j)),得到(θ^{j+1}):
[ heta^{j+1} = arg max limits_{ heta}L( heta, heta^{j}) ]
- 重复2,3两步,直到极大似然估计(L( heta, heta^j))的变化小于(gamma)
5. 总结
如果我们从算法思想的角度来思考EM算法,我们可以发现我们的算法里已知的是观察数据,未知的是隐含数据和模型参数,在E步,我们所做的事情是固定模型参数的值,优化隐含数据的分布,而在M步,我们所做的事情是固定隐含数据分布,优化模型参数的值。
本节介绍的EM算法是通用的EM算法框架,其实EM算法有很多实现方式,其中比较流行的一种实现方式是高斯混合模型(Gaussian Mixed Model)。
(欢迎转载,转载请注明出处。欢迎沟通交流: [email protected])
以上是关于EM算法-原理详解的主要内容,如果未能解决你的问题,请参考以下文章