国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
通俗理解LDA主題模型


http://blog.csdn.net/v_JULY_v/article/details/41209515

2014.11

0 前言

    印象中,最開始聽說“LDA”這個名詞,是緣于rickjin在2013年3月寫的一個LDA科普系列,叫LDA數(shù)學(xué)八卦,我當(dāng)時一直想看來著,記得還打印過一次,但不知是因為這篇文檔的前序鋪墊太長(現(xiàn)在才意識到這些“鋪墊”都是深刻理解LDA 的基礎(chǔ),但如果沒有人幫助初學(xué)者提綱挈領(lǐng)、把握主次、理清思路,則很容易陷入LDA的細枝末節(jié)之中),還是因為其中的數(shù)學(xué)推導(dǎo)細節(jié)太多,導(dǎo)致一直沒有完整看完過。

    2013年12月,在我組織的Machine Learning讀書會第8期上,@夏粉_百度 講機器學(xué)習(xí)中排序?qū)W習(xí)的理論和算法研究,@沈醉2011 則講主題模型的理解。又一次碰到了主題模型,當(dāng)時貌似只記得沈博講了一個汪峰寫歌詞的例子,依然沒有理解LDA到底是怎樣一個東西(但理解了LDA之后,再看沈博主題模型的PPT會很贊)。

    直到昨日下午,機器學(xué)習(xí)班 第12次課上,Z講師講完LDA之后,才真正明白LDA原來是那么一個東東!上完課后,趁熱打鐵,再次看LDA數(shù)學(xué)八卦,發(fā)現(xiàn)以前看不下去的文檔再看時竟然一路都比較順暢,一口氣看完大部??赐甏蟛亢?,思路清晰了,知道理解LDA,可以分為下述5個步驟:

  1. 一個函數(shù):gamma函數(shù)
  2. 四個分布:二項分布、多項分布、beta分布、Dirichlet分布
  3. 一個概念和一個理念:共軛先驗和貝葉斯框架
  4. 兩個模型:pLSA、LDA(在本文第4 部分闡述)
  5. 一個采樣:Gibbs采樣

    本文便按照上述5個步驟來闡述,希望讀者看完本文后,能對LDA有個盡量清晰完整的了解。同時,本文基于Z講師講LDA的PPT、rickjin的LDA數(shù)學(xué)八卦及其它參考資料寫就,可以定義為一篇學(xué)習(xí)筆記或課程筆記,當(dāng)然,后續(xù)不斷加入了很多自己的理解。若有任何問題,歡迎隨時于本文評論下指出,thanks。


1 gamma函數(shù)

1.0 整體把握LDA

    關(guān)于LDA有兩種含義,一種是線性判別分析(Linear Discriminant Analysis),一種是概率主題模型:隱含狄利克雷分布(Latent Dirichlet Allocation,簡稱LDA),本文講后者(前者會在后面的博客中闡述)。

    另外,我先簡單說下LDA的整體思想,不然我怕你看了半天,鋪了太長的前奏,卻依然因沒見到LDA的影子而顯得“心浮氣躁”,導(dǎo)致不想再繼續(xù)看下去。所以,先給你吃一顆定心丸,明白整體框架后,咱們再一步步抽絲剝繭,展開來論述。

    按照wiki上的介紹,LDA由Blei, David M.、Ng, Andrew Y.、Jordan于2003年提出,是一種主題模型,它可以將文檔集 中每篇文檔的主題以概率分布的形式給出,從而通過分析一些文檔抽取出它們的主題(分布)出來后,便可以根據(jù)主題(分布)進行主題聚類或文本分類。同時,它是一種典型的詞袋模型,即一篇文檔是由一組詞構(gòu)成,詞與詞之間沒有先后順序的關(guān)系。此外,一篇文檔可以包含多個主題,文檔中每一個詞都由其中的一個主題生成。

    人類是怎么生成文檔的呢?LDA的這三位作者在原始論文中給了一個簡單的例子。比如假設(shè)事先給定了這幾個主題:Arts、Budgets、Children、Education,然后通過學(xué)習(xí)的方式,獲取每個主題Topic對應(yīng)的詞語。如下圖所示:

 

    然后以一定的概率選取上述某個主題,再以一定的概率選取那個主題下的某個單詞,不斷的重復(fù)這兩步,最終生成如下圖所示的一篇文章(其中不同顏色的詞語分別對應(yīng)上圖中不同主題下的詞):

  

    而當(dāng)我們看到一篇文章后,往往喜歡推測這篇文章是如何生成的,我們可能會認為作者先確定這篇文章的幾個主題,然后圍繞這幾個主題遣詞造句,表達成文。LDA就是要干這事:根據(jù)給定的一篇文檔,推測其主題分布
    通俗來說,人類根據(jù)上述文檔生成過程寫成了各種各樣的文章,現(xiàn)在某小撮人想讓計算機利用LDA干一件事:你計算機給我分析推測網(wǎng)絡(luò)上各篇文章分別都寫了些啥主題,且各篇文章中各個主題出現(xiàn)的概率大?。ㄖ黝}分布)是啥。
    然,就是這么一個看似普通的LDA,一度嚇退了不少想深入探究其內(nèi)部原理的初學(xué)者。難在哪呢,難就難在LDA內(nèi)部涉及到的數(shù)學(xué)知識點太多了。
    在LDA模型中,一篇文檔生成的方式如下:
  • 從狄利克雷分布
    中取樣生成文檔 i 的主題分布
  • 從主題的多項式分布
    中取樣生成文檔i第 j 個詞的主題
  • 從狄利克雷分布
    中取樣生成主題
    對應(yīng)的詞語分布
  • 從詞語的多項式分布
    中采樣最終生成詞語

    其中,類似Beta分布是二項式分布的共軛先驗概率分布,而狄利克雷分布(Dirichlet分布)是多項式分布的共軛先驗概率分布。

    此外,LDA的圖模型結(jié)構(gòu)如下圖所示(類似貝葉斯網(wǎng)絡(luò)結(jié)構(gòu)):

    恩,不錯,短短6句話整體概括了整個LDA的主體思想!但也就是上面短短6句話,卻接連不斷或重復(fù)出現(xiàn)了二項分布、多項式分布、beta分布、狄利克雷分布(Dirichlet分布)、共軛先驗概率分布、取樣,那么請問,這些都是啥呢?

    這里先簡單解釋下二項分布、多項分布、beta分布、Dirichlet 分布這4個分布。

  •  二項分布(Binomial distribution)。
    二項分布是從伯努利分布推進的。伯努利分布,又稱兩點分布或0-1分布,是一個離散型的隨機分布,其中的隨機變量只有兩類取值,非正即負{+,-}。而二項分布即重復(fù)n次的伯努利試驗,記為
。簡言之,只做一次實驗,是伯努利分布,重復(fù)做了n次,是二項分布。二項分布的概率密度函數(shù)為:

    
    對于k = 0, 1, 2, ..., n,其中的
是二項式系數(shù)(這就是二項分布的名稱的由來),又記為
?;叵肫鸶咧兴鶎W(xué)的那丁點概率知識了么:想必你當(dāng)年一定死記過這個二項式系數(shù)
就是
  • 多項分布,是二項分布擴展到多維的情況。
    多項分布是指單次試驗中的隨機變量的取值不再是0-1的,而是有多種離散值可能(1,2,3...,k)。比如投擲6個面的骰子實驗,N次實驗結(jié)果服從K=6的多項分布。其中

    多項分布的概率密度函數(shù)為:
  • Beta分布,二項分布的共軛先驗分布
    給定參數(shù)
,取值范圍為[0,1]的隨機變量 x 的概率密度函數(shù):
    其中:
,
。 
   注:
便是所謂的gamma函數(shù),下文會具體闡述。
  • Dirichlet分布,是beta分布在高維度上的推廣。
    Dirichlet分布的的密度函數(shù)形式跟beta分布的密度函數(shù)如出一轍:
    其中
    至此,我們可以看到二項分布和多項分布很相似,Beta分布和Dirichlet 分布很相似,而至于Beta分布是二項式分布的共軛先驗概率分布,而狄利克雷分布(Dirichlet分布)是多項式分布的共軛先驗概率分布這點在下文中說明。

    OK,接下來,咱們就按照本文開頭所說的思路:“一個函數(shù):gamma函數(shù),四個分布:二項分布、多項分布、beta分布、Dirichlet分布,外加一個概念和一個理念:共軛先驗和貝葉斯框架,兩個模型:pLSA、LDA(文檔-主題,主題-詞語),一個采樣:Gibbs采樣”一步步詳細闡述,爭取給讀者一個盡量清晰完整的LDA。

    (當(dāng)然,如果你不想深究背后的細節(jié)原理,只想整體把握LDA的主體思想,可直接跳到本文第4 部分,看完第4部分后,若還是想深究背后的細節(jié)原理,可再回到此處開始看)

1.1 gamma函數(shù)

    咱們先來考慮一個問題(此問題1包括下文的問題2-問題4皆取材自LDA數(shù)學(xué)八卦):

  1. 問題1 隨機變量
  2. 把這n 個隨機變量排序后得到順序統(tǒng)計量
  3. 然后請問
    的分布是什么。

    為解決這個問題,可以嘗試計算

落在區(qū)間[x,x+Δx]的概率。即求下述式子的值:

    首先,把 [0,1] 區(qū)間分成三段 [0,x),[x,x+Δx],(x+Δx,1],然后考慮下簡單的情形:即假設(shè)n 個數(shù)中只有1個落在了區(qū)間 [x,x+Δx]內(nèi),由于這個區(qū)間內(nèi)的數(shù)X(k)是第k大的,所以[0,x)中應(yīng)該有 k?1 個數(shù),(x+Δx,1] 這個區(qū)間中應(yīng)該有n?k 個數(shù)。如下圖所示:

    從而問題轉(zhuǎn)換為下述事件E:

    對于上述事件E,有:
    其中,o(Δx)表示Δx的高階無窮小。顯然,由于不同的排列組合,即n個數(shù)中有一個落在 [x,x+Δx]區(qū)間的有n種取法,余下n?1個數(shù)中有k?1個落在[0,x)的有
種組合,所以和事件E等價的事件一共有
個。

    如果有2個數(shù)落在區(qū)間[x,x+Δx]呢?如下圖所示:
    類似于事件E,對于2個數(shù)落在區(qū)間[x,x+Δx]的事件E’:
    有:
   從上述的事件E、事件E‘中,可以看出,只要落在[x,x+Δx]內(nèi)的數(shù)字超過一個,則對應(yīng)的事件的概率就是 o(Δx)。于是乎有:
    從而得到
的概率密度函數(shù)
為:

    至此,本節(jié)開頭提出的問題得到解決。然仔細觀察

的概率密度函數(shù),發(fā)現(xiàn)式子的最終結(jié)果有階乘,聯(lián)想到階乘在實數(shù)上的推廣
函數(shù):

    兩者結(jié)合是否會產(chǎn)生奇妙的效果呢?考慮到

具有如下性質(zhì):

    故將

代入到
的概率密度函數(shù)
中,可得:

    然后取

,
,轉(zhuǎn)換
得到:

    如果熟悉beta分布的朋友,可能會驚呼:哇,竟然推出了beta分布!


2 beta分布

2.1 beta分布

    在概率論中,beta是指一組定義在
區(qū)間的連續(xù)概率分布,有兩個參數(shù)
,且
。

    beta分布的概率密度函數(shù)是:
    其中的
便是
函數(shù):
    隨機變量X服從參數(shù)為的beta分布通常寫作:

2.2 Beta-Binomial 共軛

    回顧下1.1節(jié)開頭所提出的問題:“問題1 隨機變量
,把這n 個隨機變量排序后得到順序統(tǒng)計量
,然后請問
的分布是什么?!?如果,咱們要在這個問題的基礎(chǔ)上增加一些觀測數(shù)據(jù),變成問題2
  • ,對應(yīng)的順序統(tǒng)計量是
    ,需要猜測
  • , 
    中有
    個比p小,
    個比
    大;
  • 那么,請問
    的分布是什么。
    根據(jù)“Yi中有
個比
小,
個比
大”,換言之,Yi中有
個比
小,
個比
大,所以
中第
大的數(shù)。
    根據(jù)1.1節(jié)最終得到的結(jié)論“只要落在[x,x+Δx]內(nèi)的數(shù)字超過一個,則對應(yīng)的事件的概率就是 o(Δx)”,繼而推出事件服從beta分布,從而可知
的概率密度函數(shù)為:
    熟悉貝葉斯方法(不熟悉的沒事,參見此文第一部分)的朋友心里估計又犯“嘀咕”了,這不就是貝葉斯式的思考過程么?
  1. 為了猜測
    ,在獲得一定的觀測數(shù)據(jù)前,我們對
    的認知是:
    ,此稱為
    的先驗分布;
  2. 然后為了獲得這個結(jié)果“ 
    中有
    個比p小,
    個比
    大”,針對
    是做了
    次貝努利實驗,所以
    服從二項分布
  3. 在給定了來自數(shù)據(jù)提供的
    的知識后,
    的后驗分布變?yōu)?div id="moiyehiw" class='imgcenter'>
。
    回顧下貝葉斯派思考問題的固定模式:
  • 先驗分布
     + 樣本信息
     
     后驗分布
    上述思考模式意味著,新觀察到的樣本信息將修正人們以前對事物的認知。換言之,在得到新的樣本信息之前,人們對
的認知是先驗分布
,在得到新的樣本信息
后,人們對
的認知為
    類比到現(xiàn)在這個問題上,我們也可以試著寫下:
    其中
對應(yīng)的是二項分布
的計數(shù)。
    更一般的,對于非負實數(shù)
,我們有如下關(guān)系

    針對于這種觀測到的數(shù)據(jù)符合二項分布,參數(shù)的先驗分布和后驗分布都是Beta分布的情況,就是Beta-Binomial共軛。換言之,Beta分布是二項式分布的共軛先驗概率分布

    二項分布和Beta分布是共軛分布意味著,如果我們?yōu)槎椃植嫉膮?shù)p選取的先驗分布是Beta分布,那么以p為參數(shù)的二項分布用貝葉斯估計得到的后驗分布仍然服從Beta分布。

    此外,如何理解參數(shù)
所表達的意義呢?
、
可以認為形狀參數(shù),通俗但不嚴格的理解是,
共同控制Beta分布的函數(shù)“長的樣子”:形狀千奇百怪,高低胖瘦,如下圖所示:
 

2.3 共軛先驗分布

    什么又是共軛呢?軛的意思是束縛、控制,共軛從字面上理解,則是共同約束,或互相約束。
    在貝葉斯概率理論中,如果后驗概率P(θ|x)和先驗概率p(θ)滿足同樣的分布律,那么,先驗分布和后驗分布被叫做共軛分布,同時,先驗分布叫做似然函數(shù)的共軛先驗分布。
    比如,某觀測數(shù)據(jù)服從概率分布P(θ)時,當(dāng)觀測到新的X數(shù)據(jù)時,我們一般會遇到如下問題:
  • 可否根據(jù)新觀測數(shù)據(jù)X,更新參數(shù)θ?
  • 根據(jù)新觀測數(shù)據(jù)可以在多大程度上改變參數(shù)θ,即
  • 當(dāng)重新估計θ的時候,給出新參數(shù)值θ的新概率分布,即P(θ|x)
    事實上,根據(jù)根據(jù)貝葉斯公式可知:
    其中,P(x|θ)表示以預(yù)估θ為參數(shù)的x概率分布,可以直接求得,P(θ)是已有原始的θ概率分布。
    所以,如果我們選取P(x|θ)的共軛先驗作為P(θ)的分布,那么P(x|θ)乘以P(θ),然后歸一化的結(jié)果P(θ|x)跟和P(θ)的形式一樣。換句話說,先驗分布是P(θ),后驗分布是P(θ|x),先驗分布跟后驗分布同屬于一個分布族,故稱該分布族是θ的共軛先驗分布(族)。

    舉個例子。投擲一個非均勻硬幣,可以使用參數(shù)為θ的伯努利模型,θ為硬幣為正面的概率,那么結(jié)果x的分布形式為:
    其共軛先驗為beta分布,具有兩個參數(shù)
,稱為超參數(shù)(hyperparameters)。且這兩個參數(shù)決定了θ參數(shù),其Beta分布形式為
    然后計算后驗概率
    歸一化這個等式后會得到另一個Beta分布,從而證明了Beta分布確實是伯努利分布的共軛先驗分布。

2.4 從beta分布推廣到Dirichlet 分布

    接下來,咱們來考察beta分布的一個性質(zhì)。
    如果
,則有:
    注意到上式最后結(jié)果的右邊積分
    其類似于概率分布
,而對于這個分布有

    從而求得
    的結(jié)果為
    最后將此結(jié)果帶入
的計算式,得到:

    最后的這個結(jié)果意味著對于Beta 分布的隨機變量,其均值(期望)可以用

來估計。此外,狄利克雷Dirichlet 分布也有類似的結(jié)論,即如果
,同樣可以證明有下述結(jié)論成立:

    那什么是Dirichlet 分布呢?簡單的理解Dirichlet 分布就是一組連續(xù)多變量概率分布,是多變量普遍化的beta分布。為了紀念德國數(shù)學(xué)家約翰·彼得·古斯塔夫·勒熱納·狄利克雷(Peter Gustav Lejeune Dirichlet)而命名。狄利克雷分布常作為貝葉斯統(tǒng)計的先驗概率。


3 Dirichlet 分布

3.1 Dirichlet 分布

    根據(jù)wikipedia上的介紹,維度K ≥ 2(x1,x2…xK-1維,共K個)的狄利克雷分布在參數(shù)α1, ..., αK > 0上、基于歐幾里得空間RK-1里的勒貝格測度有個概率密度函數(shù),定義為:

    其中,

相當(dāng)于是多項beta函數(shù)

    且

    此外,x1+x2+…+xK-1+xK=1,x1,x2…xK-1>0,且在(K-1)維的單純形上,其他區(qū)域的概率密度為0。

    當(dāng)然,也可以如下定義Dirichlet 分布

    其中的

稱為Dirichlet 分布的歸一化系數(shù):

    且根據(jù)Dirichlet分布的積分為1(概率的基本性質(zhì)),可以得到:

3.2 Dirichlet-Multinomial 共軛

    下面,在2.2節(jié)問題2的基礎(chǔ)上繼續(xù)深入,引出問題3

  • ,
  • 排序后對應(yīng)的順序統(tǒng)計量
    ,
  • 的聯(lián)合分布是什么?
    為了簡化計算,取x3滿足x1+x2+x3=1,但只有x1,x2是變量,如下圖所示:

    從而有:

    繼而得到于是我們得到

的聯(lián)合分布為:

    觀察上述式子的最終結(jié)果,可以看出上面這個分布其實就是3維形式的 Dirichlet 分布

    令

,于是分布密度可以寫為

    這個就是一般形式的3維 Dirichlet 分布,即便

延拓到非負實數(shù)集合,以上概率分布也是良定義的。

    將Dirichlet分布的概率密度函數(shù)取對數(shù),繪制對稱Dirichlet分布的圖像如下圖所示(截取自wikipedia上):

    上圖中,取K=3,也就是有兩個獨立參數(shù)x1,x2,分別對應(yīng)圖中的兩個坐標軸,第三個參數(shù)始終滿足x3=1-x1-x2且α1=α2=α3=α,圖中反映的是參數(shù)α從α=(0.3, 0.3, 0.3)變化到(2.0, 2.0, 2.0)時的概率對數(shù)值的變化情況。

    為了論證Dirichlet分布是多項式分布的共軛先驗概率分布,下面咱們繼續(xù)在上述問題3的基礎(chǔ)上再進一步,提出問題4。

  1. 問題4  
    ,排序后對應(yīng)的順序統(tǒng)計量
  2. ,
    ,
    (此處的p3非變量,只是為了表達方便),現(xiàn)在要猜測
    ;
  3. ,Yi中落到
    ,
    ,
     三個區(qū)間的個數(shù)分別為 m1,m2,m3,m=m1+m2+m3;
  4.  問后驗分布
    的分布是什么。

   為了方便討論,記

,及
,根據(jù)已知條件“
,Yi中落到
,
 三個區(qū)間的個數(shù)分別為 m1,m2”,可得
分別是這m+n個數(shù)中第
大、第
大的數(shù)。于是,后驗分布
應(yīng)該為
,即一般化的形式表示為:
。

    同樣的,按照貝葉斯推理的邏輯,可將上述過程整理如下:

  1.  我們要猜測參數(shù)
    ,其先驗分布為
    ;
  2.  數(shù)據(jù)Yi落到三個區(qū)間
    ,
    ,
     的個數(shù)分別為
    ,所以
    服從多項分布
  3.  在給定了來自數(shù)據(jù)提供的知識
    后,
    的后驗分布變?yōu)?div id="moiyehiw" class='imgcenter'>

    上述貝葉斯分析過程的直觀表述為:

    令

,可把
從整數(shù)集合延拓到實數(shù)集合,從而得到更一般的表達式如下:

    針對于這種觀測到的數(shù)據(jù)符合多項分布,參數(shù)的先驗分布和后驗分布都是Dirichlet 分布的情況,就是Dirichlet-Multinomial 共軛。換言之,至此已經(jīng)證明了Dirichlet分布的確就是多項式分布的共軛先驗概率分布。
    意味著,如果我們?yōu)槎囗椃植嫉膮?shù)p選取的先驗分布是Dirichlet分布,那么以p為參數(shù)的多項分布用貝葉斯估計得到的后驗分布仍然服從Dirichlet分布。
    進一步,一般形式的Dirichlet 分布定義如下:
    而對于給定的
,其多項分布為:
    結(jié)論是:Dirichlet分布
和多項分布
是共軛關(guān)系。


4 主題模型LDA

        在開始下面的旅程之前,先來總結(jié)下我們目前所得到的最主要的幾個收獲:

  • 通過上文的第2.2節(jié),我們知道beta分布是二項式分布的共軛先驗概率分布:
    •  對于非負實數(shù)
      ,我們有如下關(guān)系

    其中

對應(yīng)的是二項分布
的計數(shù)。針對于這種觀測到的數(shù)據(jù)符合二項分布,參數(shù)的先驗分布和后驗分布都是Beta分布的情況,就是Beta-Binomial 共軛。

  • 通過上文的3.2節(jié),我們知道狄利克雷分布(Dirichlet分布)是多項式分布的共軛先驗概率分布:
    •  
      從整數(shù)集合延拓到實數(shù)集合,從而得到更一般的表達式如下:

    針對于這種觀測到的數(shù)據(jù)符合多項分布,參數(shù)的先驗分布和后驗分布都是Dirichlet 分布的情況,就是 Dirichlet-Multinomial 共軛。 ”
  • 以及貝葉斯派思考問題的固定模式:
    • 先驗分布
       + 樣本信息
       
       后驗分布
        上述思考模式意味著,新觀察到的樣本信息將修正人們以前對事物的認知。換言之,在得到新的樣本信息之前,人們對
    的認知是先驗分布
    ,在得到新的樣本信息
    后,人們對
    的認知為
    。
  • 順便提下頻率派與貝葉斯派各自不同的思考方式:
    • 頻率派把需要推斷的參數(shù)θ看做是固定的未知常數(shù),即概率
      雖然是未知的,但最起碼是確定的一個值,同時,樣本X 是隨機的,所以頻率派重點研究樣本空間,大部分的概率計算都是針對樣本X 的分布;
    • 貝葉斯派的觀點則截然相反,他們認為待估計的參數(shù)
      是隨機變量,服從一定的分布
      ,而樣本X 是固定的,由于樣本是固定的,所以他們重點研究的是參數(shù)
      的分布。

    OK,在殺到終極boss——LDA模型之前,再循序漸進理解基礎(chǔ)模型:Unigram model、mixture of unigrams model,以及跟LDA最為接近的pLSA模型。

   為了方便描述,首先定義一些變量:

  • 表示詞,
    表示所有單詞的個數(shù)(固定值)
  • 表示主題,
    是主題的個數(shù)(預(yù)先給定,固定值)
  • 表示語料庫,其中的
    是語料庫中的文檔數(shù)(固定值)
  • 表示文檔,其中的
    表示一個文檔中的詞數(shù)(隨機變量)

4.1 各個基礎(chǔ)模型

4.1.1 Unigram model

    對于文檔

,用
表示詞
的先驗概率,生成文檔
的概率為:

    其圖模型為(圖中被涂色的w表示可觀測變量,N表示一篇文檔中總共N個單詞,M表示M篇文檔):

    或為:

    unigram model假設(shè)文本中的詞服從Multinomial分布,而我們已經(jīng)知道Multinomial分布的先驗分布為Dirichlet分布。
    上圖中的

表示在文本中觀察到的第n個詞,n∈[1,N]表示該文本中一共有N個單詞。加上方框表示重復(fù),即一共有N個這樣的隨機變量
。其中,p和α是隱含未知變量:

  • p是詞服從的Multinomial分布的參數(shù)
  • α是Dirichlet分布(即Multinomial分布的先驗分布)的參數(shù)。

    一般α由經(jīng)驗事先給定,p由觀察到的文本中出現(xiàn)的詞學(xué)習(xí)得到,表示文本中出現(xiàn)每個詞的概率。

4.1.2 Mixture of unigrams model

    該模型的生成過程是:給某個文檔先選擇一個主題
,再根據(jù)該主題生成文檔,該文檔中的所有詞都來自一個主題。假設(shè)主題有
,生成文檔
的概率為:
    其圖模型為(圖中被涂色的w表示可觀測變量,未被涂色的z表示未知的隱變量,N表示一篇文檔中總共N個單詞,M表示M篇文檔):

4.2 PLSA模型

    啊哈,長征兩萬五,經(jīng)過前面這么長的鋪墊,終于快要接近LDA模型了!因為跟LDA模型最為接近的便是下面要闡述的這個pLSA模型,理解了pLSA模型后,到LDA模型也就一步之遙——給pLSA加上貝葉斯框架,便是LDA。

4.2.1 pLSA模型下生成文檔

    OK,在上面的Mixture of unigrams model中,我們假定一篇文檔只由一個主題生成,可實際中,一篇文章往往有多個主題,只是這多個主題各自在文檔中出現(xiàn)的概率大小不一樣。比如介紹一個國家的文檔中,往往會分別從教育、經(jīng)濟、交通等多個主題進行介紹。那么在pLSA中,文檔是怎樣被生成的呢?
    假設(shè)你要寫M篇文檔,由于一篇文檔由各個不同的詞組成,所以你需要確定每篇文檔里每個位置上的詞。
    再假定你一共有K個可選的主題,有V個可選的詞,咱們來玩一個扔骰子的游戲。
  • 1. 假設(shè)你每寫一篇文檔會制作一顆K面的“文檔-主題”骰子(扔此骰子能得到K個主題中的任意一個),和K個V面的“主題-詞項” 骰子(每個骰子對應(yīng)一個主題,K個骰子對應(yīng)之前的K個主題,且骰子的每一面對應(yīng)要選擇的詞項,V個面對應(yīng)著V個可選的詞)。
    • 比如可令K=3,即制作1個含有3個主題的“文檔-主題”骰子,這3個主題可以是:教育、經(jīng)濟、交通。然后令V = 3,制作3個有著3面的“主題-詞項”骰子,其中,教育主題骰子的3個面上的詞可以是:大學(xué)、老師、課程,經(jīng)濟主題骰子的3個面上的詞可以是:市場、企業(yè)、金融,交通主題骰子的3個面上的詞可以是:高鐵、汽車、飛機。
  • 2. 每寫一個詞,先扔該“文檔-主題”骰子選擇主題,得到主題的結(jié)果后,使用和主題結(jié)果對應(yīng)的那顆“主題-詞項”骰子,扔該骰子選擇要寫的詞。
    • 先扔“文檔-主題”的骰子,假設(shè)(以一定的概率)得到的主題是教育,所以下一步便是扔教育主題篩子,(以一定的概率)得到教育主題篩子對應(yīng)的某個詞:大學(xué)。
      • 上面這個投骰子產(chǎn)生詞的過程簡化下便是:“先以一定的概率選取主題,再以一定的概率選取詞”。事實上,一開始可供選擇的主題有3個:教育、經(jīng)濟、交通,那為何偏偏選取教育這個主題呢?其實是隨機選取的,只是這個隨機遵循一定的概率分布。比如可能選取教育主題的概率是0.5,選取經(jīng)濟主題的概率是0.3,選取交通主題的概率是0.2,那么這3個主題的概率分布便是{教育:0.5,經(jīng)濟:0.3,交通:0.2},我們把各個主題z在文檔d中出現(xiàn)的概率分布稱之為主題分布,且是一個多項分布。
      • 同樣的,從主題分布中隨機抽取出教育主題后,依然面對著3個詞:大學(xué)、老師、課程,這3個詞都可能被選中,但它們被選中的概率也是不一樣的。比如大學(xué)這個詞被選中的概率是0.5,老師這個詞被選中的概率是0.3,課程被選中的概率是0.2,那么這3個詞的概率分布便是{大學(xué):0.5,老師:0.3,課程:0.2},我們把各個詞語w在主題z下出現(xiàn)的概率分布稱之為詞分布,這個詞分布也是一個多項分布。
      • 所以,選主題和選詞都是兩個隨機的過程,先從主題分布{教育:0.5,經(jīng)濟:0.3,交通:0.2}中抽取出主題:教育,然后從該主題對應(yīng)的詞分布{大學(xué):0.5,老師:0.3,課程:0.2}中抽取出詞:大學(xué)。
  • 3. 最后,你不停的重復(fù)扔“文檔-主題”骰子和”主題-詞項“骰子,重復(fù)N次(產(chǎn)生N個詞),完成一篇文檔,重復(fù)這產(chǎn)生一篇文檔的方法M次,則完成M篇文檔。
    上述過程抽象出來即是PLSA的文檔生成模型。在這個過程中,我們并未關(guān)注詞和詞之間的出現(xiàn)順序,所以pLSA是一種詞袋方法。具體說來,該模型假設(shè)一組共現(xiàn)(co-occurrence)詞項關(guān)聯(lián)著一個隱含的主題類別
。同時定義:
  • 表示海量文檔中某篇文檔被選中的概率。
  • 表示詞
    在給定文檔
    中出現(xiàn)的概率。
    • 怎么計算得到呢?針對海量文檔,對所有文檔進行分詞后,得到一個詞匯列表,這樣每篇文檔就是一個詞語的集合。對于每個詞語,用它在文檔中出現(xiàn)的次數(shù)除以文檔中詞語總的數(shù)目便是它在文檔中出現(xiàn)的概率
      。
  • 表示具體某個主題
    在給定文檔
    下出現(xiàn)的概率。
  • 表示具體某個詞
    在給定主題
    下出現(xiàn)的概率,與主題關(guān)系越密切的詞,其條件概率
    越大。
    利用上述的第1、3、4個概率,我們便可以按照如下的步驟得到“文檔-詞項”的生成模型:
  1. 按照概率
    選擇一篇文檔
  2. 選定文檔
    后,從主題分布中按照概率
    選擇一個隱含的主題類別
  3. 選定
    后,從詞分布中按照概率
    選擇一個詞
    所以pLSA中生成文檔的整個過程便是選定文檔生成主題,確定主題生成詞。

4.2.1 根據(jù)文檔反推其主題分布

    反過來,既然文檔已經(jīng)產(chǎn)生,那么如何根據(jù)已經(jīng)產(chǎn)生好的文檔反推其主題呢?這個利用看到的文檔推斷其隱藏的主題(分布)的過程(其實也就是產(chǎn)生文檔的逆過程),便是主題建模的目的:自動地發(fā)現(xiàn)文檔集中的主題(分布)。
    換言之,人類根據(jù)文檔生成模型寫成了各類文章,然后丟給了計算機,相當(dāng)于計算機看到的是一篇篇已經(jīng)寫好的文章?,F(xiàn)在計算機需要根據(jù)一篇篇文章中看到的一系列詞歸納出當(dāng)篇文章的主題,進而得出各個主題各自不同的出現(xiàn)概率:主題分布。即文檔d和單詞w是可被觀察到的,但主題z卻是隱藏的。
    如下圖所示(圖中被涂色的d、w表示可觀測變量,未被涂色的z表示未知的隱變量,N表示一篇文檔中總共N個單詞,M表示M篇文檔):
    上圖中,文檔d和詞w是我們得到的樣本(樣本隨機,參數(shù)雖未知但固定,所以pLSA屬于頻率派思想。區(qū)別于下文要介紹的LDA中:樣本固定,參數(shù)未知但不固定,是個隨機變量,服從一定的分布,所以LDA屬于貝葉斯派思想),可觀測得到,所以對于任意一篇文檔,其
是已知的。
    從而可以根據(jù)大量已知的文檔-詞項信息
,訓(xùn)練出文檔-主題
主題-詞項
,如下公式所示:
    故得到文檔中每個詞的生成概率為:

    由于

可事先計算求出,
未知,所以
就是我們要估計的參數(shù)(值)
,通俗點說,就是要最大化這個θ。

    用什么方法進行估計呢,常用的參數(shù)估計方法有極大似然估計MLE、最大后驗證估計MAP、貝葉斯估計等等。因為該待估計的參數(shù)中含有隱變量z,所以我們可以考慮EM算法。

4.2.1.1 EM算法的簡單介紹

    EM算法,全稱為Expectation-maximization algorithm,為期望最大算法,其基本思想是:首先隨機選取一個值去初始化待估計的值

,然后不斷迭代尋找更優(yōu)的
使得其似然函數(shù)likelihood 
比原來的
要大。換言之,假定現(xiàn)在得到了
,想求
,使得

    EM的關(guān)鍵便是要找到

的一個下界
(注:
,其中,X表示已經(jīng)觀察到的隨機變量),然后不斷最大化這個下界,通過不斷求解下界
的極大化,從而逼近要求解的似然函數(shù)
。

    所以EM算法的一般步驟為:

  • 1. 隨機選取或者根據(jù)先驗知識初始化
    ;
  • 2. 不斷迭代下述兩步
    • ①給出當(dāng)前的參數(shù)估計
      ,計算似然函數(shù)
      的下界
    • ②重新估計參數(shù)θ,即求
      ,使得
  • 3. 上述第二步后,如果
    收斂(即
    收斂)則退出算法,否則繼續(xù)回到第二步。

    上述過程好比在二維平面上,有兩條不相交的曲線,一條曲線在上(簡稱上曲線

),一條曲線在下(簡稱下曲線
),下曲線為上曲線的下界?,F(xiàn)在對上曲線未知,只已知下曲線,為了求解上曲線的最高點,我們試著不斷增大下曲線,使得下曲線不斷逼近上曲線,下曲線在某一個點達到局部最大值并與上曲線在這點的值相等,記錄下這個值,然后繼續(xù)增大下曲線,尋找下曲線上與上曲線上相等的值,迭代到
收斂(即
收斂)停止,從而利用當(dāng)前下曲線上的局部最大值當(dāng)作上曲線的全局最大值(換言之,EM算法不保證一定能找到全局最優(yōu)值)。如下圖所示:

    以下是詳細介紹。

    假定有訓(xùn)練集

,包含m個獨立樣本,希望從中找到該組數(shù)據(jù)的模型p(x,z)的參數(shù)。   

    然后通過極大似然估計建立目標函數(shù)--對數(shù)似然函數(shù):

    這里,z是隱隨機變量,直接找到參數(shù)的估計是很困難的。我們的策略是建立

的下界,并且求該下界的最大值;重復(fù)這個過程,直到收斂到局部最大值。

    令Qi是z的某一個分布,Qi≥0,且結(jié)合Jensen不等式,有:

    為了尋找盡量緊的下界,我們可以讓使上述等號成立,而若要讓等號成立的條件則是:

    換言之,有以下式子成立:

,且由于有:

    所以可得:

    最終得到EM算法的整體框架如下:

    OK,EM算法還會在本博客后面的博文中具體闡述。接下來,回到pLSA參數(shù)的估計問題上。

4.2.1.2 EM算法估計pLSA的兩未知參數(shù)

    首先嘗試從矩陣的角度來描述待估計的兩個未知變量

。

  • 假定用
    表示詞表
    在主題
    上的一個多項分布,則
    可以表示成一個向量,每個元素
    表示詞項
    出現(xiàn)在主題
    中的概率,即

  • 表示所有主題
    在文檔
    上的一個多項分布,則
    可以表示成一個向量,每個元素
    表示主題
    出現(xiàn)在文檔
    中的概率
    ,即

    這樣,巧妙的把

轉(zhuǎn)換成了兩個矩陣
。換言之,最終我們要求解的參數(shù)是這兩個矩陣:

    由于詞和詞之間是相互獨立的,所以整篇文檔N個詞的分布為:

    再由于文檔和文檔之間也是相互獨立的,所以整個語料庫中詞的分布為(整個語料庫M篇文檔,每篇文檔N個詞):

    其中,

表示詞項
在文檔
中的詞頻,
表示文檔di中詞的總數(shù),顯然有
。
    從而得到整個語料庫的詞分布的對數(shù)似然函數(shù)(下述公式中有個小錯誤,正確的應(yīng)該是:N為M,M為N):


    現(xiàn)在,我們需要最大化上述這個對數(shù)似然函數(shù)來求解參數(shù)

。對于這種含有隱變量的最大似然估計,可以使用EM算法。EM算法,分為兩個步驟:先E-step,后M-step。

  • E-step:假定參數(shù)已知,計算此時隱變量的后驗概率。
    利用貝葉斯法則,可以得到:

  • M-step:帶入隱變量的后驗概率,最大化樣本分布的對數(shù)似然函數(shù),求解相應(yīng)的參數(shù)。
    觀察之前得到的對數(shù)似然函數(shù)
的結(jié)果,由于文檔長度
可以單獨計算,所以去掉它不影響最大化似然函數(shù)。此外,根據(jù)E-step的計算結(jié)果,把
代入
,于是我們只要最大化下面這個函數(shù) 
 即可(下述公式中有個小錯誤,正確的應(yīng)該是:N為M,M為N):

    這是一個多元函數(shù)求極值問題,并且已知有如下約束條件(下述公式中有個小錯誤,正確的應(yīng)該是:M為N):

    熟悉凸優(yōu)化的朋友應(yīng)該知道,一般處理這種帶有約束條件的極值問題,常用的方法便是拉格朗日乘數(shù)法,即通過引入拉格朗日乘子將約束條件和多元(目標)函數(shù)融合到一起,轉(zhuǎn)化為無約束條件的極值問題。

    這里我們引入兩個拉格朗日乘子

,從而寫出拉格朗日函數(shù)(下述公式中有個小錯誤,正確的應(yīng)該是:N為M,M為N):

    因為我們要求解的參數(shù)是

,所以分別對
求偏導(dǎo),然后令偏導(dǎo)結(jié)果等于0,得到(下述公式中有個小錯誤,正確的應(yīng)該是:N為M,M為N):

    消去拉格朗日乘子,最終可估計出參數(shù)

下述公式中有個小錯誤,正確的應(yīng)該是:N為M,M為N):

    綜上,在pLSA中:

  1. 由于
    未知,所以我們用EM算法去估計
    這個參數(shù)的值。
  2. 而后,用
    表示詞項
    出現(xiàn)在主題
    中的概率,即
    ,用
    表示主題
    出現(xiàn)在文檔
    中的概率,即
    ,從而把
    轉(zhuǎn)換成了
    “主題-詞項”矩陣Φ(主題生成詞),把
    轉(zhuǎn)換成了“文檔-主題”矩陣Θ(文檔生成主題)。
  3. 最終求解出
    、

4.3 LDA模型

    事實上,理解了pLSA模型,也就差不多快理解了LDA模型,因為LDA就是在pLSA的基礎(chǔ)上加層貝葉斯框架,即LDA就是pLSA的貝葉斯版本(正因為LDA被貝葉斯化了,所以才需要考慮歷史先驗知識,才加的兩個先驗參數(shù))。

4.3.1 pLSA跟LDA的對比:生成文檔與參數(shù)估計

    在pLSA模型中,我們按照如下的步驟得到“文檔-詞項”的生成模型:

  1. 按照概率
    選擇一篇文檔
  2. 選定文檔
    后,確定文章的主題分布
  3. 從主題分布中按照概率
    選擇一個隱含的主題類別
  4. 選定
    后,確定主題下的詞分布
  5. 從詞分布中按照概率
    選擇一個詞
     

    下面,咱們對比下本文開頭所述的LDA模型中一篇文檔生成的方式是怎樣的:

  1. 按照先驗概率
    選擇一篇文檔
  2. 從狄利克雷分布(即Dirichlet分布
    中取樣生成文檔
    的主題分布
    ,換言之,主題分布
    由超參數(shù)為
    的Dirichlet分布生成
  3. 從主題的多項式分布
    中取樣生成文檔
    第 j 個詞的主題
  4. 從狄利克雷分布(即Dirichlet分布
    中取樣生成主題
    對應(yīng)的詞語分布
    ,換言之,詞語分布
    由參數(shù)為
    的Dirichlet分布生成
  5. 從詞語的多項式分布
    中采樣最終生成詞語
     

    從上面兩個過程可以看出,LDA在PLSA的基礎(chǔ)上,為主題分布和詞分布分別加了兩個Dirichlet先驗。

    繼續(xù)拿之前講解PLSA的例子進行具體說明。如前所述,在PLSA中,選主題和選詞都是兩個隨機的過程,先從主題分布{教育:0.5,經(jīng)濟:0.3,交通:0.2}中抽取出主題:教育,然后從該主題對應(yīng)的詞分布{大學(xué):0.5,老師:0.3,課程:0.2}中抽取出詞:大學(xué)。

    而在LDA中,選主題和選詞依然都是兩個隨機的過程,依然可能是先從主題分布{教育:0.5,經(jīng)濟:0.3,交通:0.2}中抽取出主題:教育,然后再從該主題對應(yīng)的詞分布{大學(xué):0.5,老師:0.3,課程:0.2}中抽取出詞:大學(xué)。
    那PLSA跟LDA的區(qū)別在于什么地方呢?區(qū)別就在于:
  • PLSA中,主題分布和詞分布是唯一確定的,能明確的指出主題分布可能就是{教育:0.5,經(jīng)濟:0.3,交通:0.2},詞分布可能就是{大學(xué):0.5,老師:0.3,課程:0.2}。
  • 但在LDA中,主題分布和詞分布不再唯一確定不變,即無法確切給出。例如主題分布可能是{教育:0.5,經(jīng)濟:0.3,交通:0.2},也可能是{教育:0.6,經(jīng)濟:0.2,交通:0.2},到底是哪個我們不再確定(即不知道),因為它是隨機的可變化的。但再怎么變化,也依然服從一定的分布,即主題分布跟詞分布由Dirichlet先驗隨機確定。
   看到這,你可能凌亂了,你說面對多個主題或詞,各個主題或詞被抽中的概率不一樣,所以抽取主題或詞是隨機抽取,還好理解。但現(xiàn)在你說主題分布和詞分布本身也都是不確定的,這是怎么回事?沒辦法,誰叫Blei等人“強行”給PLSA安了個貝葉斯框架呢,正因為LDA是PLSA的貝葉斯版本,所以主題分布跟詞分布本身由先驗知識隨機給定。
    進一步,你會發(fā)現(xiàn):
  • pLSA中,主題分布和詞分布確定后,以一定的概率(
    、
    )分別選取具體的主題和詞項,生成好文檔。而后根據(jù)生成好的文檔反推其主題分布、詞分布時,最終用EM算法(極大似然估計思想)求解出了兩個未知但固定的參數(shù)的值:
    (由
    轉(zhuǎn)換而來)和
    (由
    轉(zhuǎn)換而來)。
    • 文檔d產(chǎn)生主題z的概率,主題z產(chǎn)生單詞w的概率都是兩個固定的值。
      • 舉個文檔d產(chǎn)生主題z的例子。給定一篇文檔d,主題分布是一定的,比如{ P(zi|d), i = 1,2,3 }可能就是{0.4,0.5,0.1},表示z1、z2、z3,這3個主題被文檔d選中的概率都是個固定的值:P(z1|d) = 0.4、P(z2|d) = 0.5、P(z3|d) = 0.1,如下圖所示(圖截取自沈博PPT上):

  • 但在貝葉斯框架下的LDA中,我們不再認為主題分布(各個主題在文檔中出現(xiàn)的概率分布)和詞分布(各個詞語在某個主題下出現(xiàn)的概率分布)是唯一確定的(而是隨機變量,而是有很多種可能。但一篇文檔總得對應(yīng)一個主題分布和一個詞分布吧,怎么辦呢?LDA為它們弄了兩個Dirichlet先驗參數(shù),這個Dirichlet先驗為某篇文檔隨機抽取出某個主題分布和詞分布。
    • 文檔d產(chǎn)生主題z(準確的說,其實是Dirichlet先驗為文檔d生成主題分布Θ,然后根據(jù)主題分布Θ產(chǎn)生主題z)的概率,主題z產(chǎn)生單詞w的概率都不再是某兩個確定的值,而是隨機變量。
      • 還是舉文檔d具體產(chǎn)生主題z的例子。給定一篇文檔d,現(xiàn)在有多個主題z1、z2、z3,它們的主題分布{ P(zi|d), i = 1,2,3 }可能是{0.4,0.5,0.1},也可能是{0.2,0.2,0.6},即這些主題被d選中的概率都不再認為是確定的值,可能是P(z1|d) = 0.4、P(z2|d) = 0.5、P(z3|d) = 0.1,也有可能是P(z1|d) = 0.2、P(z2|d) = 0.2、P(z3|d) = 0.6等等,而主題分布到底是哪個取值集合我們不確定(為什么?這就是貝葉斯派的核心思想,把未知參數(shù)當(dāng)作是隨機變量,不再認為是某一個確定的值),但其先驗分布是dirichlet 分布,所以可以從無窮多個主題分布中按照dirichlet 先驗隨機抽取出某個主題分布出來。如下圖所示(圖截取自沈博PPT上):

    換言之,LDA在pLSA的基礎(chǔ)上給這兩參數(shù)
、
加了兩個先驗分布的參數(shù)(貝葉斯化):一個主題分布的先驗分布Dirichlet分布
,和一個詞語分布的先驗分布Dirichlet分布
。
    綜上,LDA真的只是pLSA的貝葉斯版本,文檔生成后,兩者都要根據(jù)文檔去推斷其主題分布和詞語分布(即兩者本質(zhì)都是為了估計給定文檔生成主題,給定主題生成詞語的概率),只是用的參數(shù)推斷方法不同,在pLSA中用極大似然估計的思想去推斷兩未知的固定參數(shù),而LDA則把這兩參數(shù)弄成隨機變量,且加入dirichlet先驗。
    所以,pLSA跟LDA的本質(zhì)區(qū)別就在于它們?nèi)ス烙嬑粗獏?shù)所采用的思想不同,前者用的是頻率派思想,后者用的是貝葉斯派思想。
    好比,我去一朋友家:
  • 按照頻率派的思想,我估計他在家的概率是1/2,不在家的概率也是1/2,是個定值。
  • 按照貝葉斯派的思想,他在家不在家的概率不再認為是個定值1/2,而是隨機變量。比如按照我們的經(jīng)驗(比如當(dāng)天周末),猜測他在家的概率是0.6,但這個0.6不是說就是完全確定的,也有可能是0.7。如此,貝葉斯派沒法確切給出參數(shù)的確定值(0.3,0.4,0.6,0.7,0.8,0.9都有可能),但至少明白在哪個范圍或哪些取值(0.6,0.7,0.8,0.9)更有可能,哪個范圍或哪些取值(0.3,0.4) 不太可能。進一步,貝葉斯估計中,參數(shù)的多個估計值服從一定的先驗分布,而后根據(jù)實踐獲得的數(shù)據(jù)(例如周末不斷跑他家),不斷修正之前的參數(shù)估計,從先驗分布慢慢過渡到后驗分布。
    OK,相信已經(jīng)解釋清楚了。如果是在機器學(xué)習(xí)班上face-to-face,更好解釋和溝通。

4.3.2 LDA生成文檔過程的進一步理解

    上面說,LDA中,主題分布 —— 比如{ P(zi), i =1,2,3 }等于{0.4,0.5,0.1}或{0.2,0.2,0.6} —— 是由dirichlet先驗給定的,不是根據(jù)文檔產(chǎn)生的。所以,LDA生成文檔的過程中,先從dirichlet先驗中“隨機”抽取出主題分布,然后從主題分布中“隨機”抽取出主題,最后從確定后的主題對應(yīng)的詞分布中“隨機”抽取出詞。
    那么,dirichlet先驗到底是如何“隨機”抽取主題分布的呢?
    事實上,從dirichlet分布中隨機抽取主題分布,這個過程不是完全隨機的。為了說清楚這個問題,咱們得回顧下dirichlet分布。事實上,如果我們?nèi)?個事件的話,可以建立一個三維坐標系,類似xyz三維坐標系,這里,我們把3個坐標軸弄為p1、p2、p3,如下圖所示:

    在這個三維坐標軸所劃分的空間里,每一個坐標點(p1,p2,p3)就對應(yīng)著一個主題分布,且某一個點(p1,p2,p3)的大小表示3個主題z1、z2、z3出現(xiàn)的概率大小(因為各個主題出現(xiàn)的概率和為1,所以p1+p2+p3 = 1,且p1、p2、p3這3個點最大取值為1)。比如(p1,p2,p3) = (0.4,0.5,0.1)便對應(yīng)著主題分布{ P(zi), i =1,2,3 } = {0.4,0.5,0.1}。

    可以想象到,空間里有很多這樣的點(p1,p2,p3),意味著有很多的主題分布可供選擇,那dirichlet分布如何選擇主題分布呢?把上面的斜三角形放倒,映射到底面的平面上,便得到如下所示的一些彩圖(3個彩圖中,每一個點對應(yīng)一個主題分布,高度代表某個主題分布被dirichlet分布選中的概率,且選不同的

,dirichlet 分布會偏向不同的主題分布):

    我們來看上圖中左邊這個圖,高度就是代表dirichlet分布選取某個坐標點(p1,p2,p3)(這個點就是一個主題分布)的概率大小。如下圖所示,平面投影三角形上的三個頂點上的點:A=(0.9,0.05,0.05)、B=(0.05,0.9,0.05)、C=(0.05,0.05,0.9)各自對應(yīng)的主題分布被dirichlet分布選中的概率值很大,而平面三角形內(nèi)部的兩個點:D、E對應(yīng)的主題分布被dirichlet分布選中的概率值很小。

    所以雖然說dirichlet分布是隨機選取任意一個主題分布的,但依然存在著P(A) = P(B) = P(C) >> P(D) = P(E),即dirichlet分布還是“偏愛”某些主題分布的。至于dirichlet分布的參數(shù)
是如何決定dirichlet分布的形狀的,可以從dirichlet分布的定義和公式思考。
    此外,就算說“隨機”選主題也是根據(jù)主題分布來“隨機”選取,這里的隨機不是完全隨機的意思,而是根據(jù)各個主題出現(xiàn)的概率值大小來抽取。比如當(dāng)dirichlet先驗為文檔d生成的主題分布{ P(zi), i =1,2,3 }是{0.4,0.5,0.1}時,那么主題z2在文檔d中出現(xiàn)的概率便是0.5。所以,從主題分布中抽取主題,這個過程也不是完全隨機的,而是按照各個主題出現(xiàn)的概率值大小進行抽取。

4.3.3 pLSA跟LDA的概率圖對比

    接下來,對比下LDA跟pLSA的概率模型圖模型,左圖是pLSA,右圖是LDA(右圖不太規(guī)范,z跟w都得是小寫, 其中,陰影圓圈表示可觀測的變量,非陰影圓圈表示隱變量,箭頭表示兩變量間的條件依賴性conditional dependency,方框表示重復(fù)抽樣,方框右下角的數(shù)字代表重復(fù)抽樣的次數(shù)):
    
        
    對應(yīng)到上面右圖的LDA,只有W / w是觀察到的變量,其他都是隱變量或者參數(shù),其中,Φ表示詞分布,Θ表示主題分布,
 是主題分布Θ的先驗分布(即Dirichlet 分布)的參數(shù),
是詞分布Φ的先驗分布(即Dirichlet 分布)的參數(shù),N表示文檔的單詞總數(shù),M表示文檔的總數(shù)。
    所以,對于一篇文檔d中的每一個單詞,LDA根據(jù)先驗知識
確定某篇文檔的主題分布θ,然后從該文檔所對應(yīng)的多項分布(主題分布)θ中抽取一個主題z,接著根據(jù)先驗知識
確定當(dāng)前主題的詞語分布?,然后從主題z所對應(yīng)的多項分布(詞分布)?中抽取一個單詞w。然后將這個過程重復(fù)N次,就產(chǎn)生了文檔d。
    換言之:
  1. 假定語料庫中共有M篇文章,每篇文章下的Topic的主題分布是一個從參數(shù)為
    的Dirichlet先驗分布中采樣得到
    的Multinomial分布,每個Topic下的詞分布是一個從參數(shù)為
    的Dirichlet先驗分布中采樣得到
    的Multinomial分布。
  2. 對于某篇文章中的第n個詞,首先從該文章中出現(xiàn)的每個主題的Multinomial分布(主題分布)中選擇或采樣一個主題,然后再在這個主題對應(yīng)的詞的Multinomial分布(詞分布)中選擇或采樣一個詞。不斷重復(fù)這個隨機生成過程,直到M篇文章全部生成完成。
    綜上,M 篇文檔會對應(yīng)于 M 個獨立的 Dirichlet-Multinomial 共軛結(jié)構(gòu),K 個 topic 會對應(yīng)于 K 個獨立的 Dirichlet-Multinomial 共軛結(jié)構(gòu)。
  • 其中,
    →θ→z 表示生成文檔中的所有詞對應(yīng)的主題,顯然 
    →θ 對應(yīng)的是Dirichlet 分布,θ→z 對應(yīng)的是 Multinomial 分布,所以整體是一個 Dirichlet-Multinomial 共軛結(jié)構(gòu),如下圖所示:
  • 類似的,
    →φ→w,容易看出, 此時β→φ對應(yīng)的是 Dirichlet 分布, φ→w 對應(yīng)的是 Multinomial 分布, 所以整體也是一個Dirichlet-Multinomial 共軛結(jié)構(gòu),如下圖所示:

4.3.4 pLSA跟LDA參數(shù)估計方法的對比

    上面對比了pLSA跟LDA生成文檔的不同過程,下面,咱們反過來,假定文檔已經(jīng)產(chǎn)生,反推其主題分布。那么,它們估計未知參數(shù)所采用的方法又有什么不同呢?
  • 在pLSA中,我們使用EM算法去估計“主題-詞項”矩陣Φ(由
    轉(zhuǎn)換得到)和
    “文檔-主題”矩陣Θ(由
    轉(zhuǎn)換得到)這兩個參數(shù),而且這兩參數(shù)都是個固定的值,只是未知,使用的思想其實就是極大似然估計MLE。
  • 而在LDA中,估計Φ、Θ這兩未知參數(shù)可以用變分(Variational inference)-EM算法,也可以用gibbs采樣,前者的思想是最大后驗估計MAP(MAP與MLE類似,都把未知參數(shù)當(dāng)作固定的值),后者的思想是貝葉斯估計。貝葉斯估計是對MAP的擴展,但它與MAP有著本質(zhì)的不同,即貝葉斯估計把待估計的參數(shù)看作是服從某種先驗分布的隨機變量。
    • 關(guān)于貝葉斯估計再舉個例子。假設(shè)中國的大學(xué)只有兩種:理工科和文科,這兩種學(xué)校數(shù)量的比例是1:1,其中,理工科男女比例7:1,文科男女比例1:7。某天你被外星人隨機扔到一個校園,問你該學(xué)校可能的男女比例是多少?然后,你實際到該校園里逛了一圈,看到的5個人全是男的,這時候再次問你這個校園的男女比例是多少?
      1. 因為剛開始時,有先驗知識,所以該學(xué)校的男女比例要么是7:1,要么是1:7,即P(比例為7:1) = 1/2,P(比例為1:7) = 1/2。
      2. 然后看到5個男生后重新估計男女比例,其實就是求P(比例7:1|5個男生)= ?,P(比例1:7|5個男生) = ?
      3. 用貝葉斯公式
        ,可得:P(比例7:1|5個男生) = P(比例7:1)*P(5個男生|比例7:1) / P(5個男生),P(5個男生)是5個男生的先驗概率,與學(xué)校無關(guān),所以是個常數(shù);類似的,P(比例1:7|5個男生) = P((比例1:7)*P(5個男生|比例1:7)/P(5個男生)。
      4. 最后將上述兩個等式比一下,可得:P(比例7:1|5個男生)/P(比例1:7|5個男生) = {P((比例7:1)*P(5個男生|比例7:1)} / { P(比例1:7)*P(5個男生|比例1:7)}。
    由于LDA把要估計的主題分布和詞分布看作是其先驗分布是Dirichlet分布的隨機變量,所以,在LDA這個估計主題分布、詞分布的過程中,它們的先驗分布(即Dirichlet分布)事先由人為給定,那么LDA就是要去求它們的后驗分布(LDA中可用gibbs采樣去求解它們的后驗分布,得到期望
、
)!
   此外,不厭其煩的再插一句,在LDA中,主題分布和詞分布本身都是多項分布,而由上文3.2節(jié)可知“Dirichlet分布是多項式分布的共軛先驗概率分布”,因此選擇Dirichlet 分布作為它們的共軛先驗分布。意味著為多項分布的參數(shù)p選取的先驗分布是Dirichlet分布,那么以p為參數(shù)的多項分布用貝葉斯估計得到的后驗分布仍然是Dirichlet分布。

4.3.5 LDA參數(shù)估計:Gibbs采樣

    理清了LDA中的物理過程,下面咱們來看下如何學(xué)習(xí)估計。

    類似于pLSA,LDA的原始論文中是用的變分-EM算法估計未知參數(shù),后來發(fā)現(xiàn)另一種估計LDA未知參數(shù)的方法更好,這種方法就是:Gibbs Sampling,有時叫Gibbs采樣或Gibbs抽樣,都一個意思。Gibbs抽樣是馬爾可夫鏈蒙特卡爾理論(MCMC)中用來獲取一系列近似等于指定多維概率分布(比如2個或者多個隨機變量的聯(lián)合概率分布)觀察樣本的算法。

    OK,給定一個文檔集合,w是可以觀察到的已知變量,

是根據(jù)經(jīng)驗給定的先驗參數(shù),其他的變量z,θ和φ都是未知的隱含變量,需要根據(jù)觀察到的變量來學(xué)習(xí)估計的。根據(jù)LDA的圖模型,可以寫出所有變量的聯(lián)合分布:


    注:上述公式中及下文中,

等價上文中定義的
等價于上文中定義的
,
等價于上文中定義的
等價于上文中定義的
。

    因為

產(chǎn)生主題分布θ,主題分布θ確定具體主題,且
產(chǎn)生詞分布φ、詞分布φ確定具體詞,所以上述式子等價于下述式子所表達的聯(lián)合概率分布

    其中,第一項因子

表示的是根據(jù)確定的主題
和詞分布的先驗分布參數(shù)
采樣詞的過程,第二項因子
是根據(jù)主題分布的先驗分布參數(shù)
采樣主題的過程,這兩項因子是
需要計算的兩個未知參數(shù)。

    由于這兩個過程是獨立的,所以下面可以分別處理,各個擊破。

    第一個因子

,可以根據(jù)確定的主題
和從先驗分布
取樣得到的詞分布Φ產(chǎn)生:

    由于樣本中的詞服從參數(shù)為主題

的獨立多項分布,這意味著可以把上面對詞的乘積分解成分別對主題和對詞的兩層乘積:

    其中,

是詞 t 在主題 k 中出現(xiàn)的次數(shù)。

    回到第一個因子上來。目標分布

需要對詞分布Φ積分,且結(jié)合我們之前在3.1節(jié)定義的Dirichlet 分布的歸一化系數(shù)
的公式

    可得:

    這個結(jié)果可以看作K個Dirichlet-Multinomial模型的乘積。
    現(xiàn)在開始求第二個因子

。類似于
的步驟,先寫出條件分布,然后分解成兩部分的乘積:

    其中,

表示的單詞 i 所屬的文檔,
是主題 k 在文章 m 中出現(xiàn)的次數(shù)。

    對主題分布Θ積分可得:

    綜合第一個因子和第二個因子的結(jié)果,得到

的聯(lián)合分布結(jié)果為

    接下來,有了聯(lián)合分布
,咱們便可以通過聯(lián)合分布來計算在給定可觀測變量 w 下的隱變量 z 的條件分布(后驗分布)
來進行貝葉斯分析
。
    換言之,有了這個聯(lián)合分布后,要求解第m篇文檔中的第n個詞(下標為
的詞)的全部條件概率就好求了。
    先定義幾個變量。
表示除去
的詞,
,
。
    然后,排除當(dāng)前詞的主題分配,即根據(jù)其他詞的主題分配和觀察到的單詞來計算當(dāng)前詞主題的概率公式為:
    勘誤:考慮到
,所以上述公式的第二行的分子,非p(w,z) *p(z),而是p(w|z)*p(z)。
    且有:

    最后一步,便是根據(jù)Markov鏈的狀態(tài)
獲取主題分布的參數(shù)Θ和詞分布的參數(shù)Φ。
    換言之根據(jù)貝葉斯法則和Dirichlet先驗,以及上文中得到的
各自被分解成兩部分乘積的結(jié)果,可以計算得到每個文檔上Topic的后驗分布和每個Topic下的詞的后驗分布分別如下(據(jù)上文可知:其后驗分布跟它們的先驗分布一樣,也都是Dirichlet 分布
360docimg_501_
    其中,360docimg_502_是構(gòu)成文檔m的主題數(shù)向量,360docimg_503_是構(gòu)成主題k的詞項數(shù)向量。

    此外,別忘了上文中2.4節(jié)所述的Dirichlet的一個性質(zhì),如下:

     “ 如果360docimg_504_,同樣可以證明有下述結(jié)論成立:

360docimg_505_

    即:如果360docimg_506_,則360docimg_507_中的任一元素360docimg_508_的期望是:
360docimg_509_
    可以看出,超參數(shù)360docimg_510_的直觀意義就是事件先驗的偽計數(shù)(prior pseudo-count)。 
    所以,最終求解的Dirichlet 分布期望為
360docimg_511_
    然后將360docimg_512_和360docimg_513_的結(jié)果代入之前得到的360docimg_514_的結(jié)果中,可得:
360docimg_515_
    仔細觀察上述結(jié)果,可以發(fā)現(xiàn),式子的右半部分便是360docimg_516_,這個概率的值對應(yīng)著360docimg_517_的路徑概率。如此,K 個topic 對應(yīng)著K條路徑,Gibbs Sampling 便在這K 條路徑中進行采樣,如下圖所示:
360docimg_518_
    何等奇妙,就這樣,Gibbs Sampling通過求解出主題分布和詞分布的后驗分布,從而成功解決主題分布和詞分布這兩參數(shù)未知的問題。


5 讀者微評


    本文發(fā)表后,部分熱心的讀者在微博上分享了他們自己理解LDA的心得,也歡迎更多朋友分享你的理解心得(比如評論在本文下,或評論在微博上),從而在分享、討論的過程中讓更多人可以更好的理解:
  1. @SiNZeRo:lda 如果用em就是 map估計了. lda本意是要去找后驗分布 然后拿后驗分布做bayesian分析. 比如theta的期望 . 而不是把先驗作為正則化引入。最后一點gibbs sampling其實不是求解的過程 是去explore后驗分布 去采樣 用于求期望.
  2. @研究者July:好問題好建議,這幾天我陸續(xù)完善下!//@帥廣應(yīng)s:LDA這個東西該怎么用?可以用在哪些地方?還有就是Gibbs抽樣的原理是什么?代碼怎么實現(xiàn)?如果用EM來做,代碼怎么實現(xiàn)? LDA模型的變形和優(yōu)化有哪些?LDA不適用于解決哪類的問題?總之,不明白怎么用,參數(shù)怎么調(diào)優(yōu)? 
  3. @xiangnanhe:寫的很好,4.1.3節(jié)中的那兩個圖很贊,非常直觀的理解了LDA模型加了先驗之后在學(xué)參數(shù)的時候要比PLSI更靈活;PLSI在學(xué)參數(shù)的過程中比較容易陷入local minimum然后overfitting。
  4. @asker2:無論是pLSA中,還是LDA中,主題分布和詞分布本身是固定的存在,但都未知。pLSA跟LDA的區(qū)別在于,去探索這兩個未知參數(shù)的方法或思想不一樣。pLSA是求到一個能擬合文本最好的參數(shù)(分布),這個值就認為是真實的參數(shù)。但LDA認為,其實我們沒法去完全求解出主題分布、詞分布到底是什么參數(shù),我們只能把它們當(dāng)成隨機變量,通過縮小其方差(變化度)來盡量讓這個隨機變量變得更“確切”。換言之,我們不再求主題分布、詞分布的具體值,而是通過這些分布生成的觀測值(即實際文本)來反推分布的參數(shù)的范圍,即在什么范圍比較可能,在什么范圍不太可能。所以,其實這就是一種貝葉斯分析的思想,雖然無法給出真實值具體是多少,但可以按照經(jīng)驗給一個相對合理的真實值服從的先驗分布,然后從先驗出發(fā)求解其后驗分布。
  5. ..


6 參考文獻與推薦閱讀

  1. Blei, David M.; Ng, Andrew Y.; Jordan, Michael I. Latent Dirichlet allocation(LDA原始論文):http://www.jmlr.org/papers/volume3/blei03a/blei03a.pdf
  2. Blei. Probabilistic Topic Models:http://www.cs.princeton.edu/~blei/papers/Blei2012.pdf,一網(wǎng)友的翻譯:http://www.cnblogs.com/siegfang/archive/2013/01/30/2882391.html;
  3. 一堆wikipedia,比如隱含狄利克雷分布LDA的wiki:http://zh.wikipedia.org/wiki/%E9%9A%90%E5%90%AB%E7%8B%84%E5%88%A9%E5%85%8B%E9%9B%B7%E5%88%86%E5%B8%83,狄利克雷分布的wiki:http://zh.wikipedia.org/wiki/%E7%8B%84%E5%88%A9%E5%85%8B%E9%9B%B7%E5%88%86%E5%B8%83;
  4. 從貝葉斯方法談到貝葉斯網(wǎng)絡(luò) ;
  5. rickjin的LDA數(shù)學(xué)八卦(力薦,本文部分圖片和公式來自于此文檔)網(wǎng)頁版:http://www.flickering.cn/tag/lda/,PDF版:http://emma.memect.com/t/9756da9a47744de993d8df13a26e04e38286c9bc1c5a0d2b259c4564c6613298/LDA
  6. Thomas Hofmann.Probabilistic Latent Semantic Indexing(pLSA原始論文):http://cs.brown.edu/~th/papers/Hofmann-SIGIR99.pdf;
  7. Gregor Heinrich.Parameter estimation for text analysis(關(guān)于Gibbs 采樣最精準細致的論述):http://www.arbylon.net/publications/text-est.pdf
  8. Probabilistic latent semantic analysis (pLSA):http://blog.tomtung.com/2011/10/plsa/http://blog.tomtung.com/2011/10/plsa/。
  9. 《概率論與數(shù)理統(tǒng)計教程第二版 茆詩松等人著》,如果忘了相關(guān)統(tǒng)計分布,建議復(fù)習(xí)此書或此文第二部分;
  10. 支持向量機通俗導(dǎo)論:理解SVM的三層境界》,第二部分關(guān)于拉格朗日函數(shù)的討論;
  11. 機器學(xué)習(xí)班第11次課上,鄒博講EM & GMM的PPT:http://pan.baidu.com/s/1i3zgmzF;
  12. 機器學(xué)習(xí)班第12次課上,鄒博講主題模型LDA的PPT:http://pan.baidu.com/s/1jGghtQm;
  13. 主題模型之pLSA:http://blog.jqian.net/post/plsa.html
  14. 主題模型之LDA:http://blog.jqian.net/post/lda.html;
  15. 搜索背后的奧秘——淺談?wù)Z義主題計算:http://www.semgle.com/search-engine-algorithms-mystery-behind-search-on-the-calculation-of-semantic-topic;
  16. LDA的EM推導(dǎo):http://www.cnblogs.com/hebin/archive/2013/04/25/3043575.html;
  17. Machine Learning讀書會第8期上,沈博講主題模型的PPT:http://vdisk.weibo.com/s/zrFL6OXKgKMAf;
  18. Latent Dirichlet Allocation (LDA)- David M.Blei:http://www.xperseverance.net/blogs/2012/03/17/;
  19. 用GibbsLDA做Topic Modeling:http://weblab.com.cityu.edu.hk/blog/luheng/2011/06/24/%E7%94%A8gibbslda%E5%81%9Atopic-modeling/#comment-87
  20. 主題模型在文本挖掘中的應(yīng)用:http://net.pku.edu.cn/~zhaoxin/Topic-model-xin-zhao-wayne.pdf;
  21. 二項分布和多項分布,beta分布的對比:http://www.cnblogs.com/wybang/p/3206719.html;
  22. LDA簡介:http://cos.name/2010/10/lda_topic_model/
  23. LDA的相關(guān)論文、工具庫:http://site.douban.com/204776/widget/notes/12599608/note/287085506/;
  24. 一個網(wǎng)友學(xué)習(xí)LDA的心得:http://www.xuwenhao.com/2011/03/20/suggestions-for-programmers-to-learn-lda/;
  25. http://blog.csdn.net/hxxiaopei/article/details/7617838;
  26. 主題模型LDA及其在微博推薦&廣告算法中的應(yīng)用:http://www.wbrecom.com/?p=136;
  27. LDA發(fā)明人之一Blei 寫的畢業(yè)論文:http://www.cs.princeton.edu/~blei/papers/Blei2004.pdf
  28. LDA的一個C實現(xiàn):http://www.cs.princeton.edu/~blei/lda-c/index.html;
  29. LDA的一些其它資料:http://www.xperseverance.net/blogs/2012/03/657/


7 后記


    這個LDA的筆記從11月17日下午開始動筆,到21日基本寫完,25日基本改完,前前后后,基本寫完 + 基本改完,總共花了近10 天的時間,后面還得不斷完善。前5天就像在樹林里中行走,要走的大方向非常明確,但在選取哪條小道上則頗費了一番周折,但當(dāng)最后走出了樹林,登上山頂,俯瞰整個森林時,奧,原來它就長這樣,會有一種徹爽的感覺!而后5 天,則慢慢開始接近LDA的本質(zhì):pLSA的貝葉斯版本。
    寫作過程艱難但結(jié)果透徹,也希望讀者能享受到其中。
    最后,再次感謝本文最主要的參考:LDA原始論文、pLSA原始論文、LDA數(shù)學(xué)八卦、機器學(xué)習(xí)班第12次課主題模型PPT,和Parameter estimation for text analysis等等的作者們(本文中大部分的圖片、公式截取自這些參考資料上),因為有他們的創(chuàng)造或分享,我才有機會理解和再加工LDA,最終讓本文得以成文。
    后續(xù)幾天會不斷修改完善本文,若有任何問題,可在本文下評論,thanks。
    July、二零一四年十一月二十一日。
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
LDA主題聚類學(xué)習(xí)小結(jié)
FanJianning: LDA主題模型簡介 | 統(tǒng)計之都 (中國統(tǒng)計學(xué)門戶網(wǎng)站,免費統(tǒng)計學(xué)服務(wù)平臺)
Spark2.0機器學(xué)習(xí)系列之9: 聚類算法(LDA)
共軛先驗、共軛分布
【轉(zhuǎn)】LDA論文導(dǎo)讀 | 持之以恒
Latent Dirichlet Allocation(LDA) 【轉(zhuǎn)】
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服