LDA算法調研報告

LDA算法調研報告


 

1LDA算法概述

    本文所闡述的LDA算法全稱爲Latent Dirichlet Allocation(網上沒有標準的中文名稱,我稱之爲潛在狄利克雷分配算法),不是線性判別分析算法(Linear Discriminant Analysis)。LDA算法由加州伯克利大學計算機系的David M. Blei2003年發表。目前LDA算法的應用挺廣泛,2012北京舉辦的SIGKDD國際會議上,在個性化推薦、社交網絡、廣告預測等各個領域的workshop上都提到LDA模型LDA算法是以同樣出自加州伯克利大學計算機系的Thomas Hufmann1999年發表的PLSAProbabilistic Latent Semantic Analysis)爲基礎,PLSA算法則是對芝加哥大學Scott Deerwester, Susan T. Dumais等人在1990發表的潛在語義分析(Latent Semantic Analysis,簡稱LSA)算法思想的吸收。本報告稍後會對PLSALSALDA三種方法的背景和關聯作介紹。

 由於LDA算法是一個用於研究語料庫(corpus)的生成模型(generation model),其理論基礎是一元語義模型(unigram model),也就是說,LDA算法的前提是,文檔(document)可以被認爲是詞(word)的集合,忽略任何語法或者出現順序關係,這個特性也被稱爲可交換性(Exchangeability)。本文所涉及的PLSALSALDA三種方法的分析都是在一元語義模型下進行。

本文立足於細節闡釋,即在假定讀者沒有機器學習算法基礎的前提下,通過它能迅速瞭解到LDA算法的思想和實現原理。雖然PLSA目前並沒有在工作中被使用,但是它和LDA有很多通用的思想,而且比LDA容易理解,因而也佔據較大篇幅。

 

2、三種文本分析方法

    首先統一一下名稱。表1列舉了LSA算法、PLSA算法、LDA算法各自的簡稱、全稱和別稱。爲了方便,下文中,我們統一採用簡稱。

 

  表1三種算法的全稱和別名

 

 2.1 LSA算法

在文檔的空間向量模型(VSM)中,文檔被表示成由特徵詞出現概率組成的多維向量。這種方法的好處是可以將query和文檔轉化成同一空間下的向量計算相似度,可以對不同詞項賦予不同的權重,在文本檢索、分類、聚類問題中都得到了廣泛應用。但是空間向量模型的缺點是無法處理一詞多義和同義詞問題,例如同義詞也分別被表示成獨立的一維,計算向量的餘弦相似度時會低估用戶期望的相似度;而某個詞項有多個詞義時,始終對應同一維度,因此計算的結果會高估用戶期望的相似度。

潛在語義分析(LSA)是對傳統的空間向量模型(VSMvector space model)的改進。通過降維,LSA將詞和文檔映射到潛在語義空間,從而去除了原始向量空間中的一些噪音(比如詞的誤用或者不相關的詞偶爾出現在一起),解決了同義詞的問題。

    降維是LSA分析的核心。具體做法,是對詞項文檔矩陣(也叫Term-Document矩陣,以詞項(terms)爲行, 文檔(documents)爲列,這裏記爲C)做SVD分解

設C一共有t行d列, 矩陣的元素爲詞項的TF-IDF詞頻term frequency–反文檔頻率inverse document frequency值。然後把的r個對角元素的前k個保留(最大的k個保留), 後面最小的r-k個奇異值置0, 得到;最後計算一個近似的分解矩陣

   

則是在最小二乘意義下C的最佳逼近,從而得到原始詞項文檔矩陣的一個低秩逼近矩陣。

    通過在SVD分解近似,我們將原始的向量轉化成一個低維隱含語義空間中,起到了特徵降維的作用。每個奇異值對應的是每個“語義”維度的權重,將不太重要的權重置爲0,只保留最重要的維度信息,去掉一些“噪音”,因而可以得到文檔的一種更優表示形式。

 

2.2 PLSA算法

   基於SVD的LSA相比於空間向量模型解決了同義詞問題,但是其缺乏嚴謹的數理統計基礎,而且SVD分解非常耗時。另外,LSA沒能解決一詞多義的問題。

Hofmann於1999在SIGIR'99提出了基於概率統計的PLSA模型,並且用EM算法學習模型參數。在傳統文本分類或聚類模型中,一篇文章(document)只有一個topic(姑且翻譯成主題),Hofmann提出,一篇文章可以有多個topic,這就是自然語言處理領域頗具開創性的Topic Model的思想。之所以說LDA算法繼承了PLSA的衣鉢,一個重要的原因就是LDA在文本建模中繼承並且發展了Topic ModelTopic Model目前在自然語言理解和生物信息學方面都有應用。通過增加Topic Model,一個詞語可以從屬於多個Topic,一個Topic下也有多個詞(word),這樣就保證了一詞多義和同義詞的問題都可以在Topic Model下得到解決。按照維基百科的解釋,主題模型(Topic Model)就是一類從大量的文檔中發掘抽象的主題的統計模型。至於Topic的具體理解,有些文章將之稱之爲主題,有的將之解釋成一個概念,一個方面

另外,與LSA依賴於矩陣運算得到結果不同,PLSA算法採用的是機器學習中以概率統計爲基礎的生成模型(generation model)來做文本建模和理解。這裏對生成模型做一下簡單的介紹。生成模型,在機器學習中的定義是顯示或者隱式地對輸入輸出的分佈建模,參考自Bishop的《Pattern Recognition and Machine Learning》。在決策論中,有三種決策方式,分別是對聯合概率分佈建模、對後驗概率建模、和找判別函數。判別模型屬於第二種,對後驗概率建模,將每個觀察值劃分到一個類。判別函數法是思路最簡單的,直接把觀察值通過函數映射到分類。而生成模型,是對先驗概率和類條件密度函數建模,然後標準化,進而得到後驗概率估計Bishop的《Pattern Recognition and Machine Learning》提到,決策論中,對於分類問題採用的決策準則是,如果決策目標是使觀測值被誤分類的概率最小,那麼應該選擇相應的後驗概率最大的分類作爲決策。

 

Hofmann提出的PLSA的概率圖模型如下

 

 其中D代表文檔,Z代表隱含類別或者主題,W爲觀察到的單詞,表示單詞出現在文檔的概率,表示文檔di中出現主題zk下的單詞的概率,給定主題Zk出現單詞Wj的概率。並且每個主題在所有詞項上服從Multinomial (多項式)分佈,每個文檔在所有主題上服從Multinomial (多項式)分佈。

 

    關於這裏的兩個關於多項式分佈的選擇,是有其理論依據的。以每個主題在所有詞項上服從Multinomial (多項式)分佈爲例,主要是基於:

1)在同一個主題下,每個詞項的產生都可以看成一次從該主題下的所有候選詞項中隨機挑選出一個詞項的試驗。不難發現,試驗之間是相互獨立的。在一元語義模型下,詞項之間的順序不影響其聯合分佈概率,也就是如果在一個主題下選擇了V個詞項,那麼。舉一個例子,如果先挑選詞項w1,後挑選詞項w2,其概率爲,反過來,先挑選詞項w2,後挑選詞項w1,其概率爲,不難看到

2)每個詞項都需只能從從屬於該主題的詞項中選擇。這一條在Topic Model下是很自然的。

3)在不同的試驗中,同一個詞項被選中的概率是相同的。這一條是在使用多項式分佈的時候需要注意的,如果不能保證,多項式分佈滿足不了。但是這句話不要被錯誤理解成在同一次的試驗中,不同詞項被選中的概率是相同的”

 

整個文檔的生成過程是這樣的:

(1) 以的概率選中文檔;

(2) 以的概率選中主題;

(3) 以的概率產生一個單詞。

我們可以觀察到的數據就是對,而zk是隱含變量。的聯合分佈是


分別對應兩組Multinomial 分佈,我們需要估計這兩組分佈的參數。PLSA採用EM算法來做估計。

   需要說明的是,PLSA有時會出現過擬合的現象。所謂過擬合(Overfit),是這樣一種現象:一個假設在訓練數據上能夠獲得比其他假設更好的擬合,但是在訓練數據外的數據集上卻不能很好的擬合數據。此時我們就叫這個假設出現了Overfit的現象。出現這種現象的主要原因是訓練數據中存在噪音或者訓練數據太少。PLSA通過採用tempering heuristic來平滑參數,但是實際應用時,即使採用此方法,過擬合現象仍可能發生。

這裏補充一個小插曲,Hofmann在他2004年的論文Latent semantic models for collaborative filtering中指出,他自然知道弄成LDA這種fully bayesian model更漂亮,可是爲了避免高時間複雜度,他使用了tempered EM

PLSALSA的概率學延伸,這樣說的依據是,LSA的核心思想是降維,只是基於SVD分解的LSA方法是藉助於矩陣分解降維,而PLSA是藉助於引進Topic層降維

PLSA中,求解兩個多項式分佈的參數,是求解的關鍵。注意到,對應每個文檔在所有主題上所服從的多項式分佈的參數,而di就表示第i文檔,所以我們可以看到這個參數的規模是隨着文檔數的增加而增加的。在下文中,我們會看到LDA算法的參數是和文檔數無關的,只和Topic個數以及以及字典中term個數有關。

 

表2   LSAPLSA的相同點和不同點



 
 

2.3 LDA算法與PLSA的關聯和區別

   PLSA在文檔級別沒有提供一個概率模型,PLSA中每篇文檔表示成一系列的主題數目,對於這些數目沒有生成概率模型,將導致兩個問題:

1) 模型的參數將隨着語料庫(corpus)的大小線性增長,繼而導致過擬合的嚴重問題。

2) 不清楚如何對於訓練集外的文檔進行主題分配。

   關於“參數線性增長是如何導致過擬合”的問題,現有的論文和資料都沒有做過詳細解釋,其實這裏只舉一個小例子就可以闡明。在基於最小二乘法,採用多項式擬合數據點的時候,可能使用的多項式次數高以後,最小二乘誤差會最小的,但是,多項式的次數選取的過高,會出現嚴重的過擬合問題,在對後續數據點做預測的時候完全不可用。而這裏的多項式的次數過高,會直接造成擬合時採用的參數過多(擬合一元N次多項式需要N+1個參數),實際上也是參數過多造成數據擬合時出現過擬合的一種情形。

   鑑於PLSA的侷限性,LDA算法應運而生。前面提到,LDA算法繼承了PLSA中採用生成模型的思路,延續了Topic Model的思想,自然LDA也具有解決一詞多義和同義詞問題的能力。此外,LDA也延續了PLSA中文檔、主題、詞項的生成過程,認爲每個主題在所有詞項上服從Multinomial 分佈,每個文檔在所有主題上服從Multinomial 分佈,採用多項式分佈的合理性在2.2中已經詳盡說明。   

LDA的參數規模只取決於Topic個數和字典中term總數。LDA在document到topic一層引入了Dirichlet分佈,這是它優於PLSA的地方,使得模型參數的數量不會隨着語料庫的擴大而增多。

這裏取Dirichlet分佈的依據是什麼?首先需要說明,Dirichlet分佈是多項分佈的共軛先驗(Conjugate priors),也就是說,先驗分佈爲Dirichlet分佈,似然函數爲多項分佈,那麼後驗分佈仍爲Dirichlet分佈(《模式識別與機器學習》117頁有證明)。但是,共軛先驗又有什麼好處呢?David M. Blei在文章裏面說,這樣的好處是fancy,或者說,好算或許,這個好算也不夠準確,準確的說法是能算,也就是在共軛的前提下,這個問題可以通過編程實現求解。無論是Variational inference方法還是Gibbs Sampling都是在前面共軛的條件保證下的計算方法。所以,如果沒有Dirichlet分佈,後面這些推導可能都不知道怎麼算。LDA把一個幾乎沒法求解的東西解出來了,而且極大的推動了變分推斷這個東西。因此,在很多LDA的資料裏都會不加解釋地說,選擇Dirichlet分佈是因爲其共軛特性大大減小了計算量”

PLSA的主題是有觀察到的數據,通過最大似然估計的方法得到的,也就是從經驗獲取的。而LDA是假設主題服從Dirichilet分佈,然後從觀察數據中,優化參數,得到後驗參數,使用的思想是最大後驗概率。前者是頻率學派的思想,後者是貝葉斯學派的思想。

 



 

參考文獻

[1]Patter Recognition and Machine Learning ,Christopher M. Bishop

[2]Latent Dirichlet Allocation,David M. Blei,Journal of Machine Learning Research 3 (2003) 993-1022

[3]Parameter estimation for text analysis,Gregor Heinrich



本文轉載自 微信公衆號  “機器學習之家”






發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章