EM算法的直观描述
? ? ? ? 解決含有隱變量的問題有很多種方法,今天循序漸進(jìn)地說幾個最基本的,其中第四種方法就是通常所說的em算法。下面以統(tǒng)計學(xué)習(xí)方法中給出的三硬幣問題為例來分別描述這三種方法。(a,b,c三硬幣拋出來為正的概率分別為pai,p,q,每輪拋硬幣先拋a硬幣,a為正則拋b硬幣,a為反則拋c硬幣。把b硬幣或者c硬幣的結(jié)果(正或反)作為最終結(jié)果,即樣觀測值。)
第一種方法:
現(xiàn)在我們只知道樣本的觀測值集合,我們可以以每一個樣本觀測值(例如y1=1)為一個單位單獨考察。在這種方法之下,我們并不關(guān)注pai的值是多少,即拋出a為正的概率,只關(guān)注與該樣本觀測值相對應(yīng)的拋的那次a硬幣的結(jié)果究竟是正還是反,只要知道了它的正反,我們就可以知道本次的觀測值究竟是b拋出來的還是c拋出來的。我們先給p、q賦一個初值,使用的方法也可以算是最大似然估計,就是我分別假設(shè)a拋出的是正面或反面,然后分別計算在a是正面和a是反面的時候有多大的可能性會拋出該觀測值。如果假定a是正面時出現(xiàn)當(dāng)前觀測值的概率更大,我們就把該次的a認(rèn)定為正面,反之則認(rèn)定為反面。使用這種方法可以分別定義每個樣本觀測值對應(yīng)的a是正面還是反面。計算出a為正面時對應(yīng)的觀測值中有多少為正有多少為反,就能根據(jù)最大似然估計得出p值和q值。然而這種方法實際上是行不通的,因為如果初始值p=q,則無法判斷結(jié)果是哪個拋出來的;如果初始值p>q,則所有正面都會被認(rèn)為是p拋出來的,所有反面都會被認(rèn)為是q拋出來的,這樣最后計算出來p、q的值就會分別為1和0,顯然不行;p<q時同理,計算出來p、q的值就會分別為0和1,也不行。
第二種方法:
也就是統(tǒng)計學(xué)習(xí)方法p156頁用到的方法。該方法第一個方法的相同點就是都是以每一個觀測值作為一個單元單獨考察,不同就在于首先分別通過假設(shè)的方法給出pai、p、q的初值。這樣就可以通過貝葉斯公式計算出p(z|y)。(即統(tǒng)計學(xué)習(xí)方法p156頁9.5,看紅字部分即可方便理解)也就是說在當(dāng)前觀測值對應(yīng)的a為正和a為反的概率都能求出來。然后分別使用統(tǒng)計學(xué)習(xí)方法156頁的9.6~9.8三個公式(可參考p157紅色部分)
(也就是分別令新的pai,p,q這三個概率為該概率在當(dāng)前情況下的期望,具體的:pai的期望就是每個樣本對應(yīng)拋的硬幣a朝上的概率(即p(z=1|Y=y)之和除以拋硬幣a的次數(shù)(即樣本觀測值個數(shù))。p的期望的式子中分子的含義是由硬幣b產(chǎn)生的觀測值中值為1(即拋硬幣結(jié)果為正)的觀測值的數(shù)量,分母為由硬幣c產(chǎn)生的觀測值的數(shù)量(即拋b硬幣的次數(shù))。。。具體解釋:p的期望就是每個觀測值(1代表正)分別乘上該觀測值是拋硬幣b的出來的概率(即p(z=1|Y=y),這個相當(dāng)于每個觀測值在求p的期望時的權(quán)重),然后都加起來,最后除以每個觀測值是由拋硬幣b得到的概率之和。q的期望的計算方法和p的相同。)
就能計算出新一輪的pai,p,q的值。就可以進(jìn)行新一輪的迭代。
第三種方法(統(tǒng)計學(xué)習(xí)方法p157上面的em算法是對這個方法的改進(jìn)):
先列出整個樣本集合的觀測值共同出現(xiàn)的概率的計算公式,然后把這個計算公式前面加上log,轉(zhuǎn)化為對數(shù)最大似然估計估計函數(shù)。
然后:
(1)固定p、q,把pai作為未知數(shù)對最大似然函數(shù)求極值,該極值對應(yīng)的pai即為新一輪的pai(在第一輪剛好知道知道p,q,不知道pai)。
(2)固定pai,q,以p作為最大似然函數(shù)的未知數(shù)求極值,得到新一輪的p。
(3)固定pai,p,以q作為最大似然函數(shù)的未知數(shù)求極值,得到新一輪的q。
之后不斷重復(fù)上面的(1),(2),(3)(m步),直到收斂為止。
附:對數(shù)似然函數(shù)的推導(dǎo)(見下圖)
第四種方法(em):
第三種方法存在一個缺點,那就是上一種方法里面的對數(shù)似然函數(shù)L不易求極值,因為里面包含和的對數(shù)。這樣一來就需要想辦法改進(jìn)。可以采用梯度下降法,也可以采用em算法,思路如下:如果在每次迭代出新的pai,p,q的值之后都能列出一個同樣是關(guān)于pai,p,q的函數(shù)Q,滿足只要Q(ξ1)>Q(ξ),就一定有L(ξ1)>L(ξ),那么我就可以每次求出一個能使Q增大的新的參數(shù)值,也就你能同時保證L增大了,這樣我們讓L增大的目標(biāo)就實現(xiàn)了。經(jīng)證明,令Q為等于為統(tǒng)計學(xué)習(xí)方法p157頁.9.9的形式就能確保上述假設(shè)成立。該方法的步驟如下:
(1)選擇pai,p,q的初值。
(2)e步:將初值(第一次執(zhí)行e步的時候帶的是初值,執(zhí)行第n次e步帶入的就是第n-1次迭代求出來的參數(shù)值)帶入求p(z|y)的公式,算出p(z|y),并把算出來的p(z|y)的值作為常數(shù)帶入Q式中。
(3)求出使Q極大化的參數(shù)值,并將其作為本輪迭代產(chǎn)生的新的參數(shù)值。
(4)重復(fù)上面兩步直到收斂。
轉(zhuǎn)載于:https://www.cnblogs.com/lizhizhuang/p/8692612.html
總結(jié)
- 上一篇: ABAQUS 2019基础到精通有限元分
- 下一篇: 小程序开发工具提交代码到远程仓库TGit