LDA(Latent Dirichlet Allocation)是一種文檔主題生成模型徙歼,也稱為一個(gè)三層貝葉斯概率模型,包含詞姊扔、主題和文檔三層結(jié)構(gòu)惠奸。所謂生成模型,就是說恰梢,我們認(rèn)為一篇文章的每個(gè)詞都是通過“以一定概率選擇了某個(gè)主題佛南,并從這個(gè)主題中以一定概率選擇某個(gè)詞語”這樣一個(gè)過程得到。文檔到主題服從多項(xiàng)式分布嵌言,主題到詞服從多項(xiàng)式分布嗅回。[1]
LDA是一種非監(jiān)督機(jī)器學(xué)習(xí)技術(shù),可以用來識(shí)別大規(guī)模文檔集(document collection)或語料庫(kù)(corpus)中潛藏的主題信息摧茴。它采用了詞袋(bag of words)的方法绵载,這種方法將每一篇文檔視為一個(gè)詞頻向量,從而將文本信息轉(zhuǎn)化為了易于建模的數(shù)字信息蓬蝶。但是詞袋方法沒有考慮詞與詞之間的順序尘分,這簡(jiǎn)化了問題的復(fù)雜性,同時(shí)也為模型的改進(jìn)提供了契機(jī)丸氛。每一篇文檔代表了一些主題所構(gòu)成的一個(gè)概率分布培愁,而每一個(gè)主題又代表了很多單詞所構(gòu)成的一個(gè)概率分布。
1LDA生成過程
對(duì)于語料庫(kù)中的每篇文檔缓窜,LDA定義了如下生成過程(generativeprocess):
1.對(duì)每一篇文檔定续,從主題分布中抽取一個(gè)主題;
2.從上述被抽到的主題所對(duì)應(yīng)的單詞分布中抽取一個(gè)單詞禾锤;
3.重復(fù)上述過程直至遍歷文檔中的每一個(gè)單詞私股。
語料庫(kù)中的每一篇文檔與T(通過反復(fù)試驗(yàn)等方法事先給定)個(gè)主題的一個(gè)多項(xiàng)分布 (multinomialdistribution)相對(duì)應(yīng),將該多項(xiàng)分布記為θ恩掷。每個(gè)主題又與詞匯表(vocabulary)中的V個(gè)單詞的一個(gè)多項(xiàng)分布相對(duì)應(yīng)倡鲸,將這個(gè)多項(xiàng)分布記為φ。[1]
2LDA整體流程
先定義一些字母的含義:文檔集合D黄娘,主題(topic)集合T
D中每個(gè)文檔d看作一個(gè)單詞序列峭状,wi表示第i個(gè)單詞克滴,設(shè)d有n個(gè)單詞。(LDA里面稱之為wordbag优床,實(shí)際上每個(gè)單詞的出現(xiàn)位置對(duì)LDA算法無影響)
·D中涉及的所有不同單詞組成一個(gè)大集合VOCABULARY(簡(jiǎn)稱VOC)劝赔,LDA以文檔集合D作為輸入,希望訓(xùn)練出的兩個(gè)結(jié)果向量(設(shè)聚成k個(gè)topic胆敞,VOC中共包含m個(gè)詞):
·對(duì)每個(gè)D中的文檔d着帽,對(duì)應(yīng)到不同Topic的概率θd,其中移层,pti表示d對(duì)應(yīng)T中第i個(gè)topic的概率仍翰。計(jì)算方法是直觀的,pti=nti/n幽钢,其中nti表示d中對(duì)應(yīng)第i個(gè)topic的詞的數(shù)目歉备,n是d中所有詞的總數(shù)。
·對(duì)每個(gè)T中的topict匪燕,生成不同單詞的概率φt蕾羊,其中,pwi表示t生成VOC中第i個(gè)單詞的概率帽驯。計(jì)算方法同樣很直觀龟再,pwi=Nwi/N,其中Nwi表示對(duì)應(yīng)到topict的VOC中第i個(gè)單詞的數(shù)目尼变,N表示所有對(duì)應(yīng)到topict的單詞總數(shù)利凑。
LDA的核心公式如下:
p(w|d)=p(w|t)*p(t|d)
直觀的看這個(gè)公式,就是以Topic作為中間層嫌术,可以通過當(dāng)前的θd和φt給出了文檔d中出現(xiàn)單詞w的概率哀澈。其中p(t|d)利用θd計(jì)算得到,p(w|t)利用φt計(jì)算得到度气。
實(shí)際上割按,利用當(dāng)前的θd和φt,我們可以為一個(gè)文檔中的一個(gè)單詞計(jì)算它對(duì)應(yīng)任意一個(gè)Topic時(shí)的p(w|d)磷籍,然后根據(jù)這些結(jié)果來更新這個(gè)詞應(yīng)該對(duì)應(yīng)的topic适荣。然后,如果這個(gè)更新改變了這個(gè)單詞所對(duì)應(yīng)的Topic院领,就會(huì)反過來影響θd和φt弛矛。[2]
3LDA學(xué)習(xí)過程(方法之一)
LDA算法開始時(shí),先隨機(jī)地給θd和φt賦值(對(duì)所有的d和t)比然。然后上述過程不斷重復(fù)丈氓,最終收斂到的結(jié)果就是LDA的輸出。再詳細(xì)說一下這個(gè)迭代的學(xué)習(xí)過程:
1.針對(duì)一個(gè)特定的文檔ds中的第i單詞wi,如果令該單詞對(duì)應(yīng)的topic為tj万俗,可以把上述公式改寫為:
pj(wi|ds)=p(wi|tj)*p(tj|ds)
2.現(xiàn)在我們可以枚舉T中的topic鱼鼓,得到所有的pj(wi|ds),其中j取值1~k该编。然后可以根據(jù)這些概率值結(jié)果為ds中的第i個(gè)單詞wi選擇一個(gè)topic。最簡(jiǎn)單的想法是取令pj(wi|ds)最大的tj(注意硕淑,這個(gè)式子里只有j是變量)课竣,即argmax[j]pj(wi|ds)
3.然后,如果ds中的第i個(gè)單詞wi在這里選擇了一個(gè)與原先不同的topic置媳,就會(huì)對(duì)θd和φt有影響了(根據(jù)前面提到過的這兩個(gè)向量的計(jì)算公式可以很容易知道)于樟。它們的影響又會(huì)反過來影響對(duì)上面提到的p(w|d)的計(jì)算。對(duì)D中所有的d中的所有w進(jìn)行一次p(w|d)的計(jì)算并重新選擇topic看作一次迭代拇囊。這樣進(jìn)行n次循環(huán)迭代之后迂曲,就會(huì)收斂到LDA所需要的結(jié)果了。