EM算法与高斯混合模型

EM算法与高斯混合模型

EM算法(The Expectation-Maximization Algorithm)可以解决HMM的参数估计问题,在MT中的词对齐中也会用到。

Jensen不等式

Jensen不等式表述如下:
如果f是凸函数,X是随机变量,那么E[f(X)]f(E[X])特别地,如果f是严格凸函数,那么E[f(X)]=f(E[X]);当且仅当p(x=E[x])=1,也就说X是常量。用图表示就是:
EM算法与高斯混合模型
Jensen不等式应用于凹函数时,不等号方向反向,也就是E[f(X)]f(E[X])

Jensen’s Inequality
f凸函数且 iλi=1, λi0 时,有f(iλixi)iλif(xi)

极大似然估计

极大似然估计(Maximum Likelihood Estimation)提供了一种给定观察数据来评估模型参数的方法,即:“模型已定,参数未知”。但其前提是,假设所有的采样都是独立同分布的。
假设x1,x2,,xn dii,参数为θ的模型f产生上述采样可表示为:

f(x1,x2,,xn|θ)=f(x1|θ)f(x2|θ),,f(xn|θ)

此时x1,x2,,xn为已知,θ为未知,则定义为
L(θ|x1,x2,,xn)=f(x1,x2,,xn|θ)=i=1nf(xi|θ)

在实际应用中常用的是两边取对数(Ln 或者 log不影响),得到公式如下:
lnL(θ|x1,x2,,xn)=i=1nlnf(xi|θ)   ι^=1nlnL

其中lnL(θ|x1,x2,,xn)称为对数似然,而ι^称为平均对数似然。而我们平时所称的最大似然为最大的对数平均似然,即:
θ=argmaxθL(θ|X)

显然对L(θ|X)求导,令导数得0 ,求得的解即为最优的θ了,而且对MLE来说数据量越多,所得到的模型会越能反映数据的真实分布。

EM算法

期望最大化算法(Expectation Maximization Algorithm,EM)用于含有隐变量概率模型的MLE,隐变量就是每个可见随机变量的值都对应着一个隐藏的随机变量。参见三硬币模型实例

问题描述

给定一个训练集X=x1,,xm,我们希望拟合包含隐含变量z的模型P(x,z;θ)中的参数 θ。根据模型的假设,每个我们观察到的xi还对应着一个我们观察不到的隐含变量zi,我们记Z=z1,,zm。做极大对数似然就是要求θ的“最优值”:

θ=argmaxθL(θ|X)

其中
L(θ)=logP(X|θ)=logZP(X,Z|θ)

直接使用log 套∑的形式直接求解θ往往非常困难。EM 通过迭代逐步极大化L(θ),假设第i次迭代后θ的估计值是θi,θi已知后,下一次迭代需要使得L(θ)更大.

EM算法基本步骤

输入:观测数据X,隐变量数据 Z,联合分布P(X,Z|θ)
输出:极大似然参数θ
1. 选择初始参数θ0
2. E Step:计算隐变量Z在参数θi下的后验分布P(Z|X,θi)以得到:

EZ|X;θiL(θ|X,Z):=EZ|X;θilogP(X,Z|θ)=ZP(Z|X,θi)logP(X,Z|θ)

3. M Step:估计θ(i+1)的值:
θ(i+1)=argmaxθEZ|X,θiL(X,Z|θ)

4. 重复(2)至(3),直到收敛.

EM 算法每次迭代都建立在上轮迭代对θ的最优值的估计θi上,利用它可以求出Z的后验概率P(Z|X,θi) ,进而求出L(θ|X,Z) 在分布ZP(Z|X,θ)上的期望 EZ|X;θiL(θ|X,Z)

因为argmaxθL(θ|X,Z)在未知Z的情况下难以直接计算,EM算法就转而通过最大化它的期望EZ|X;θiL(θ|X,Z)来逼近θ的最优值,得到θ(t+1)。注意由于L(θ|X,Z)的这个期望是在Z的一个分布上求的,这样得到的表达式就只剩下θ一个未知量,因而绕过了z未知的问题。而θ(i+1)又可以作为下轮迭代的基础,继续向最优逼近。

算法中E-step就是在利用θi 求期望EZ|X;θiL(θ|X,Z),这就是所谓“Expectation”;
M-step就是通过寻找 θ(i+1) 最大化这个期望来逼近θ的最优值,这就“Maximization”。

EM算法推导

L(θ)=logP(X|θ)=logZP(X,Z|θ)

引入一个概率分布Q(θ,θi)=EZ|X,θilogL(θ|X,Z)=P(Z|X,θi),利用分子分母同乘Q(θ,θi)的trick(期望可以写成概率和样本的乘积形式),得到:
L(θ)=logZP(X,Z|θ)=logZQ(θ,θi)P(X,Z|θ)Q(Z)=logEZQ[P(X,Z|θ)Q(Z)]

根据 Jensen 不等式,对于任意分布Q都有:
L(θ)=logEZQ[P(X,Z|θ)Q(θ,θi)]EZQ[logP(X,Z|θ)Q(Z)]

且上面的不等式在P(X|Z,θ)Q(θ,θi)为常数时取等号。之后Qθ,θi用贝叶斯公式展开:
Q(θ,θi)=P(X|Z,θi)P(Z|θi)P(X|θi)

带入回上式:
L(θ)EZ|X,θi[logP(X,Z|θ)P(Z|X,θi)]=EZ|X,θilog[P(X|Z)P(Z|θ)P(X|θi)P(X|Z,θi)P(Z|θi)]=EZ|X,θilog[P(Z|θ)P(X|θi)P(Z|θi)]=EZ|X;θi[logP(Z|θ)]+EZ|X;θi[logP(X|θi)]EZ|X;θi[logP(Z|θi)]=Q(θ,θi)Q(θi,θi)+L(θi)

第二行P(X|Z),P(X|Z,θi)这两个其实相同所以约去;最后一行在已知θi时,仅
Q(θ,θi)不固定,所以需要不断调整下一时刻θ使之最大。即可得到:
θt+1:=argmaxθQ(θ,θi)

除以上方法推导,还可以用前项减后项方法推导L(θ)L(θ(i))
具体见The Expectation Maximization Algorithm A short tutorial

高斯混合模型

高斯分布

假设数据xRn服从参数为μ,Σ的高斯分布:

N(x;μ,Σ)=1(2π)n/2|Σ|1/2exp{12(xμ)TΣ1(xμ)}

这里μ为均值,Σ为协方差矩阵,对于单个高斯分布,当给定数据集之后,直接进行 MLE 即可估计高斯分布的参数;但是有些数据集是多个高斯分布叠加在一起形成的,也就数据集是由多个高斯分布产生的,如下图所示三个高斯分布叠加在一起:
EM算法与高斯混合模型
多个高斯分布叠加在一起便是混合高斯模型 GMM,其的定义如下:
p(x)=k=1KπkN(x|μk,Σk)

这里K表示高斯分布的个数,πk代表混合系数,且满足0πk1,kπk=1,可以把πk看做每个模型的权重。如果把 GMM 用在聚类中,则样本x的类别即为argmaxkπk

在 GMM 中,需要估计的参数为πkμkΣk模型里每个观测数据x都对应着一个隐变量zRK,代表的即为类别变量, 且zk{0,1},一个样本可以属于多个类别,叠加起来概率为 1,这里显而易见有:

p(zk=1)=πk

对于GMM的参数采用EM算法来求解,其完全数据的联合分布为:
p(X,Z|μ,Σ,π)=n=1N{k=1KπkN(xn|μk,Σk)}

写成对数似然函数的形式:
lnp(X,Z|μ,Σ,π)=n=1Nln{k=1KπkN(xn|μk,Σk)}

EM算法求解GMM的步骤

E步: 使用参数θold=(πold,μold,Σold),计算每个样本xn对应隐变量zn的后验分布:

γ(znk)=p(zn=k|xn;μold,Σold)=p(znk=1)p(xnk|znk=1)j=1Kp(znj=1)p(xn|znj=1)=πkoldN(xn|μkold,Σkold)Σj=1KπjoldN(xn|μjold,Σjold)

M步: 极大化Q函数的计算
Q(θ,θold)=Zp(Z|X,θold)lnp(X,Z|θ)=Zp(Z|X,θold)lnp(X|Z,θ)P(Z|θ)=n=1Nk=1Kγ(znk){lnπk+lnN(xn|μk,Σk)}

得到下一步迭代的参数:
θnew=argmaxθQ(θ,θold)

对Q函数求导,令倒数得0,即可求得下一次迭代的参数值

μknew=1Nkn=1Nγ(znk)xnΣknew=1Nkn=1Nγ(znk)(xnμknew)(xnμknew)Tπknew=NkN

其中:
Nk=n=1Nγ(znk)