乾貨 | 一文詳解隱含狄利克雷分布(LDA)

2021-02-15 人工智慧頭條

作者 | 玉龍

一、簡介

隱含狄利克雷分布(Latent Dirichlet Allocation,簡稱LDA)是由 David M. Blei、Andrew Y. Ng、Michael I. Jordan 在2003年提出的,是一種詞袋模型,它認為文檔是一組詞構成的集合,詞與詞之間是無序的。一篇文檔可以包含多個主題,文檔中的每個詞都是由某個主題生成的,LDA給出文檔屬於每個主題的概率分布,同時給出每個主題上詞的概率分布。LDA是一種無監督學習,在文本主題識別、文本分類、文本相似度計算和文章相似推薦等方面都有應用。

本文將從貝葉公式、Gamma函數、二項分布、Beta分布、多項式分布、Dirichlet分布、共軛先驗分布、馬氏鏈及其平穩分布、MCMC、Gibbs Sampling、EM算法、Unigram Model、貝葉斯Unigram Model、PLSA、LDA 幾方面介紹LDA模型,需要讀者具備一定的概率論和微積分知識。

二、基礎知識

1.1 貝葉公式

貝葉斯學派的最基本的觀點是:任一個未知量 θ 都可看作一個隨機變量,應該用一個概率分布去描述對 θ 的未知狀況,這個概率分布是在抽樣前就有關於 θ 的先驗信息的概率陳述,這個概率分布被稱為先驗分布。

從貝葉斯觀點看,樣本的產生要分兩步進行,首先設想從先驗分布 p(θ) 產生一個樣本 θ',這一步是「老天爺」做的,人們是看不到的,故用「設想」二字。第二步是從總體分布 p(X|θ') 產生一個樣本,這個樣本是具體的,人們能看得到的,此樣本 X 發生的概率是與如下聯合密度函數成正比。

這個聯合密度函數是綜合了總體信息和樣本信息,常稱為似然函數,記為  L(θ') 。

由於 θ' 是設想出來的,它仍然是未知的,它是按先驗分布 p(θ) 產生的,要把先驗信息進行綜合,不能只考慮 θ',而應對 θ 的一切可能加以考慮,故要用 p(θ) 參與進一步綜合,所以樣本 X 和參數 θ 的聯合分布(三種可用的信息都綜合進去了):

我們的任務是要對未知數 θ 作出統計推斷,在沒有樣本信息時,人們只能根據先驗分布對 θ 作出推斷。在有樣本觀察值之後,我們應該依據 p(X,θ) 對 θ 作出推斷,為此我們把 p(X,θ) 作如下分解:

其中 p(X) 是 X 的邊緣密度函數。

它與 θ 無關,p(X) 中不含 θ 的任何信息。因此能用來對 θ 作出推斷的僅是條件分布 p(θ|X):

這就是貝葉斯公式的密度函數形式,在樣本 X 給定下,θ 的條件分布被稱為 θ 的後驗分布。它是集中了總體、樣本和先驗等三種信息中有關 θ 的一切信息,而又是排除一切與 θ 無關的信息之後得到的結果,故基於後驗分布 p(θ|X) 對 θ 進行統計推斷是更合理的。

一般說來,先驗分布 p(θ) 是反映人們在抽樣前對 θ 的認識,後驗分布 p(θ|X) 是反映人們在抽樣後對 θ 的認識,之間的差異是由於樣本的出現後人們對 θ 認識的一種調整,所以後驗分布 p(θ|X) 可以看作是人們用總體信息和樣本信息(抽樣信息)對先驗分布 p(θ) 作調整的結果。下面我們介紹三種估計方法:

1. 最大似然估計(ML) 

最大似然估計是找到參數 θ 使得樣本 X 的聯合概率最大,並不會考慮先驗知識,頻率學派和貝葉斯學派都承認似然函數,頻率學派認為參數 θ 是客觀存在的,只是未知。求參數 θ 使似然函數最大,ML估計問題可以用下面公式表示:

通常可以令導數為 0 求得 θ 的值。ML估計不會把先驗知識考慮進去,很容易出現過擬合的現象。我們舉個例子,拋一枚硬幣,假設正面向上的概率為  p,拋了 N 次,正面出現次,反面出現次,c=1 表示正面,c=0  表示反面,我們用 ML 估計:

如果  , ,則 ,似乎比我們認知的 0.5 高了很多。

2. 最大後驗估計(MAP) 

MAP 是為了解決 ML 缺少先驗知識的缺點,剛好公式 (5) 後驗概率集中了樣本信息和先驗信息,所以 MAP 估計問題可以用下面公式表示:

MAP 不僅希望似然函數最大,還希望自己出現的先驗概率也最大,加入先驗概率,起到正則化的作用,如果 θ 服從高斯分布,相當於加一個 L2 範數正則化,如果 θ 服從拉普拉斯分布,相當於加一個 L1 範數正則化。我們繼續前面拋硬幣的例子,大部分人認為應該等於0.5,那麼還有少數人認為 p 取其他值,我們認為 p 的取值服從 Beta 分布。

我們取 α=5,β=5,即 p 以最大的概率取0.5,得到

3. 貝葉斯估計

前面介紹的 ML 和 MAP 屬於點估計,貝葉斯估計不再把參數 θ 看成一個未知的確定值,而是看成未知的隨機變量,利用貝葉斯定理結合新的樣本信息和參數 θ 的先驗分布,來得到 θ 的新的概率分布(後驗分布)。貝葉斯估計的本質是通過貝葉斯決策得到參數 θ 的最優估計 ,使得貝葉斯期望損失最小。貝葉斯期望損失為:

是損失函數,我們希望 最小。如果 ,則:

所以貝葉斯估計值為在樣本 X 條件下 θ 的期望值,貝葉斯估計的步驟為:

我們繼續前面的拋硬幣的例子,後驗概率:

其中,所以可以得:

1.2 Gamma函數

通過分部積分的方法,可以得到一個遞歸性質。

函數可以當成是階乘在實數集上的延拓,

1.3 二項分布

在概率論中,試驗 E 只有兩個可能結果: A 及 ,則稱E 為伯努利(Bernoulli)試驗。設 p(A)=p,則。將 E 獨立重複地進行 n 次,則稱這一串重複的獨立試驗為 n 重伯努利試驗,這裡重複是指在每次試驗中 p(A)=p 保持不變,獨立是指各次試驗的結果互不影響。以 X 表示 n 重伯努利試驗中事件 A 發生的次數,稱隨機變量 X 服從參數為 n,p 的二項分布,記為X~B(n,p) 。

1.4 Beta分布

Beta分布是指一組定義在(0,1)區間的連續概率分布,其概率密度函數是:

1)

證明:

令 t=x+y,當 y=0,t=x ; y=∞,t=∞,可得:

令 x=μt,可得:

2)期望 

證明:

1.5 多項式分布

多項式分布是二項式分布的推廣,二項式分布做 n 次伯努利試驗,規定每次試驗的結果只有兩個,而多項式分布在 N 次獨立試驗中結果有 K 種,且每種結果都有一個確定的概率 p,仍骰子是典型的多項式分布。

其中

1.6 Dirichlet分布

Dirichlet 分布是 Beta 分布在高維度上的推廣,概率密度函數是:

1.7 共軛先驗分布

在貝葉斯中,如果後驗分布與先驗分布屬於同類分布,則先驗分布與後驗分布被稱為共軛分布,而先驗分布被稱為似然函數的共軛先驗。

1.Beta-Binomial共軛 

1)先驗分布

2)二項式似然函數

3)後驗分布

即可以表達為 

取一個特殊情況理解 

Beta(p|1,1) 恰好是均勻分布 uniform(0,1) ,假設有一個不均勻的硬幣拋出正面的概率為 p,拋出 n 次後出現正面和反面的次數分別是 n1 和 n2 ,開始我們對硬幣不均勻性一無所知,所以應該假設 p~ uniform(0,1) ,當有了試驗樣本,我們加入樣本信息對 p 的分布進行修正,  p 的分布由均勻分布變為 Beta 分布。

2.Dirichlet-Multinomial共軛

1)先驗分布

2)多項分布似然函數

3)後驗分布

即可以表達為 

1.8 馬氏鏈及其平穩分布

馬氏鏈的數學定義很簡單,狀態轉移的概率只依賴於前一個狀態。

看一個馬氏鏈的具體例子,馬氏鍊表示股市模型,共有三種狀態:牛市(Bull market)、熊市(Bear market)、橫盤(Stagnant market),每一個轉態都以一定的概率轉化到下一個狀態,如圖1.1所示。

圖1.1

這個概率轉化圖可以以矩陣的形式表示,如果我們定義矩陣 P 某一位置 (i,j) 的值為 P (j|i),表示從狀態 i 轉化到狀態 j 的概率,這樣我們可以得到馬爾科夫鏈模型的狀態轉移矩陣為:

假設初始概率分布為

從第60輪開始的值保持不變,為[0.625  0.3125  0.0625]  。我們更改初始概率,,從55輪開始

的值保持不變,為[0.625  0.3125  0.0625]  。兩次給定不同的初始概率分布,最終都收斂到概率分布 π=[0.625  0.3125  0.0625]  ,也就是說收斂的行為和初始概率分布 π0 無關,這個收斂的行為主要是由概率轉移矩陣 P 決定的,可以計算下

當 n 足夠大的時候, 矩陣的每一行都是穩定地收斂到 π=[0.625  0.3125  0.0625]  這個概率分布。這個收斂現象並不是這個馬氏鏈獨有的,而是絕大多數馬氏鏈獨有的。關於馬氏鏈的收斂有如下定理:

定理1.1 如果一個非周期馬氏鏈具有轉移概率矩陣 P,且它的任何兩個狀態是連通的,那麼 存在且與 i 無關,我們有: 

關於上述定理,給出幾點解釋: 

1) 馬氏鏈的狀態數可以是有限的,也可以是無限的,因此可以用於連續概率分布和離散概率分布。 

2) 非周期馬氏鏈:馬氏鏈的狀態轉化不是循環的,如果是循環的則永遠不會收斂,我們遇到的一般都是非周期馬氏鏈。對於任意某一狀態i,d 為集合的最大公約數,如果 d=1,則該狀態為非周期。 

3) 任何兩個狀態是連通的:從任意一個狀態可以通過有限步到達其他的任意狀態,不會出現條件概率一直為0導致不可達的情況。 

4) π 稱為馬氏鏈的平穩分布。 

如果從一個具體的初始狀態 x0 開始,沿著馬氏鏈按照概率轉移矩陣做跳轉,那麼可以得到一個轉移序列,由於馬氏鏈的收斂行為,都將是平穩分布 π(x) 的樣本。

1.9 MCMC

1. 接受-拒絕採樣

對於不常見的概率分布 π(x) 樣本,使用接受-拒絕採樣對可採樣的分布 q(x) 進行採樣得到,如圖1.2所示,採樣得到 Mq(x) 的一個樣本 x0,從均勻分布  (0,Mq(x0) )中採樣得到一個值 μ0 ,如果 μ0 落在圖中灰色區域則拒絕這次採樣,否則接受樣本 x0,重複上面過程得到 n 個接受的樣本,則這些樣本服從 π(x) 分布,具體過程見算法1.1。

圖1.2

下面我們來證明下接受-拒絕方法採樣得到的樣本服從 π(x) 分布。 

證明:accept  x 服從 π(x) 分布,即 p(x|accept) =π(x)。

2. MCMC

給定概率分布 p(x),希望能夠生成它對應的樣本,由於馬氏鏈能收斂到平穩分布,有一個很好的想法:如果我們能構造一個轉移矩陣為 P 的馬氏鏈,使得該馬氏鏈的平穩分布恰好是 p(x),那麼我們從任何一個初始狀態出發沿著馬氏鏈轉移,得到一個轉移序列,如果馬氏鏈在第 n 步已經收斂了,於是我們可以得到 p(x) 的樣本 ,所以關鍵問題是如何構造轉移矩陣 ,我們是基於下面的定理。

定理1.2(細緻平穩條件) 如果非周期馬氏鏈的轉移矩陣 P 和分布 π(x) 滿足:

則 π(x) 是馬氏鏈的平穩分布。 

證明很簡單,有公式(34)得:

 πP=π,滿足馬氏鏈的收斂性質。這樣我們就有了新的思路尋找轉移矩陣 P,即只要我們找到矩陣 P 使得概率分布 π(x)  滿足細緻平穩條件即可。

假設有一個轉移矩陣為 Q 的馬氏鏈(Q(i,j)  表示從狀態 i 轉移到狀態 j 的概率),通常情況下很難滿足細緻平穩條件的,即:

我們對公式(36)進行改造,使細緻平穩條件成立,引入 α (i,j) 。

 α (i,j) 如何取值才能使公式(37)成立?最簡單的我們可以取:

Q' (i,j)=Q (i,j)α (i,j) ,Q' (j,i)=Q (j,i)α (j,i) ,所以我們有:

轉移矩陣 Q' 滿足細緻平穩條件,因此馬氏鏈 Q' 的平穩分布就是 π(x)!

我們可以得到一個非常好的結論,轉移矩陣 Q' 可以通過任意一個馬氏鏈轉移矩陣 Q 乘以 α (i,j) 得到, α (i,j) 一般稱為接受率,其取值範圍為[0,1] ,可以理解為一個概率值,在原來的馬氏鏈上,從狀態 i 以 Q (i,j) 的概率跳轉到狀態 j 的時候,我們以一定的概率 α (i,j) 接受這個轉移,很像前面介紹的接受-拒絕採樣,那裡以一個常見的分布通過一定的接受-拒絕概率得到一個不常見的分布,這裡以一個常見的馬氏鏈狀態轉移矩陣 Q 通過一定的接受-拒絕概率得到新的馬氏鏈狀態轉移矩陣 Q'。

圖1.3

總結下MCMC的採樣過程。

MCMC採樣算法有一個問題,如果接受率 α (xt,x') 比較小,馬氏鏈容易原地踏步,拒絕大量的跳轉,收斂到平穩分布 π(x) 的速度很慢,有沒有辦法可以使 α (xt,x') 變大?

3. M-H採樣

M-H採樣可以解決MCMC採樣接受概率過低問題,回到公式(37),若α (i,j)=0.1,α (j,i)=0.2,即:

公式(40)兩邊同時擴大5倍,仍然滿足細緻平穩條件,即:

所以我們可以把公式(37)中的 α (i,j) 和 α (j,i) 同比例放大,使得其中最大的放大到 1,這樣提高了採樣中的接受率,細緻平穩條件也沒有打破,所以可以取:

提出一個問題:按照MCMC中介紹的方法把 Q→Q' ,是否可以保證 Q' 每行加和為1?

1.10 Gibbs Sampling

對於高維的情形,由於接受率 α ≤ 1,M-H 算法效率不夠高,我們能否找到一個轉移矩陣 Q 使得接受率 α =1 呢?從二維分布開始,假設p(x,y)  是一個二維聯合概率分布,考察某個特徵維度相同的兩個點 A(x1,y1)  和 B(x1,y2)  ,容易發現下面等式成立:

所以可得:

也就是:

觀察細緻平穩條件公式,我們發現在 x=x1 這條直線上,如果用條件分布p(y|x1) 作為任何兩點之間的轉移概率,那麼任何兩點之間的轉移都滿足細緻平穩條件。同樣的,在 y=y1 這條直線上任取兩點 A(x1,y1) 和 C(x2,y1)  ,我們可以得到:

圖1.4

基於上面的發現,我們可以構造分布 p(x,y)  的馬氏鏈的狀態轉移矩陣 Q。

有了上面的轉移矩陣 Q ,很容易驗證對於平面任意兩點 X,Y,都滿足細緻平穩條件。

所以這個二維空間上的馬氏鏈將收斂到平穩分布 p(x,y),稱為Gibbs Sampling 算法。

整個採樣過程中,我們通過輪換坐標軸,得到樣本(x0,y0),(x0,y1),(x1,y1),... ,馬氏鏈收斂後,最終得到的樣本就是 p(x,y) 的樣本。當然坐標軸輪換不是必須的,我們也可以每次隨機選擇一個坐標軸進行採樣,在  t 時刻,可以在 x 軸和 y 軸之間隨機的選擇一個坐標軸,然後按照條件概率做轉移。

圖1.5

二維可以很容易推廣到高維的情況,在 n 維空間中對於概率分布 p(x1,x2,...xn)  。

1.11 EM算法

我們先介紹凸函數的概念,f 的定義域是實數集,若 x∈R 且 f''(x)≥0 ,則  f 是凸函數,若 f''(x)>0,則 f 是嚴格凸函數;若 x 是向量且 hessian 矩陣 H 是半正定矩陣,則 f 是凸函數,若 H 是正定矩陣,則 f 是嚴格凸函數。 

 

定理1.3(Jensen不等式) f 的定義域是實數集,且是凸函數,則有:

如果 f 是嚴格凸函數,只有當 X 是常量,公式(49)等式成立即 E[f(X)]=f(E[X])。

圖1.6

假設訓練集,每個樣本相互獨立,我們需要估計模型 p(x,z) 的參數 θ,由於含有隱變量 z,所以很難直接用最大似然求解,如果 z 已知,那麼就可以用最大似然求解。

其實我們的目標是找到 z 和 θ 使 l(θ) 最大,也就是分別對 Z 和 θ 求偏導,然後令其為 0,理想是美好的,現實是殘酷的,公式(49)求偏導後變的很複雜,求導前要是能把求和符號從對數函數中提出來就好了。EM算法可以有效地解決這個問題,引入 表示  的概率分布。由公式(50)可得:

最後一步是利用 Jensen 不等式,所以 f 是凹函數,

  的期望,所以有:

由公式(51)可知,我們可以不斷地最大化下界,以提高  l(θ),最終達到最大值。如果固定 θ,那麼 l(θ) 的下界就取決於,可以通過調整這個概率,使得下界不斷地上升逼近  l(θ),最終相等,然後固定,調整 θ,使下界達到最大值,此時 θ 為新的值,再固定 θ,調整,反覆直到收斂到 l(θ) 的最大值。現在我們有兩個問題需要證明,1. 下界何時等於 l(θ);2. 為什麼可以收斂到最大值。

第一個問題,由Jensen不等式定理中等式成立條件可知,X 為常量,即:

再由 得:

下面我們先給出 EM 算法,然後再討論第二個問題,E步:固定 θ,根據公式(53)選擇 Qi 使得下界等於 l(θ),M步:最大化下界,得到新的 θ 值。EM算法如下:

在我們開始討論第二個問題,是EM迭代過程的參數估計,我們需要證明,也就是EM算法是單調地提高

第一個不等式是因為:

公式(57)中,

第二個不等式是因為是為了

三、LDA

2.1 Unigram Model

假設我們的詞典中一共有 V 個詞,Unigram Model就是認為上帝按照下面遊戲規則產生文本的。

Game 2.1 Unigram Model

骰子各個面的概率記為,對於一篇文檔,生成該文檔的概率為:

假設我們預料是由 m 篇文檔組成即,每篇文檔是相互獨立的,則該預料的概率為:

假設預料中總共有 N 個詞,每個詞 wi 的詞頻為 ni,那麼服從多項式分布,可參考1.5節的多項式分布概念。

此時公式(60)為:

我們需要估計模型中的參數,可以用最大似然估計:

於是參數 pk 的估計值就是:

2.2 貝葉斯Unigram Model

對於以上模型,統計學家中貝葉斯學派就不同意了,為什麼上帝只有一個固定的篩子呢,在貝葉斯學派看來,一切參數都是隨機變量,模型中 不是唯一固定的,而是服從一個分布,所以貝葉斯Unigram Model遊戲規則變為:

Game 2.2 貝葉斯Unigram Model

上帝這個罈子裡面有些骰子數量多,有些骰子數量少,所以從概率分布的角度看,罈子裡面的骰子 服從一個概率分布,這個分布稱為參數的先驗分布。先驗分布 可以有多種選擇,注意到 是服從多項式分布的,,回顧1.7節可知, 最好的選擇是Dirichlet分布:

於是,在給定了參數  的先驗分布時候,語料中各個詞出現的次數服從多項式分布,所以後驗分布為:

對參數  採用貝葉斯估計,假設參數  服從  分布,我們利用樣本信息對  的先驗分布進行修正,得到的後驗分布也是服從 分布。可以用  的期望值作為參數 的估計值。由1.6節可知, 的期望值為:

接下來我們計算語料產生的概率,開始並不知道上帝到底用哪個骰子,所以每個骰子都有可能被使用,使用的概率由 決定的,對於每個具體的骰子,由該骰子產生預料的概率為,所以語料產生的概率為:

2.3 PLSA

1. PLSA Model

概率隱語義分析,是主題模型的一種。上面介紹的Unigram Model相對簡單,沒有考慮文檔有多個主題的情況,一般一篇文檔可以由多個主題(Topic)組成,文檔中的每個詞都是由一個固定的Topic生成的,所以PLSA的遊戲規則為:

2. EM算法推導PLSA

PLSA 模型中 doc-topic 和 topic-word 的每個面的概率值是固定的,所以屬於點估計,但是PLSA模型既含有觀測變量di,wj,又含有隱變量 zk,就不能簡單地直接使用極大似然估計法估計模型參數,我們可以採用EM算法估計參數。我們先介紹推導過程用到的符號含義:

:表示語料中 N 篇文檔;

:表示語料中 M 個詞組;

:表示詞 wj 在文檔 di 中出現的頻次,

:表示 K 個主題,每篇文檔可以有多個主題;

:表示詞 wj 在給定文檔 di 中出現的概率;

:表示主題 zk 在給定文檔 di 下出現的概率;

:表示詞 wj  在給定主題 zk 下出現的概率。

一般給定語料di,wj是可以觀測的,zk 是隱變量,不可以直觀地觀測到。我們定義「doc-word」的生成模型,如圖1.8所示。

圖2.3

下面進入正題,用EM算法進行模型參數估計,似然函數為:

對於給定訓練預料,希望公式 (69) 最大化。 和  是 PLSA 模型需要求解的參數,按照通常的做法是令偏導數 為0,但是參數是以求和的形式出現在對數函數裡面,求導後會變得很複雜。n(di)表示第 i 篇文檔的詞數,所以當預料固定,公式(69)中第一項可以看作常量,所以只要最大化(69)中的第二項即可,如公式(70)所示。

引入 表示 zk 的概率分布,根據Jensen不等式得:

時,

公式(71)不等式中等號成立,所以只需要最大化:

根據拉格朗日乘子法

所以可得:

總結EM算法為:

1.E-step 隨機初始化變量 ,,計算隱變量後驗概率。

2.M-step 最大化似然函數,更新變量

3.重複1、2兩步,直到收斂。

2.4 LDA

對於 PLSA 模型,貝葉斯學派表示不同意,為什麼上帝只有一個 doc-topic 骰子,為什麼上帝只有固定 K 個topic-word骰子?是模型的參數,一切參數都是隨機變量,模型中不是唯一固定的,類似 2.2 節貝葉斯 Unigram Model 和 2.1 節 Unigram Model 的關係。所以 LDA 遊戲規則為:

假設我們訓練語料有 M 篇 doc,詞典中有 V 個word,K 個topic。對於第m  篇文檔有 Nm 個詞。

,第 m 篇文檔的主題分布概率,;

,主題為 k 的詞的概率分布,

:第 m 篇文檔中屬於 topic k 的詞的個數,

:topic k 產生詞 t 的個數,

先驗分布超參數;

先驗分布超參數;

:第 m 篇文檔中第 n 個詞的主題;

:第 m 篇文檔中第 n 個詞。

LDA的概率圖模型表示如圖2.4所示。

圖2.4

1. 聯合概率分布

1):第一步對 分布進行採樣得到樣本(也就是從第一個罈子中抽取 doc-topic 骰子 );第二步 doc-topic 骰子有 K 個面,每個面表示一個主題,那麼在一次投擲骰子過程中,每個主題的概率為,第 m 篇文檔有 Nm 個詞,所以需要投擲 Nm 次骰子,為該篇文檔中的每個詞生成一個主題, 第 n 個詞對應的主題為

,整篇文檔的主題表示為。在 Nm 次投擲過程中,每個主題出現的次數為,那麼 服從多項式分布(只生成每個詞的主題,並未由主題產生具體的詞)。可以採用貝葉斯估計對參數 進行估計。

 的先驗分布為 

的貝葉斯估計值為

下面我們計算第 m 篇文檔的主題概率分布:

整個語料中的 M 篇文檔是相互獨立的,所以可以得到語料中主題的概率為:

2):第一步對 分布進行 K 採樣得到樣本(從第二個罈子中獨立地抽取了 K 個topic-word骰子);第二步根據之前得到的主題,為每個 生成對應的詞的值有 K 種不同的取值(因為我們假設語料有 K 個主題),所以可以將  中的元素分為 K 類。我們現在為第 k 個主題生成對應的詞,那麼需要選擇編號為 k 的topic-word骰子,該骰子有 V 個面,每個面表示一個詞,那麼在一次投擲骰子過程中,每個詞的概率為 ,第 k 個主題有 個詞,所以需要投擲  次骰子,為該主題生成 個詞。在  次投擲過程中,每個詞出現的次數為

,那麼服從多項式分布,可以採用貝葉斯估計對參數 進行估計。

 的先驗分布為 

後驗分布為(推導過程可以參考1.7節)

 

的貝葉斯估計值為

下面我們計算第 k 個主題的詞概率分布:

整個語料中的 K 個主題是相互獨立的,所以可以得到語料中詞的概率為:

由公式(74)、(78)、(82) 可得聯合概率分布為:

2. Gibbs Sampling

上面我們已經推導出參數的貝葉斯估計公式,但是仍然存在一個問題,公式中的無法根據語料直接得到,如果我們知道語料中的每個詞的主題,即得到,那麼就可以推斷出,進一步就可以得出貝葉斯的參數估計。我們需要利用 Gibbs Sampling 對 進行採樣來得到 。根據1.10節 Gibbs Sampling 的原理可知,我們首先需要推導條件概率

。 先介紹一些符號定義。

:下標索引;

:表示去除下標為 i 的詞;

:第 m 篇文檔中第 n 個詞為 t;

:第 m 篇文檔中第 n 個詞的主題為 k;

:除去下標為 i 這個詞,剩下的所有詞中,詞 t 屬於主題 k 的統計次數,

(這裡假設);

:除去下標為 i 的這個詞,第 m 篇文檔中主題 m 產生詞的個數, 

(這裡假設 );:語料的主題;

:語料的單詞。

1)的計算過程類似,僅僅在計算的時候不考慮下標為 i 的這個詞,我們假設;當已知語料時,可以從語料中統計出來,所以可以認為是常量。

2)我們是推斷 i=(m,n) 詞 t 的主題為 k 的條件概率

我們再利用另外一種方法推導條件概率:

已經推導出條件概率,可以用Gibbs Sampling公式進行採樣了。

參考文獻 

[1] Parameter estimation for text analysis 

[2] Probabilistic Latent Semantic Analysis 

[3] Latent Dirichlet Allocation 

[4] The EM algorithm

作者簡介

玉龍,在某知名網際網路公司從事技術研發,有深度學習相關研發經驗。感興趣的同學可以關注一下他最近更新的TensorFlow教程:https://cloud.tencent.com/developer/labs/series/10000

原文地址

https://www.zybuluo.com/learning17/note/1167651

註:本文版權歸作者所有,轉載需獲得授權。

——【完】——

時間:7月12日 20:00-21:00

掃描海報二維碼,免費報名

添加微信csdnai,備註:公開課,加入課程交流群

相關焦點

  • 專欄 | 技術乾貨:一文詳解LDA主題模型
    Beta分布是二項式分布的共軛先驗分布,而狄利克雷(Dirichlet)分布是多項式分布的共軛分布。根據Beta分布、二項分布、Dirichlet分布、多項式分布的公式,我們可以驗證上一小節中的結論 – Beta分布是二項式分布的共軛先驗分布,而狄利克雷(Dirichlet)分布是多項式分布的共軛分布。
  • sklearn與機器學習系列專題之降維(二)一文弄懂LDA特徵篩選&降維
    在上一篇推文中,我們詳解了PCA算法。
  • NLP筆記之LDA
    •隱含狄利克雷分布(LatentDirichlet Allocation,簡稱LDA)是由David M.
  • 一文讀懂LEFSE:組間Marker篩選好工具
    運行命令詳解在線LEFSE運行方法如為絕對數,需要先行均一化。注意6:輸入文件的格式決定了後期分析時的參數。如第一行為樣本名,則分析時-u參數需設置為1;第二行為分組名,則分析時-c 參數需設置為2.第五步:繪製進化分支圖如我們使用的feature是菌種或菌屬,那麼篩選出來的具有組間特異性的marker(也就是某幾個菌種)在進化上有可能是相同的或有一定的分布特點,我們可以通過繪製進化分支圖來查看。
  • 手把手教你學會LDA話題模型可視化pyLDAvis庫
    pyLDA需要先導入模型,支持的模型的來源有三種:sklearn的lda模型gensim的lda模型graphlab的lda模型導入的語法import pyLDAvisdata = pyLDAvis.sklearn.prepare(sklearn_lda, sklearn_dtm
  • 數據挖掘之--LDA主題建模
    觀察數據中有哪些主題、這些主題的分布如何,以及每個主題都包含哪些關鍵元素。本文偏重代碼實操,模型原理不了解的同學可自行搜索相關材料。目錄一. 數據預處理二. 主題建模三. 模型超參四. 可視化分析五.LDA 本質上是在學習兩個概率分布,第一個是當給定一個文檔時,文檔-->主題的映射分布,第二個是當一個文檔的主題確定後,主題-->詞彙的映射分布。文章和詞彙都是我們看的見的東西,那麼主題呢?2.
  • 狄利克雷和狄利克雷函數
    (Dirichlet)的故事 狄利克雷(Dirichlet)是數學史上第一位重視概念的人,並且是有意識地「以概念代替直覺」的人。在狄利克雷之前,數學家們主要研究具體函數,進行具體計算,他們不大考慮抽象問題,但狄利克雷之後,事情逐漸變化了,人們開始考慮函數的各種性質,例如(圖像的)對稱性、增減性、連續性等。具體函數、具體函數的計算逐漸淡化了。
  • 卡塔蘭常數與狄利克雷函數
    0.91596559417721901505460351493238411077414937428167213426649811962176301977625476947935651292611510624857442261919619957903589880332585905943159473748115840699533202877331946051903872747816408786590902470648415216300022872764094238825995774150881639747025248201156070764488380787337048990086477511322599713434074854075532307685653357680958352602193823239508007206803557610482357339423191498298361899770690364041808621794110191753274314997823397610551224779530324875371878665828082360570225594194818097535097113157126158042427236364398500173828759779765306837009298087388749561089365977194096872684444166804621624339864838916280448281506273022742073884311722182721904722558705319086857354234985394983099191159673884645086151524996242370437451777372351775440708538464401321748392999947572446199754961975870640074748707014909376788730458699798606448749746438720623851371239273630499850353922392878797906336440323547
  • 狄利克雷和他親愛的狄利克雷函數
    狄利克雷函數的出現.表示數學家對數學的理解發生了深刻的變化。數學的一些「人造」特徵開始展現出來這種思想也標誌著數學從研究「算」轉變到了研究「概念、性質、結構」狄利克雷是數學史上第一位重視概念的人。並且是有意識地「以概念代替直覺」的人。在狄利克雷之前,數學家們主要研究具體函數進行具體計算,他們不大考慮抽象問題。但狄利克雷之後,事情逐漸變化了。
  • JSP頁面的9個隱含對象實例詳解
    JSP頁面的9個隱含對象實例詳解:pageContext,request,session,applicationout,response,page,configexception 1.在helloworld.jsp頁面中輸入如下代碼:2.在瀏覽器中輸入如下代碼,後邊跟隨的
  • 運用sklearn進行線性判別分析(LDA)代碼實現
    基於sklearn的線性判別分析(LDA)代碼實現一、前言及回顧本文記錄使用sklearn庫實現有監督的數據降維技術——線性判別分析(LDA)。在上一篇LDA線性判別分析原理及python應用(葡萄酒案例分析),我們通過詳細的步驟理解LDA內部邏輯實現原理,能夠更好地掌握線性判別分析的內部機制。
  • 100道經典的高考數學試題(8)狄利克雷函數
    2012年福建高考有這樣一道試題:      這就是大名鼎鼎的狄利克雷函數了。
  • ...期權市場隱含的標普500指數明年底可能水平的分布範圍很廣...
    文 / 十門2019-11-27 22:26:16來源:FX168財經網隨著市場押注選舉結果,期權市場隱含的標普500指數明年底可能水平的分布範圍很廣。儘管期權定價眼下暗示標普500指數明年收於3400點以上的可能性為22%,但也顯示該指數明年底跌破2600點的可能性為28%。最近幾周,許多著名投資者均警告,若民主黨人伊莉莎白沃倫或伯尼桑德斯在總統大選中獲勝,市場將遭遇下跌風險。
  • 超級乾貨 :一文讀懂特徵工程
    標準化的前提是特徵值服從正態分布,標準化後,其轉換成標準正態分布。區間縮放法利用了邊界值信息,將特徵的取值區間縮放到某個特點的範圍。數據正則化針對單個樣本,將樣本某個範數縮放到單位1。f_classif:根據方差分析,ANOVA的原理,依靠F-分布為概率分布的依據,利用平方和與自由度所計算的組間與組內均方估計出F值,適用於分離問題。3.2 包裹式選擇包裹式特徵選擇根據目標函數(通常是預測效果評分),每次選擇若干特徵,或者排除若干特徵。
  • 線性判別分析(LDA)及其在R中實現
    正態性與方差齊性LDA最初是為多元正態分布數據開發的,也就是LDA的前提假設數據滿足多元正態性。即便數據集整體不呈正態分布,但也應至少滿足在每個分組內的子數據集均應呈正態分布。LDA對方差齊性沒有很嚴格的要求。
  • 技術乾貨 | 如何做好文本關鍵詞提取?從三種算法說起
    3計算文章主題分部根據得到的隱含主題模型,計算文章的主題分布和候選關鍵詞分布。4排序計算文檔和候選關鍵詞的主題相似度並排序,選取前n個詞作為關鍵詞。算法的關鍵在於主題模型的構建。具體LDA的算法在請參考《一文詳解LDA主題模型》。LDA關鍵詞提取算法利用文檔的隱含語義信息來提取關鍵詞,但是主題模型提取的關鍵詞比較寬泛,不能很好的反應文檔主題。另外,對於LDA模型的時間複雜度較高,需要大量的實踐訓練。
  • 商品評論情感化分析案例(LDA主題分析)
    Name: content, dtype: object將詞語轉為DataFrame;刪除標點符號# 將詞語轉為dataframe形式,一列是詞,一列是詞語所在的句子ID,最後一列是詞語在該句子的位置# 每一評論中詞的個數n_word =
  • 特徵錦囊:怎麼簡單使用LDA來劃分數據且可視化呢?
    matplotlib.font_manager import FontProperties# 設置顯示的尺寸plt.rcParams['font.family'] = ['Arial Unicode MS'] #正常顯示中文# 導入數據集iris = load_iris()iris_x, iris_y = iris.data, iris.target# 實例化lda