1. 程式人生 > >Hulu機器學習問題與解答系列 | 十九:主題模型

Hulu機器學習問題與解答系列 | 十九:主題模型

cat jpeg ebp sel onf earch -s 2nf aic

今天的內容是

【主題模型】

場景描述

基於Bag-Of-Words(或N-gram)的文本表示模型有一個明顯的缺陷,就是無法識別出不同的詞(或詞組)具有相同主題的情況。我們需要一種技術能夠將具有相同主題的詞(或詞組)映射到同一維度上去,於是產生了主題模型(Topic Model)。主題模型是一種特殊的概率圖模型。想象一下我們如何判定兩個不同的詞具有相同的主題呢?這兩個詞可能有更高的概率出現在同一主題的文檔中;換句話說,給定某一主題,這兩個詞的產生概率都是比較高的,而另一些不太相關的詞產生的概率則是較低的。假設有K個主題,我們可以把任意文章表示成一個K維的主題向量,其中向量的每一維代表一個主題,權重代表這篇文章屬於該主題的概率。主題模型所解決的事情,就是從語料庫中發現有代表性的主題(得到每個主題上面詞的分布),並且計算出每篇文章對應著哪些主題。這樣具有相似主題的文章擁有相似的主題向量表示,從而能夠更好地表示文章的語義,提高文本分類、信息檢索等應用的效果。

問題描述

1. 常見的主題模型有哪些?試介紹其原理。

2. 如何確定LDA模型中的主題個數?

解答與分析

1. 常見的主題模型有哪些?試介紹其原理。

常用的主題模型當屬pLSA和LDA,下面分別介紹其原理:

(1) pLSA

pLSA(probabilistic Latent Semantic Analysis) [1]用一個生成模型來建模文章的生成過程。假設有K個主題,M篇文章;對語料庫中的任意文章d, 假設該文章有N個詞,則對於其中的每一個詞, 我們首先選擇一個主題z, 然後在當前主題的基礎上生成一個詞w。這一過程表示成圖模型(Graphical Model)如下圖所示:

技術分享圖片

生成主題z和詞w的過程遵照一個確定的概率分布。設在文章d中生成主題z的概率為p(z|d), 在選定主題的條件下生成詞w的概率為p(w|z),則給定文章d,生成詞w的概率可以寫成:

技術分享圖片

在這裏我們做一個簡化,假設給定主題z的條件下,生成詞w的概率是與特定的文章無關的,則公式可以簡化為:

技術分享圖片

整個語料庫中的文本生成概率可以用以下公式表示,我們稱之為似然函數(Likelihood Function):

技術分享圖片

其中p(dm, wn)是在第m篇文章中,第n個單詞為wn的概率,與上文中p(w|d)的含義是相同的,只是換了一種符號表達。n(dm, wn)表示單詞wn在文章dm中出現的次數。

於是,對數似然函數可以寫成:

技術分享圖片

在上面的公式中,定義在文章上的主題分布p(zk|dm)和定義在主題上的詞分布p(wn|zk)是待估計的參數 。我們需要找到最優的參數,使得整個語料庫的對數似然函數最大化。由於參數中包含的z

k是隱含變量(即無法直接觀測到的變量),因此無法用最大似然估計直接求解,可以利用EM(Expectation-Maximization)算法來解決。

(2) LDA

LDA(Latent Dirichlet Allocation)[2]可以看作是pLSA的貝葉斯版本,其文本生成過程與pLSA基本相同,不同的是為主題分布和詞分布分別加了狄利克雷(Direchlet)先驗。為什麽要加入狄利克雷先驗呢?這就要從頻率學派和貝葉斯學派的區別說起。pLSA采用的是頻率派思想,將每篇文章對應的主題分布p(zk|dm)和每個主題對應的詞分布p(wn|zk)看成確定的未知常數,並可以求解出來;而LDA采用的是貝葉斯學派的思想,認為待估計的參數(主題分布和詞分布)不再是一個固定的常數,而是服從一定分布的隨機變量。這個分布符合一定的先驗概率分布(即Dirichlet分布),並且在觀察到樣本信息之後,可以對先驗分布進行修正,從而得到後驗分布。LDA之所以選擇Dirichlet分布做為先驗分布,是因為它為多項式分布的共軛先驗概率分布,後驗概率依然服從Dirichlet分布,這樣做可以為計算帶來便利。LDA的圖模型表示如下:

技術分享圖片

其中α,β分別為兩個Dirichlet分布的超參數,為人工設定。語料庫的生成過程如下。

對文本庫中的每一篇文檔dm

技術分享圖片

這裏主題分布θm以及詞分布技術分享圖片是待估計的參數,可以用吉布斯采樣(Gibbs Sampling)[4]求解其期望。具體做法為,首先隨機給定每個詞的主題,然後在其它變量固定的情況下,根據轉移概率抽樣生成每個詞的新主題。對於每個詞來說,轉移概率可以理解為:給定文章中的所有詞以及除自身以外其它所有詞的主題,在此條件下該詞對應各個新主題的概率。最後,經過反復叠代,我們可以根據收斂後的采樣結果計算主題分布和詞分布的期望。

2. 如何確定LDA模型中的主題個數?

在LDA中,主題的個數K是一個預先指定的超參數。對於模型超參數的選擇,實踐中的做法一般是將全部數據集分成訓練集、驗證集、和測試集3部分,然後利用驗證集對超參數進行選擇。例如,在確定LDA的主題個數時,我們可以隨機選取60%的文檔組成訓練集,另外20%的文檔組成驗證集,剩下20%的文檔組成測試集。我們在訓練時嘗試多組超參數的取值,並在驗證集上檢驗哪一組超參數所對應的模型取得了最好的效果。最終,在驗證集上效果最好的一組超參數和其對應的模型將被選定,並在測試集上進行測試。

為了衡量LDA模型在驗證集和測試集上的效果,我們需要尋找一個合適的評估指標。一個常用的評估指標是困惑度(perplexity)。在文檔集合D上,模型的困惑度被定義為:

技術分享圖片

其中M為文檔的總數,wd為文檔d中單詞所組成的詞袋向量,p(wd)為模型所預測的文檔d的生成概率,Nd為文檔d中單詞的總數。

一開始,隨著主題個數的增多,模型在訓練集和驗證集的困惑度呈下降趨勢,但是當主題數目足夠大的時候,會出現過擬合,導致困惑度指標在訓練集上繼續下降但在驗證集上反而增長。這時,我們可以取困惑度極小值點所對應的主題個數作為超參數。實踐中,困惑度的極小值點可能出現在主題數目非常大的時候,然而實際應用並不能承受如此大的主題數目,這時就需要在實際應用中合理的主題數目範圍內進行選擇,比如選擇合理範圍內困惑度的下降明顯變慢(拐點)的時候。

另外一種方法是在LDA基礎之上融入分層狄利克雷過程(Hierarchical Dirichlet Process,HDP)[3],構成一種非參數主題模型HDP-LDA。非參數主題模型的好處是不需要預先指定主題的個數,模型可以隨著文檔數目的變化而自動對主題個數進行調整;它的缺點是在LDA基礎上融入HDP之後使得整個概率圖模型更加復雜, 訓練速度也更加緩慢,因此在實際應用中還是經常采用第一種方法確定合適的主題數目。

參考文獻:

[1] Hofmann, Thomas. "Probabilistic latent semantic analysis." Proceedings of the Fifteenth conference on Uncertainty in artificial intelligence. Morgan Kaufmann Publishers Inc., 1999.

[2] Blei, David M., Andrew Y. Ng, and Michael I. Jordan. "Latent dirichlet allocation." Journal of machine Learning research3.Jan (2003): 993-1022.

[3] Teh, Yee W., et al. "Sharing clusters among related groups: Hierarchical Dirichlet processes." Advances in neural information processing systems. 2005.

[4] George, Edward I., and Robert E. McCulloch. "Variable selection via Gibbs sampling." Journal of the American Statistical Association 88.423 (1993): 881-889.


下一題預告

【PCA算法(續集)】

場景描述

經歷了強化學習、深度學習、集成學習一輪輪面試題的洗禮,我們是否還記得心底對宇宙,對世界本源的敬畏與探索之心?時間回溯到40多天前,我們曾經從宇宙空間出發,討論維度,從維度引到機器學習,由PCA探尋降維之道,傳送門:Hulu機器學習與問答系列第六彈 PCA算法。彼日,我們從最大方差的角度解釋了PCA的原理、目標函數和求解方法。今夕,我們將從最小平方誤差之路,再次通向PCA思想之核心。

問題描述

觀察到其實PCA求解的是最佳投影方向,即一條直線,這與數學中線性回歸問題的目標不謀而合,能否從回歸的角度定義PCA的目標並相應地求解問題呢?

Hulu機器學習問題與解答系列 | 十九:主題模型