從兩個例子理解EM算法
本文是作者對EM算法學習的筆記,從EM算法出發介紹EM算法,爲了更好理解,用兩個應用EM算法求解的例子進一步解釋EM的應用。
EM算法
EM算法引入
EM算法,指的是最大期望算法(Expectation Maximization Algorithm,期望最大化算法),是一種迭代算法,在統計學中被用於尋找,依賴於不可觀察的隱性變量的概率模型中,參數的最大似然估計。基本思想是首先隨機取一個值去初始化待估計的參數值,然後不斷迭代尋找更優的參數使得其似然函數比原來的似然函數大。
- EM算法當做最大似然估計的拓展,解決難以給出解析解(模型中存在隱變量)的最大似然估計(MLE)問題
- 在算法中加入隱變量的思想可以類比爲幾何題中加入一條輔助線的做法。
假定有訓練集{
x(1),x(2),...x(m)
},包含
m
個獨立樣本,希望從中找到該組數據的模型
p(x,z)
的參數。
對數似然函數表達如下:

在表達式中因爲存在隱變量,直接找到參數估計比較困難,所以我們通過EM算法迭代求解下界的最大值,直到收斂。
我們通過以下的圖片來解釋這一過程:

圖片上的紫色部分是我們的目標模型
p(x|θ)
曲線,該模型比較複雜,難以直接求解其解析解,爲了消除隱變量
z
帶來的影響,我們可以得到一個不包含的
z
的模型
r(x|θ)
(該函數是我們自己選定的,因此最大值可求解), 同時滿足條件
r(x|θ)≤p(x|θ)
。
- 我們先取一個
θ1
,使得
r(x|θ1)=p(x|θ1)
(如綠線所示),然後再對此時的
r
求其最大值,得到極值點
θ2
,實現參數的更新。
- 不斷重複以上過程,在更新過程中始終滿足
r≤p
直到收斂。
從以上過程來看,EM算法的核心就是如何找到這個
r
,即
p
的下界函數。
這個下界函數有多種方法理解,我們從Jensen不等式的角度來理解。

上述等號成立的條件是
p(x(i),z(i);θ)Qi(z(i))=c
,
∑zQi(z(i))=1
,所以:

最終框架如下:

EM推導高斯混合模型
高斯混合模型GMM
設有隨機變量
X
, 則高斯混合模型可以用
p(x)=∑Kπk(x|μk,Σk)
,其中
(x|μk,Σk)
表示混合模型中的第
k
個分量
πk
表示混合係數,滿足
∑kπk=1,0≤πk≤1
。
我們知道高斯函數的概率分佈爲
f(x)=1(√2π)σexp(−(x−μ)22σ2)
, 在混合高斯分佈中待估計變量就包括了
μ,σ,π
。
對數似然函數爲
lμ,Σ,π=∑Ni=1log(∑Kk=1)πk(xi|μk,Σk))
EM 推導過程
第一步:估算數據來自於哪個組分,即估計每一個組分生成的概率,對每個樣本
xi
,它由第
k
個組份生成的概率可以記作:
γ(i,k)=πk(xi|μk,Σk)∑jπj(xi|μj,Σj)
第二步:估計每個組份的參數
E-step: 在給定了樣本和每個高斯分佈的參數以及組份的分佈函數的情況下
w(i)j=Qi(z(i)=j)=p(z(i))=j|x(i);ϕ,μ,Σ)
M-step:將多項式分佈和高斯分佈的參數帶入:
∑mi=1∑z(i)Qi(z(i))logp(x(i),z(i);ϕ,μ,Σ)Qi(z(i))
=∑mi=1∑kj=1Qi(z(i)=j)logp(x(i)|z(i)=j;ϕ,μ,Σ)p(z(i)=j;ϕ)Qi(z(i))
∑mi=1∑kj=1w(i)jlog1(2π)n2|Σj|(12)exp(−12(x(i)−μj)TΣ−1j(x(i)−μj))ϕjw(i)j
(x(i)−μj))ϕjw(i)j
分別對其中的未知參數求偏導數: