LDA的代碼實現(xiàn):http://blog.csdn.net/u010551621/article/details/45258573
文本建模
我們?nèi)粘I钪锌偸钱a(chǎn)生大量的文本,如果每個文本存儲為一篇文章缩宜,那么每篇文檔從人的觀察來說就是有序的詞的序列d=(w1,w1,...,wn)
包含m篇文章的語料庫
統(tǒng)計文本建模的目的就是追問這些觀察到預(yù)料庫的詞序列是如何生成的,統(tǒng)計學(xué)被人們描述為猜測上帝的游戲甚垦,人類產(chǎn)生的所有語料文本我們都可以看成是上帝拋擲骰子生成的冒嫡,我們觀察到的只是上帝玩這個游戲的結(jié)果--詞序列構(gòu)成的語料驮肉,而上帝玩游戲的過程對我們是個黑盒子沛鸵。所以在文本建模中我們希望可以猜測出上帝是如何玩這個游戲的,具體一點缆八,核心的兩個問題是:
1.上帝都有什么樣的骰子
2.上帝是如何拋擲這些骰子的
第一個問題就是表示模型中都有哪些參數(shù),骰子的每一個面的概率都對應(yīng)的模型的參數(shù)疾捍;第二個問題就是游戲規(guī)則是什么奈辰,上帝可能有各種不同類型的骰子,上帝可能按照一定的規(guī)則拋擲這些骰子產(chǎn)生詞序列
1.Unigram Model
假設(shè)我們的詞典中一共有V個詞v1,v2,...,vV乱豆,那么最簡單的Unigram Model就是認為上帝是按照如下的游戲規(guī)則產(chǎn)生文本的
(1)上帝只有一個骰子奖恰,這個骰子有V個面,每個面對應(yīng)一個詞宛裕,各個面的概率不一瑟啃;
(2)每拋出一次骰子,拋出的面就對應(yīng)的產(chǎn)生于一個詞揩尸;如果一篇文檔中有n個詞蛹屿,那么上帝就是獨立的拋擲n詞骰子產(chǎn)生這n個詞
上帝的唯一的骰子的各個面的概率是記為:
所以每次投擲骰子類似于一個拋硬幣時的貝努利實驗,只是貝努利實驗中我們拋擲的是兩面的骰子岩榆,而此處拋擲的是V面的骰子错负,我們把拋這個V面的骰子的實驗記為
對于一篇文檔:
該文檔被生成的概率:
而文檔和文檔之間被認為是獨立的,所以如果語料中有多篇文檔:
該語料的概率是:
在Unigram Model中勇边,我們假設(shè)了文檔之間是獨立可交換的犹撒,而文檔中的詞也是獨立可交換的,所以一篇文檔相當(dāng)于一個袋子粒褒,里面裝了一些詞识颊,而詞的順序信息就無關(guān)重要了,這樣的模型也稱為詞袋模型
假設(shè)語料中總的詞頻是N奕坟,在所有的N個詞中如果我們關(guān)注每個詞vi的發(fā)生次數(shù)ni祥款,那么:
多項分布的概率
此時語料的概率是:
當(dāng)然我們很重要的一個任務(wù)是估計模型的參數(shù)P,也就是問上帝擁有的這個骰子的各個面的概率有多大执赡,按照頻率派的觀點镰踏,使用最大似然估計最大化語料的概率,于是參數(shù)pi的估計值就是:
對于以上模型沙合,貝葉斯學(xué)派的統(tǒng)計學(xué)家會有不同意見奠伪,他們會很挑剔的批評只假設(shè)上帝擁有一個唯一固定的骰子是不合理的跌帐,在貝葉斯學(xué)派看來,一切參數(shù)都是隨機變量绊率,以上模型的骰子的P不是唯一固定的谨敛,它也是一個隨機變量。所以按照貝葉斯學(xué)派的觀點滤否,上帝是按照以下的過程在玩游戲的:
貝葉斯Unigram Model假設(shè)
1.上帝有一個裝有無窮多骰子的壇子脸狸,里面有各式各樣的骰子,每個骰子有V個面藐俺;
2.上帝從壇子里面抽了一個骰子出來炊甲,然后用這個骰子不斷地拋,然后產(chǎn)生了語料庫中的所有的詞
上帝的這個壇子里欲芹,骰子可以是無窮多個卿啡,有些類型的骰子數(shù)量多,有些類型的骰子數(shù)量少菱父,所以從概率分布的角度來看颈娜,壇子里面的骰子P服從一個概況分布p(P),這個分布稱為參數(shù)P的先驗分布
以上貝葉斯學(xué)派的假設(shè)之下浙宜,語料的概率該如何計算呢官辽?
由于我們并不知道上帝使用了哪個骰子,每一個骰子都是可以被用到的粟瞬,只是使用的概率被概率分布
決定缺狠,對每個具體的骰子P详炬,由該骰子產(chǎn)生的數(shù)據(jù)的概率是
所以最終數(shù)據(jù)產(chǎn)生的概率就是對每個骰子產(chǎn)生的數(shù)據(jù)概率進行積分累加求和
在貝葉斯分析框架下皮获,此處先驗分布
就有很多種選擇了牲剃,注意到:
實際上是在計算一個多項分布的概率,所以對先驗分布的一個好的選擇就是多項分布對應(yīng)的共軛分布清酥,即Dirichlet分布:
此處扶镀,
回歸前一小節(jié)介紹Dirichlet分布的知識:其中很重要的一點就是:Dirichlet先驗+多項分布的數(shù)據(jù)=后驗分布為Dirichlet分布
于是在給定參數(shù)
的先驗分布
各個詞出現(xiàn)的頻次的數(shù)據(jù)是
為多項分布,所以無需計算焰轻,我們就可推出后驗分布:
在貝葉斯框架下臭觉,參數(shù)
該如何估計呢,由于我們已經(jīng)有了參數(shù)的后驗分布辱志,所以合理的方式是使用后驗分布的極大值點蝠筑,或者是參數(shù)在后驗分布下的平均值,在該文檔中揩懒,我們?nèi)∑骄底鳛閰?shù)的估計值什乙,使用Dirichlet分布的結(jié)論可得:
也就是對每個參數(shù),我們用下式作為估計值:
考慮到
在Dirichlet分布中的物理意義是事件的先驗偽計數(shù)已球,這個估計式子的含義是很直觀的:每個參數(shù)的估計值是其對應(yīng)事件的先驗的偽計數(shù)和數(shù)據(jù)中的計數(shù)的和在整體計數(shù)中的比例
進一步我們可以計算出文本語料的產(chǎn)生概率是:
2.Topic Model和PLSA
以上的Unigram Mode是一個很簡單的模型臣镣,模型中的假設(shè)過于簡單辅愿,和人類寫文章產(chǎn)生每一個詞的差距過大,有沒有更好的模型呢忆某?
我們可以看看日常生活中人們是如何構(gòu)思文章的点待,如果我們要寫一篇文章弃舒,首先是要確定結(jié)果主題,譬如構(gòu)思一篇自然語言處理的文章喂窟,可能40%會談?wù)撜Z言學(xué),30%談?wù)摳怕式y(tǒng)計质和,20%談?wù)撚嬎銠C稳摄,還有10%談?wù)撈渌闹黝},每個主題下我們又會想到對應(yīng)的詞饲宿,我們之所以會想到對應(yīng)的詞是因為這些詞在這些主題下出現(xiàn)的概率很高厦酬,我們可以很自然的看到,一篇文章通常是由多個主題構(gòu)成的瘫想,一個主題又是由多個與該主題關(guān)系比較大的詞構(gòu)成的
以上這種直觀的想法由Hoffmn給出的PLSA模型中首先進行了明確的數(shù)學(xué)化仗阅,他認為一篇文章可以由多個主題(topic)構(gòu)成,每個topic都是詞匯上的概率分布国夜,文章中的每一詞都是由一個固定的topic生成的
所有人類思考和寫文章的行為都可以認為是上帝的行為减噪,我們可以繼續(xù)回到上帝的假設(shè)中,那么在PLSA模型中车吹,Hoffman認為上帝是按照如下的游戲規(guī)則來生成文本的筹裕。
PLSA Topic Model
1.上帝有兩種類型的骰子,一類是doc-topic骰子窄驹,每個doc-topic骰子有K個面朝卒,每一個面是一個topic的編號;一類是topic-word骰子乐埠,每個topic-word骰子有V個面抗斤,每個面對應(yīng)一個詞囚企;
2.上帝一共有K個topic-word骰子,每個骰子有一個編號豪治,編號從1到K
3.生成每篇文檔之前洞拨,上帝都先為這篇文章制造一個特定的doc-topic骰子,然后重復(fù)如下過程生成文檔中的詞
投擲這個doc-topic骰子负拟,得到一個topic編號z
選擇K個topic-word骰子中編號為z的那個烦衣,投擲這個骰子,于是得到一個詞
以上PLSA模型的文檔生成過程可以圖形化的表示為:
我們可以發(fā)現(xiàn)在以上的游戲規(guī)則下掩浙,文檔和文檔之間是獨立可交換的花吟,同一個文檔里的詞也是獨立可交換的,還是一個bag of words模型厨姚。游戲中的K個topic-word骰子衅澈,我們可以記為
對于包含M篇文檔的語料
中的每一篇文檔
都會有一個特定的doc-topic骰子
所有對應(yīng)的骰子記為:
為了方便,我們假設(shè)每個詞w都是一個編號谬墙,對應(yīng)到topic-word骰子的面今布,于是在PLSA模型中,第m篇文檔的每個詞的生成概率為:
所以整篇文檔的生成概率為:
由于文檔之間相互獨立拭抬,我們也容易寫出整個語料的生成概率部默。求解PLSA這個Topic Model的過程匯總,模型參數(shù)求解可以使用著名的EM算法進行求得局部最優(yōu)解
3.LDA文本建模
(1)游戲規(guī)則
對于上述的PLSA模型造虎,貝葉斯學(xué)派顯然是有意見的傅蹂,doc-topic骰子
和topic-word骰子
都是模型中的參數(shù),參數(shù)都是隨機變量算凿,怎么能沒有先驗分布呢份蝴?于是,類似于對Unigram Model的貝葉斯改造氓轰,我們也可以如下在兩個骰子參數(shù)前加上先驗分布從而把PLSA的游戲過程改造為一個貝葉斯的游戲過程婚夫。由于doc-topic骰子和topic-word骰子都應(yīng)到多項分布,所以先驗分布的一個好的選擇就是Dirichlet分布署鸡,于是我們就得到了LDA(Latent Dirichlet Allocation)模型
在LDA模型中请敦,上帝是按照如下的規(guī)則玩文檔生成的游戲的:
LDA Topic Model
1.上帝有兩大壇骰子,都一個壇子裝的是doc-topic骰子储玫,第二個壇子裝的是topic-word骰子侍筛;
2.上帝隨機的從第二壇骰子中獨立的抽取了K個topic-word骰子,編號為1到K撒穷;
3.每次生成一篇新的文檔前匣椰,上帝先從第一個壇子里隨機抽取一個doc-topic骰子。然后重復(fù)以下過程生成文檔中的詞
投擲這個topic-word骰子端礼,得到一個topic編號z
選擇K個topic-word骰子中編號為z的那個禽笑,投擲這個骰子入录,于是得到一個詞
假設(shè)語料庫中有M篇文檔,所有的word和對應(yīng)的topic如下表示
其中
表示第m篇文檔中的詞
表示這些詞對應(yīng)的topic編號
(2)物理過程分解
使用概率圖模型表示佳镜,LDA模型的游戲過程如圖所示:
這個概率圖可以分為兩個主要的物理過程:
1.
這個過程表示在生成第m篇文檔時僚稿,先從第一個壇子中抽取一個doc-topic骰子
然后投擲這個骰子生成文檔中第n個詞的topic編號
2.
這個過程用如下動作生成語料中的第m篇文檔的第n個詞:在上帝手頭的K個topic-word骰子
中,挑選編號為
的那個骰子進行投擲蟀伸,然后生成word
理解LDA最重要的就是理解這兩個物理過程蚀同。LDA模型在基于K個topic生成語料的M篇文章的過程中,由于是bag of words 模型啊掏,有一些物理過程是相互獨立可交換的蠢络。由此,LDA生成模型中迟蜜,M篇文檔會對應(yīng)M個獨立的Dirichlet-Multinomial共軛結(jié)構(gòu)刹孔,K個topic會對應(yīng)于K個獨立的Dirichlet-Multinomial共軛結(jié)構(gòu)。所以理解LDA所需要的所有數(shù)學(xué)就是理解Dirichlet-Multinomial共軛結(jié)構(gòu)娜睛,其他就都是理解物理過程∷柘迹現(xiàn)在讓我們進入細節(jié),來看看LDA模型是如何被分解為M+K個Dirichlet-Multinomial共軛結(jié)構(gòu)的
由第一個物理過程畦戒,我們知道
是表示生產(chǎn)第m篇文檔中的所有詞對應(yīng)的topics方库,顯然,
對應(yīng)于Dirichlet分布兢交,
對應(yīng)于Multnomial分布,所以整體是一個Dirichlet-Multinomial共軛結(jié)構(gòu)
前文介紹bayes Unigram Model時對Dirichlet-Multinomial共軛結(jié)構(gòu)做了一些計算笼痹,我們在這里可以得到:
進一步配喳,利用Dirichlet-Multinomial共軛結(jié)構(gòu),可以得到參數(shù)
的后驗分布是
由于語料中M篇文檔的topics的生成過程相互獨立凳干,所以我們得到M個相互獨立的Dirichlet-Multinomial共軛結(jié)構(gòu)晴裹,從而我們得到整個語料中topics的生成概率是
目前我們由M篇文檔生成了M個Dirichlet-Multinomial共軛結(jié)構(gòu),還有K個Dirichlet-Multinomial共軛結(jié)構(gòu)在哪里呢救赐?在上帝按照LDA規(guī)則玩游戲的時候涧团,上帝是完全處理完一篇文檔再處理下一篇文檔,文檔中生成的每一個詞都要拋擲兩次骰子经磅,第一次拋一個doc-topic骰子得到topic泌绣,第二次拋一個topic-word骰子得到word,每次生成每篇文檔中的一個詞的時候预厌,這兩次拋骰子的動作是緊鄰輪換進行的阿迈,如果預(yù)料中有N個詞,那么要拋擲2N次骰子轧叽,輪換的拋擲doc-word骰子和topic-word骰子苗沧。但實際上有一些拋骰子的動作是可以交換的刊棕,我們可以等價的調(diào)整2N次拋骰子的順序,前N次只拋doc-topic骰子待逞,得到語料中所有詞的topics甥角,然后基于得到的每個詞的topics編號,后N次只拋topic-word骰子生成N個word识樱,于是上帝在玩LDA游戲的時候可以等價的按照如下過程進行:
1.上帝有兩大壇骰子嗤无,第一個壇子裝的是doc-topic骰子,第二個壇子裝的是topic-word骰子牺荠;
2.上帝隨機的從第二壇里面獨立的抽取K個topic-word骰子翁巍,編號從1到K;
3.每次生成一篇新的文檔前休雌,上帝先從第一個壇子里面隨機抽取doc-topic骰子灶壶,然后重復(fù)投擲這個doc-word骰子為每個詞都生成一個topic編號z,重復(fù)以上過程處理每篇文檔杈曲,生成語料中每個詞的topic編號驰凛,但是詞尚未生成‘
4.從頭到尾,對語料中的每篇文檔中的每個topic編號z担扑,選擇K個topic-word骰子中編號為z的那個恰响,投擲這個骰子,于是生成對應(yīng)的word;
以上游戲先是生成了語料中所有詞的topics涌献,然后對每個詞在給定topic下生成生成word胚宦,在語料中所有詞的topic已經(jīng)生成的條件下,任何兩個word的生成動作都是可交換的燕垃,于是我們把語料中的詞進行交換枢劝,把具有相同topic的詞放到一起
其中
表示這些詞都是由第k個topic生成
對應(yīng)于詞的topic編號,所以這個向量的各個分量都是k
對應(yīng)于概率圖中的第二個物理過程卜壕,
在
的限制下您旁,語料中任何兩個由topic k生成的詞都是可交換的,即使他們不在同一個文檔中轴捎,所以此處不再考慮文檔的概念鹤盒,轉(zhuǎn)而考慮由同一個topic生成的詞,考慮如下過程·
容易看出
對應(yīng)于Dirichlet分布
對應(yīng)于Multinomial分布侦副,所以整體也還是對應(yīng)與一個Dirichlet-Multinomial共軛結(jié)構(gòu)
同樣借助于前面的推導(dǎo)我們可以得到:
其中
進一步侦锯,利用Dirichlet-Multinomial共軛結(jié)構(gòu),我們得到參數(shù)
的后驗分布恰好是
而語料中K個topics生成詞的過程相互獨秦驯,所以我們得到K個相互獨立的Dirichlet-Multinomial共軛結(jié)構(gòu)率触,從而我們得到整個語料庫中詞生成的概率
結(jié)合前面的topic的生成概率,可以得到語料中詞和topic的聯(lián)合生成概率
(3)Gibbs Sampling
有了聯(lián)合分布
萬能的MCMC算法就可以發(fā)揮作用了凸主,于是我們可以考慮用Gibbs Sampling抽樣對這個分布進行采樣了碾阁,當(dāng)然由于
是已經(jīng)觀測到的已知的數(shù)據(jù)刊头,只有
是隱含的變量胶果,所以我們真正需要采樣的是分布
在Gregor Heinrich那篇很有名的LDA模型科普文章Parameter estimation for text analysis中筹麸,是基于上式即聯(lián)合分布來推導(dǎo)Gibbs Sampling公式的罢坝,此小節(jié)我們使用不同的方式恋追,主要是基于Dirichlet-Multinomial共軛來推導(dǎo)Gibbs Sampling公式的供常,這樣對于理解采樣中的概率物理過程有幫助
語料
第i個詞對應(yīng)的topic我們記為
其中i=(m,n)是個二維下標悼凑,對應(yīng)于第m篇文檔的第n個詞偿枕,我們用-i表示去除下標為i的詞,那么按照Gibbs Sampling算法的要求户辫,我們要求得任一個坐標軸i對應(yīng)的條件分布
假設(shè)已經(jīng)觀察到的詞
則由貝葉斯法則渐夸,我們?nèi)菀椎玫剑?/p>
由于
只涉及第m篇文檔和第k個topic,所以上式的條件概率計算中渔欢,實際上也只會涉及到如下兩個Dirichlet-Multinomial共軛結(jié)構(gòu)
其他M+K-2個Dirichlet-Multinomial共軛結(jié)構(gòu)和
是獨立的墓塌,由于語料在去掉第i個詞對應(yīng)的
并不改變我們之前所說的M+K個Dirichlet-Multinomial共軛結(jié)構(gòu),只是某些地方的計數(shù)會變少奥额,因此
的后驗分布都是Dirichelt分布:
使用上面兩個式子苫幢,把以上想法綜合一下,我們就得到了如下的Gibbs Sampling 公式的推導(dǎo):
對于上面數(shù)學(xué)式子化簡的的解析:
第一行是根據(jù)貝葉斯公式推導(dǎo)而來的垫挨;
第二行是對zi和wi的可能發(fā)生的背景做了一個積分求和韩肝,即生成topic和生成word都是由
決定的;
第三行是因為生成topic的過程和生成word的過程是獨立的九榔,因此可以化簡為相乘的形式哀峻;
第四行化簡是根據(jù)條件概率公式:p(AB)=p(A)P(B|A)得到的;
第五行和第六行是將對應(yīng)的分布代入哲泊,具體是在去掉語料庫中第i個詞的條件下的第m個doc-topic骰子的各個面的概率后驗分布和第k個topic-word骰子的各個面的概率后驗分布剩蟀,都是Dirichlet分布;
第七行是給定第m個doc-topic骰子的各個面的概率后驗分布和第k個topic-word骰子的各個面的概率后驗分布情況下攻旦,將生成第m篇文檔的第n個詞的topic zi的概率和第m篇文檔的第n個詞wi的概率進行了簡潔記法喻旷,其實這個后驗概率分布基于的數(shù)據(jù)并不包括第m篇文檔的第n個詞對應(yīng)的topic以及第m篇文檔的第n個詞生逸;
第八行可以這么理解:對于第m篇文檔的第n個詞的topic zi來說牢屋,它出現(xiàn)某個值(1到K)的概率是取決于第m篇文檔的doc-topic骰子的各個面的后驗概率分布的,不同的后驗概率分布槽袄,生成對應(yīng)的topic的概率也是不同的烙无,這其中只涉及了第m篇文檔的topic生成的過程,是一個Dirichlet-Multinomial共軛結(jié)構(gòu)遍尺,也就是說將第m篇文檔的第n個詞的topic的生成概率乘以決定其取值的那個Dirichlet后驗概率分布的結(jié)果截酷,可以看作為這個topic的生成概率的期望,同樣的乾戏,對于第m篇文檔的第n個詞也是同樣的分析迂苛,這其中我們能看出來只涉及了兩個Dirichlet-Multinomial共軛結(jié)構(gòu)
下面我們就要計算
那么這兩個變量怎么計算呢三热,我們上面已經(jīng)說了他們分別表示第m篇文檔的第n個詞的topic的生成概率的期望,我們再想一下三幻,這個生成的概率是不是就對應(yīng)這個第m篇文檔的doc-topic的骰子的各個面的概率就漾,因為這各個面的概率就是說每個topic取值的概率,那么就是說我們需要求這各個面概率的期望即可念搬,我們知道這各個面概率
的后驗概率就是服從Dirichlet分布的抑堡,但是這里是記住是語料庫中去掉第m篇文檔的第n個詞的情況下,上面我們也給出了分布形式朗徊,這里我們只需計算m篇文檔的doc-topic的各個面概率的每個分量的期望即可首妖,根據(jù)之前學(xué)習(xí)Dirichlet分布的結(jié)論可知:
于是我們最終得到了LDA模型的Gibbs Sampling的公式
這個公式的右邊就是p(topic|doc).p(word|topic),這個概率其實就是doc->topic->word的路徑概率爷恳,由于topic有K個有缆,所以Gibbs Sampling 公式的物理意義就是在這K條路徑中進行采樣
對于這里需要說明一下,因為后面我們需要實現(xiàn)這個Gibbs Sampling 算法下的LDA模型
? ? ? 大家應(yīng)該知道Gibbs Sampling 算法是用來隨機模型采樣的舌仍,對于我們的語料庫而言妒貌,我們得到的是語料庫中的詞,要想得到每篇文檔的主題分布铸豁,首先得知道每篇文檔的每個詞的主題灌曙;
? ? ? 我們通過模擬文章的生成過程,用數(shù)學(xué)上表述為M+K個Dirichlet-Mutinomial共軛結(jié)構(gòu)节芥,我們的目標是要得到每個詞的topic在刺,因為每個詞的topic都可能有K個取值,那么整個語料的詞有很多個头镊,這個語料的詞的topic分布是個高維分布蚣驼,我們想要得到這個高維分布平穩(wěn)以后的樣本就可以作為我們最終語料的詞的topic,也就可以得到語料中的文檔的主題分布相艇;
? ? ? 對高維的分布采樣我們可以使用Gibbs Sampling 算法颖杏,大家在這里或許有個疑問,就是前面我們在介紹Gibbs Sampling 算法時坛芽,是通過構(gòu)造馬氏鏈轉(zhuǎn)移矩陣留储,使其滿足細致平穩(wěn)條件,每一輪對樣本的所有的維度進行采樣咙轩,在達到平穩(wěn)分布后获讳,我們?nèi)∑椒€(wěn)分布后的樣本就是我們的目標樣本,并且有一個好處就是我們不用知道原來的樣本的分布情況活喊,只需要構(gòu)造馬氏鏈轉(zhuǎn)移矩陣丐膝,使其收斂到最后的平穩(wěn)分布。那么這里我們雖然同樣是要得到所有的詞的topic的樣本,但是這里存在著馬氏鏈里的關(guān)系嗎帅矗?也就是說每一個詞的topic會被所有其他詞的topic來決定嗎偎肃?大家都知道,LDA模型是建立在上帝玩游戲的規(guī)則之上浑此,每一個詞的topic是在服從Dirichlet先驗概率分布的概率向量基礎(chǔ)上按照多項分布產(chǎn)生的软棺,我們可以認為當(dāng)已知所有其他詞的topic時,我們會得到所有doc-topic骰子和topic-word骰子的各個面概率的后驗分布尤勋,這樣我們就可以得到當(dāng)前詞的topic的分布喘落;
? ? ? 這樣,我們可以在所有其他的詞的topic已知的條件下沿著每一個詞的topic進行輪換的采樣最冰,當(dāng)然前提是構(gòu)造前面所說的馬氏鏈轉(zhuǎn)移矩陣瘦棋,即當(dāng)所有其他詞的topic已知時,當(dāng)前詞的topic的分布暖哨。每一輪采樣都得到了所有的詞的topic樣本赌朋,經(jīng)過多次迭代采樣后,會收斂到topic的平穩(wěn)分布篇裁,可以取這些平穩(wěn)分布后的樣本的平均值沛慢,也可以取某一次的值
(4)Training and Inference
有了LDA模型,當(dāng)然我們的目標有兩個:
估計模型中的參數(shù)
對于新來的一篇文章
我們能夠計算這篇文章的topic分布
有了Gibbs Sampling公式达布,我們就可以基于語料訓(xùn)練LDA模型团甲,并應(yīng)用訓(xùn)練得到的模型對新的文檔進行topic語義分析。訓(xùn)練的過程就是通過Gibbs Sampling獲取語料中的(z,w)的樣本黍聂,而模型中的所有的參數(shù)都可以基于最終采樣得到的樣本進行估計躺苦。訓(xùn)練的流程很簡單:
1隨機初始化,對語料庫中每一個詞w产还,隨機的賦一個topic編號z
2.重新掃描語料庫匹厘,對每一個詞w,按照Gibbs Sampling 公式重新采樣它的topic脐区,在語料中進行更新愈诚;
3.重復(fù)以上語料庫的重新采樣過程直到Gibbs Sampling收斂;
4.統(tǒng)計語料中的topic-word共現(xiàn)頻率矩陣牛隅,該矩陣就是LDA的模型
由這個topic-word矩陣我們可以計算每一個p(word|topic)的概率炕柔,從而計算出模型參數(shù)
這就是上帝用的K個topic-word骰子。當(dāng)然語料中的文檔對應(yīng)的骰子參數(shù)
在以上訓(xùn)練過程中也是可以計算出來的倔叼,只要在Gibbs Sampling收斂以后汗唱,統(tǒng)計每篇文檔中的topic的頻率分布宫莱,我們就可以計算每一個p(topic|doc)概率丈攒,于是就可以計算出每一個
但是這個參數(shù)是和訓(xùn)練語料中的每篇文檔相關(guān)的,對于我們理解新的文檔無用處,所以工程上存儲LDA模型的時候一般不保留巡验,通常在訓(xùn)練LDA模型的過程中际插,我們是取Gibbs Sampling收斂之后的n個迭代結(jié)果進行平均來做參數(shù)估計,這樣模型質(zhì)量更高
有了LDA的模型显设,我們對于新來的文檔框弛,該如何做該文檔的topic語義分布的計算呢?基本上捕捂,inference的過程和trainning的過程完全類似瑟枫,對于新的文檔,我們只要認為Gibbs Sampling公式中的
是穩(wěn)定不變的指攒,所以采樣過程中慷妙,我們只要估計該文檔的topic分布
就好了