也說說LDA(Latent Dirichlet Allocation)——理論篇


[本文鏈接:http://www.cnblogs.com/breezedeus/archive/2013/01/20/2868930.html,轉載請注明出處。]

 

LDA是個generative model,它首先從Dirichlet分布Dir(β)中抽取每個topic對應的參數Image,然后語料集D中第j篇文檔Image(1)的產生方式如下:

1. 選擇文檔長度: N ~ Poission(ξ) ;

2. 選擇文檔參數: θ ~ Dir(α) ;

3. 按照以下方式選取文檔中的每個詞Image(2)

     (a) 選擇一個topic:Image(3)

     (b) 從W個詞中選取出此詞:image

LDA的圖表示如下,其中z、θ和Φ為隱藏變量,α和β為超參數。

Image(5)

 

利用上面LDA的產生假設,可以得到x、z、θ和Φ的聯合分布為:

Image(6)

其中Image(7)Image(8)Image(9)

 

為了最大化Image(10),常用的方法就是基於Variational Bayes(簡稱VB,也叫Variational EM)的mean field近似方法,這也是LDA最初提出時作者使用的求解方法[1]。這種方法在Graphical models用的很多,不熟悉的同學可以參考我在學校時寫的一個介紹pdf。記z、θ和Φ的后驗分布的mean fields近似為:

Image(12)

其中Image(13)為Multinomial分布,而Image(14)都是Dirichlet分布。容易驗證下面的不等式成立:

Image(11)

其中Image(15)

VB通過最小化variational free energy Image(16)來獲得Image(17)中對應的參數估計:

Image(18)

其中Image(19)為digamma函數。

 

上面最后面那個式子里有一個很重要的地方需要說明下。我們之前的產生模型里,在一個文檔里,不同位置的相同詞(i為第幾個詞的下標)是可能有不同的后驗分布的,但從上面最后的公式中可以看出式子右邊與i有關的只有Image(20),也即只與第i個位置的具體詞是什么有關。所以在使用VB求解時,我們只需要考慮與具體詞相關的Image(21),這樣在一個文檔中多次重復的詞只需要算一遍就行了。 詳細的推導可見[1]。

 

之后,又有很多工作提出了一些其他求解方法[2, 3, 4]。例如[2]中作者提出的Collapsed Gibbs Sampling (CGS) 算法中,首先把隱變量θ和Φ積掉,然后得到如下x和z的聯合分布:

Image(22)

然后在固定其他變量值的條件下,Image(2)的條件概率為:

Image(24)

其中的¬ij表示在對應計算中刪除Image(20)Image(2)帶來的影響。通過這個條件概率式子,再利用Gibbs Sampling方法進行迭代抽樣,最終我們可以得到需要的參數估計值。 詳細的推導可見[2, 9]。

 

Gibbs Sampling的問題是收斂比較慢,而且很難判斷何時已達到收斂。[3]中作者建議使用VB代替[2]中的Gibbs Sampling進行求解(所以稱為Collapsed VB,簡稱CVB),也即最小化:

Image(26)

對應的參數估計為:

Image(27)

精確計算上式中的期望項計算量比較大。因為Image(28),所以可以把它看成是多個Bernoulli分布的和,進而用Gaussian分布就可以很好地近似它。其Gaussian近似的均值和方差分別為:

Image(29)                  Image(30)

另一方面,對log(α+x)利用Taylor展開到第二項作為它的近似:

Image(31)

融合這兩個近似,得到如下近似:

Image(32)

把這個近似帶入到前面的Image(33)表達式中,得到:

Image(34)

 

[5]中作者建議在CVB中對log(α+x)進行近似時只使用一階近似,也即:

Image(35)

從而推導出下面的參數公式:

Image(36)

這個方法被稱為CVB0

 

在獲得了Image(33)后,CVB和CVB0使用與VB中相同的表達式獲得隱藏變量θ和Φ對應的后驗分布。所以,測試集的概率可以使用下式計算得到:

image

注意,上面第一個式子就是根據LDA的模型產生方式獲得的,只是對應的分布換成了后驗分布。詳細的推導可見[3]。

 

[5]中作者對以上各種算法做了比較詳細的比較,他們發現在超參數α和β選取得比較合適時,這些算法的效果差別並不大。較之其他算法,CVB0需要的內存量和計算量都占優,所以[5]中作者最終推薦實際應用中使用CVB0。最近幾年又有些工作進一步探討了不同情況下(如在線學習)如何高效地學習LDA,感興趣的同學可見[6, 7]。

 

我們上面的討論都一直未提及超參數的學習方法,只是簡單假設它們是選定不變的。[5]中作者也實驗了兩種超參數調整的方法:

1. 使用[8]中建議的固定點迭代方法更新超參數,具體可見[5, 7, 8];

2. 利用測試集,使用網格搜索的方式找出最優的超參數取值。

另外,[1]中作者也建議使用Newton-Raphson方法來學習超參數的取值。

 


[References]

[1] Blei, D., Ng, A., and Jordan,M. (2003). Latent Dirichlet allocation. Journal of Machine Learning Research, 3:993–1022.

[2] T. L. Griffiths and M. Steyvers. Finding scientific topics. In PNAS, 2004.

[3] YeeWhye Teh, David Newman, and MaxWelling. A collapsed variational Bayesian inference algorithm for latent Dirichlet allocation. In Advances in Neural Information Processing Systems 19, 2007.

[4] Thomas Minka and John Laffert. Expectation-Propagation for the Generative Aspect Model, 2002.

[5] A. Asuncion, M. Welling, P. Smyth, and Y. W. Teh. On smoothing and inference for topic models. In Proceedings of the International Conference on Uncertainty in Artificial Intelligence, 2009.

[6] Matthew D. Hoffman, David M. Blei and Francis Bac.  Online Learning for Latent Dirichlet Allocation, 2010.

[7] Issei Sato, Kenichi Kurihara and Hiroshi Nakagawa. Deterministic Single-Pass Algorithm for LDA, 2010.

[8] Thomas P. Minka. Estimating a dirichlet distribution. Technical report, Microsoft, 2000.

[9] Gregor Heinrich. Parameter estimation for text analysis. Technical report, 2005.


免責聲明!

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



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