LDA主題模型簡介

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面的骰子的實驗記為

拋擲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的先驗分布

貝葉斯觀點下的Unigram Model

以上貝葉斯學(xué)派的假設(shè)之下浙宜,語料的概率該如何計算呢官辽?

由于我們并不知道上帝使用了哪個骰子,每一個骰子都是可以被用到的粟瞬,只是使用的概率被概率分布

決定缺狠,對每個具體的骰子P详炬,由該骰子產(chǎn)生的數(shù)據(jù)的概率是

所以最終數(shù)據(jù)產(chǎn)生的概率就是對每個骰子產(chǎn)生的數(shù)據(jù)概率進行積分累加求和

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

先驗分布

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

實際上是在計算一個多項分布的概率,所以對先驗分布的一個好的選擇就是多項分布對應(yīng)的共軛分布清酥,即Dirichlet分布:

Dirichlet分布

此處扶镀,

歸一化因子
Dirichlet先驗下的Unigram Model
Unigram Model的概率圖模型

回歸前一小節(jié)介紹Dirichlet分布的知識:其中很重要的一點就是:Dirichlet先驗+多項分布的數(shù)據(jù)=后驗分布為Dirichlet分布

于是在給定參數(shù)

參數(shù)

的先驗分布

先驗分布

各個詞出現(xiàn)的頻次的數(shù)據(jù)是

數(shù)據(jù)分布

為多項分布,所以無需計算焰轻,我們就可推出后驗分布:

后驗分布

在貝葉斯框架下臭觉,參數(shù)

參數(shù)

該如何估計呢,由于我們已經(jīng)有了參數(shù)的后驗分布辱志,所以合理的方式是使用后驗分布的極大值點蝠筑,或者是參數(shù)在后驗分布下的平均值,在該文檔中揩懒,我們?nèi)∑骄底鳛閰?shù)的估計值什乙,使用Dirichlet分布的結(jié)論可得:

均值

也就是對每個參數(shù),我們用下式作為估計值:

參數(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生成的

topic是vocab上的概率分布

所有人類思考和寫文章的行為都可以認為是上帝的行為减噪,我們可以繼續(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模型的文檔生成過程可以圖形化的表示為:

PLSA模型的文檔生成過程

我們可以發(fā)現(xiàn)在以上的游戲規(guī)則下掩浙,文檔和文檔之間是獨立可交換的花吟,同一個文檔里的詞也是獨立可交換的,還是一個bag of words模型厨姚。游戲中的K個topic-word骰子衅澈,我們可以記為

K個topic-word骰子

對于包含M篇文檔的語料

m篇文檔

中的每一篇文檔

第m篇文檔

都會有一個特定的doc-topic骰子

第m篇文檔的topic骰子

所有對應(yīng)的骰子記為:

所有m篇文檔的topic骰子

為了方便,我們假設(shè)每個詞w都是一個編號谬墙,對應(yīng)到topic-word骰子的面今布,于是在PLSA模型中,第m篇文檔的每個詞的生成概率為:

第m篇文檔的每個詞的生成概率

所以整篇文檔的生成概率為:

整篇文檔的生成概率

由于文檔之間相互獨立拭抬,我們也容易寫出整個語料的生成概率部默。求解PLSA這個Topic Model的過程匯總,模型參數(shù)求解可以使用著名的EM算法進行求得局部最優(yōu)解

3.LDA文本建模

(1)游戲規(guī)則

對于上述的PLSA模型造虎,貝葉斯學(xué)派顯然是有意見的傅蹂,doc-topic骰子

第m篇文檔的topic骰子

和topic-word骰子

第K個骰子

都是模型中的參數(shù),參數(shù)都是隨機變量算凿,怎么能沒有先驗分布呢份蝴?于是,類似于對Unigram Model的貝葉斯改造氓轰,我們也可以如下在兩個骰子參數(shù)前加上先驗分布從而把PLSA的游戲過程改造為一個貝葉斯的游戲過程婚夫。由于doc-topic骰子和topic-word骰子都應(yīng)到多項分布,所以先驗分布的一個好的選擇就是Dirichlet分布署鸡,于是我們就得到了LDA(Latent Dirichlet Allocation)模型

LDA模型

在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編號

語料生成過程中的word和topic

(2)物理過程分解

使用概率圖模型表示佳镜,LDA模型的游戲過程如圖所示:

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)我們可以得到:

其中

第k個topic生成的詞中word t的個數(shù)

進一步侦锯,利用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條路徑中進行采樣

doc->topic->word路徑概率

對于這里需要說明一下,因為后面我們需要實現(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分布

就好了

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市允悦,隨后出現(xiàn)的幾起案子膝擂,更是在濱河造成了極大的恐慌,老刑警劉巖隙弛,帶你破解...
    沈念sama閱讀 207,248評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件架馋,死亡現(xiàn)場離奇詭異,居然都是意外死亡全闷,警方通過查閱死者的電腦和手機叉寂,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評論 2 381
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來总珠,“玉大人办绝,你說我怎么就攤上這事∫ο” “怎么了孕蝉?”我有些...
    開封第一講書人閱讀 153,443評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長腌逢。 經(jīng)常有香客問我降淮,道長,這世上最難降的妖魔是什么搏讶? 我笑而不...
    開封第一講書人閱讀 55,475評論 1 279
  • 正文 為了忘掉前任佳鳖,我火速辦了婚禮,結(jié)果婚禮上媒惕,老公的妹妹穿的比我還像新娘系吩。我一直安慰自己,他們只是感情好妒蔚,可當(dāng)我...
    茶點故事閱讀 64,458評論 5 374
  • 文/花漫 我一把揭開白布穿挨。 她就那樣靜靜地躺著月弛,像睡著了一般。 火紅的嫁衣襯著肌膚如雪科盛。 梳的紋絲不亂的頭發(fā)上帽衙,一...
    開封第一講書人閱讀 49,185評論 1 284
  • 那天,我揣著相機與錄音贞绵,去河邊找鬼厉萝。 笑死,一個胖子當(dāng)著我的面吹牛榨崩,可吹牛的內(nèi)容都是我干的谴垫。 我是一名探鬼主播,決...
    沈念sama閱讀 38,451評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼母蛛,長吁一口氣:“原來是場噩夢啊……” “哼弹渔!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起溯祸,我...
    開封第一講書人閱讀 37,112評論 0 261
  • 序言:老撾萬榮一對情侶失蹤肢专,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后焦辅,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體博杖,經(jīng)...
    沈念sama閱讀 43,609評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,083評論 2 325
  • 正文 我和宋清朗相戀三年筷登,在試婚紗的時候發(fā)現(xiàn)自己被綠了剃根。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,163評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡前方,死狀恐怖狈醉,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情惠险,我是刑警寧澤苗傅,帶...
    沈念sama閱讀 33,803評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站班巩,受9級特大地震影響渣慕,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜抱慌,卻給世界環(huán)境...
    茶點故事閱讀 39,357評論 3 307
  • 文/蒙蒙 一逊桦、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧抑进,春花似錦强经、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,357評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽兰迫。三九已至,卻和暖如春码秉,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背鸡号。 一陣腳步聲響...
    開封第一講書人閱讀 31,590評論 1 261
  • 我被黑心中介騙來泰國打工转砖, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人鲸伴。 一個月前我還...
    沈念sama閱讀 45,636評論 2 355
  • 正文 我出身青樓府蔗,卻偏偏與公主長得像,于是被迫代替她去往敵國和親汞窗。 傳聞我的和親對象是個殘疾皇子姓赤,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,925評論 2 344

推薦閱讀更多精彩內(nèi)容