機器學習之EM算法原理及高斯混合模型

目錄

凸函數

Jensen不等式

EM算法

EM算法收斂性

EM算法應用


凸函數

        設D爲f(x)的定義域,如果對於任意的t\in[0,1]x_1,x_2\in D,f(x)滿足

f(tx_1+(1-t)x_2)\leq tf(x_1)+(1-t)f(x_2)

則稱f(x)爲凸函數,如果

f(tx_1+(1-t)x_2)< tf(x_1)+(1-t)f(x_2)

則稱f(x)爲嚴格凸函數。凸函數圖像如下:

圖中綠色曲線表示函數f(x)。

如果f(tx_1+(1-t)x_2)\geq tf(x_1)+(1-t)f(x_2),則稱f(x)爲凹函數,如果f(tx_1+(1-t)x_2)>tf(x_1)+(1-t)f(x_2),則f(x)爲嚴格凹函數。

 

Jensen不等式

        假設f(x)是凸函數,X是隨機變量,則下面這個不等式成立:

E(f(X))\geq f(E(X))

其中E表示期望。如果f(x)是凹函數,則E(f(X))\leq f(E(X))

證明:

        下面以X爲離散隨機變量來來證明。假設隨機變量X的概率分佈如下:

\sum_{i=1}^nP(x_i)=1

P(x_i)\geq 0

隨機變量X的期望定義如下:

E(X)=\sum_{i=1}^nx_iP(x_i)

隨機變量函數f(X)的期望定義如下:

E(f(X))=\sum_{i=1}^nf(x_i)P(x_i)

那麼上面的Jensen不等式等價於

\sum_{i=1}^nf(x_i)P(x_i)\geq f(\sum_{i=1}^nx_iP(x_i))

下面使用歸納法來證明。

(1)當n=1時,

\sum_{i=1}^nP(x_i)=1變爲P(x_1)=1

Jesen不等式變爲:

f(x_1)P(x_1)\geq f(x_1P(x_1))

顯然成立。

(2)假設n=k時,Jensen不等式成立,即

\sum_{i=1}^kf(x_i)P(x_i)\geq f(\sum_{i=1}^kx_iP(x_i))

\sum_{i=1}^kP(x_i)=1

(3)下面證明當n=k+1時,Jensen不等式也成立。

\sum_{i=1}^{k+1}f(x_i)P(x_i)

=\sum_{i=1}^{k}f(x_i)P(x_i)+f(x_{k+1})P(x_{k+1})

=Z_k\sum_{i=1}^{k}\frac{P(x_i)}{Z_k}f(x_i)+f(x_{k+1})P(x_{k+1})            (其中Z_k=\sum_{i=1}^kP(x_i),)

=Z_k\sum_{i=1}^{k}\frac{P(x_i)}{Z_k}f(x_i)+f(x_{k+1})P(x_{k+1})            (因爲\sum_{i=1}^{k}\frac{P(x_i)}{Z_k}=1,第一條滿足Jensen不等式條件,根據(2)得到)

\geq Z_kf(\sum_{i=1}^{k}\frac{P(x_i)}{Z_k}x_i)+f(x_{k+1})P(x_{k+1})

\geq Z_kf(\sum_{i=1}^{k}\frac{P(x_i)}{Z_k}x_i)+f(x_{k+1})P(x_{k+1})     

\geq f(Z_k\sum_{i=1}^{k}\frac{P(x_i)}{Z_k}x_i+P(x_{k+1})x_{k+1})             (因爲Z_k+P(x_{k+1})=1,根據凸函數性質得到)

=f(\sum_{i=1}^{k+1}P(x_i)x_i)

即:

\sum_{i=1}^{k+1}f(x_i)P(x_i)\geq f(\sum_{i=1}^{k+1}P(x_i)x_i)

 

        Jensen不等式在什麼條件下等號成立呢?當f(x)時嚴格凸函數時,當且僅當隨機變量X是常數時等號成立,即X=c

 

EM算法

        假設現在有m個樣本\mathbf{x}_1,\mathbf{x}_2,...,\mathbf{x}_m,模型的參數記爲\theta(如果模型參數有s個,\theta=(\theta_1,\theta_2,...,\theta_s)),通常求解模型通過最大化對數似然函數:

\theta=arg\max_{\theta}\sum_{i=1}^mlogP(\mathbf{x}_i|\theta)

但很多時候。模型中含有無法觀測到的隱含變量(latent variable),假設與樣本\mathbf{x}_i相關的無法觀測的隱含變量爲z_i,並且

該變量對應的分佈爲\sum_{z_i}Q_i(z_i)=1Q_i(z_i)\geq 0

最大化對數似然函數變爲:

\theta=arg\max_{\theta}\sum_{i=1}^mlogP(\mathbf{x}_i|\theta)=arg\max_{\theta}\sum_{i=1}^mlog\sum_{z_i}P(\mathbf{x}_i,z_i|\theta)     (邊際概率等式P(\mathbf{x}_i|\theta)=\sum_{z_i}P(\mathbf{x}_i,z_i|\theta)

因爲z_i未知,導致這個對數似然函數,無法求解參數\theta

對於第i個樣本\mathbf{x}_i,我們有

log\sum_{z_i}P(\mathbf{x}_i,z_i|\theta)=log\sum_{z_i}Q_i(z_i)\frac{P(\mathbf{x}_i,z_i|\theta)}{Q_i(z_i)}

\geq \sum_{z_i}Q_i(z_i)log\frac{P(\mathbf{x}_i,z_i|\theta)}{Q_i(z_i)}                                             (因爲f(x)=logx函數是凹函數)

所以:

 

\sum_{i=1}^mlog\sum_{z_i}P(\mathbf{x}_i,z_i|\theta)\geq \sum_{i=1}^m\sum_{z_i}Q_i(z_i)log\frac{P(\mathbf{x}_i,z_i|\theta)}{Q_i(z_i)} 

這樣我們就找到了最大對數似然函數的一個下界,如果我們能保證等號成立的話,右邊就可以作爲最大值。因爲log(x)是嚴格凹函數,根據Jensen不等式,等號成立的條件是\frac{P(\mathbf{x}_i,z_i|\theta)}{Q_i(z_i)}=c,c是常數。

P(\mathbf{x}_i,z_i|\theta)=cQ_i(z_i)

\sum_{z_i}P(\mathbf{x}_i,z_i|\theta)=c\sum_{z_i}Q_i(z_i)

\sum_{z_i}P(\mathbf{x}_i,z_i|\theta)=c                        (因爲\sum_{z_i}Q_i(z_i)=1

所以

Q_i(z_i)=\frac{P(\mathbf{x}_i,z_i|\theta)}{c}=\frac{P(\mathbf{x}_i,z_i|\theta)}{\sum_{z_i}P(\mathbf{x}_i,z_i|\theta)}=\frac{P(\mathbf{x}_i,z_i|\theta)}{P(\mathbf{x}_i|\theta)}=P(z_i|\mathbf{x}_i,\theta)

也就是我們將原來的優化問題

\theta=arg\max_{\theta}\sum_{i=1}^mlog\sum_{z_i}P(\mathbf{x}_i,z_i|\theta)

轉換爲如下優化問題:

(1)Q_i(z_i)=P(z_i|\mathbf{x}_i,\theta)

(2)\theta=arg\max_{\theta}\sum_{i=1}^m\sum_{z_i}Q_i(z_i)log\frac{P(\mathbf{x}_i,z_i|\theta)}{Q_i(z_i)}

第(1)條保證了等號成立,也就是可以使用第(2)的值作爲對數似然的最大值。這就是EM算法的思想。完整敘述如下:

(1)E步

計算隱含變量的期望:

Q_i(z_i)=P(z_i|\mathbf{x}_i,\theta)

(2)M步

最大化如下對數似然函數

\theta=arg\max_{\theta}\sum_{i=1}^m\sum_{z_i}Q_i(z_i)log\frac{P(\mathbf{x}_i,z_i|\theta)}{Q_i(z_i)}

EM算法不斷交替迭代(1)和(2),直到收斂。這也是EM算法名字的由來,Expectation-Maximization algorithm,Expectation指的就是E步,Maximization指的就是M步。

 

EM算法收斂性

        我們記目標函數

L(\theta)=\sum_{i=1}^mlog\sum_{z_i}P(\mathbf{x}_i,z_i|\theta)

因爲\sum_{z_i}P(\mathbf{x}_i,z_i|\theta)\in (0,1),所以log\sum_{z_i}P(\mathbf{x}_i,z_i|\theta)<0,則L(\theta)<0。說明目標函數有上界。

假設EM算法中第t次迭代的模型參數爲\theta^{(t)},第t+1次迭代中模型參數爲\theta^{(t+1)}。如果我們能夠證明:

L(\theta^{(t)})\leq L(\theta^{(t+1)})

也就是目標函數是單增的,根據單調遞增有上界的函數必收斂性質,就容易得到EM算法的收斂性了。

下面證明目標函數單增。

根據EM算法的E步,有:

Q_i^{(t)}(z_i)=P(z_i|\mathbf{x}_i,\theta^{(t)})

我們回到之前的不等式:

log\sum_{z_i}P(\mathbf{x}_i,z_i|\theta)=log\sum_{z_i}Q_i(z_i)\frac{P(\mathbf{x}_i,z_i|\theta)}{Q_i(z_i)}\geq \sum_{z_i}Q_i(z_i)log\frac{P(\mathbf{x}_i,z_i|\theta)}{Q_i(z_i)} 

看成是隨機變量X如下

X=\frac{P(\mathbf{x}_i,z_i|\theta)}{Q_i(z_i)}

概率爲

Q_i(z_i)

所以第t次迭代有

X^{(t)}=\frac{P(\mathbf{x}_i,z_i|\theta^{(t)})}{Q_i^{(t)}(z_i)}=\frac{P(\mathbf{x}_i,z_i|\theta^{(t)})}{P(z_i|\mathbf{x}_i,\theta^{(t)})}=\frac{P(\mathbf{x}_i,z_i|\theta^{(t)})}{P(\mathbf{x}_i,z_i|\theta^{(t)})/P(\mathbf{x}_i,\theta^{(t)})}=P(\mathbf{x}_i,\theta^{(t)})

這和z_i無關,相當於Jensen不等式中X=c,常數,從而保證了上面不等式等號成立。

L(\theta^{(t)})=\sum_{i=1}^mlog\sum_{z_i}P(\mathbf{x}_i,z_i|\theta^{(t)})=\sum_{i=1}^m\sum_{z_i}Q^{(t)}_i(z_i)log\frac{P(\mathbf{x}_i,z_i|\theta^{(t)})}{Q_i^{(t)}(z_i)}

因爲

L(\theta^{(t+1)})=\sum_{i=1}^mlog\sum_{z_i}P(\mathbf{x}_i,z_i|\theta^{(t+1)})\geq \sum_{z_i}Q_i^{(t)}(z_i)log\frac{P(\mathbf{x}_i,z_i|\theta^{(t+1)})}{Q_i^{(t)}(z_i)}         (基於Jensen不等式和\sum_{z_i}Q_i^{(t)}(z_i)=1

我們來看M步,

\theta=arg\max_{\theta}\sum_{i=1}^m\sum_{z_i}Q_i^{(t)}(z_i)log\frac{P(\mathbf{x}_i,z_i|\theta)}{Q_i^{(t)}(z_i)}

這個最大值使得,

\sum_{i=1}^m\sum_{z_i}Q_i^{(t)}(z_i)log\frac{P(\mathbf{x}_i,z_i|\theta^{(t+1)})}{Q_i^{(t)}(z_i)}\geq \sum_{i=1}^m\sum_{z_i}Q_i^{(t)}(z_i)log\frac{P(\mathbf{x}_i,z_i|\theta^{(t)})}{Q_i^{(t)}(z_i)}=L(\theta^{(t)})    (\theta^{(t+1)}是最大值,大於其他取值)

所以得到:

L(\theta^{(t)})\leq L(\theta^{(t+1)})

 

注:EM算法通常收斂到局部極值。

 

EM算法應用

        K-means算法和高斯混合模型中都有用到EM算法求解。我們這裏以高斯混合模型爲例。高斯混合模型(Gaussian Mixed Model,GMM)是一種常見的聚類算法。高斯混合模型假設每個簇(cluster)的數據服從高斯分佈(正態分佈)。所有樣本數據服從的分佈就是各個簇(或者類別)的高斯分佈的疊加在一起的效果。先直觀認識下高斯分佈,如下: 

圖1是高斯分佈,圖2是其對應的等高線。

我們再來看高斯混合模型:

圖中藍色橢圓曲線是高斯分佈等高線。在左圖中,我們嘗試使用一個高斯分佈去擬合圖中的樣本數據,直觀來看並不合適,圖中的樣本點分爲了兩個簇。所以只用一個高斯分佈去擬合顯得不太合理。所以我們嘗試使用兩個高斯分佈來分別擬合它們,如右圖。此時看上去比較合適。高斯分佈的思想:每個類的數據是從一個高斯分佈中生成的,各個類的高斯分佈函數可能不同,也就是對應的高斯分佈期望和方差參數不同,那麼每個數據也可以看成是由各個類的高斯分佈疊加後的分佈生成的。可以使用表達式來表示這種疊加方式:

f(\mathbf{x})=\sum_{k=1}^Kw_iN(\mathbf{u}_i,\sum_i)

其中N(\mathbf{u}_i,\sum_i)表示高維高斯分佈。w_i是各高斯分佈的權重或者概率。怎麼理解呢,我們舉個例子。

我們以上面的圖爲例。假設

N(\mathbf{u}_1,\sum_1)表示左下角這個簇的高斯分佈,N(\mathbf{u}_2,\sum_2)表示右上角這個簇的高斯分佈。

權重分別爲0.4和0.6。也就是

f(\mathbf{x})=0.4N(\mathbf{u}_1,\sum_1)+0.6N(\mathbf{u}_2,\sum_2)

高斯混合模型如下生成數據。首先根據概率0.4和0.6隨機選擇一個分佈,比如是N(\mathbf{u}_1,\sum_1),那麼接着按照這個2維高斯分佈生成一個樣本點,比如是\mathbf{x}_1=(2,50),然後再按照概率0.4和0.6隨機選擇一個分佈,比如這次選擇的是N(\mathbf{u}_2,\sum_2),按照這個分佈生成一個樣本點\mathbf{x}_2=(4.5,80),一直循環下去。最後會形成圖中這樣的樣本點,因爲第二個分佈被選擇的概率大一些,最後生成的樣本點相對會多一些,這和圖中情形是一致的。對混合高斯模型有了直觀認識,下面我們看下它和EM算法的關係。

        假設現在觀察到m個樣本,如下:

\mathbf{x}_1,\mathbf{x}_2,...,\mathbf{x}_m

根據上面的樣本生成方式,我們並不知道每個樣本是從哪個分佈生成的。此時我們引入一個隱含變量z_i,它表示第i個樣本來自分佈的序號。假設我們最後將這些樣本聚成K類,對應的類別序號如下:1,2,...,K。那麼z_i這個隨機變量的取值就是1,2,...,K,取某個值k的概率爲w_kw_k本質就是高斯混合模型的權重。

爲模型構造對數似然函數,如下:

L(\theta)=\sum_{i=1}^mlog\sum_{z_i}P(\mathbf{x}_i,z_i|\theta)

高斯混合模型的參數有:w_k,\mathbf{u}_i,\sum_i

所以上面的對數似然函數變爲:

L(w,\mathbf{u},\sum)=\sum_{i=1}^mlog\sum_{z_i=1}^KP(\mathbf{x}_i,z_i|w,\mathbf{u},\sum)

其中w表示所有權重參數,\mathbf{u},\sum表示所有高斯分佈的參數,注意只是爲了方便的一種符號表示,後面可以將w,\mathbf{u},\sum看成一個個整體,不然公式看起來很複雜。

因爲對數似然函數中含有隱含變量,無法直接求解。下面我們使用EM算法:

(1)E步

第i個樣本\mathbf{x}_i的概率分佈如下:

Q_i(z_i)=P(z_i|\mathbf{x}_i,\theta)

應用到高斯混合模型中就變爲:

Q_i(z_i)=P(z_i=k|\mathbf{x}_i,w,\mathbf{u},\sum),爲了方便記這個概率爲p_{ik},它表示第i個樣本來自於第k個高斯分佈的概率。

注意\sum_{k=1}^Kp_{ik}=p_i=1,表示樣本第i個樣本來自任何高斯分佈的概率,當然是1。

那麼p_{ik}怎麼計算呢?先使用全概率公式展開:

p_{ik}=Q_i(z_i)=P(z_i=k|\mathbf{x}_i,w,\mathbf{u},\sum)

=\frac{P(z_i=k,\mathbf{x}_i|w,\mathbf{u},\sum)}{P(\mathbf{x}_i,w,\mathbf{u},\sum)}

=\frac{P(\mathbf{x}_i|z_i=k,w,\mathbf{u},\sum)P(z_i=k|w,\mathbf{u},\sum)}{P(\mathbf{x}_i|w,\mathbf{u},\sum)}

=\frac{P(\mathbf{x}_i|z_i=k,w,\mathbf{u},\sum)P(z_i=k|w)}{P(\mathbf{x}_i|w,\mathbf{u},\sum)}      (因爲z_i只和w有關,與各自的分佈方差和期望無關)

=\frac{P(\mathbf{x}_i|z_i=k,w,\mathbf{u},\sum)P(z_i=k|w)}{\sum_{k=1}^KP(\mathbf{x}_i|z_i=k,w,\mathbf{u},\sum)P(z_i=k|w)}

這些項可以如下估算:

P(\mathbf{x}_i|z_i=k,w,\mathbf{u},\sum)=\frac{N_k}{m}

P(z_i=k|w)=w_k          (w_k可以通過初始化得到)

(2)M步

計算模型參數

隨機選擇第k個高斯分佈的概率爲:

w_k=\frac{1}{m}\sum_{i=1}^mp_{ik}

我們驗證下

\sum_{k=1}^Kw_k=\sum_{k=1}^K(\frac{1}{m}\sum_{i=1}^mp_{ik})=\frac{1}{m}\sum_{i=1}^mp_{i}=\frac{1}{m}m=1

第k個高斯分佈的均值和方差如下計算:

\mathbf{u}_k=\frac{\sum_{i=1}^mp_{ik}\mathbf{x}_i}{\sum_{i=1}^mp_{ik}}

\sum_k=\frac{\sum_{i=1}^mp_{ik}(\mathbf{x_i-\mathbf{u}_i})(\mathbf{x_i-\mathbf{u}_i})^T}{\sum_{i=1}^mp_{ik}}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章