LDA是一種典型的詞袋模型,即它認為一篇文檔是由一組詞構成的一個集合,詞與詞之間沒有順序以及先后的關系。一篇文檔可以包含多個主題,文檔中每一個詞都由其中的一個主題生成。
它是一種主題模型,它可以將文檔集中每篇文檔的主題按照概率分布的形式給出;
同時是一種無監督學習算法,在訓練時不需要手工標注的訓練集,需要的僅僅是文檔集以及指定主題的數量k即可;
此外LDA的另一個優點則是,對於每一個主題均可找出一些詞語來描述它;
LDA可以被認為是一種聚類算法:
[LDA automatically assigns topics to text documents]
在我們開始了解LDA模型算法之前,我們先要了解我們的一篇文章往往是如何生成的
LDA生成模型
我們可能會認為作者先確定這篇文章的幾個主題,然后圍繞這幾個主題遣詞造句,表達成文。
因此正如LDA貝葉斯網絡結構中所描述的,在LDA模型中一篇文檔生成的方式如下:
- 從狄利克雷分布
中取樣生成文檔i的主題分布
…………………………..通過α得到文檔i的主題分布
- 從主題的多項式分布
中取樣生成文檔i第j個詞的主題
……………………..從主題分布中得到詞的主題
- 從狄利克雷分布
中取樣生成主題
的詞語分布
…………………………….得到該主題的詞分布
- 從詞語的多項式分布
中采樣最終生成詞語
…………………………………根據上述的詞分布得到詞(因為是詞袋模型,因此不在乎上下文)
-
LDA模型參數求解概述
因此整個模型中所有可見變量以及隱藏變量的聯合分布是
(這里i表示第i個文檔)
最終一篇文檔的單詞分布的最大似然估計可以通過將上式的
以及
進行積分和對
進行求和得到
根據
的最大似然估計,最終可以通過吉布斯采樣等方法估計出模型中的參數。
LDA的參數估計(吉布斯采樣)
Gibbs Sampling,具體過程如下:
- 首先對所有文檔中的所有詞遍歷一遍,為其都隨機分配一個主題,即zm,n=k~Mult(1/K),其中m表示第m篇文檔,n表示文檔中的第n個詞,k表示主題,K表示主題的總數,之后將對應的n(k)m+1, nm+1, n(t)k+1, nk+1, 他們分別表示在m文檔中k主題出現的次數,m文檔中主題數量的和??(可重復的,所以應該就是文檔中詞的個數,不變的量)??,k主題對應的t詞的次數,k主題對應的總詞數(n(k)m等等初始化為0)。
- 之后對下述操作進行重復迭代。
- 對所有文檔中的所有詞進行遍歷,假如當前文檔m的詞t對應主題為k,則n(k)m-1, nm-1, n(t)k-1, nk-1, 即先拿出當前詞,之后根據LDA中topic sample的概率分布采樣出新主題,在對應的n(k)m, nm, n(t)k, nk上分別+1。
-
∝
(topic sample的概率分布)…………….根據該詞的該主題出現的次數以及該文檔該主題的的次數
- 迭代完成后輸出主題-詞參數矩陣φ和文檔-主題矩陣θ
-
主題k中詞t的概率分布
文檔m中主題k的概率分布
從這里看出,gibbs采樣方法求解lda最重要的是條件概率p(zi | z-i,w)的計算上。
[http://zh.wikipedia.org/wiki/隱含狄利克雷分布]
LDA中的數學概念
主題模型LDA文檔生成模式
從LDA與pLSA的區別和聯系角度出發
LDA就是在pLSA的基礎上加層貝葉斯框架。pLSA樣本隨機,參數雖未知但固定,屬於頻率派思想;而LDA樣本固定,參數未知但不固定,是個隨機變量,服從一定的分布,LDA屬於貝葉斯派思想。
-
pLSA與LDA生成文檔方式的對比
pLSA模型按照如下的步驟生成“文檔-詞項”:
- 按照概率
選擇一篇文檔
- 選定文檔
后,確定文章的主題分布
- 從主題分布中按照概率
選擇一個隱含的主題類別
- 選定
后,確定主題下的詞分布
- 從詞分布中按照概率
選擇一個詞
-
LDA模型中一篇文檔生成的方式:
- 按照先驗概率
選擇一篇文檔
- 從狄利克雷分布
中取樣生成文檔
的主題分布
,換言之,主題分布
由超參數為
的Dirichlet分布生成
- 從主題的多項式分布
中取樣生成文檔
第 j 個詞的主題
- 從狄利克雷分布(即Dirichlet分布)
中取樣生成主題
對應的詞語分布
,換言之,詞語分布
由參數為
的Dirichlet分布生成
- 從詞語的多項式分布
中采樣最終生成詞語
-
[沈博PPT]
從上面兩個過程可以看出,LDA在PLSA的基礎上,為主題分布和詞分布分別加了兩個Dirichlet先驗(也就是主題分布的分布和詞分布的分布)。
pLSA與LDA的概率圖對比
pLSA跟LDA生成文檔的不同過程,左圖是pLSA,右圖是LDA(右圖不太規范,z跟w都得是小寫):
LDA概率圖:
對應到上面右圖的LDA,只有W / w是觀察到的變量,其他都是隱變量或者參數,其中,Φ表示詞分布,Θ表示主題分布,是主題分布Θ的先驗分布(即Dirichlet 分布)的參數,
是詞分布Φ的先驗分布的參數,N表示文檔的單詞總數,M表示文檔的總數。
- 假定語料庫中共有M篇文章,每篇文章下的Topic的主題分布是一個從參數為
的Dirichlet先驗分布中采樣得到的Multinomial分布,每個Topic下的詞分布是一個從參數為
的Dirichlet先驗分布中采樣得到的Multinomial分布。 (每篇文章的Topic的主題分布和Topic下的詞分布都是Multinomial 分布)
- 對於某篇文章中的第n個詞,首先從該文章中出現的每個主題的Multinomial分布(主題分布)中選擇或采樣一個主題,然后再在這個主題對應的詞的Multinomial分布(詞分布)中選擇或采樣一個詞。不斷重復這個隨機生成過程,直到M篇文章全部生成完成。(先采樣主題,再在該主題分布中采樣詞)
-
M 篇文檔會對應於 M 個獨立的 Dirichlet-Multinomial 共軛結構(每篇文檔都有其獨特不同的doc-topic分布),K 個 topic 會對應於 K 個獨立的 Dirichlet-Multinomial 共軛結構。
- 其中,
→θ→z 表示生成文檔中的所有詞對應的主題,顯然
→θ 對應的是Dirichlet 分布,θ→z 對應的是 Multinomial 分布,所以整體是一個 Dirichlet-Multinomial 共軛結構,如下圖所示:
-
- 類似的,
→φ→w,容易看出, 此時β→φ對應的是 Dirichlet 分布, φ→w 對應的是 Multinomial 分布, 所以整體也是一個Dirichlet-Multinomial 共軛結構,如下圖所示:
-
pLSA與LDA參數估計方法的對比
假定文檔已經產生,反推其主題分布。那么,它們估計未知參數所采用的方法有什么不同?
- pLSA中,我們使用EM算法去估計“主題-詞項”矩陣Φ和“文檔-主題”矩陣Θ,而且這兩參數都是個未知的固定的值,使用的思想其實就是極大似然估計MLE。
- LDA中,估計Φ、Θ這兩未知參數可以用變分(Variational inference)-EM算法,也可以用gibbs采樣,前者的思想是最大后驗估計MAP(MAP與MLE類似,都把未知參數當作固定的值),后者的思想是貝葉斯估計。貝葉斯估計是對MAP的擴展,但它與MAP有着本質的不同,即貝葉斯估計把待估計的參數看作是服從某種先驗分布的隨機變量。
-
由於LDA把要估計的主題分布和詞分布看作是其先驗分布是Dirichlet分布的隨機變量,所以,在LDA這個估計主題分布、詞分布的過程中,它們的先驗Dirichlet分布事先由人為給定,那么LDA就是要去求(可用gibbs采樣)它們的后驗分布,得到期望
、
。LDA中,主題分布和詞分布本身都是多項分布,而由上文可知“Dirichlet分布是多項式分布的共軛先驗概率分布”,因此選擇Dirichlet 分布作為它們的共軛先驗分布。意味着為多項分布的參數p選取的先驗分布是Dirichlet分布,那么以p為參數的多項分布用貝葉斯估計得到的后驗分布仍然是Dirichlet分布。
LDA Gibbs Sampler
為了構造LDA Gibbs抽樣器,我們需要使用隱變量的Gibbs抽樣器公式
。
(lz:這里分母實際只是分子對zi的一個積分,將變量zi積分掉,就得到p(z-i, x),所以重點在聯合分布p(z,w)公式上,一般先推出聯合分布公式再積分就可以使用上面的隱變量gibbs采樣公式了。而這個聯合分布就是我們采樣出來的結果推斷出的近似分布,也就是下面LDA所有變量的聯合分布如何通過采樣結果求解出來)。
在LDA模型中,隱變量為zm,n,即樣本中每個詞wm,n所屬的主題,而參數Θ和Φ等可以通過觀察到的wm,n和相應的zm,n積分求得,這種處理方法稱作collapsed,在Gibbs sampling中經常使用。
要推斷的目標分布p(z|w)(后驗概率分布
),它和聯合分布成正比
p(z|w)=p(z,w)p(w)=∏Wi=1p(zi,wi)∏Wi=1∑Kk=1p(zi=k,wi)
{
這里省略了超參數},這個分布涉及很多離散隨機變量,並且分母是KW
個項的求和,很難求解(正如從一維均勻分布采樣很容易,直接從二維均勻分布采樣就比較困難了,也是通過固定某個維度gibbs采樣的)。此時,就需要Gibbs sampling發揮用場了,我們期望Gibbs抽樣器可以通過Markov鏈利用全部的條件分布p(zi|z-i,w) 來模擬p(z|w) 。LDA所有變量的聯合分布
聯合概率分布p(w,z): p(w,z|α,β)=p(w|z,β)p(z|α)
給定一個文檔集合,w是可以觀察到的已知變量,
和
是根據經驗給定的先驗參數,其他的變量z,θ和φ都是未知的隱含變量,需要根據觀察到的變量來學習估計的。根據LDA的圖模型,可以寫出所有變量的聯合分布:
因為
產生主題分布θ,主題分布θ確定具體主題,且
產生詞分布φ、詞分布φ確定具體詞,所以上述式子等價於下述式子所表達的所有變量的聯合概率分布
:
(從概率圖表示中也可以看出)
由於此公式第一部分獨立於
α⃗
,第二部分獨立於
β⃗
,所以可以分別處理。計算的兩個未知參數:第一項因子表示的是根據確定的主題
和詞分布的先驗分布參數
采樣詞的過程,第二項因子
是根據主題分布的先驗分布參數
采樣主題的過程。
采樣詞過程
第一個因子
,可以根據確定的主題
和從先驗分布
取樣得到的詞分布Φ產生:
由於樣本中的詞服從參數為主題
的獨立多項分布,這意味着可以把上面對詞的乘積分解成分別對主題和對詞的兩層乘積:
其中
是詞 t 在主題 k 中出現的次數,可以從初始化和迭代中計算出;Φ(k, t)是詞分布也就是主題k下詞t的采樣概率,未知參數,如上分析過,通過
求。
Note:
1 每個主題下包含所有詞,所有詞都要考慮,只是概率不一樣而已。並且這里的w和z上面都有箭頭,都是向量。
2 初始時每個詞w隨機分配主題k,這樣每個主題下的詞也就隨機分配了,
也就得到初始值並不斷修正,具體參考后面的【Gibbs sampling具體算法】
回到第一個因子上來,目標分布
需要對詞分布Φ積分:
(68)
其中在LDA中的數學模型定義的Dirichlet 分布的歸一化系數
的公式
(兩種表達方式,其中int表示積分)
這個結果可以看作K個Dirichlet-Multinomial模型的乘積。
Note: 推導:
采樣主題過程
類似,對於
,先寫出條件分布,然后分解成兩部分的乘積:
其中,
表示的單詞 i 所屬的文檔,
是主題 k 在文章 m 中出現的次數。
對主題分布Θ積分可得聯合分布因子2:
(72)
Note: 上式推導:
綜合第一個因子和第二個因子的結果,得到
的聯合分布結果為:
通過聯合分布公式就可以得出出下面的條件分布的公式,對每個單詞的主題進行采樣。
LDA詞的主題采樣
通過聯合分布
來計算在給定可觀測變量 w 下的隱變量 z 的條件分布(后驗分布)
,再進行貝葉斯分析。換言之,有了這個聯合分布后,要求解第m篇文檔中的第n個詞(下標為
的詞)的全部條件概率就好求了。
變量定義:
表示除去
的詞,
,
排除當前詞的主題分配,即根據其他詞的主題分配和觀察到的單詞來計算當前詞主題的概率公式為:
公式(80)
lz Note:
1 各符號表示含義
理解的一個重要前提是,單詞庫中的每個單詞w都分配了一個不同的主題z。w:數據集Dt中所有詞;m:文檔;k:主題; t:當前詞實例wi = t(特指時)。
我們需要求的實際是p(z, w)的聯合分布,也就是(z, w)的概率分布,表示每個詞對應的主題是什么,怎么求當然是通過含隱變量的gibbs采樣公式采樣,直接通過前面求出的p(w,z)當然是沒法直接采樣,畢竟高維,wz的情況太多。對某個詞wi進行主題分配時,即求(z, w)的分布時,可以通過排除當前詞的主題分配,根據其他詞的主題分配和觀察到的單詞(z-i, w-i)來計算當前詞主題的概率公式,這也就是含隱含變量的gibbs采樣。
p(zi | z-i, w)是wi屬於指定主題zi = k的概率,我們要計算所有的p(zi | z-i, w),歸一化就組成了一個可對wi進行主題采樣的概率分布了。
-i除去當前詞i相關的不考慮where n−i is the count excluding the current assignment of z i , i.e., z −i .;n−i denotes a quantity excluding the current instance;
z−i代表不是wi的其它所有單詞對應的不同主題組成的集合(類似式68中nz的定義)。p(w|z) 表示所有不同單詞在所有不同主題下概率和偽概率的某種復雜乘積(式68 p(z|w, β)),而p(w-i | z-i)表示的是除了單詞i外的所有其它不同單詞在所有不同主題下的乘積;
p(z) 表示所有不同主題在不同文檔中概率和偽概率的某種復雜乘積(式72 p(z | α));而p(z-i)表示除了詞wi對應的主題外,其它所有不同主題在所有不同文檔中的乘積。
n(t)k,-i表示主題k中單詞t(除了單詞wi外,wi也是詞t1,注意不在和式中的t是指wi等於的單詞t)的個數;而n(t)k表示主題k中單詞t的個數;n(k)m,-i表示文檔m中所有詞(不包括wi)被賦予主題k的次數(其中對於wi所在的主題k, n(k)m, -i = n(k)m - 1;對於wi不在的主題,兩者當然相等);
主題分布參數Θ和詞分布參數Φ的計算
Note: LDA的原始論文中,主題的詞分布通常叫β,但是在許多后來的論文中叫φ,如on smoothing and inference for topic models.
最后一步,根據Markov鏈的狀態
獲取主題分布的參數Θ和詞分布的參數Φ(知道了每篇文檔下每個詞對應的主題,那么文檔下的主題分布和主題的詞分布就好求了)。
思路:參數是通過貝葉斯方法求的,先計算 文檔m中主題的概率分布,再取其均值作為參數的估計值。根據貝葉斯法則和Dirichlet先驗,以及上文中得到的
和
各自被分解成兩部分乘積的結果,可以計算得到每個文檔上Topic的后驗分布和每個Topic下的詞的后驗分布分別如下(據上文可知:其后驗分布跟它們的先驗分布一樣,也都是Dirichlet 分布):可知,文檔m中主題的概率分布是 數據學習得到的主題多項式分布似然*文檔m主題分布的Dir先驗。
其中,是構成文檔m的主題數向量,
是構成主題k的詞項數向量。
文檔m主題的概率分布公式推導如下:
根據Dirichlet 分布期望,最終得到的分布參數求解公式為(注意分布參數的計算要在sampling收斂階段進行):
LDA吉布斯采樣概率公式圖解
如果將
和
的結果代入之前得到的
{公式(81)}的結果中,可得:
仔細觀察上述結果,可以發現,式子的右半部分便是
,這個概率的值對應着
的路徑概率。如此,K 個topic 對應着K條路徑,Gibbs Sampling 便在這K 條路徑中進行采樣,如下圖所示:
就這樣,Gibbs Sampling通過求解出主題分布和詞分布的后驗分布,從而成功解決主題分布和詞分布這兩參數未知的問題。
而采樣wi的主題k,其分布就是這些路徑的概率分布,當然更傾向於選擇概率最大的那個路徑。
轉自 http://blog.csdn.net/pipisorry