LDA-Latent Dirichlet Allocation 学习笔记
以下內容主要基于《Latent Dirichlet Allocation》,JMLR-2003一文,另加入了一些自己的理解,剛開始了解,有不對的還請各位指正。
?
LDA-Latent Dirichlet Allocation
JMLR-2003
?
摘要:本文討論的LDA是對于離散數據集,如文本集,的一種生成式概率模型。LDA是一個三層的貝葉斯分層模型,將數據集中每一項,如每個文本,建模為某些未知的topic組成的集合的混合。每個topic又建模為某種混合概率分布。在文本建模中,話題的概率就提供了每個doc的具體表示。
個人理解:1.生成式模型,就好像我們要寫出一篇文章(生成一篇文檔),我們在下筆的時候腦袋里要先有這個文章的主題,然后在這個主題下再構建合適的詞來組成文檔。這樣的過程就是這篇文章里‘生成’的過程。
2.doc->mixture of topics;?每個topic->mixture of words,文中的Dirichlet分布也體現在這個分布的分布上,原因后續講解。
?
基礎知識,如果都懂,可以跳過:
一、tf-idf?scheme
tf-idf?scheme:?首先選中一個基字典basic vocabulary,?然后對每一個文檔doc,查找每個詞word的出現次數,然后進行歸一化,最后得到的表示形式為一個term-by-document的矩陣X,而將任意長度的doc表示成固定長度的一個向量,而所有的doc則可以用一個list,也就是矩陣X,來表示:
??????????????????????????????????????????doc_1??????doc _2?????…????doc _ N
word_1??????????*?????*???????????…????*
word _2?????????*?????xij?????????…????*
……?????????????????????… …
word _|V|??????????????*?????*???????????…????*
其中xij=#num of word_i / # num of total words in doc_j .
?
優點:可以簡明易懂的將每個文檔表示出來,而且無論每個文檔本身長度如何,都縮減為固定長度(|V|)的向量;
缺點:1.如果選擇的詞典vocabulary比較大,那這個表示矩陣的維度也會比較大,而且其list的長度會隨著庫中文本數目的增加而增加;2.另外,這樣的表示沒有考慮文檔與文檔之間以及各文檔內部的結構信息。
個人理解:除以上缺點外,這種方法的相似性判斷建立的基礎是認為文檔之間重復的詞語越多越相似,然而有一些屬于語義層的相關,而并非表面的詞語的相關,例如‘電腦’與‘微型計算機’這兩個詞并不相同,但意思相同,這時候如果用tf-idf方法通過統計單詞個數比較相似性的方法,效果就不會太好。而主題模型就解決了這個問題,它的相關性體現在隱藏的主題的相關性上,而不是僅僅由表面的詞語的重復度來決定。,如下圖所示(摘自Thomas Huffman_ppt)。
二、LSI-Latent Semantic Indexing
針對缺點1,LSI(1990)將矩陣X進行奇異值分解,然后只取一部分作為其特征,此過程其實就相當于對X進行pca降維。將原始的向量轉化到一個低維的隱含語義空間中,而保留下來的維度(根據奇異值大小決定)所對應的奇異值就對應了每個‘隱含語義’的權重,去掉的那些維度就相當于把那些不重要的‘隱含語義’的權重賦值為0.
LSI的作者Deerwester稱由LSI得到的特征能夠捕獲一些基本的語義概念,例如同義詞等。個人理解,這是由pca的性質決定的,。
LSI如其名字Latent Semantic Indexing,?旨在在詞頻矩陣X的基礎上找出latent semantic,潛藏的語義信息。
其缺點是:不能解決多義詞問題;
個人理解:這種方法就像詞包模型一樣,有一定的道理,但沒有明確化,不像概率模型一樣具體化。原文中說‘Given a generative model of text, however, it is not clear why one should adopt the LSI methodology’,個人覺得就是說他的理論基礎不夠明白,所以后續推出PLSI,就是能夠從數學上,從理論上具有嚴格意義的說明是怎么回事,到底是為什么有效,又怎么得出理論解。
?
三、pLSI-probabilistic LSI
(pLSI圖模型表示)
?
pLSI如上圖,其中D,Z,W分別表示文檔doc,主題topic,和單詞word,在pLSI中對每一個都進行了建模,從文檔到主題,建模為混合模型,從主題到單詞也是一個混合模型,每個單詞都是從這個混合模型中抽取出來的,不過在pLSI中每個混合模型的成分都是multinomial分布,根據上圖,其中后驗概率可以表示為:
p(z_k|d,w)=p(w|z_k)p(z_k|d)/sum_l(p(w|z_l)p(z_l|d))
用EM算法可以求解出各成分的參數。
?
個人理解:1.在pLSI中,每個doc已經可以有多個topic,每個topic出現的概率不等,這一點在LDA中也有。只不過LDA比pLSI多了一層。
2.上述混合模型的理解:類比于混合高斯模型一樣,在混合高斯模型GMM中,是由多個高斯分布混合mixture而成的,在這里,每個混合模型的分量不是高斯分布,而是multinomial分布-多項式分布而已,而且區別于普通GMM,這里是有兩層結構的,每一層都是一個混合模型,doc->topic層是一個混合模型,topic->word層也是一個混合模型,每個混合成分都是一個多項式分布,然后每個混合模型中包含了各個成分本身的參數和各個成分的權重的參數。
2.從上面這個圖可以看出在pLSI中已經有了topic的概念,而且對于文檔-主題和主題-單詞兩個層面都進行了建模(混合模型),但是也可以看出這個模型是對每一個文檔集的,每一個文檔集都對應著模型的一堆參數,如果新來一個文檔(不在原來的訓練集里),就沒法處理。而LDA就可以不僅對已有的文本進行估計,也會對其他新的相似的文本給一個較高的probability。(注:在pLSI模型中,假設有k個topic,vocabulary長度為V,對于這k個topic有M個mixture,那總共有kV+kM個參數,這個數目是隨著M的增加而增加的,當文本集中文檔數目太大時就會overfitting)。
3.每個文檔的表示就是一個list,其中的每個number表示了每個topic在其中的比例(mixing proportions)。這種表示,當文本集很大時,仍然會有很長的一個list。
??????
四、LDA-latent dirichlet allocation
(LDA的圖模型表示)
然后,由其概率模型圖可以比較容易的得到模型如下:
推斷:
計算后驗概率:
?
?
似然函數
?
?
這個式子中對于beta和aplha都有指數冪而相互耦合,兩個參數求導后都不能消掉,因此沒辦法直接用最大似然或者em求解,這時候引入變分推斷(variational inference)。變分推斷就是為了顧及后驗分布,在無法直接對似然函數求解的情況下尋找一個似然函數的下界。然后利用EM的思想進行迭代,讓這個下界逐次增大,達到最后收斂。
?
???????針對pLSI的缺陷,LDA很大的一個特點是將doc->topic這一層的mixture weights作為是一個k-d的隨機變量,而不是像pLSI一樣作為直接與訓練集中的每個doc相關聯的參數集合。就是原文中的theta作為一個隨機變量。對于一個有k個topic的模型來說,他總共有k+kV個參數(alpha有k個參數,beta有kV個參數),與訓練集中的文檔數目M無關。
?
基礎:無論是LSI,PLSI還是LDA都有一個假設,就是無序性假設(exchangeability),即認為文檔中的word的出現位置先后沒有關系,文檔集中的各個doc的位置也不計較先后關系。
???????在LDA中,文檔中topic的分布取為multinomial分布,其先驗取為multinomial分布的共軛先驗-dirichlet分布;而每個topic下word的分布也取為multinomial分布,其先驗也取其共軛先驗-dirichlet分布。
???????參考網址1,關于LDA中各個分布的一個通俗解釋如下:“我們可以假想有一位大作家,比如莫言,他現在要寫m篇文章,一共涉及了K個Topic,每個Topic下的詞分布為一個從參數為的Dirichlet先驗分布中sample出來的Multinomial分布(注意詞典由term構成,每篇文章由word構成,前者不能重復,后者可以重復)。對于每篇文章,他首先會從一個泊松分布中sample一個值作為文章長度,再從一個參數為的Dirichlet先驗分布中sample出一個Multinomial分布作為該文章里面出現每個Topic下詞的概率;當他想寫某篇文章中的第n個詞的時候,首先從該文章中出現每個Topic下詞的Multinomial分布中sample一個Topic,然后再在這個Topic對應的詞的Multinomial分布中sample一個詞作為他要寫的詞。不斷重復這個隨機生成過程,直到他把m篇文章全部寫完。這就是LDA的一個形象通俗的解釋。”
?
推斷:后驗概率p(theta,z|alpha,beta,w)中theta與beta有指數冪不能直接求解,為此得用近似推斷的方法,文章中用的是變分推斷。變分推斷就是要找一個與原來的不能直接求解的后驗概率等價或近似的函數q,這個函數要好解,一般最簡單直接的方法就是假設q中各個參數獨立,形成q=product_n(q_n),這篇文章中選取的q為:
對應的圖模型為
,也就是將原來的圖模型中的w節點去掉并且去掉了theta 與z之間的邊而得到近似。
在得到近似函數后,就通過求解最優近似函數q的參數來得到原后驗的參數。
?
?
?
?
?
?
雜七雜八說了這么多,下面介紹幾個參考資料:
其他值得參考的資料:
1.http://blog.csdn.net/yangliuy/article/details/8330640,這里是一個系列,總共有5篇文章,從PLSA、em到LDA都有介紹,其中有pLSA的詳細實現過程;
2.?http://hi.baidu.com/hehehehello/item/677f9446b729a72210ee1e8b?,pLSI與LDA詳細的區別;
3.?http://hi.baidu.com/linecong/item/8c115b196232147a7b5f2598?,?
4.百度搜索官方博客:http://stblog.baidu-tech.com/?p=1190
5.丕子博文
6.關于LSA中用到的SVD奇異值分解可以參考之前轉的一篇文章: ?http://blog.sina.com.cn/s/blog_5033f3b40101a61t.html
7.plsa?http://moonwith.blog.163.com/blog/static/12368689120099220115495/
其他資源:以下摘自網絡:
?(1)D. M. Blei, et al., "Latent Dirichlet allocation," Journal of Machine Learning Research, vol. 3, pp. 993-1022, 2003.
(2)T. L. Griffiths and M. Steyvers, "Finding scientific topics," Proceedings of the National Academy of Sciences, vol. 101, pp. 5228-5235, 2004.
(3)D. M. Blei, et al., "Hierarchical Topic Models and the Nested Chinese Restaurant Process," NIPS, 2003.
(4)Blei的LDA視頻教程:http://videolectures.net/mlss09uk_blei_tm/
(5)Teh的關于Dirichlet Processes的視頻教程:http://videolectures.net/mlss07_teh_dp/
(6)Blei的畢業論文:http://www.cs.princeton.edu/~blei/papers/Blei2004.pdf
(7)Jordan的報告:http://www.icms.org.uk/downloads/mixtures/jordan_talk.pdf
(8)G. Heinrich, "Parameter Estimation for Text Analysis," http://www.arbylon.net/publications/text-est.pdf
基礎知識:
(1)P. Johnson and M. Beverlin, “Beta Distribution,” http://pj.freefaculty.org/ps707/Distributions/Beta.pdf
(2)M. Beverlin and P. Johnson, “The Dirichlet Family,” http://pj.freefaculty.org/stat/Distributions/Dirichlet.pdf
(3)P. Johnson, “Conjugate Prior and Mixture Distributions”, http://pj.freefaculty.org/stat/TimeSeries/ConjugateDistributions.pdf
(4)P.J. Green, “Colouring and Breaking Sticks:Random Distributions and Heterogeneous Clustering”, http://www.maths.bris.ac.uk/~mapjg/papers/GreenCDP.pdf
(5)Y. W. Teh, "Dirichlet Process", http://www.gatsby.ucl.ac.uk/~ywteh/research/npbayes/dp.pdf
http://www.stat.berkeley.edu/tech-reports/770.pdf
(7)T. P. Minka, "Estimating a Dirichlet Distribution", http://research.microsoft.com/en-us/um/people/minka/papers/dirichlet/minka-dirichlet.pdf
(8)北郵論壇的LDA導讀:[導讀]文本處理、圖像標注中的一篇重要論文Latent Dirichlet Allocation,http://bbs.byr.edu.cn/article/PR_AI/2530?p=1
(9)Zhou Li的LDA Note:http://lsa-lda.googlecode.com/files/Latent Dirichlet Allocation note.pdf
(10)C. M. Bishop, “Pattern Recognition And Machine Learning,” Springer, 2006.
代碼:
(1)Blei的LDA代碼(C):http://www.cs.princeton.edu/~blei/lda-c/index.html
(2)BLei的HLDA代碼(C):http://www.cs.princeton.edu/~blei/downloads/hlda-c.tgz
(3)Gibbs LDA(C++):http://gibbslda.sourceforge.net/
(4)Delta LDA(Python):http://pages.cs.wisc.edu/~andrzeje/research/deltaLDA.tgz
(5)Griffiths和Steyvers的Topic Modeling工具箱:http://psiexp.ss.uci.edu/research/programs_data/toolbox.htm
(6)LDA(Java):http://www.arbylon.net/projects/
(7)Mochihashi的LDA(C,Matlab):http://chasen.org/~daiti-m/dist/lda/
(8)Chua的LDA(C#):http://www.mysmu.edu/phdis2009/freddy.chua.2009/programs/lda.zip
(9)Chua的HLDA(C#):http://www.mysmu.edu/phdis2009/freddy.chua.2009/programs/hlda.zip
轉載于:https://www.cnblogs.com/focus-ml/p/3713949.html
總結
以上是生活随笔為你收集整理的LDA-Latent Dirichlet Allocation 学习笔记的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MySQL存储过程权限检查主要点
- 下一篇: 【天线】【1】一些名词和简单概念的解释