因爲時間原因實在是來不及一一看那些書籍,經學長指點,直接學習統計翻譯的em算法,然後是基於短語的概率翻譯表提取,再者就是去學習bp神經網絡。
em在ibm model1中的應用,看了很久纔看明白,當我以爲自己看懂了的時候,學長讓我用一句話概括一下em,我竟一時語塞,才驚覺其實並不是很懂。於是老老實實去翻看李航老師的《統計學習方法》,第九章詳細介紹了em算法,也加深了自己的印象。
什麼是EM
簡單來說,em算法是用來解決含有隱變量的概率模型的參數最大似然估計的迭代算法。
用數學語言來說,就是觀測數據已知,求參數
關鍵詞: 隱變量 概率模型 參數估計 迭代算法
Why EM
其實根據上面對em的理解,大致就可以看出來,em用來進行最大似然參數估計,我們之前會使用最小二乘法進行似然估計,但是當無法得到參數解析解時,我們只能一步步減小參數的值,使得概率模型最優。
三枚硬幣的例子
李航老師的書中提到的一個例子,就是拋三枚硬幣的例子。有三枚硬幣,先拋出硬幣A,如果A是正面,就選擇B,然後拋B,記錄結果,反之則選擇C,記錄結果;重複上述過程10次,得到如下結果:1101100110. 我們需要做的,就是求出三枚硬幣拋出正面的概率p,q, π。
解:對於這樣一個問題,我們首先來看看隱變量是什麼。對於這個問題,直接觀測的變量是y,1101100110. 隱變量則是觀測變量對應的A的結果。假設參數用
這裏面的y表示的是每一個樣本值,假設用Y表示每一次實驗的觀測變量值,用Z表示隱變量的值,那麼Y={y1,y2,y3…..y10},Z={在z1,z2,z3…..z10}. 模型的似然估計函數爲:
也就是:
利用最大似然估計法,求解最大的
可以看到這個表達式是沒有解析解的,只能通過迭代的方式來更新參數,求得最大解。而em算法則正是用來對此進行求解的一種算法。
首先,需要對參數進行初始化,這裏假設初始化爲0.5,比較符合常識。
然後,採用em算法的e步,求出隱變量,也就是A拋出的是正面的概率。
其次,利用M步來迭代更新參數。
最後重複EM步驟,直到收斂爲止。
EM算法的推導
看完上面的例子,似乎還是無法明白這個EM算法到底是怎麼回事。
來重新理一下思路,根據上面對問題的描述,其實我們的目的就是要通過迭代的思想,來使得
那麼,
可以看到,我們使用Jensen不等式,成功地把和的對數轉換爲了對數的和,可以求導來得到最大值。下面對上式化簡:
實際上我們要最大化的其實就是這個Q函數,但這個是L的下界,因此em算法就是通過一步步的迭代求解下界,來逼近L的最大值,可以參考梯度下降的思想。下面的一幅圖解釋了具體的過程。
EM算法步驟
(1) 首先需要對參數
(2) E步:
用
那麼, 這個所謂的期望值,其實指的是,完全數據(觀測值和隱變量值)在參數的條件概率下的對數似然函數,對上一次迭代求出的參數和當前觀測值y的期望,假設用Q來表示,則在第i+1次迭代中:
可以看到這個Q函數的來源正是上面推導,所要最大化的表達式。
關於這一部分,其實不是很能理解,按照這個公式來看的確是正確的,難點就在於這個Q函數的確定。看了大多分的例子,其實,一般在E步,會先求解出
(3)M步:
這一步主要是求最大值的,更新第i+1次迭代的參數:
(4)重複(2)(3)步驟,直到
================
以上就是整個em的介紹了。拖拖拉拉好幾天才把這個算法寫完,太拖拉了,好嘛原諒我畢竟是在家寫,沒動力啊╮(╯▽╰)╭。
不過em的入門還是因爲IBM1 model,所以在下一篇會以翻譯模型中的em作進一步的案例分析。