EM(Expectation Maximization)算法
概率模型有时既含有观测变量,又含有隐变量或潜在变量。如果概率模型的变量都是观测变量,那么给定数据,可以直接用极大似然估计法,或贝叶斯估计法估计模型参数。但是,当模型含有隐变量时,就不能简单地使用这些估计方法。EM算法就是含有隐变量的概率模型参数的极大似然估计法,或极大后验概率估计法。
一般地,用Y表示观测随机变量的数据,Z表示隐随机变量的数据,θ表示模型参数。EM算法是一种迭代算法,每次迭代有两部分组成:E步,若参数θ已知,则可根据训练数据推断出隐变量Z的值;M步,若Z的值已知,则可方便地对参数θ做极大似然估计。
事实上,隐变量估计问题也可通过梯度下降等优化算法求解,但由于求和的项数将随着隐变量的数目以指数级上升,会给梯度计算带来麻烦。而EM算法则可看做一种非梯度优化的方法。
极大似然估计(Maximum Likelihood Method)
极大似然估计是用于估计概率模型中参数的最常用的方法。令X1,...,Xn是概率密度函数f(x;θ)一组相互独立的随机变量,则似然函数被定义为
对数似然函数被定义为ln(θ)=logLn(θ)
似然函数实际上是数据的联合密度,只不过我们将其视为参数的函数。事实上它并不是密度函数,以为它的积分不为1。
θ̂ n被定义为极大似然估计量,是极大化Ln(θ)之后θ的值。注意到,极大化ln(θ)与极大化Ln(θ)的效果是一样的,通常前者的计算会更为简单一些。而且在计算时,通常会忽略掉常数值。
在模型的一些特定条件下,极大似然估计量有一些非常好的特性:
(1) 极大似然估计量依概率收敛于所估计参数的真实值,即θ̂ n−→Pθ∗;
(2) 如果θ̂ n是θ的极大似然估计量,那么g(θ̂ n)是g(θ)的极大似然估计量;
(3) (θ̂ −θ∗)/sˆe→N(0,1),其中sˆe为标准差的估计值;
(4) 在所有估计量中,极大似然估计量是具有最小方差的。
在实际问题中,模型可能非常的复杂,极大似然估计可能并不是最优的,以上的四个性质有可能也不成立。例如,概率密度函数不是平滑的情况。
EM算法
输入:观测变量数据Y,隐变量数据Z,联合分布P(Y,Z|θ),条件分布P(Z|Y,θ);
输出:模型参数θ。
(1) 选择参数的初值θ(0),开始迭代;
(2) E步:根据参数初始值或上一次迭代的模型参数来计算隐变量的后验概率,其实就是隐变量的期望,作为隐变量的现估计值:
(3) M步:将似然函数最大化获得新的参数值:
(4) 重复第(2)步和第(3)步,直到收敛。
下面关于EM算法作几点说明:
步骤(1) 参数的初值可以任意选择,但需要注意EM算法对初值是敏感的。
步骤(4) 给出停止迭代的条件,一般是选择较小的正数ϵ1 ,若满足
则停止迭代。
高斯混合聚类
这个算法在我之前关于聚类算法的博客中提到过,但是只是简单地介绍了下,因为它的求解会用到EM算法,所以我将它放在这里,作为EM算法的一个例子吧。
对n维样本空间X中的随机变量x,若x服从高斯分布,其概率密度函数为:
其中μ为n维均值向量,Σ是n×n的协方差矩阵,将概率密度函数记为p(x|μ,Σ)。
定义高斯混合分布:
该分布共由k个混合成分组成,每个混合成分对应一个高斯分布。其中μi与Σi是第i个高斯混合成分的参数,而αi>0为对应的混合系数,∑ki=1αi=1。
假设样本的生成过程由高斯混合分布给出:首先,根据α1,α2,...,αk定义的先验分布选择高斯混合成分,其中αi为选择第i个混合成分的概率;然后根据被选择的混合成分的概率密度函数进行采样,从而生成对应的样本。
令随机变量zj∈{1,2,...,k}表示生成样本xj的混合高斯分布,其取值未知,该变量就是整个问题的隐变量。显然,zj的先验概率P(zj=i)对应于αi(i=1,2,...,k)。根据贝叶斯定理,zj的后验分布对应于
pM(zj=i|xj)给出了样本xj由第i个高斯混合分布生成的后验概率,将其简记为γji (i = 1, 2, …, k)。
当高斯混合分布已知时,高斯混合聚类将把样本集D划分为k个簇C={C1,C2,...,Ck},每个样本xj的簇标记λj如下确定:
从原型聚类的角度看,高斯混合聚类是采用概率模型(高斯分布)对原型进行刻画,簇划分由原型对应后验概率确定。这就是EM算法中的E-step。
对于样本集D,可以采用极大似然估计,即最大化似然
采用EM算法1进行迭代优化求解。若参数{(αi,μi,Σi)|1≤i≤k}能使上式最大化,则由∂LL(D)∂μi=0有
即
类似的,由∂LL(D)∂Σi=0可得
对于混合系数αi,除了要最大化LL(D),还需要满足α≥0,∑ki=1αi=1,考虑LL(D)的拉格朗日形式
其中λ为拉格朗日乘子,由上式对αi的导数为0,有
两边同时乘以αi,对所有k求和可知
故λ=−m,则有
即每个高斯成分的混合系数由样本属于该成分的平均后验概率确定。
PLSA算法
在腾讯实习生招聘的时候,面试官问了这样一个问题:对于两种不同的语言,给了你一些单词的翻译对,如何利用EM算法来做一个翻译系统。因为当时对自然语言处理并不了解,这个问题就没有答上来。其实这个问题与PLSA算法解决的问题很像,只要将生成单词的过程转变为翻译的过程即可。如果不懂PLSA算法的,可以翻一翻我关于自然语言处理的博客。PLSA算法参数的求解也是利用的EM算法,所以也把它作为一个例子放在这里。
E-step:直接使用贝叶斯公式计算隐含变量在当前参数取值下的后验概率。
在这个步骤中,我们假定所有的p(wj|zk)和p(zk|di)都是已知的,因为初始时随机赋值。后面迭代的过程中取前一轮M步骤中得到的参数值。
M-step:最大化complete data对数似然函数的期望
其约束条件是∑Mj=1p(wj|zk)=1,∑Kk=1p(zk|di)=1。利用拉格朗日乘数法:
利用求导的方法可以得:
写在最后
本篇博客的部分内容源自《统计学习方法》、《机器学习》(周志华)。