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就是認(rèn)為上帝是按照如下的游戲規(guī)則產(chǎn)生文本的
(1)上帝只有一個骰子,這個骰子有V個面,每個面對應(yīng)一個詞,各個面的概率不一;
(2)每拋出一次骰子,拋出的面就對應(yīng)的產(chǎn)生于一個詞;如果一篇文檔中有n個詞,那么上帝就是獨立的拋擲n詞骰子產(chǎn)生這n個詞
上帝的唯一的骰子的各個面的概率是記為:

所以每次投擲骰子類似于一個拋硬幣時的貝努利實驗,只是貝努利實驗中我們拋擲的是兩面的骰子,而此處拋擲的是V面的骰子,我們把拋這個V面的骰子的實驗記為


對于一篇文檔:

該文檔被生成的概率:

而文檔和文檔之間被認(rèn)為是獨立的,所以如果語料中有多篇文檔:

該語料的概率是:

在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ù)都是隨機(jī)變量,以上模型的骰子的P不是唯一固定的,它也是一個隨機(jī)變量。所以按照貝葉斯學(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ù)概率進(jìn)行積分累加求和

在貝葉斯分析框架下,此處先驗分布

就有很多種選擇了,注意到:

實際上是在計算一個多項分布的概率,所以對先驗分布的一個好的選擇就是多項分布對應(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ù)中的比例
進(jìn)一步我們可以計算出文本語料的產(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(jī),還有10%談?wù)撈渌闹黝},每個主題下我們又會想到對應(yīng)的詞,我們之所以會想到對應(yīng)的詞是因為這些詞在這些主題下出現(xiàn)的概率很高,我們可以很自然的看到,一篇文章通常是由多個主題構(gòu)成的,一個主題又是由多個與該主題關(guān)系比較大的詞構(gòu)成的
以上這種直觀的想法由Hoffmn給出的PLSA模型中首先進(jìn)行了明確的數(shù)學(xué)化,他認(rèn)為一篇文章可以由多個主題(topic)構(gòu)成,每個topic都是詞匯上的概率分布,文章中的每一詞都是由一個固定的topic生成的

所有人類思考和寫文章的行為都可以認(rèn)為是上帝的行為,我們可以繼續(xù)回到上帝的假設(shè)中,那么在PLSA模型中,Hoffman認(rèn)為上帝是按照如下的游戲規(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算法進(jìn)行求得局部最優(yōu)解
3.LDA文本建模
(1)游戲規(guī)則
對于上述的PLSA模型,貝葉斯學(xué)派顯然是有意見的,doc-topic骰子

和topic-word骰子

都是模型中的參數(shù),參數(shù)都是隨機(jī)變量,怎么能沒有先驗分布呢?于是,類似于對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.上帝隨機(jī)的從第二壇骰子中獨立的抽取了K個topic-word骰子,編號為1到K;
3.每次生成一篇新的文檔前,上帝先從第一個壇子里隨機(jī)抽取一個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骰子

中,挑選編號為

的那個骰子進(jìn)行投擲,然后生成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),其他就都是理解物理過程?,F(xiàn)在讓我們進(jìn)入細(xì)節(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)做了一些計算,我們在這里可以得到:

進(jìn)一步,利用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,每次生成每篇文檔中的一個詞的時候,這兩次拋骰子的動作是緊鄰輪換進(jìn)行的,如果預(yù)料中有N個詞,那么要拋擲2N次骰子,輪換的拋擲doc-word骰子和topic-word骰子。但實際上有一些拋骰子的動作是可以交換的,我們可以等價的調(diào)整2N次拋骰子的順序,前N次只拋doc-topic骰子,得到語料中所有詞的topics,然后基于得到的每個詞的topics編號,后N次只拋topic-word骰子生成N個word,于是上帝在玩LDA游戲的時候可以等價的按照如下過程進(jìn)行:
1.上帝有兩大壇骰子,第一個壇子裝的是doc-topic骰子,第二個壇子裝的是topic-word骰子;
2.上帝隨機(jī)的從第二壇里面獨立的抽取K個topic-word骰子,編號從1到K;
3.每次生成一篇新的文檔前,上帝先從第一個壇子里面隨機(jī)抽取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的生成動作都是可交換的,于是我們把語料中的詞進(jìn)行交換,把具有相同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)我們可以得到:

其中


進(jìn)一步,利用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抽樣對這個分布進(jìn)行采樣了,當(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)是個二維下標(biāo),對應(yīng)于第m篇文檔的第n個詞,我們用-i表示去除下標(biāo)為i的詞,那么按照Gibbs Sampling算法的要求,我們要求得任一個坐標(biāo)軸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的概率進(jìn)行了簡潔記法,其實這個后驗概率分布基于的數(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條路徑中進(jìn)行采樣

對于這里需要說明一下,因為后面我們需要實現(xiàn)這個Gibbs Sampling 算法下的LDA模型
? ? ? 大家應(yīng)該知道Gibbs Sampling 算法是用來隨機(jī)模型采樣的,對于我們的語料庫而言,我們得到的是語料庫中的詞,要想得到每篇文檔的主題分布,首先得知道每篇文檔的每個詞的主題;
? ? ? 我們通過模擬文章的生成過程,用數(shù)學(xué)上表述為M+K個Dirichlet-Mutinomial共軛結(jié)構(gòu),我們的目標(biāo)是要得到每個詞的topic,因為每個詞的topic都可能有K個取值,那么整個語料的詞有很多個,這個語料的詞的topic分布是個高維分布,我們想要得到這個高維分布平穩(wěn)以后的樣本就可以作為我們最終語料的詞的topic,也就可以得到語料中的文檔的主題分布;
? ? ? 對高維的分布采樣我們可以使用Gibbs Sampling 算法,大家在這里或許有個疑問,就是前面我們在介紹Gibbs Sampling 算法時,是通過構(gòu)造馬氏鏈轉(zhuǎn)移矩陣,使其滿足細(xì)致平穩(wěn)條件,每一輪對樣本的所有的維度進(jìn)行采樣,在達(dá)到平穩(wěn)分布后,我們?nèi)∑椒€(wěn)分布后的樣本就是我們的目標(biāo)樣本,并且有一個好處就是我們不用知道原來的樣本的分布情況,只需要構(gòu)造馬氏鏈轉(zhuǎn)移矩陣,使其收斂到最后的平穩(wěn)分布。那么這里我們雖然同樣是要得到所有的詞的topic的樣本,但是這里存在著馬氏鏈里的關(guān)系嗎?也就是說每一個詞的topic會被所有其他詞的topic來決定嗎?大家都知道,LDA模型是建立在上帝玩游戲的規(guī)則之上,每一個詞的topic是在服從Dirichlet先驗概率分布的概率向量基礎(chǔ)上按照多項分布產(chǎn)生的,我們可以認(rèn)為當(dāng)已知所有其他詞的topic時,我們會得到所有doc-topic骰子和topic-word骰子的各個面概率的后驗分布,這樣我們就可以得到當(dāng)前詞的topic的分布;
? ? ? 這樣,我們可以在所有其他的詞的topic已知的條件下沿著每一個詞的topic進(jìn)行輪換的采樣,當(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)然我們的目標(biāo)有兩個:
估計模型中的參數(shù)

對于新來的一篇文章

我們能夠計算這篇文章的topic分布

有了Gibbs Sampling公式,我們就可以基于語料訓(xùn)練LDA模型,并應(yīng)用訓(xùn)練得到的模型對新的文檔進(jìn)行topic語義分析。訓(xùn)練的過程就是通過Gibbs Sampling獲取語料中的(z,w)的樣本,而模型中的所有的參數(shù)都可以基于最終采樣得到的樣本進(jìn)行估計。訓(xùn)練的流程很簡單:
1隨機(jī)初始化,對語料庫中每一個詞w,隨機(jī)的賦一個topic編號z
2.重新掃描語料庫,對每一個詞w,按照Gibbs Sampling 公式重新采樣它的topic,在語料中進(jìn)行更新;
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é)果進(jìn)行平均來做參數(shù)估計,這樣模型質(zhì)量更高
有了LDA的模型,我們對于新來的文檔,該如何做該文檔的topic語義分布的計算呢?基本上,inference的過程和trainning的過程完全類似,對于新的文檔,我們只要認(rèn)為Gibbs Sampling公式中的

是穩(wěn)定不變的,所以采樣過程中,我們只要估計該文檔的topic分布

就好了