宏觀理解
LDA有兩種含義
- 線性判別器(Linear Discriminant Analysis)
- 隱含狄利克雷分布(Latent Dirichlet Allocation,簡稱LDA)
本文講解的是后者,它常常用於淺層語義分析,在文本語義分析中是一個很有用的模型。
LDA模型是一種主題模型,它可以將文檔集中的每篇文檔的主題以概率分布的形式給出,從而通過分析一些文檔抽取出它們的主題(分布)出來后,便可以根據主題(分布)進行主題聚類或文本分類。同時,它是一種典型的詞袋模型,即一篇文檔是由一組詞構成,詞與詞之間沒有先后順序的關系。
上面的大家在任何的地方都能看到一句話,然鵝我在第一看的時候一點都沒有看懂。
如果用通俗的語言來講,假設我們有一個文檔集,里面有M個文檔,對於第d個文檔中會出現一堆單詞,其中有一個單詞是“周傑倫”,那么通過這個單詞我們就可以理解為該文檔的主題可能是“娛樂”,但是這個文檔中還出現“姚明”,“孫楊”,“張繼科”這些單詞,此時該文檔為“體育”主題的概率將大大上升,LDA模型就是要根據給定一篇文檔,推斷這個文檔的主題是什么,並給出各個主題的概率大小是多少。
那么對於我們剛剛提到的文檔,“周傑倫”,“姚明”,“孫楊”,“張繼科”,為”娛樂“主題的概率為1/4,為“體育”主題的概率為3/4,此時的LDA模型就說這個文檔的主題為"體育"。
這樣一想其實LDA主題模型的想法非常簡單,但是具體到內部的細節,還是會有點懵。
瑣碎但必要的知識
Gamma函數
這個Gamma函數其實是為后面的Beta分布和Dirichlet分布做准備,具體它的數學之美我們就不在本文討論,只需要記住以下的東西
Gamma函數定義:
通過分部積分的方法,可以推導出這個函數有如下的遞歸性質:
於是gamma函數可以當成是階乘在實數集上的延展,具有如下性質:
Beta分布
此時我們先引出個數學概念
- 在貝葉斯流派中,如果先驗分布和后驗分布是同類,則先驗分布和后驗分布被稱為共軛分布,先驗分布被稱為似然函數的共軛先驗
什么是Beta分布,它是指一組定義在$(0,1)$區間的連續概率分布,有兩個參數$\alpha,\beta>0$,通俗的解釋,beta分布可以看作一個概率的概率分布,當你不知道一個東西的概率是多少,它給你指出了所有可能出現的概率的概率大小,它的概率密度函數為
其中Bete函數為
Beta分布是二項分布的共軛先驗分布,Beta分布描述了二項分布中P取值的可能性,對於Betaf分布的隨機變量,其均值可以估計為
Beta-Binomial共軛
首先我們要記住貝葉斯參數估計的基本過程為:
先驗分布+數據的知識=后驗分布
更一般的,對於非負實數$\alpha,\beta$,我們有如下關系:
我們可以看到,參數的先驗分布和后驗分布都能夠保持Beta分布的形式。
Dirichlet分布
狄利克雷分布是一組連續多變量概率分布,是多變量普遍化的Beta分布。
其中$\vec\alpha$是Dirichlet分布的參數。Dirichlet分布是多項式分布的共軛先驗分布。
它的期望為
細致詳解
LDA假設文檔主題的先驗分布是DIrichlet分布,即對於任一文檔$d$,其主題分布$\theta_d$為:
$$\theta_d = Dirichlet(\vec \alpha)$$
其中,$\alpha$為分布的超參數,是一個$K$維向量。
LDA假設主題中詞的先驗分布是DIrichlet分布,即對於任一主題$k$,其詞分布$\beta_k$為:
$$\beta_k= Dirichlet(\vec \eta)$$
其中,$\eta$為分布的超參數,是一個$V$維向量,$V$代表詞匯表里所有詞的個數。
對於數據中任一一篇文檔$d$中的第$n$個詞,我們可以從主題分布$\eta_d$中得到它的主題編號$z_{dn}$的分布為:
$$z_{dn}=multi(\theta_d)$$
而對於該主題編號,得到我們看到的詞$w_{dn}$的概率分布為:
$$w_{dn}=multi(\beta_{z_{dn}})$$
理解LDA主題模型的主要任務就是理解上面的這個模型,這個模型,我們有$M$個文檔主題的Dirichlet分布,而對應的數據有$M$個主題編號的多項分布,這樣($\alpha \to \theta_d \to \vec z_{d}$)就組成了Dirichlet-multi共軛,可以使用前面提到的貝葉斯推斷的方法得到基於Dirichlet分布的文檔主題后驗分布。
如果在第$d$個文檔中,第$k$個主題的詞的個數為:$n_d^{(k)}$,則對應的多項分布的計數可以表示為
$$\vec n_d = (n_d^{(1)}, n_d^{(2)},...n_d^{(K)})$$
利用Dirichlet-multi共軛,得到$\theta_d$的后驗分布為:
$$Dirichlet(\theta_d | \vec \alpha + \vec n_d)$$
同樣的道理,對於主題與詞的分布,我們有$K$個主題與詞的Dirichlet的分布,而對應的數據有$K$個主題編號的多項分布,這樣($\eta \to \beta_k \to \vec w_{(k)}$)就組成了組成了Dirichlet-multi共軛,可以使用前面提到的貝葉斯推斷的方法得到基於Dirichlet分布的主題詞的后驗分布。
如果在第k個主題中,第v個詞的個數為:$n_k^{(v)}$,則對應的多項分布的計數可以表示為:
$$\vec n_k = (n_k^{(1)}, n_k^{(2)},...n_k^{(V)})$$
利用Dirichlet-multi共軛,得到$\beta_k$的后驗分布為:
$$Dirichlet(\beta_k | \vec \eta+ \vec n_k)$$
由於主題產生詞不依賴具體某一個文檔,因此文檔主題分布和主題詞分布是獨立的。理解了上面這$M+K$組Dirichlet-multi共軛,就理解了LDA的基本原理了。
參考資料
[1] 通俗理解LDA主題模型
[3] LDA-數學八卦
[4] LDA(Latent Dirichlet Allocation)主題模型