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是常量。用图表示就是:
Jensen不等式应用于凹函数时,不等号方向反向,也就是E[f(X)]≤f(E[X])
Jensen’s Inequality
当f为凸函数且 ∑iλi=1, λi≥0 时,有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|θ)=log∑ZP(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) 在分布Z∼P(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|θ)=log∑ZP(X,Z|θ)
引入一个概率分布
Q(θ,θi)=EZ|X,θilogL(θ|X,Z)=P(Z|X,θi),利用分子分母同乘
Q(θ,θi)的trick(期望可以写成概率和样本的乘积形式),得到:
L(θ)=log∑ZP(X,Z|θ)=log∑ZQ(θ,θi)P(X,Z|θ)Q(Z)=logEZ∼Q[P(X,Z|θ)Q(Z)]
根据 Jensen 不等式,对于任意分布
Q都有:
L(θ)=logEZ∼Q[P(X,Z|θ)Q(θ,θi)]≥EZ∼Q[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
高斯混合模型
高斯分布
假设数据x∈Rn服从参数为μ,Σ的高斯分布:
N(x;μ,Σ)=1(2π)n/2|Σ|1/2exp{−12(x−μ)TΣ−1(x−μ)}
这里
μ为均值,
Σ为协方差矩阵,对于单个高斯分布,当给定数据集之后,直接进行 MLE 即可估计高斯分布的参数;但是有些数据集是多个高斯分布叠加在一起形成的,也就数据集是由多个高斯分布产生的,如下图所示三个高斯分布叠加在一起:
多个高斯分布叠加在一起便是混合高斯模型 GMM,其的定义如下:
p(x)=∑k=1KπkN(x|μk,Σk)
这里
K表示高斯分布的个数,
πk代表混合系数,且满足
0≤πk≤1,∑kπk=1,可以把
πk看做每个模型的权重。如果把 GMM 用在聚类中,则样本x的类别即为
argmaxkπk
在 GMM 中,需要估计的参数为πk,μk,Σk模型里每个观测数据x都对应着一个隐变量z∈RK,代表的即为类别变量, 且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)∑Kj=1p(znj=1)p(xn|znj=1)=πoldkN(xn|μoldk,Σoldk)ΣKj=1πoldjN(xn|μoldj,Σoldj)
M步: 极大化Q函数的计算
Q(θ,θold)=∑Zp(Z|X,θold)lnp(X,Z|θ)=∑Zp(Z|X,θold)lnp(X|Z,θ)P(Z|θ)=∑n=1N∑k=1Kγ(znk){lnπk+lnN(xn|μk,Σk)}
得到下一步迭代的参数:
θnew=argmaxθQ(θ,θold)
对Q函数求导,令倒数得0,即可求得下一次迭代的参数值
μnewkΣnewkπnewk=1Nk∑n=1Nγ(znk)xn=1Nk∑n=1Nγ(znk)(xn−μnewk)(xn−μnewk)T=NkN
其中:
Nk=∑n=1Nγ(znk)