以下内容主要基于《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 … *
…… …
…
_|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.,這裡是一個系列,總共有5篇文章,從plsa、em到lda都有介紹,其中有plsa的詳細實作過程;
2. ,plsi與lda詳細的差別;
3. ,
4.百度搜尋官方部落格:
5.丕子博文
6.關于lsa中用到的svd奇異值分解可以參考之前轉的一篇文章:
7.plsa
其他資源:以下摘自網絡:
(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
(6)y. w. teh and m. i. jordan, "hierarchical bayesian nonparametric
models with
applications,”
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