大師兄的貝葉斯網(wǎng)絡(luò)學(xué)習(xí)筆記(三十八):貝葉斯網(wǎng)絡(luò)(十二)

大師兄的貝葉斯網(wǎng)絡(luò)學(xué)習(xí)筆記(三十七):貝葉斯網(wǎng)絡(luò)(十一)
大師兄的貝葉斯網(wǎng)絡(luò)學(xué)習(xí)筆記(三十九):貝葉斯網(wǎng)絡(luò)(十三)

七、缺值數(shù)據(jù)最大似然估計(jì)

3. EM算法
  • EM的E-步驟要計(jì)算的是Q(\theta|\theta'),就是要計(jì)算充分統(tǒng)計(jì)量m'_{ijk}。
  • 由于\sum_{x_l \in \Omega_{X_l}} P(X_l = x_l \mid D_l, \theta^t) \cdot \mathbf{1}_{\{X_i = k,\; \pi(X_i)=j\}}(D_l, X_l = x_l) = P(X_i = k,\; \pi(X_i)=j \mid D_l, \theta^t)。
  • 所以,m^t_{ijk}可用下式來計(jì)算m^t_{ijk}=\sum^m_{l=1}P(X_I=K,\pi(X_i)=j|D_1,\theta^t)
  • EM的M-步驟要計(jì)算arg\sup_\theta Q(\theta|\theta'),只需要把從式得到的m'_{ijk}代入即可。
  • EM算法的偽代碼如下:
  • 輸入:G - 貝葉斯網(wǎng)絡(luò)N的結(jié)構(gòu);
  • 輸入:D - 一組關(guān)于N中變量的數(shù)據(jù);
  • 輸入:δ - 收斂閾值。
  • 輸出:N的參數(shù)的估計(jì):
  • 1: t\leftarrow 0,\theta^0\leftarrow隨機(jī)參數(shù)值;
  • 2: oldScore\leftarrow l(\theta^t|D);
  • 3: while(true)
  • 4: E-步驟:計(jì)算m^t_{ijk}(i=1,...,n;j=1,...,q_i;k=1,...,r_i);
  • 5: M-步驟:計(jì)算\theta^{t+1};
  • 6: newScore\leftarrow l(\theta^{t+1}|D);
  • 7: if(newScore > oldScore + δ)
  • 8: oldScore\leftarrow newScore;
  • 9: t\leftarrow t+1;
  • 10: else
  • 11: return \theta^{t+1}
  • 12: end if
  • 13:end while.
  • 關(guān)于參數(shù)向量\theta^t該如何表示,一種做法是把它表示為一個(gè)一維數(shù)組,但使用起來不方便。因?yàn)?img class="math-inline" src="https://math.jianshu.com/math?formula=%5Ctheta%5Et" alt="\theta^t" mathimg="1">是貝葉斯網(wǎng)絡(luò)中的所有參數(shù)組成的向量,所以比較好的辦法是用貝葉斯網(wǎng)絡(luò)的數(shù)據(jù)結(jié)構(gòu)來表示它。
  • 假設(shè)已知\theta^t,如何來表示\theta^{t+1}?
  • 直接的方法是對(duì)每一個(gè)I,先按照調(diào)用變量消元算法m次來計(jì)算m^t_{ijk}(j=1,...,q_i;k=1,...,r_i),然后再計(jì)算相應(yīng)的\theta^{t+1}_{ijk}
  • 這樣,在計(jì)算時(shí)會(huì)進(jìn)行mn次推理,在各次推理之間沒有實(shí)現(xiàn)計(jì)算共享。
  • 可以用團(tuán)書傳播實(shí)現(xiàn)計(jì)算共享,從而加快\theta^{t+1}的計(jì)算的方法。
  • 設(shè)T是一顆覆蓋N的團(tuán)樹,由以下4步組成:
  • (1) 將m^t_{ijk}(j=1,...,q_i;k=1,...,r_i)置零;
  • (2)用\theta^t將團(tuán)書T初始化;
  • (3)對(duì)每一個(gè)樣本D_l:
  • 在團(tuán)數(shù)T中按D_l設(shè)置證據(jù),并調(diào)用算法CTP的第3~5步進(jìn)行信息傳遞;
  • 對(duì)每一個(gè)變量X_i :
  • 在團(tuán)書T中找到X_i的一個(gè)家族覆蓋團(tuán)C_{X_i},并調(diào)用算法CTP得到函數(shù)h(C_{X_i}),進(jìn)而得到P(X_i,\pi(X_i)|D_l,\theta^t)=\sum_{C_{X_i}\(X_i)\cap \pi(X_i)}h(C_{X_i});
  • m^t_{ijk}(j=1,...,q_i;k=1,...,r_i)中加上公式所得的結(jié)果;
  • (4)將m^t_{ijk}(i=1,...,n;j=1,...,q_i;k=1,...,r_i)代入公式,獲得\theta^{r+1}。
  • 關(guān)于EM算法中如何計(jì)算l(\theta^{t+1}|D)
  • 由于i.i.d假設(shè),可以對(duì)每一個(gè)樣本D_l分別調(diào)用VE算法來計(jì)算l(\theta^{t+1}|D_l),他們的和就是對(duì)數(shù)似然度l(\theta^{t+1}|D)。
  • 將上述計(jì)算\theta^{t+1}的方法稍加修改,就可以在計(jì)算\theta^{t+1}的同時(shí)獲得對(duì)數(shù)似然度l(\theta^{t+1}|D),從而實(shí)現(xiàn)計(jì)算共享。
  • 其基本思想是在信息傳遞完成之后,任選一個(gè)團(tuán)C,將傳遞到C的信息以及儲(chǔ)存在C處的函數(shù)相城,得到一個(gè)函數(shù)h(C)。
  • \sum_Ch(C)就是l(\theta^{t+1}|D_l)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容