一文詳解機(jī)器領(lǐng)域的LDA主題模型
前言
本篇博文將詳細(xì)講解LDA主題模型,從***層數(shù)學(xué)推導(dǎo)的角度來(lái)詳細(xì)講解,只想了解LDA的讀者,可以只看***小節(jié)簡(jiǎn)介即可。因?yàn)镻LSA和LDA非常相似,PLSA也是主題模型方面非常重要的一個(gè)模型,本篇也會(huì)有的放矢的講解此模型。如果讀者閱讀起來(lái)比較吃力,可以定義一個(gè)菲波那切數(shù)列,第 f(n) = f(n-1) + f(n-2) 天再閱讀一次,直到這個(gè)知識(shí)點(diǎn)收斂。如果讀者發(fā)現(xiàn)文章中的錯(cuò)誤或者有改進(jìn)之處,歡迎交流。
1. 簡(jiǎn)介
在機(jī)器學(xué)習(xí)領(lǐng)域,LDA是兩個(gè)常用模型的簡(jiǎn)稱:Linear Discriminant Analysis 和 Latent Dirichlet Allocation。本文的LDA僅指代Latent Dirichlet Allocation. LDA 在主題模型中占有非常重要的地位,常用來(lái)做文本分類。
LDA由Blei, David M.、Ng, Andrew Y.、Jordan于2003年提出,用來(lái)推測(cè)文檔的主題分布。它可以將文檔集中每篇文檔的主題以概率分布的形式給出,從而通過(guò)分析一些文檔抽取出它們的主題分布后,便可以根據(jù)主題分布進(jìn)行主題聚類或文本分類。
2. 先驗(yàn)知識(shí)
LDA 模型涉及很多數(shù)學(xué)知識(shí),這也許是LDA晦澀難懂的主要原因。本小節(jié)主要介紹LDA中涉及的數(shù)學(xué)知識(shí)。數(shù)學(xué)功底比較好的同學(xué)可以直接跳過(guò)本小節(jié)。
LDA涉及到的先驗(yàn)知識(shí)有:二項(xiàng)分布、Gamma函數(shù)、Beta分布、多項(xiàng)分布、Dirichlet分布、馬爾科夫鏈、MCMC、Gibs Sampling、EM算法等。限于篇幅,本文僅會(huì)有的放矢的介紹部分概念,不會(huì)每個(gè)概念都仔細(xì)介紹,亦不會(huì)涉及到每個(gè)概念的數(shù)學(xué)公式推導(dǎo)。如果每個(gè)概念都詳細(xì)介紹,估計(jì)都可以寫一本百頁(yè)的書了。如果你對(duì)LDA的理解能達(dá)到如數(shù)家珍、信手拈來(lái)的程度,那么恭喜你已經(jīng)掌握了從事機(jī)器學(xué)習(xí)方面的扎實(shí)數(shù)學(xué)基礎(chǔ)。想進(jìn)一步了解底層的數(shù)學(xué)公式推導(dǎo)過(guò)程,可以參考《數(shù)學(xué)全書》等資料。
3.2 PLSA模型
Unigram Model模型中,沒(méi)有考慮主題詞這個(gè)概念。我們?nèi)藢懳恼聲r(shí),寫的文章都是關(guān)于某一個(gè)主題的,不是滿天胡亂的寫,比如一個(gè)財(cái)經(jīng)記者寫一篇報(bào)道,那么這篇文章大部分都是關(guān)于財(cái)經(jīng)主題的,當(dāng)然,也有很少一部分詞匯會(huì)涉及到其他主題。所以,PLSA認(rèn)為一篇文檔的生成過(guò)程如下:
- 1. 現(xiàn)有兩種類型的骰子,一種是doc-topic骰子,每個(gè)doc-topic骰子有K個(gè)面,每個(gè)面一個(gè)topic的編號(hào);一種是topic-word骰子,每個(gè)topic-word骰子有V個(gè)面,每個(gè)面對(duì)應(yīng)一個(gè)詞;
- 2. 現(xiàn)有K個(gè)topic-word骰子,每個(gè)骰子有一個(gè)編號(hào),編號(hào)從1到K;
- 3. 生成每篇文檔之前,先為這篇文章制造一個(gè)特定的doc-topic骰子,重復(fù)如下過(guò)程生成文檔中的詞:
- 3.1 投擲這個(gè)doc-topic骰子,得到一個(gè)topic編號(hào)z;
- 3.2 選擇K個(gè)topic-word骰子中編號(hào)為z的那個(gè),投擲這個(gè)骰子,得到一個(gè)詞。
上圖中有三個(gè)主題,在PLSA中,我們會(huì)以固定的概率來(lái)抽取一個(gè)主題詞,比如0.5的概率抽取教育這個(gè)主題詞,然后根據(jù)抽取出來(lái)的主題詞,找其對(duì)應(yīng)的詞分布,再根據(jù)詞分布,抽取一個(gè)詞匯。由此,可以看出PLSA中,主題分布和詞分布都是唯一確定的。但是,在LDA中,主題分布和詞分布是不確定的,LDA的作者們采用的是貝葉斯派的思想,認(rèn)為它們應(yīng)該服從一個(gè)分布,主題分布和詞分布都是多項(xiàng)式分布,因?yàn)槎囗?xiàng)式分布和狄利克雷分布是共軛結(jié)構(gòu),在LDA中主題分布和詞分布使用了Dirichlet分布作為它們的共軛先驗(yàn)分布。所以,也就有了一句廣為流傳的話 -- LDA 就是 PLSA 的貝葉斯化版本。下面兩張圖片很好的體現(xiàn)了兩者的區(qū)別:
在PLSA和LDA的兩篇論文中,使用了下面的圖片來(lái)解釋模型,它們也很好的對(duì)比了PLSA和LDA的不同之處。
3.3.6 LDA Inference
有了 LDA 的模型,對(duì)于新來(lái)的文檔 doc,我們只要認(rèn)為 Gibbs Sampling 公式中的 部分是穩(wěn)定不變的,是由訓(xùn)練語(yǔ)料得到的模型提供的。所以采樣過(guò)程中,我們只要估計(jì)該文檔的 topic 分布就好了。具體算法如下:
- 1. 對(duì)當(dāng)前文檔中的每個(gè)單詞, 隨機(jī)初始化一個(gè)topic編號(hào)z;
- 2. 使用Gibbs Sampling公式,對(duì)每個(gè)詞,重新采樣其topic;
- 3. 重復(fù)以上過(guò)程,知道Gibbs Sampling收斂;
- 4. 統(tǒng)計(jì)文檔中的topic分布,該分布就是。
4 Tips
懂 LDA 的面試官通常會(huì)詢問(wèn)求職者,LDA 中主題數(shù)目如何確定?
在 LDA 中,主題的數(shù)目沒(méi)有一個(gè)固定的***解。模型訓(xùn)練時(shí),需要事先設(shè)置主題數(shù),訓(xùn)練人員需要根據(jù)訓(xùn)練出來(lái)的結(jié)果,手動(dòng)調(diào)參,優(yōu)化主題數(shù)目,進(jìn)而優(yōu)化文本分類結(jié)果。
5 后記
LDA 有非常廣泛的應(yīng)用,深層次的懂 LDA 對(duì)模型的調(diào)優(yōu),乃至提出新的模型 以及對(duì)AI技能的進(jìn)階有巨大幫助。只是了解 LDA 能用來(lái)干什么,只能忽悠小白。
百度開(kāi)源了其 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/數(shù)學(xué)之美/2014/06/【lda數(shù)學(xué)八卦】神奇的gamma函數(shù)/.
[6]: 通俗理解LDA主題模型. (2014). Retrieved from http://blog.csdn.net/v_july_v/article/details/41209515.
[7]: 志華, 周. (2017). 機(jī)器學(xué)習(xí). 北京, 北京: 清華大學(xué)出版社.
[8]: Goodfellow, I., Bengio, Y., & Courville, A. (2017). Deep learning. Cambridge, MA: The MIT Press.
[9]: 航, 李. (2016). 統(tǒng)計(jì)學(xué)習(xí)方法. 北京, 北京: 清華大學(xué)出版社.
作者:達(dá)觀數(shù)據(jù)NLP組—夏琦,微信號(hào):Datagrand
【本文為51CTO專欄作者“達(dá)觀數(shù)據(jù)”的原創(chuàng)稿件,轉(zhuǎn)載可通過(guò)51CTO專欄獲取聯(lián)系】