EM算法与高斯混合模型
EM算法(The Expectation-Maximization Algorithm)可以解决HMM的参数估计问题,在MT中的词对齐中也会用到。
Jensen不等式
Jensen不等式表述如下:
如果f是凸函数,X是随机变量,那么
E[f(X)]≥f(E[X])
E
[
f
(
X
)
]
≥
f
(
E
[
X
]
)
特别地,如果f是严格凸函数,那么
E[f(X)]=f(E[X])
E
[
f
(
X
)
]
=
f
(
E
[
X
]
)
;当且仅当
p(x=E[x])=1
p
(
x
=
E
[
x
]
)
=
1
,也就说
X
X
是常量。用图表示就是:
Jensen不等式应用于凹函数时,不等号方向反向,也就是
Jensen’s Inequality
当
f
f
为凸函数且 时,有
f(∑iλixi)≤∑iλif(xi)
f
(
∑
i
λ
i
x
i
)
≤
∑
i
λ
i
f
(
x
i
)
极大似然估计
极大似然估计(Maximum Likelihood Estimation)提供了一种给定观察数据来评估模型参数的方法,即:“模型已定,参数未知”。但其前提是,假设所有的采样都是独立同分布的。
假设
x1,x2,…,xn dii
x
1
,
x
2
,
…
,
x
n
d
i
i
,参数为θ的模型f产生上述采样可表示为:
此时 x1,x2,…,xn x 1 , x 2 , … , x n 为已知, θ θ 为未知,则定义为
在实际应用中常用的是两边取对数(Ln 或者 log不影响),得到公式如下:
其中 lnL(θ|x1,x2,…,xn) ln L ( θ | x 1 , x 2 , … , x n ) 称为对数似然,而 ι^ ι ^ 称为平均对数似然。而我们平时所称的最大似然为最大的对数平均似然,即:
显然对 L(θ|X) L ( θ | X ) 求导,令导数得0 ,求得的解即为最优的 θ∗ θ ∗ 了,而且对MLE来说数据量越多,所得到的模型会越能反映数据的真实分布。
EM算法
期望最大化算法(Expectation Maximization Algorithm,EM)用于含有隐变量概率模型的MLE,隐变量就是每个可见随机变量的值都对应着一个隐藏的随机变量。参见三硬币模型实例
问题描述
给定一个训练集
X=x1,…,xm
X
=
x
1
,
…
,
x
m
,我们希望拟合包含隐含变量z的模型
P(x,z;θ)
P
(
x
,
z
;
θ
)
中的参数 θ。根据模型的假设,每个我们观察到的
xi
x
i
还对应着一个我们观察不到的隐含变量
zi
z
i
,我们记
Z=z1,…,zm
Z
=
z
1
,
…
,
z
m
。做极大对数似然就是要求θ的“最优值”:
其中
直接使用log 套∑的形式直接求解θ往往非常困难。EM 通过迭代逐步极大化 L(θ) L ( θ ) ,假设第i次迭代后θ的估计值是 θi,θi θ i , θ i 已知后,下一次迭代需要使得 L(θ) L ( θ ) 更大.
EM算法基本步骤
输入:观测数据X,隐变量数据 Z,联合分布 P(X,Z|θ) P ( X , Z | θ )
输出:极大似然参数θ
1. 选择初始参数 θ0 θ 0 ;
2. E Step:计算隐变量 Z Z 在参数下的后验分布 P(Z|X,θi) P ( Z | X , θ i ) 以得到:
EZ|X;θiL(θ|X,Z):=EZ|X;θilogP(X,Z|θ)=∑ZP(Z|X,θi)logP(X,Z|θ) E Z | X ; θ i L ( θ | X , Z ) := E Z | X ; θ i log P ( X , Z | θ ) = ∑ Z P ( Z | X , θ i ) log P ( X , Z | θ )
3. M Step:估计 θ(i+1) θ ( i + 1 ) 的值:
θ(i+1)=argmaxθEZ|X,θiL(X,Z|θ) θ ( i + 1 ) = a r g max θ E Z | X , θ i L ( X , Z | θ )
4. 重复(2)至(3),直到收敛.
EM 算法每次迭代都建立在上轮迭代对θ的最优值的估计 θi θ i 上,利用它可以求出Z的后验概率 P(Z|X,θi) P ( Z | X , θ i ) ,进而求出 L(θ|X,Z) L ( θ | X , Z ) 在分布 Z∼P(Z|X,θ) Z ∼ P ( Z | X , θ ) 上的期望 EZ|X;θiL(θ|X,Z) E Z | X ; θ i L ( θ | X , Z ) 。
因为 argmaxθL(θ|X,Z) arg max θ L ( θ | X , Z ) 在未知Z的情况下难以直接计算,EM算法就转而通过最大化它的期望 EZ|X;θiL(θ|X,Z) E Z | X ; θ i L ( θ | X , Z ) 来逼近θ的最优值,得到 θ(t+1) θ ( t + 1 ) 。注意由于 L(θ|X,Z) L ( θ | X , Z ) 的这个期望是在Z的一个分布上求的,这样得到的表达式就只剩下θ一个未知量,因而绕过了z未知的问题。而 θ(i+1) θ ( i + 1 ) 又可以作为下轮迭代的基础,继续向最优逼近。
算法中E-step就是在利用
θi
θ
i
求期望
EZ|X;θiL(θ|X,Z)
E
Z
|
X
;
θ
i
L
(
θ
|
X
,
Z
)
,这就是所谓“Expectation”;
M-step就是通过寻找
θ(i+1)
θ
(
i
+
1
)
最大化这个期望来逼近θ的最优值,这就“Maximization”。
EM算法推导
引入一个概率分布 Q(θ,θi)=EZ|X,θilogL(θ|X,Z)=P(Z|X,θi) Q ( θ , θ i ) = E Z | X , θ i log L ( θ | X , Z ) = P ( Z | X , θ i ) ,利用分子分母同乘 Q(θ,θi) Q ( θ , θ i ) 的trick(期望可以写成概率和样本的乘积形式),得到:
根据 Jensen 不等式,对于任意分布 Q Q 都有:
且上面的不等式在 P(X|Z,θ)Q(θ,θi) P ( X | Z , θ ) Q ( θ , θ i ) 为常数时取等号。之后 Q(θ,θi) Q ( θ , θ i ) 用贝叶斯公式展开:
带入回上式:
第二行 P(X|Z),P(X|Z,θi) P ( X | Z ) , P ( X | Z , θ i ) 这两个其实相同所以约去;最后一行在已知 θi θ i 时,仅
Q(θ,θi) Q ( θ , θ i ) 不固定,所以需要不断调整下一时刻 θ θ 使之最大。即可得到:
除以上方法推导,还可以用前项减后项方法推导
L(θ)−L(θ(i))
L
(
θ
)
−
L
(
θ
(
i
)
)
具体见The Expectation Maximization Algorithm A short tutorial
高斯混合模型
高斯分布
假设数据
x∈Rn
x
∈
R
n
服从参数为
μ,Σ
μ
,
Σ
的高斯分布:
这里 μ μ 为均值,为协方差矩阵,对于单个高斯分布,当给定数据集之后,直接进行 MLE 即可估计高斯分布的参数;但是有些数据集是多个高斯分布叠加在一起形成的,也就数据集是由多个高斯分布产生的,如下图所示三个高斯分布叠加在一起:

多个高斯分布叠加在一起便是混合高斯模型 GMM,其的定义如下:
这里 K K 表示高斯分布的个数,代表混合系数,且满足 0≤πk≤1,∑kπk=1 0 ≤ π k ≤ 1 , ∑ k π k = 1 ,可以把 πk π k 看做每个模型的权重。如果把 GMM 用在聚类中,则样本x的类别即为 argmaxkπk arg max k π k
在 GMM 中,需要估计的参数为
πk,μk,Σk
π
k
,
μ
k
,
Σ
k
模型里每个观测数据x都对应着一个隐变量
z∈RK
z
∈
R
K
,代表的即为类别变量, 且
zk∈{0,1}
z
k
∈
{
0
,
1
}
,一个样本可以属于多个类别,叠加起来概率为 1,这里显而易见有:
对于GMM的参数采用EM算法来求解,其完全数据的联合分布为:
写成对数似然函数的形式:
EM算法求解GMM的步骤
E步: 使用参数 θold=(πold,μold,Σold) θ o l d = ( π o l d , μ o l d , Σ o l d ) ,计算每个样本 xn x n 对应隐变量 zn z n 的后验分布:
γ(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) γ ( z n k ) = p ( z n = k | x n ; μ o l d , Σ o l d ) = p ( z n k = 1 ) p ( x n k | z n k = 1 ) ∑ j = 1 K p ( z n j = 1 ) p ( x n | z n j = 1 ) = π k o l d N ( x n | μ k o l d , Σ k o l d ) Σ j = 1 K π j o l d N ( x n | μ j o l d , Σ j o l d )
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)} Q ( θ , θ old ) = ∑ Z p ( Z | X , θ o l d ) ln p ( X , Z | θ ) = ∑ Z p ( Z | X , θ o l d ) ln p ( X | Z , θ ) P ( Z | θ ) = ∑ n = 1 N ∑ k = 1 K γ ( z n k ) { ln π k + ln N ( x n | μ k , Σ k ) }
得到下一步迭代的参数:
θnew=argmaxθQ(θ,θold) θ n e w = arg max θ Q ( θ , θ old )对Q函数求导,令倒数得0,即可求得下一次迭代的参数值
μnewkΣnewkπnewk=1Nk∑n=1Nγ(znk)xn=1Nk∑n=1Nγ(znk)(xn−μnewk)(xn−μnewk)T=NkN μ k n e w = 1 N k ∑ n = 1 N γ ( z n k ) x n Σ k n e w = 1 N k ∑ n = 1 N γ ( z n k ) ( x n − μ k n e w ) ( x n − μ k n e w ) T π k n e w = N k N
其中:
Nk=∑n=1Nγ(znk) N k = ∑ n = 1 N γ ( z n k )