NLP —— 圖模型(零):EM算法簡述及簡單示例(三硬幣模型)


      最近接觸了pLSA模型,該模型需要使用期望最大化(Expectation Maximization)算法求解。

      本文簡述了以下內容:

      為什么需要EM算法

      EM算法的推導與流程

      EM算法的收斂性定理

      使用EM算法求解三硬幣模型

為什么需要EM算法

      數理統計的基本問題就是根據樣本所提供的信息,對總體的分布或者分布的數字特征作出統計推斷。所謂總體,就是一個具有確定分布的隨機變量,來自總體的每一個iid樣本都是一個與總體有相同分布的隨機變量。

      參數估計是指這樣一類問題——總體所服從的分布類型已知,但某些參數未知:設 $Y_1,...,Y_N$ 是來自總體 $\textbf Y$ 的iid樣本,記 $Y=(y_1,...,y_N)$ 是樣本觀測值,如果隨機變量 $Y_1,...,Y_N$ 是可觀測的,那么直接用極大似然估計法就可以估計參數 $\theta$ 。

      但是,如果里面含有不可觀測的隱變量,使用MLE就沒那么容易。EM算法正是服務於求解帶有隱變量的參數估計問題。

EM算法的推導與流程

      下面考慮帶有隱變量 $\boldsymbol Z$ (觀測值為 $z$ )的參數估計問題。將觀測數據(亦稱不完全數據)記為 $Y=(y_1,...,y_N)$ ,不可觀測數據記為 $Z=(z_1,...,z_N)$ , $Y$ 、$Z$ 合在一起稱為完全數據。那么觀測數據的似然函數為$$l(\theta)=\prod_{j=1}^NP(y_j|\theta)=\prod_{j=1}^N\sum_zP(z|\theta)P(y_j|z,\theta)$$

其中求和號表示對 $z$ 的所有可能取值求和。另外,當使用頻率學派的方法估計參數時,參數 $\theta$ 並不是一個隨機變量,所以概率的記號里凡是 $\theta$ 出現在“條件”的地方(比如 $P(y_j|\theta)$ ),我覺得應該是用分號隔開( $P(y_j;\theta)$ )。這里為了和參考資料里描述的一致,就不改了。

      為了省事,表述成這個形式:$$l(\theta)=P(Y|\theta)=\sum_zP(z|\theta)P(Y|z,\theta)$$

不然的話后面所有的推導都要套一個求和號(因為會取對數似然,求積變求和)。

      對數似然:$$L(\theta)=\ln P(Y|\theta)=\ln \sum_zP(z|\theta)P(Y|z,\theta)$$

      EM算法是一種迭代算法,通過迭代的方式求取目標函數 $L(\theta)=\ln P(Y|\theta)$ 的極大值。因此,希望每一步迭代之后的目標函數值會比上一步迭代結束之后的值大。設當前第 $n$ 次迭代后參數取值為 $\theta_n$ ,我們的目的是使 $L(\theta_{n+1})>L(\theta_n)$ 。那么考慮:

$$L(\theta)-L(\theta_n)=\ln (\sum_zP(z|\theta)P(Y|z,\theta))-\ln P(Y|\theta_n)$$

      使用琴生不等式(Jensen inequality):

$$\ln\sum_j\lambda_jy_j\geq \sum_j\lambda_j\log y_j,\quad \lambda_j\ge 0,\sum_j\lambda_j=1$$

      因為 $\sum_zP(z|Y,\theta_n)=1$ ,所以 $L(\theta)-L(\theta_n)$ 的第一項有

$$\begin{aligned} \ln (\sum_zP(z|\theta)P(Y|z,\theta))&=\ln (\sum_zP(z|Y,\theta_n)\frac{P(z|\theta)P(Y|z,\theta)}{P(z|Y,\theta_n)})\\&\ge \sum_zP(z|Y,\theta_n)\ln \frac{P(z|\theta)P(Y|z,\theta)}{P(z|Y,\theta_n)}\end{aligned}$$

      第二項有

$$ -\ln P(Y|\theta_n)=-\sum_zP(z|Y,\theta_n)\ln P(Y|\theta_n) $$

      則 $L(\theta)-L(\theta_n)$ 的下界為

$$\begin{aligned} L(\theta)-L(\theta_n)&\ge\sum_zP(z|Y,\theta_n)\ln\frac{P(z|\theta)P(Y|z,\theta)}{P(z|Y,\theta_n)}-\sum_zP(z|Y,\theta_n)\ln P(Y|\theta_n)\\&=\sum_z[P(z|Y,\theta_n)\ln\frac{P(z|\theta)P(Y|z,\theta)}{P(z|Y,\theta_n)}-P(z|Y,\theta_n)\ln P(Y|\theta_n)]\\&=\sum_zP(z|Y,\theta_n)\ln\frac{P(z|\theta)P(Y|z,\theta)}{P(Y|\theta_n)P(z|Y,\theta_n)} \end{aligned}$$

      定義一個函數 $l(\theta|\theta_n)$ :

$$l(\theta|\theta_n)\triangleq L(\theta_n)+\sum_zP(z|Y,\theta_n)\ln\frac{P(z|\theta)P(Y|z,\theta)}{P(Y|\theta_n)P(z|Y,\theta_n)}$$

      從而有 $L(\theta)\ge l(\theta|\theta_n)$ ,也就是說第 $n$ 次迭代結束后, $L(\theta)$ 的一個下界為 $l(\theta|\theta_n)$ 。另外,有等式 $L(\theta_n)=l(\theta_n|\theta_n)$ 成立。

      我們的目的是使下一次迭代后得到的目標函數值能夠大於當前的值: $L(\theta_{n+1})>L(\theta_n)$ ,即 $L(\theta_{n+1})>l(\theta_n|\theta_n)$ 。

      而在當前, $L(\theta)$ 的下界為 $l(\theta|\theta_n)$ ,因此,任何能讓 $l(\theta|\theta_n)$ 增大的 $\theta$ ,也可以讓 $L(\theta)$ 增大。

      也就是說,能滿足 $l(\theta_{n+1}|\theta_n)>l(\theta_n|\theta_n)$ $\theta_{n+1}$ ,一定更能滿足$L(\theta_{n+1})>l(\theta_n|\theta_n)=L(\theta_n)$

      通過下圖(來源:參考資料[1],自己做了點注釋)可以解釋:

      需要注意的是,下界的曲線當然是隨着迭代的進行而變化的:在第 $i$ 次迭代結束后,總是有不等式 $L(\theta)\ge l(\theta|\theta_i)$ 和等式 $L(\theta_i)=l(\theta_i|\theta_i)$ 成立。

      換句話說,EM算法通過優化對數似然在當前的下界,來間接優化對數似然。

      ok,那么現在問題就從找滿足 $L(\theta_{n+1})>L(\theta_n)$ 的 $\theta_{n+1}$ ,

      轉變成了找滿足 $l(\theta_{n+1}|\theta_n)>l(\theta_n|\theta_n)$ 的 $\theta_{n+1}$ 。如何找到這樣一個 $\theta_{n+1}$ ?直接找 $l(\theta|\theta_n)$ 的最優解唄:

$$\theta_{n+1}=\arg\max_\theta l(\theta|\theta_n)$$

      把 $l(\theta|\theta_n)$ 中的幾個與 $\theta$ 無關的量去掉,從而有

$$\begin{aligned} \theta_{n+1}&=\arg\max_\theta \sum_zP(z|Y,\theta_n)\ln [P(z|\theta)P(Y|z,\theta)]\\&=\arg\max_\theta \sum_zP(z|Y,\theta_n)\ln P(Y,z|\theta) \end{aligned}$$

      回顧一下隨機變量的期望的表達式:

$$\mathbb E[\boldsymbol Z]=\sum_kP(\boldsymbol Z=z_k)z_k$$

$$\mathbb E[g(\boldsymbol Z)]=\sum_kP(\boldsymbol Z=z_k)g(z_k)$$

$$\mathbb E[\boldsymbol Z|\boldsymbol Y=y]=\sum_kP(\boldsymbol Z=z_k|\boldsymbol Y=y)z_k$$

      所以:

$$\begin{aligned} \theta_{n+1}&=\arg\max_\theta \mathbb E_{\boldsymbol Z|\boldsymbol Y,\theta_n}[\ln P(Y,z|\theta)]\\&=\arg\max_\theta Q(\theta|\theta_n) \end{aligned}$$

      上式定義了一個函數 $Q(\theta|\theta_n)$ ,稱為 $Q$ 函數

      上式完整表明了EM算法中的一步迭代中所需要的兩個步驟:E-step,求期望;M-step,求極大值。有了上面的鋪墊,下面介紹EM算法的流程:

      輸入:觀測數據 $Y$ ,不可觀測數據 $Z$;

      輸出:參數 $\theta$ ;

      步驟:1. 給出參數初始化值 $\theta_0$ ;

               2. E步:記 $\theta_n$ 為第 $n$ 次迭代后參數的估計值。在第 $n+1$ 次迭代的E步,求期望( $Q$ 函數)

$$Q(\theta|\theta_n)=\mathbb E_{\boldsymbol Z|\boldsymbol Y,\theta_n}[\ln P(Y,z|\theta)]=\sum_zP(z|Y,\theta_n)\ln P(Y,z|\theta)$$

               3. M步:求 $Q$ 函數的極大值點,來作為第 $n+1$ 次迭代所得到的參數估計值 $\theta_{n+1}$ 

$$\theta_{n+1}=\arg\max_\theta Q(\theta|\theta_n)$$

               4. 重復上面兩步,直至達到停機條件。

EM算法的收斂性定理

      定理1:觀測數據的似然函數 $P(Y|\theta)$ 通過EM算法得到的序列 $P(Y|\theta_n)(n=1,2,...)$ 單調遞增:$P(Y|\theta_{n+1})\ge P(Y|\theta_n)$ 。

      定理2:(1) 如果 $P(Y|\theta)$ 有上界,則 $L(\theta_n)=\ln P(Y|\theta_n)$ 收斂到某一值 $L^*$ ;

                 (2) 在 $Q$ 函數與 $L(\theta)$ 滿足一定條件下,由EM算法得到的參數估計序列 $\theta_n$ 的收斂值 $\theta^*$ 是  $L(\theta)$ 的穩定點。

      定理2中第二點的“條件”在大多數情況下都滿足。只能保證收斂到穩定點,不能保證收斂到極大值點,因此EM算法受初值的影響較大。

使用EM算法求解三硬幣模型

      參考資料[2]給出了三硬幣模型的描述:

      假設有三枚硬幣A、B、C,這些硬幣正面出現的概率分別是 $\pi$ 、$p$ 、$q$ 。進行如下擲硬幣試驗: 先擲A,如果A是正面則再擲B,如果A是反面則再擲C。對於B或C的結果,如果是正面則記為1,如果是反面則記為0。進行 $N$ 次獨立重復實驗,得到結果。現在只能觀測到結果,不能觀測到擲硬幣的過程,估計模型參數 $\theta=(\pi,p,q)$ 。

      在這個問題中,實驗結果是可觀測數據 $Y=(y_1,...,y_N)$ ,硬幣A的結果是不可觀測數據 $Z=(z_1,...,z_N)$ 且 $z$ 只有兩種可能取值1和0。

      對於第 $j$ 次試驗,

$$\begin{aligned} P(y_j|\theta)&= \sum_zP(y_j,z|\theta)\\&=\sum_zP(z|\theta)P(y_j|z,\theta)\\&=P(z=1|\theta)P(y_j|z=1,\theta)+P(z=0|\theta)P(y_j|z=0,\theta) \\&=\begin{cases} \pi p+(1-\pi )q, & \text{if }y_j=1;\\ \pi (1-p)+(1-\pi )(1-q), & \text{if }y_j=0.        \end{cases} \\&=\pi p^{y_j}(1-p)^{1-y_j}+(1-\pi )q^{y_j}(1-q)^{1-y_j} \end{aligned}$$

      所以有

$$P(Y|\theta)=\prod_{j=1}^NP(y_j|\theta)=\prod_{j=1}^N (\pi p^{y_j}(1-p)^{1-y_j}+(1-\pi )q^{y_j}(1-q)^{1-y_j})$$

      1. E-step,求期望(Q函數):

$$\begin{aligned} Q(\theta|\theta_n)&=\sum_zP(z|Y,\theta_n)\ln P(Y,z|\theta)\\&=\sum_{j=1}^N\{ \sum_zP(z|y_j,\theta_n)\ln P(y_j,z|\theta)  \}\\&=\sum_{j=1}^N\{ P(z=1|y_j,\theta_n)\ln P(y_j,z=1|\theta) + P(z=0|y_j,\theta_n)\ln P(y_j,z=0|\theta) \} \end{aligned}$$

      先求 $P(z|y_j,\theta_n)$ ,

$$P(z|y_j,\theta_n)=\begin{cases} \frac{\pi_n p_n^{y_j}(1-p_n)^{1-y_j}}{\pi_n p_n^{y_j}(1-p_n)^{1-y_j}+(1-\pi_n )q_n^{y_j}(1-q_n)^{1-y_j}}=\mu_{j,n} & \text{if }z=1; \\1-\mu_{j,n} & \text{if }z=0.  \end{cases}$$

      再求 $P(y_j,z|\theta)=P(z|\theta)P(y_j|z,\theta)$ ,

$$P(y_j,z|\theta)=\begin{cases} \pi p^{y_j}(1-p)^{1-y_j} &\text{if }z=1;\\ (1-\pi )q^{y_j}(1-q)^{1-y_j} &\text{if }z=0. \end{cases}$$

      因此,$Q$ 函數表達式為:

$$Q(\theta|\theta_n)=\sum_{j=1}^N\{\mu_{j,n}\ln [\pi p^{y_j}(1-p)^{1-y_j}]+(1-\mu_{j,n})\ln [(1-\pi )q^{y_j}(1-q)^{1-y_j}] \}$$

      2. M-step,求 $Q$ 函數的極大值:

      令 $Q$ 函數對參數求導數,並等於零。

$$\begin{aligned} \frac{\partial Q(\theta|\theta_n)}{\partial \pi}&=\sum_{j=1}^N\{\frac{\mu_{j,n}\ln [\pi p^{y_j}(1-p)^{1-y_j}]+(1-\mu_{j,n})\ln [(1-\pi )q^{y_j}(1-q)^{1-y_j}] }{\partial \pi}\}\\&=\sum_{j=1}^N\{ \mu_{j,n}\frac{p^{y_j}(1-p)^{1-y_j}}{\pi p^{y_j}(1-p)^{1-y_j}}+(1-\mu_{j,n})\frac{-q^{y_j}(1-q)^{1-y_j}}{(1-\pi )q^{y_j}(1-q)^{1-y_j}} \}\\&=\sum_{j=1}^N\{ \frac{\mu_{j,n}-\pi }{\pi (1-\pi)}\}\\&=\frac{(\sum_{j=1}^N\mu_{j,n})-n\pi }{\pi (1-\pi)} \end{aligned}$$

$$\begin{aligned}\frac{\partial Q(\theta_|\theta_n)}{\partial \pi}=0 &\implies \pi =\frac 1n\sum_{j=1}^N\mu_{j,n}\\ \therefore \pi_{n+1}&=\frac 1n\sum_{j=1}^N\mu_{j,n} \end{aligned}$$

$$\begin{aligned} \frac{\partial Q(\theta|\theta_n)}{\partial p}&=\sum_{j=1}^N\{\frac{\mu_{j,n}\ln [\pi p^{y_j}(1-p)^{1-y_j}]+(1-\mu_{j,n})\ln [(1-\pi )q^{y_j}(1-q)^{1-y_j}] }{\partial p}\}\\&=\sum_{j=1}^N\{ \mu_{j,n}\frac{\pi (y_jp^{y_j-1}(1-p)^{1-y_j}+p^{y_j}(-1)(1-y_j)(1-p)^{1-y_j-1})}{\pi p^{y_j}(1-p)^{1-y_j}}+0 \}\\&=\sum_{j=1}^N\{ \frac{\mu_{j,n}(y_j-p) }{p(1-p)}\}\\&=\frac{(\sum_{j=1}^N\mu_{j,n}y_j)-(p\sum_{j=1}^N\mu_{j,n}) }{p(1-p)} \end{aligned}$$

$$\begin{aligned}\frac{\partial Q(\theta_|\theta_n)}{\partial p}=0 &\implies p =\frac{\sum_{j=1}^N\mu_{j,n}y_j}{\sum_{j=1}^N\mu_{j,n}}\\ \therefore p_{n+1}&=\frac{\sum_{j=1}^N\mu_{j,n}y_j}{\sum_{j=1}^N\mu_{j,n}}\\q_{n+1}&=\frac{\sum_{j=1}^N(1-\mu_{j,n})y_j}{\sum_{j=1}^N(1-\mu_{j,n})} \end{aligned}$$

      既然已經得到了三個參數的迭代式,便可給定初值,迭代求解了。

 

參考資料:

[1] The Expectation Maximization Algorithm: A short tutorial - Sean Borman

[2] 《統計學習方法》,李航

[3] 梯度下降和EM算法:系出同源,一脈相承 這是最近掃到的一篇,還沒有看,感覺不錯,有時間看一下~

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM