EM算法与高斯混合模型

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不等式应用于凹函数时,不等号方向反向,也就是E[f(X)]f(E[X])

Jensen’s Inequality
f f 凸函数且 iλi=1, λi0 时,有 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产生上述采样可表示为:

f(x1,x2,,xn|θ)=f(x1|θ)f(x2|θ),,f(xn|θ) f ( x 1 , x 2 , … , x n | θ ) = f ( x 1 | θ ) ⋅ f ( x 2 | θ ) , … , ⋅ f ( x n | θ )

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

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

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

显然对 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 。做极大对数似然就是要求θ的“最优值”:

θ=argmaxθL(θ|X) θ = arg ⁡ max θ L ( θ | X )

其中
L(θ)=logP(X|θ)=logZP(X,Z|θ) L ( θ ) = log ⁡ P ( X | θ ) = log ⁡ ∑ Z P ( X , Z | θ )

直接使用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 在参数θi下的后验分布 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 ) 在分布 ZP(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算法推导

L(θ)=logP(X|θ)=logZP(X,Z|θ) L ( θ ) = log ⁡ P ( X | θ ) = log ⁡ ∑ Z P ( X , Z | θ )

引入一个概率分布 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(期望可以写成概率和样本的乘积形式),得到:
L(θ)=logZP(X,Z|θ)=logZQ(θ,θi)P(X,Z|θ)Q(Z)=logEZQ[P(X,Z|θ)Q(Z)] L ( θ ) = log ⁡ ∑ Z P ( X , Z | θ ) = log ⁡ ∑ Z Q ( θ , θ i ) P ( X , Z | θ ) Q ( Z ) = log ⁡ E Z ∼ Q [ P ( X , Z | θ ) Q ( Z ) ]

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

且上面的不等式在 P(X|Z,θ)Q(θ,θi) P ( X | Z , θ ) Q ( θ , θ i ) 为常数时取等号。之后 Qθ,θi Q ( θ , θ i ) 用贝叶斯公式展开:
Q(θ,θi)=P(X|Z,θi)P(Z|θi)P(X|θ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) L ( θ ) ≥ E Z | X , θ i [ log ⁡ P ( X , Z | θ ) P ( Z | X , θ i ) ] = E Z | X , θ i log ⁡ [ P ( X | Z ) P ( Z | θ ) P ( X | θ i ) P ( X | Z , θ i ) P ( Z | θ i ) ] = E Z | X , θ i log ⁡ [ P ( Z | θ ) P ( X | θ i ) P ( Z | θ i ) ] = E Z | X ; θ i [ log ⁡ P ( Z | θ ) ] + E Z | X ; θ i [ log ⁡ P ( X | θ i ) ] − E Z | X ; θ i [ log ⁡ P ( Z | θ i ) ] = Q ( θ , θ i ) − Q ( θ i , θ i ) + L ( θ i )

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

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

高斯混合模型

高斯分布

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

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

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

这里 K K 表示高斯分布的个数,πk代表混合系数,且满足 0πk1,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都对应着一个隐变量 zRK z ∈ R K ,代表的即为类别变量, 且 zk{0,1} z k ∈ { 0 , 1 } ,一个样本可以属于多个类别,叠加起来概率为 1,这里显而易见有:

p(zk=1)=πk p ( z k = 1 ) = π k

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

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

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=1Nk=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=1Nkn=1Nγ(znk)xn=1Nkn=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 )

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值