机器学习算法(八):EM算法
2015-08-15 16:52
197 查看
EM(Expectation Maximization)算法
算法简介
概率模型有时既含有观测变量,又含有隐变量或潜在变量。如果概率模型的变量都是观测变量,那么给定数据,可以直接用极大似然估计法,或贝叶斯估计法估计模型参数。但是,当模型含有隐变量时,就不能简单地使用这些估计方法。EM算法就是含有隐变量的概率模型参数的极大似然估计法,或极大后验概率估计法。EM算法是一种迭代算法,每次迭代有两部分组成:E步,求期望;M步,求极大。一般地,用Y表示观测随机变量的数据,Z表示隐随机变量的数据。Y和Z连在一起称为完全数据,观测数据Y又称为不完全数据。假设给定观测数据Y,其概率分布为P(Y|θ)P(Y|\theta),其中θ\theta是需要估计的参数,那么不完全数据Y的似然函数是P(Y|θ)P(Y|\theta),对数似然函数L(θ)=logP(Y|θ)L(\theta)=log P(Y|\theta);假设Y和Z的联合概率分布是P(Y,Z|θ)P(Y,Z|\theta),那么完全数据的对数似然函数是logP(Y,Z|θ)log P(Y,Z|\theta)。
极大似然估计(Maximum Likelihood method)
极大似然估计是用于估计概率模型中参数的最常用的方法。令X1,...,XnX_1,...,X_n是概率密度函数f(x;θ)f(x;\theta)一组相互独立的随机变量,则似然函数被定义为Ln(θ)=∏i=1nf(Xi;θ)L_n(\theta) = \prod _{i=1}^n f(X_i;\theta)
对数似然函数被定义为ln(θ)=logLn(θ)l_n(\theta) = log L_n(\theta)
似然函数实际上是数据的联合密度,只不过我们将其视为参数的函数。事实上它并不是密度函数,以为它的积分不为1。
θ̂ n\hat\theta_{n}被定义为极大似然估计量,是极大化Ln(θ)L_n(\theta)之后θ\theta的值。注意到,极大化ln(θ)l_n(\theta)与极大化Ln(θ)L_n(\theta)的效果是一样的,通常前者的计算会更为简单一些。而且在计算时,通常会忽略掉常数值。
在模型的一些特定条件下,极大似然估计量有一些非常好的特性:
(1) 极大似然估计量依概率收敛于所估计参数的真实值,即θ̂ n−→Pθ∗\hat\theta_{n} \xrightarrow{P} \theta _{*};
(2) 如果θ̂ n\hat\theta _{n}是θ\theta的极大似然估计量,那么g(θ̂ n)g(\hat\theta_{n})是g(θ)g(\theta)的极大似然估计量;
(3) (θ̂ −θ∗)/sˆe→N(0,1)(\hat\theta - \theta_{*})/\widehat se \rightarrow N(0,1),其中sˆe\widehat se为标准差的估计值;
(4) 在所有估计量中,极大似然估计量是具有最小方差的。
在实际问题中,模型可能非常的复杂,极大似然估计可能并不是最优的,以上的四个性质有可能也不成立。例如,概率密度函数不是平滑的情况。
EM算法的推导
为什么EM算法能近似实现对观测数据的极大似然估计呢?下面通过近似求解观测数据的对数似然函数的极大化问题来求导EM算法。面对一个含有隐变量的概率模型,目标是极大化观测数据Y关于参数θ\theta的对数似然函数,即极大化
L(θ)=logP(Y|θ)=log∑ZP(Y,Z|θ)=log(∑ZP(Y|Z,θ)P(Z|θ))L(\theta)=logP(Y|\theta)=log \sum _{Z}P(Y,Z|\theta)=log (\sum _{Z}P(Y|Z,\theta)P(Z|\theta))
注意到这一极大化的主要困难是上式中有未观测数据并有包含和(或积分)的对数。
事实上,EM算法是通过迭代逐步近似极大化L(θ)L(\theta)的。假设在第i次迭代后θ\theta的估计值θ(i)\theta^{(i)}。我们希望新估计值θ\theta能使L(θ)L(\theta)增加,即L(θ)>L(θ(i))L(\theta)>L(\theta^{(i)}),并逐步达到极大值。为此,考虑两者的差:
L(θ)−L(θ(i))=log(∑ZP(Y|Z,θ)P(Z|θ))−logP(Y|θ(i))L(\theta)-L(\theta^{(i)})=log (\sum _{Z}P(Y|Z,\theta)P(Z|\theta))-log P(Y|\theta^{(i)})
利用Jensen不等式得到其下界:
L(θ)≥B(θ,θ(i))L(\theta) \geq B(\theta,\theta^{(i)})
其中,B(θ,θ(i))=L(θ(i))+∑ZP(Z|Y,θ)logP(Y|Z,θ)P(Z|θ)P(Z|Y,θ(i))P(Y|θ(i))B(\theta,\theta^{(i)})=L(\theta^{(i)})+\sum _{Z}P(Z|Y,\theta)log \frac{P(Y|Z,\theta)P(Z|\theta)}{P(Z|Y,\theta^{(i)})P(Y|\theta^{(i)})}
任何可以使B(θ,θ(i))B(\theta,\theta^{(i)})增大的θ\theta,也可以使L(θ)L(\theta)增大。为了使L(θ)L(\theta)有尽可能大的增长,选择θ(i+1)\theta^{(i+1)}使B(θ,θ(i))B(\theta,\theta^{(i)})达到极大,即
θ(i+1)=argmaxθB(θ,θ(i))\theta ^{(i+1)}=argmax _{\theta} B(\theta,\theta ^{(i)})
现在求θ(i+1)\theta^{(i+1)}的表达式,省去对θ\theta的极大化而言是常数的项,有
θ(i+1)=argmaxθ(P(Z|Y,θ(i))logP(Y,Z|θ))=argmaxθQ(θ,θ(i))\theta^{(i+1)}=argmax_{\theta}(P(Z|Y,\theta^{(i)}) log P(Y,Z|\theta))=argmax _{\theta}Q(\theta,\theta^{(i)})
上式等价于EM算法的一次迭代,即求Q函数及其极大化。EM算法是通过不断求解下界的极大化逼近求解对数似然函数极大化的算法。
完全数据的对数似然函数logP(Y,Z|θ)log P(Y,Z|\theta)关于在给定观测数据Y和当前参数θ(i)\theta^{(i)}下对未观测数据Z的条件概率分布P(Z|Y,θ(i))P(Z|Y,\theta^{(i)})的期望称为Q函数,即
Q(θ,θ(i))=EZ[logP(Y,Z|θ)|Y,θ(i)]Q(\theta,\theta^{(i)}) = E_{Z}[log P(Y,Z|\theta)|Y,\theta^{(i)}]
EM算法
输入:观测变量数据Y,隐变量数据Z,联合分布P(Y,Z|θ)P(Y,Z|\theta),条件分布P(Z|Y,θ)P(Z|Y,\theta);输出:模型参数θ\theta。
(1) 选择参数的初值θ(0)\theta^{(0)},开始迭代;
(2) E步:记θ(i)\theta^{(i)}为第i次迭代参数θ\theta的估计值,在第i+1次迭代的E步,计算
Q(θ,θ(i))=EZ[logP(Y,Z|θ)|Y,θ(i)]=∑ZlogP(Y,Z|θ)P(Z|Y,θ(i))Q(\theta,\theta^{(i)}) = E_{Z}[log P(Y,Z|\theta)|Y,\theta^{(i)}]=\sum _{Z} log P(Y,Z|\theta)P(Z|Y,\theta^{(i)})
(3) M步:求使Q(θ,θ(i))Q(\theta,\theta^{(i)})极大化的θ\theta,确定第i+1次迭代的参数估计值θ(i+1)\theta^{(i+1)}
θ(i+1)=argmaxθQ(θ,θ(i))\theta^{(i+1)}=argmax _{\theta}Q(\theta,\theta^{(i)})
(4) 重复第(2)步和第(3)步,直到收敛。
下面关于EM算法作几点说明:
步骤(1) 参数的初值可以任意选择,但需要注意EM算法对初值是敏感的。
步骤(4) 给出停止迭代的条件,一般是选择较小的正数ϵ1,ϵ2\epsilon_1,\epsilon_2 ,若满足
||θ(i+1)−θ(i)||<ϵ1或||Q(θ(i+1),θ(i))−Q(θ(i),θ(i))||<ϵ2||\theta^{(i+1)}-\theta^{(i)}|| < \epsilon_1 或 ||Q(\theta^{(i+1)},\theta^{(i)})-Q(\theta^{(i)},\theta^{(i)})|| < \epsilon_2
EM算法在非监督学习中的应用
有时训练数据只有输入没有对应的输出{(x1,⋅),(x2,⋅),......,(xN,⋅)(x_1,\cdot),(x_2,\cdot),......,(x_N,\cdot)},EM算法可以用于生成模型的非监督学习。生成模型由联合概率分布P(X,Y)P(X,Y)表示,可以认为非监督学习的训练数据是联合概率分布产生的数据。X为观测数据,Y为未观测数据。相关文章推荐
- 行列式
- Linux 邮件服务器原理介绍,编译安装Postfix实现本地的邮件服务。
- 反转链表
- STM32——GPIO之从库函数到寄存器的前因后果
- FFMPEG多进程转码
- Accelerated C++ 学习笔记1
- [Leetcode] Unique Binary Search Trees I,II
- ZUFE OJ 2289 God Wang II
- STM32——GPIO之从库函数到寄存器的前因后果
- sscanf,snprintf,sprintf小结
- 设计模式总结
- 关键词如何分类?看完本文你会了解很多
- 关于块设备
- 最小生成树之prim算法
- 河南理工大学oj 1704 祈福天津
- url传值特殊字符编码
- HDU 5371 Manacher Hotaru's problem
- 拒绝是一种惯性,当顾客拒绝我们时,我们的工作才刚刚开始
- noip1999 拦截导弹 (单调队列求解:最长下降子序列+最长上升子序列)
- 场地老板如何选购机器?