一文詳解機器領域的LDA主題模型
前言
本篇博文將詳細講解LDA主題模型,從***層數學推導的角度來詳細講解,只想了解LDA的讀者,可以只看***小節(jié)簡介即可。因為PLSA和LDA非常相似,PLSA也是主題模型方面非常重要的一個模型,本篇也會有的放矢的講解此模型。如果讀者閱讀起來比較吃力,可以定義一個菲波那切數列,第 f(n) = f(n-1) + f(n-2) 天再閱讀一次,直到這個知識點收斂。如果讀者發(fā)現文章中的錯誤或者有改進之處,歡迎交流。
1. 簡介
在機器學習領域,LDA是兩個常用模型的簡稱:Linear Discriminant Analysis 和 Latent Dirichlet Allocation。本文的LDA僅指代Latent Dirichlet Allocation. LDA 在主題模型中占有非常重要的地位,常用來做文本分類。
LDA由Blei, David M.、Ng, Andrew Y.、Jordan于2003年提出,用來推測文檔的主題分布。它可以將文檔集中每篇文檔的主題以概率分布的形式給出,從而通過分析一些文檔抽取出它們的主題分布后,便可以根據主題分布進行主題聚類或文本分類。
2. 先驗知識
LDA 模型涉及很多數學知識,這也許是LDA晦澀難懂的主要原因。本小節(jié)主要介紹LDA中涉及的數學知識。數學功底比較好的同學可以直接跳過本小節(jié)。
LDA涉及到的先驗知識有:二項分布、Gamma函數、Beta分布、多項分布、Dirichlet分布、馬爾科夫鏈、MCMC、Gibs Sampling、EM算法等。限于篇幅,本文僅會有的放矢的介紹部分概念,不會每個概念都仔細介紹,亦不會涉及到每個概念的數學公式推導。如果每個概念都詳細介紹,估計都可以寫一本百頁的書了。如果你對LDA的理解能達到如數家珍、信手拈來的程度,那么恭喜你已經掌握了從事機器學習方面的扎實數學基礎。想進一步了解底層的數學公式推導過程,可以參考《數學全書》等資料。
3.2 PLSA模型
Unigram Model模型中,沒有考慮主題詞這個概念。我們人寫文章時,寫的文章都是關于某一個主題的,不是滿天胡亂的寫,比如一個財經記者寫一篇報道,那么這篇文章大部分都是關于財經主題的,當然,也有很少一部分詞匯會涉及到其他主題。所以,PLSA認為一篇文檔的生成過程如下:
- 1. 現有兩種類型的骰子,一種是doc-topic骰子,每個doc-topic骰子有K個面,每個面一個topic的編號;一種是topic-word骰子,每個topic-word骰子有V個面,每個面對應一個詞;
- 2. 現有K個topic-word骰子,每個骰子有一個編號,編號從1到K;
- 3. 生成每篇文檔之前,先為這篇文章制造一個特定的doc-topic骰子,重復如下過程生成文檔中的詞:
- 3.1 投擲這個doc-topic骰子,得到一個topic編號z;
- 3.2 選擇K個topic-word骰子中編號為z的那個,投擲這個骰子,得到一個詞。
上圖中有三個主題,在PLSA中,我們會以固定的概率來抽取一個主題詞,比如0.5的概率抽取教育這個主題詞,然后根據抽取出來的主題詞,找其對應的詞分布,再根據詞分布,抽取一個詞匯。由此,可以看出PLSA中,主題分布和詞分布都是唯一確定的。但是,在LDA中,主題分布和詞分布是不確定的,LDA的作者們采用的是貝葉斯派的思想,認為它們應該服從一個分布,主題分布和詞分布都是多項式分布,因為多項式分布和狄利克雷分布是共軛結構,在LDA中主題分布和詞分布使用了Dirichlet分布作為它們的共軛先驗分布。所以,也就有了一句廣為流傳的話 -- LDA 就是 PLSA 的貝葉斯化版本。下面兩張圖片很好的體現了兩者的區(qū)別:
在PLSA和LDA的兩篇論文中,使用了下面的圖片來解釋模型,它們也很好的對比了PLSA和LDA的不同之處。
3.3.6 LDA Inference
有了 LDA 的模型,對于新來的文檔 doc,我們只要認為 Gibbs Sampling 公式中的 部分是穩(wěn)定不變的,是由訓練語料得到的模型提供的。所以采樣過程中,我們只要估計該文檔的 topic 分布就好了。具體算法如下:
- 1. 對當前文檔中的每個單詞, 隨機初始化一個topic編號z;
- 2. 使用Gibbs Sampling公式,對每個詞,重新采樣其topic;
- 3. 重復以上過程,知道Gibbs Sampling收斂;
- 4. 統(tǒng)計文檔中的topic分布,該分布就是。
4 Tips
懂 LDA 的面試官通常會詢問求職者,LDA 中主題數目如何確定?
在 LDA 中,主題的數目沒有一個固定的***解。模型訓練時,需要事先設置主題數,訓練人員需要根據訓練出來的結果,手動調參,優(yōu)化主題數目,進而優(yōu)化文本分類結果。
5 后記
LDA 有非常廣泛的應用,深層次的懂 LDA 對模型的調優(yōu),乃至提出新的模型 以及對AI技能的進階有巨大幫助。只是了解 LDA 能用來干什么,只能忽悠小白。
百度開源了其 LDA 模型,有興趣的讀者可以閱讀:https://github.com/baidu/Familia/wiki
References
[1]: Blei, D. M., Ng, A. Y., & Jordan, M. I. (2003). Latent dirichlet allocation. Journal of machine Learning research, 3(Jan), 993-1022.
[2]: Hofmann, T. (1999). Probabilistic latent semantic indexing. In Proceedings of the 22nd annual international ACM SIGIR conference on Research and development in information retrieval (pp. 50-57). ACM.
[3]: Li, F., Huang, M., & Zhu, X. (2010). Sentiment Analysis with Global Topics and Local Dependency. In AAAI (Vol. 10, pp. 1371-1376).
[4]: Medhat, W., Hassan, A., & Korashy, H. (2014). Sentiment analysis algorithms and applications: A survey. Ain Shams Engineering Journal, 5(4), 1093-1113.
[5]: Rick, Jin. (2014). Retrieved from http://www.flickering.cn/數學之美/2014/06/【lda數學八卦】神奇的gamma函數/.
[6]: 通俗理解LDA主題模型. (2014). Retrieved from http://blog.csdn.net/v_july_v/article/details/41209515.
[7]: 志華, 周. (2017). 機器學習. 北京, 北京: 清華大學出版社.
[8]: Goodfellow, I., Bengio, Y., & Courville, A. (2017). Deep learning. Cambridge, MA: The MIT Press.
[9]: 航, 李. (2016). 統(tǒng)計學習方法. 北京, 北京: 清華大學出版社.
作者:達觀數據NLP組—夏琦,微信號:Datagrand
【本文為51CTO專欄作者“達觀數據”的原創(chuàng)稿件,轉載可通過51CTO專欄獲取聯(lián)系】