EM算法,全稱Expectation Maximization Algorithm,譯做最大指望化算法或指望最大算法,是機器學習十大算法之一,吳軍博士在《數學之美》書中稱其爲「上帝視角」算法,其重要性可見一斑。html
EM算法是一種迭代算法,用於含有隱變量(hidden variable)的機率參數模型的最大似然估計或極大後驗機率估計。它與極大似然估計的區別就是它在迭代過程當中依賴極大似然估計方法。極大似然估計是在模型已知的狀況下,求解模型的參數$\theta$,讓抽樣出現的機率最大。相似於求解一元方程,因此極大似然估計參數值是穩定的。而對於EM算法,因爲有隱藏變量(可視爲多元參數)的存在,因此每每初始參數設置的不一樣會致使最後收斂的結果不一樣,使得陷入局部最優解,而非全局最優解)。但在隱藏變量$X$未知的狀況下,經過計算其數學指望(E步),再利用極大似然求解(M步),爲問題的近似解決提供了可能。算法
在完善EM算法以前,首先來了解下Jensen不等式,由於在EM算法的推導過程當中會用到。機器學習
Jensen不等式在高中時咱們就接觸過,文字描述以下:函數
Jensen不等式圖形化表達學習
給定$m$個訓練樣本(或觀測變量數據)${x^{(1)},x^{(2)},\ldots,x^{(m)}}$,$n$個隱變量${z^{(1)},z^{(2)},\ldots,z^{(n)}}$,聯合分佈$P(X,Z|\theta)$,條件分佈$P(Z|X, \theta)$。假設樣本間相互獨立,咱們想要擬合模型$P(X,Z|\theta)$獲得模型參數$\theta$。spa
首先,根據極大似然求解步驟(對似然函數取對數,求導數,令導數爲0,獲得似然方程,解似然方程後,獲得的參數即爲所求),咱們列出以下似然函數:.net
\begin{align*}
l\left( \theta \right) &= \sum\limits_{i = 1}^m {\log p\left( {x;\theta } \right)} \\
&= \sum\limits_{i = 1}^m {\log \sum\nolimits_z {p\left( {x,z;\theta } \right).} }
\end{align*}htm
上式中,第一步是對極大似然函數取對數,第二步是對每一個樣本實例的每一個可能的類別$z$求聯合分佈機率之和。然而,求這個參數$\theta$很困難,由於存在一個隱含隨機變量$z$。若是能經過計算$z$的數學指望來估計$z$,代入式中後,再使用極大似然估計來解$\theta$就水到渠成。這也就是EM算法所要解決的問題場景。blog
接下來,咱們引入$Q_i$函數,$Q_i$函數表示樣本實例隱含變量z的某種分佈,且$Q_i$知足條件$\sum_zQ_i(z)=1,Q_i(z)>=0$,若是$Q_i$是連續性的,則$Q_i$表示機率密度函數,須要將求和符號換成積分符號。ip
值得注意的是,此處的$Q_i$函數是分佈,不是《統計學習方法》書中的指望$Q$函數(在給定觀測數據$X$和當前參數$\theta^{(i)}$下對未觀測數據$Z$的條件機率分佈$P(Z|X, \theta)$的數學指望)。計算分佈函數$Q_i$和計算指望$Q$函數是等價的。
計算$Q_i$函數或$Q$函數的過程就是E步,咱們接着上面的推導過程繼續:
\begin{align*}
\sum\limits_i {\log p\left( {{x^{\left( i \right)}};\theta } \right)} &= \sum\limits_i {\log \sum\limits_{{z^{\left( i \right)}}} {p\left( {{x^{\left( i \right)}},{z^{\left( i \right)}};\theta } \right)} } \\
&= \sum\limits_i {\log \sum\limits_{{z^{\left( i \right)}}} {{Q_i}\left( {{z^{\left( i \right)}}} \right)\frac{{p\left( {{x^{\left( i \right)}},{z^{\left( i \right)}};\theta } \right)}}{{{Q_i}\left( {{z^{\left( i \right)}}} \right)}}} } \\
&\ge \sum\limits_i {\sum\limits_{{z^{\left( i \right)}}} {{Q_i}\left( {{z^{\left( i \right)}}} \right)\log \frac{{p\left( {{x^{\left( i \right)}},{z^{\left( i \right)}};\theta } \right)}}{{{Q_i}\left( {{z^{\left( i \right)}}} \right)}}} }
\end{align*}
上式中,第一步根據聯合機率密度下某個變量的邊緣密度函數求解展開,但式中求解隱變量$z$困難,因而第二步引入$Q_{i}(z^{(i)})$使分子分母平衡。
第三步根據Jensen不等式,已知$log(x)$的二階導數爲$-\frac{1}{x^2}$,屬於凹函數,因此有$f(E[X])>=E[f(x)]$。
第三步具體的推導過程是:
a. 根據《機率論》中的指望公式$E(x)=\sum g(x)*p(x)$,$Y=g(x)$爲隨機變量$x$的函數,$P(X=x_k)=p_k$爲分佈律。將$Q_{i}(z^{(i)})$當作分佈律$p(x)$,$\frac{p(x^{i},z^{(i)};\theta)}{Q_i(z^{(i)})}$當作值域$g(x)$,有:
\begin{align*}
E\left( {\frac{{p\left( {{x^{\left( i \right)}},{z^{\left( i \right)}};\theta } \right)}}{{{Q_i}\left( {{z^{\left( i \right)}}} \right)}}} \right) = \sum\limits_{{z^{\left( i \right)}}} {{Q_i}\left( {{z^{\left( i \right)}}} \right)\frac{{p\left( {{x^{\left( i \right)}},{z^{\left( i \right)}};\theta } \right)}}{{{Q_i}\left( {{z^{\left( i \right)}}} \right)}}}
\end{align*}
b. 根據Jensen不等式的性質,對於凹函數有:
\begin{align*}
f\left( {{E_{{z^{\left( i \right)}} \sim {Q_i}}}\left( {\frac{{p\left( {{x^{\left( i \right)}},{z^{\left( i \right)}};\theta } \right)}}{{{Q_i}\left( {{z^{\left( i \right)}}} \right)}}} \right)} \right) \ge {E_{{z^{\left( i \right)}} \sim {Q_i}}}\left( {f\left( {\frac{{p\left( {{x^{\left( i \right)}},{z^{\left( i \right)}};\theta } \right)}}{{{Q_i}\left( {{z^{\left( i \right)}}} \right)}}} \right)} \right)
\end{align*}
所以便獲得了第三步。上述推導過程最後變爲$L(\theta)>=J(z,Q)$的形式($z$爲隱含變量),那麼咱們能夠經過不斷的最大化$J$的下界,來使得$L(\theta)$不斷提升,最終達到它的最大值。
接下來,咱們須要推導出$Q_{i}(z^{(i)})$的具體表達形式,即隱變量$z$的分佈或指望。
$Q_i$函數是隱變量$z$的分佈,那麼有下式:
\begin{align*}
{Q_i}\left( {{z^{\left( i \right)}}} \right) &= \frac{{p\left( {{x^{\left( i \right)}},{z^{\left( i \right)}};\theta } \right)}}{{\sum\nolimits_z {p\left( {{x^{\left( i \right)}},z;\theta } \right)} }}\\
&= \frac{{p\left( {{x^{\left( i \right)}},{z^{\left( i \right)}};\theta } \right)}}{{p\left( {{x^{\left( i \right)}};\theta } \right)}}\\
&= p\left( {{z^{\left( i \right)}}|{x^{\left( i \right)}};\theta } \right)
\end{align*}
$Q$函數是隱變量$z$的指望,那麼有下式:
$$ Q\left( \theta \right) = {E_Z}\left[ {\log P\left( {X,Z|\theta } \right)|X,{\theta ^{\left( i \right)}}} \right] $$
至此,咱們推出了$Q(z)$的計算公式(後驗機率或條件機率)。此步就是EM算法的E步,目的是創建$L(\theta)$的下界。
接下來的M步,目的是在給定$Q(z)$後,調整$\theta$,從而極大化$L(\theta)$的下界$J$(在固定$Q(z)$後,下界還能夠調整的更大)。
到此,能夠說是完美的展示了EM算法的E-step & M-step,完整的流程以下:
(1). 選擇參數的初值$\theta^{(0)}$,開始迭代;
(2). E步:記$\theta^{(i)}$爲第$i$次迭代參數$\theta$的估計值,在第$i+1$次迭代的E步,計算隱變量指望$Q$函數:
\begin{align*}
Q\left( \theta \right) &= {E_Z}\left[ {\log P\left( {X,Z|\theta } \right)|X,{\theta ^{\left( i \right)}}} \right]\\
&= \sum\limits_Z {\log P} \left( {X,Z|\theta } \right)P\left( {Z|X,{\theta ^{\left( i \right)}}} \right)
\end{align*}
這裏,$P\left( {Z|X,{\theta ^{\left( i \right)}}} \right)$是在給定觀測數據$X$和當前的參數估計$\theta^{(i)}$下隱變量$Z$的條件機率分佈,也就是$Q_i$函數。
(3). M步: 求使$Q\left( \theta \right)$極大化的$\theta$,肯定第$i+1$次迭代的參數估計值$\theta^{(i+1)}$.
$$ \theta^{(i+1)} = arg \mathop {max }\limits_Q Q\left( \theta \right) $$
(4). 重複第(2)和第(3)步,直到收斂。
如何保證EM最終是收斂的呢?
由極大似然估計的迭代過程:
\begin{align*}
l\left( {{\theta ^{\left( {t + 1} \right)}}} \right) &\ge \sum\limits_i {\sum\limits_{{z^{\left( i \right)}}} {{Q_i}^{\left( t \right)}\left( {{z^{\left( i \right)}}} \right)\log \frac{{p\left( {{x^{\left( i \right)}},{z^{\left( i \right)}};{\theta ^{\left( {t + 1} \right)}}} \right)}}{{{Q_i}^{\left( t \right)}\left( {{z^{\left( i \right)}}} \right)}}} } \\
&\ge \sum\limits_i {\sum\limits_{{z^{\left( i \right)}}} {{Q_i}^{\left( t \right)}\left( {{z^{\left( i \right)}}} \right)\log \frac{{p\left( {{x^{\left( i \right)}},{z^{\left( i \right)}};{\theta ^{\left( t \right)}}} \right)}}{{{Q_i}^{\left( t \right)}\left( {{z^{\left( i \right)}}} \right)}}} } \\
&= l\left( {{\theta ^{\left( t \right)}}} \right)
\end{align*}
這樣就證實了$l(\theta)$會單調增長。若是要判斷收斂狀況,能夠這樣來作:一種收斂方法是$l(\theta)$再也不變化,還有一種就是變化幅度很小,即根據$l(\theta)^{(t+1)}-l(\theta)^{(t)}$的值來決定。
EM算法相似於座標上升法(coordinate ascent):E步:計算隱變量指望$Q$;M步:將指望$Q$代入極大似然估計中,估算$\theta$;交替將極值推向最大。
參考博文: