機器學習主題模型之LDA引數求解——Gibbs取樣
LDA引數推導的Gibbs取樣方法基於馬爾科夫鏈蒙特卡洛方法,因此首先學習MCMC方法。
一、馬爾科夫鏈蒙特卡洛方法
MCMC(Markov Chain Monte Carlo)方法是構造適合的馬爾科夫鏈,使其平穩分佈為待估引數的後驗分佈,抽樣並使用蒙特卡洛方法進行積分計算,實現了抽樣分佈隨模擬的進行而改變的動態模擬,彌補了傳統蒙特卡洛積分只能靜態模擬的缺陷。
1、蒙特卡洛方法
蒙特卡洛方法是以概率統計的理論方法為基礎的一種數值計算方法,將所要求解的問題同一定的概率模型相聯絡,用計算機實現統計模擬或抽樣,以獲得問題的近似解,故又稱隨機抽樣法或統計試驗法。這種方法求得的是近似解,對於一些複雜問題往往是唯一可行的方法,模擬的樣本數越大越接近真實值,但同時計算量也大幅上升。
蒙特卡洛方法的三個步驟:
(1)構造/描述概率過程
對於本身就具有隨機性質的問題,如粒子運輸問題,只要正確描述和模擬這個概率過程即可;對於本來不是隨機性質的確定性問題,如定積分計算,就需要構造一個人為的概率過程,將不具有隨機性質的問題轉化為隨機性質的問題。
例如要求f(x)在[a,b]上的積分,但原函式F(x)難以求解;如果可以得到x在[a,b]上的概率分佈函式p(x),則定積分可以近似求解為:
(2)實現從已知概率分佈中抽樣
構造概率模型後,就可以基於概率分佈去取樣所需的n個x的樣本集,帶入求和式子即可求解。最基本的一個概率分佈是(0,1)上的均勻分佈,可以使用線性同餘發生器LCG生成偽隨機數樣本:
x:=(a*x+c)%m, 0<a<m, 0≤c<m, m>0
對於一些常見的連續分佈,如正態分佈、t分佈、F分佈、Beta分佈、分佈等都可以通過uniform(0,1)的樣本轉換而得。
對於不是常見的分佈,可以使用接受-拒絕取樣來得到該分佈的樣本,即使用一個可以取樣的分佈q(x)與一個常數c相乘後,使得真實分佈總在cq(x)曲線的下方。
重複以下步驟直到獲得n個被接受的取樣點:
①從cq(x)中獲得一個隨機取樣點,值為;
②計算接受概率acceptance probability:;
③從uniform(0,1)中隨機生成一個值u,如果ɑ≥u,則接受取樣
從圖上可以看出,cq(x)與p(x)曲線接近的地方接受概率較高,所以這樣的地方採到的點就會比較多;而在接受概率較低的、差距較大的地方採到的點就會比較少,這也就保證了這個方法的有效性。
(3)建立各種估計量。
在構造了概率模型並從中抽樣後,就可以確定一個隨機變數,作為所要求問題的解——無偏估計。建立各種估計量,相當於對模擬實驗的結果進行考察和登記,從中得到問題的解。
2、馬爾科夫鏈
當後驗分佈的樣本相互獨立時,可以使用大數定律求解;當樣本不獨立時,就要使用馬爾科夫鏈的平穩分佈進行抽樣。
對於一個非週期的馬爾科夫鏈,任何兩個狀態i,j∈E是相通的(不可約),那麼它的狀態轉移概率的極限存在且與i無關,則稱此馬爾科夫鏈具有遍歷性:,此時若滿足,則稱 為轉移概率的極限分佈。
平穩分佈:若有限或無限數列 滿足,則稱它是概率分佈;如果此概率分佈滿足,則稱它是平穩分佈。
有限馬爾科夫鏈轉移概率的極限分佈一定是平穩分佈;無限馬爾科夫鏈轉移概率的極限分佈不一定是平穩分佈。
在得到平穩分佈的馬爾科夫鏈狀態轉移矩陣後,就可以從這個平穩分佈中取樣蒙特卡洛方法所需的樣本集了。
3、Metropolis-Hastings演算法
對不滿足細緻平穩條件的馬爾科夫鏈狀態轉移矩陣p,引入ɑ(i,j)使其可以取等號,即得到滿足條件的目標矩陣P:
ɑ(i,j)∈[0,1]稱為接受率,P可以通過任意一個馬爾科夫鏈狀態轉移矩陣p乘以ɑ(i,j)得到,注意每次轉移後需要歸一化矩陣使得每一行之和為1。但由於ɑ(i,j)可能非常小,導致大部分取樣都被拒絕轉移,馬爾科夫鏈需要取樣很多次才能收斂,取樣效率很低。
MH取樣將接受率做了如下改進,解決了接受率過低的問題:
MH演算法在特徵很多的情況下,接受率的計算量很大;且在特徵維度很高,難以求出特徵的聯合概率分佈,只能得到特徵之間的條件概率分佈時,需要採取Gibbs取樣的方法解決這類問題。
4、Gibbs Sampling
馬爾科夫鏈通過轉移概率矩陣可以收斂到穩定的概率分佈,這意味著MCMC可以藉助馬爾科夫鏈的平穩分佈特性模擬高維概率分佈p(x);當馬爾科夫鏈經過burn-in階段,消除初始引數的影響、達到平穩狀態後,每一次狀態轉移都可以生成待模擬分佈的一個樣本。
Gibbs取樣是MCMC演算法的一個特例,只對2維以上的情況有效,它交替隨機固定某一維度,通過其他維度的值來抽樣該維度的值。設p(x,y)是一個二維的聯合概率分佈,由下圖可知:
所以在 這條直線上,如果用條件概率分佈 作為馬爾科夫鏈的狀態轉移概率,則任意兩個點之間的轉移滿足細緻平穩條件;在 這條直線上也是如此。Gibbs取樣和MH的不同之處在於,MH只是單獨考慮某兩個狀態的取樣(相當於直接從A到D),而Gibbs取樣是沿著不同維度進行輪換取樣的,且接受率ɑ=1 是MH演算法的特例情況。最終的近似平穩分佈可以通過取樣結果 近似表達。
二、Gibbs取樣演算法求解LDA思路
在Gibbs取樣演算法求解LDA的方法中,假設α、η是已知的先驗輸入,目的是推斷隱變數的分佈,即估計p(θ,z,β,w|ɑ,η),可以通過對θ、β積分將它們邊緣化去掉,這種方法稱為collapse Gibbs sampling。
假設每篇文件長度N相同,分別考慮θ、β這兩部分的積分,令 代表第m篇文件中分配給第k個主題的詞的個數,對應的多項分佈的計數為:
先對θ部分進行計算,根據α→θ→z的Dir-Mult共軛分佈關係,省略M的連乘可得:
根據Dirichlet分佈的積分性質可知:
因此θ部分積分可化為:
同樣地,令 代表第k個主題對應詞典中第v個詞的詞個數,對應的多項分佈的計數為:,可將β部分的積分寫為:
最終得到主題和詞的聯合分佈如下:
Gibbs取樣的目標是接近分佈p(z|w,ɑ,η),由於w,ɑ,η已知,令 表示第m篇文件的第n個詞對應的主題, 代表z去掉 後的主題分佈。
注意到Gibbs取樣只需要為 採一個樣,因此不用得到上式準確的值,只需得到 取值的比值即可,將上式簡化為:
Gibbs取樣公式的物理意義就是在K條doc→topic→word的路徑中進行取樣,當取樣收斂後可得所有詞最終的主題z,統計每篇文件中的主題概率p(topic|doc)可得文件主題分佈,統計每個主題中所有的詞概率p(word|topic)可得主題詞分佈 。
三、LDA Gibbs取樣演算法流程總結
(1)選擇適當的主題總數K,及LDA模型引數ɑ、η;
(2)對應文集中的每一篇文件的每個詞w,隨機賦予一個主題編號z;
(3)重新掃描文集,對每個詞w使用Gibbs取樣公式更新它的主題編號,並更新文集中的詞;
(4)重複取樣過程直至收斂;
(5)統計文集中topic-word共現頻率矩陣,即可得到LDA模型。
通常訓練LDA模型時,取Gibbs取樣收斂之後的n個迭代的結果進行平均來做引數估計,這樣模型質量更高。
當LDA模型訓練好後,要確定一篇新文件的主題時,由於各個主題的詞分佈 已經確定,只需要對 進行取樣計算即可。
選擇適合的超引數K非常關鍵,對於簡單的語義區分可選擇較小的K,對於複雜的語義區分則選擇較大的K,且需要足夠多的語料。
Gibbs取樣容易並行化,可以很方便的使用大資料平臺來分散式地訓練海量文件的LDA模型。
參考資料