LDA主题模型原文解读
#################LSA和LSI(start)###################
根據(jù)wikipedia:
https://en.wikipedia.org/wiki/Latent_semantic_analysis
可以知道文中提到的LSI就是LSA
通常稱為L(zhǎng)SA,因?yàn)榫S基百科中提到:it is sometimes called latent semantic indexing (LSI).LSA的文檔里面則以稱為L(zhǎng)SI為主.
所以百度上的(包括本文在內(nèi))LSA就是LSI,LSI就是LSA
#################LSA和LSI(end)###################\
##################LDA發(fā)展史(start)#####################
原文:《Latent Dirichlet Allocation》
原文作者的代碼:https://github.com/blei-lab/lda-c
Dirichlet分布是一種多維的β\betaβ分布
主題模型演變順序:LSA->pLSA->LDA
目的:對(duì)文檔主題進(jìn)行聚類,這里可以理解為對(duì)幾個(gè).txt文本聚類,一個(gè).txt文本在該算法中,被處理為一個(gè)無序的詞序列
論文分別是:
LSA:
《Indexing by latent semantic analysis》-1990
pLSA:
《Probabilistic Latent Semantic Analysis》 1999
LDA:
《Latent Dirichlet Allocation》-2003
注意:
必須從LSA開始理解,否則看網(wǎng)上各路博客,
每個(gè)人理解程度不同,還有亂寫的,是看不懂的。
##################發(fā)展史(end)#####################\
################解釋文章中的一些詞匯(start)################################\
首先解釋為啥取名叫Latent Dirichlet allocation:
因?yàn)檫@個(gè)事情是以前發(fā)生過類似的,過去的先驗(yàn)概率受到現(xiàn)在類似的事件的影響,所以說是“潛在的”(latent),我們常常說“橫穿馬路有潛在的危險(xiǎn)”,是因?yàn)橹啦豢醇t綠燈很可能會(huì)車禍,如果我們?cè)賮硪淮?#xff0c;那么顯然會(huì)增加“亂穿馬路會(huì)車禍”這個(gè)事情的概率.
概率具體增加多少?我們就要用到“Dirichlet Distribution”,所以LDALDALDA整個(gè)名字中只有“Dirichlet”這個(gè)詞語(yǔ)帶有嚴(yán)謹(jǐn)?shù)臄?shù)學(xué)含義,剩余兩個(gè)詞是為了形象起見,作者加上去的。
"allocation"這個(gè)詞語(yǔ)可以理解為,現(xiàn)在發(fā)生的類似的事件會(huì)allocate到概率計(jì)算的分子和分母中。
singular value decomposition:SVD分解,效果上類似于PCA之類的降維技術(shù)
document:就是一個(gè)txt文件,也就是一個(gè)詞序列
corpus:包含一堆txt文件的文件夾,也就是很多個(gè)詞序列
information Retrieval:信息檢索,你可以理解為在數(shù)據(jù)庫(kù)里面搜東西
exchangeability:這個(gè)是在提詞袋模型的時(shí)候提出來的,意思是在對(duì)文檔進(jìn)行建模時(shí),假設(shè)詞的順序是可以被忽略的,也就是說詞袋模型中的不同詞語(yǔ)之間的順序是exchangeable(可交換的).
https://zhuanlan.zhihu.com/p/32829048
TF?IDF=在某一類中詞條w出現(xiàn)的次數(shù)該類中所有的詞條數(shù)目?log語(yǔ)料庫(kù)的文檔總數(shù)包含詞條w的文檔數(shù)+1TF·IDF=\frac{在某一類中詞條w出現(xiàn)的次數(shù)}{該類中所有的詞條數(shù)目}·log\frac{語(yǔ)料庫(kù)的文檔總數(shù)}{包含詞條w的文檔數(shù)+1}TF?IDF=該類中所有的詞條數(shù)目在某一類中詞條w出現(xiàn)的次數(shù)??log包含詞條w的文檔數(shù)+1語(yǔ)料庫(kù)的文檔總數(shù)?
注意上面的log在不同的開源包中使用了不同的底數(shù),sklearn使用的就是ln來計(jì)算
simplex:就是一個(gè)理論層,不是一個(gè)很嚴(yán)謹(jǐn)?shù)男g(shù)語(yǔ),就是虛晃一指。
比如說:“我要去吃飯。”你要去哪里吃飯?你要吃什么?你都沒講清楚,所以這里的“吃飯”就是虛晃一指。
################解釋文章中的一些詞匯(start)################################
##########################
下面開始分析論文《Latent Dirichlet Allocation》-2003
該文主要內(nèi)容如下:
文章結(jié)構(gòu)={1.簡(jiǎn)介2.符號(hào)與術(shù)語(yǔ)(其實(shí)不全,有些是文章后面才提到的)3.LDA主體4.介紹過往的主題模型(熟悉LSI和PLSI的可以跳過)5.變分EM算法6.舉例7.應(yīng)用8.討論文章結(jié)構(gòu)=\left\{ \begin{aligned} 1.簡(jiǎn)介 \\ 2.符號(hào)與術(shù)語(yǔ)(其實(shí)不全,有些是文章后面才提到的) \\ 3.LDA主體\\ 4.介紹過往的主題模型(熟悉LSI和PLSI的可以跳過)\\ 5.變分EM算法\\ 6.舉例\\ 7.應(yīng)用\\ 8.討論 \end{aligned} \right.文章結(jié)構(gòu)=????????????????????????????????1.簡(jiǎn)介2.符號(hào)與術(shù)語(yǔ)(其實(shí)不全,有些是文章后面才提到的)3.LDA主體4.介紹過往的主題模型(熟悉LSI和PLSI的可以跳過)5.變分EM算法6.舉例7.應(yīng)用8.討論?
由上可知:
整篇文章的重點(diǎn)是第2,3,5部分,下面依次講解:
--------Section2開始-----------------Section\ 2開始-----------------Section?2開始---------
w→={w1,w2,???,wn}\overrightarrow{w}=\{w_1,w_2,···,w_n\}w={w1?,w2?,???,wn?}
w→\overrightarrow{w}w表示一篇文檔
D={w1→,w2→,???,wm→}D=\{\overrightarrow{w_1},\overrightarrow{w_2},···,\overrightarrow{w_m}\}D={w1??,w2??,???,wm??}
詞典的下標(biāo)是:
{1,???,V}\{1,···,V\}{1,???,V}
---------Section2結(jié)束------------------Section\ 2結(jié)束------------------Section?2結(jié)束---------
---------Section3開始------------------Section\ 3開始------------------Section?3開始---------
算法大意如下:
1.Choose N~Poisson(ξ\xiξ)
2.Choose θ\thetaθ~Dir(α\alphaα)
3.For each of the N words wnw_nwn?:
(a)Choose a topic znz_nzn?~Multinomial(θ\thetaθ)
(b)Choose a word wnw_nwn? from p(wn∣zn,β)p(w_n|z_n,\beta)p(wn?∣zn?,β),a multinomial probability conditioned on the topic znz_nzn?
然后文章介紹了三個(gè)假設(shè),對(duì)于每個(gè)假設(shè),我們先抄引文,然后解釋是什么意思.
第一個(gè)假設(shè):
First, the dimensionality k of the Dirichlet distribution (and thus the dimensionality
of the topic variable z) is assumed known and fixed.
翻譯過來就是:假設(shè)文章聚類成幾類是知道的。
講人話:其實(shí)我們也不知道要聚類成幾類,也就是k等于幾我們也不知道,你隨便設(shè)一個(gè)吧。
可以類比想象下,kmeans我們調(diào)包前總是需要設(shè)定我們要聚類成幾類。
第二個(gè)假設(shè):
Second, the word probabilities are parameter-
ized by a k×V matrix βββ where βijβ_{ij}βij? =p(wj=1∣zi=1)p(w_j=1|z_i=1)p(wj?=1∣zi?=1), which for now we treat as a fixed quantity
that is to be estimated.
什么意思呢?文章中某個(gè)"詞"的概率被一個(gè)矩陣βk?V\beta_{k·V}βk?V?給參數(shù)化了。
這里的k是聚類中心,這里的V是上面提到的某個(gè)詞在詞典中的的下標(biāo)上限
我們可以回憶下,psla在進(jìn)行svd分解時(shí),最右側(cè)的一個(gè)矩陣也是k·V維。
第三個(gè)假設(shè):
Finally, the Poisson assumption is not critical to anything that follows and
more realistic document length distributions can be used as needed.
講人話:作者自己也不知道為啥服從泊松分布,所以找借口說"is not critical to",意思是:他自己也不懂,但是不好意思承認(rèn)自己講話不嚴(yán)謹(jǐn)。
下面開始介紹解釋LDA的公式都是啥意思.
p(θ∣α)=(∑i=1kαi)∏i=1kΓ(αi)θ1α1?1???θkαk?1(1)p(\theta|\alpha)=\frac{(\sum_{i=1}^k\alpha_i)}{∏_{i=1}^k\Gamma(\alpha_i)}\theta_1^{\alpha_1-1}···\theta_k^{\alpha_k-1} (1)p(θ∣α)=∏i=1k?Γ(αi?)(∑i=1k?αi?)?θ1α1??1????θkαk??1?(1)
這個(gè)東西是Dirichlet分布(β\betaβ分布的多維形式)的表達(dá)式,
注意,這里的θ\thetaθ本身就是一個(gè)概率,所以這個(gè)式子是在表達(dá)“抽中某個(gè)文檔的概率值”的概率大小。網(wǎng)上有個(gè)精簡(jiǎn)的說法,叫:概率的概率。
對(duì)比θ\thetaθ,我們?cè)賮砘貞浺幌聀lsa在svd分解成3個(gè)矩陣后,最左側(cè)的一個(gè)矩陣是什么?P(wi∣zk)P(w_i|z_k)P(wi?∣zk?)
☆☆☆
另外注意,這個(gè)p(θ∣α)p(\theta|\alpha)p(θ∣α)不是條件概率,這里的“|”只是表達(dá)后面有一個(gè)參數(shù),不要套用P(AB)=P(A)·P(B)來試圖推導(dǎo)。
這個(gè)東西需要非常注意,否則后面的公式就沒法看了。
那么什么時(shí)候“|”表示條件概率?
后面會(huì)一一指出。
☆☆☆
這里的Γ\GammaΓ念作"Gamma"
而γ\gammaγ念作"gamma"兩者發(fā)音一致,都是希臘字母.
計(jì)算實(shí)例:
Γ(n+1)=n!\Gamma(n+1)=n!Γ(n+1)=n!
看完式(1),來看式(2):
p(θ,z,w∣α,β)=p(θ∣α)∏n=1Np(zn∣θ)p(wn∣zn,β)p(\theta,z,w|\alpha,\beta)=p(\theta|\alpha)∏_{n=1}^Np(z_n|\theta)p(w_n|z_n,\beta)p(θ,z,w∣α,β)=p(θ∣α)n=1∏N?p(zn?∣θ)p(wn?∣zn?,β)
注意這個(gè)式子中:
p(θ,z,w∣α,β)p(\theta,z,w|\alpha,\beta)p(θ,z,w∣α,β)非條件概率
p(θ∣α)p(\theta|\alpha)p(θ∣α)非條件概率,根據(jù)過往經(jīng)驗(yàn),選擇主題分布向量θ\thetaθ的概率
p(zn∣θ)p(z_n|\theta)p(zn?∣θ)是條件概率,根據(jù)文章的概率分布選擇主題znz_nzn?的概率
p(wn∣zn,β)p(w_n|z_n,\beta)p(wn?∣zn?,β)是條件概率,根據(jù)第znz_nzn?個(gè)主題中選擇wnw_nwn?的概率
條件概率的意思就是"|“右側(cè)的因子是事件,可以通過乘以另外一個(gè)概率來抵消。
非條件概率的意思就是”|"右側(cè)的因子是參數(shù),不能通過乘以另外一個(gè)概率來抵消。
由于該論文認(rèn)為:一篇文章是包含多個(gè)主題的。
所以θ\thetaθ是k維度的,就是這個(gè)k維度的向量中,每個(gè)維度塞進(jìn)去一個(gè)概率值,這個(gè)概率是k個(gè)主題中,其中一個(gè)主題的分布概率大小。
再來回顧下Dirichlet函數(shù),我們知道,β\betaβ分布只有一個(gè)維度輸入,得到一個(gè)函數(shù)值,而Dirichlet函數(shù)相當(dāng)于多維的β\betaβ分布,也就是說,在一篇文章中,k個(gè)主題的分布概率被輸入Dirichlet函數(shù),得到這個(gè)“k維主題分布概率”向量的概率值.
☆☆☆
整個(gè)式子什么意思呢?
式(2)的等式右邊=選擇某種主題分布的概率·∏∏∏·根據(jù)主題分布選擇某個(gè)主題的概率·根據(jù)某個(gè)主題選擇某個(gè)詞的概率
☆☆☆
所以這個(gè)模型在模仿人寫文章時(shí)的順序。
“主題”的意思:某個(gè)文章中的“段落大意”
“根據(jù)主題分布選擇某個(gè)主題的概率”啥意思呢:
舉例:
一篇文章怎么寫呢?
第一段寫,爸爸平時(shí)怎么怎么滴
第二段寫,媽媽怎么怎么滴
第三段寫,爸爸和媽媽怎么認(rèn)識(shí)滴
選擇某個(gè)主題就是這篇文章的每一段的“段落大意”是啥。
再次注意,這個(gè)論文不是“把文章歸類到某個(gè)主題”,而是任何一個(gè)文章都具備“很多個(gè)主題”
一句話解釋啥意思,式(2)計(jì)算的是:
選擇某種主題分布然后最終生成整篇文章的概率。
注意這個(gè)式子其實(shí)是不合理的。
由于這個(gè)式子的不合理性,也導(dǎo)致了后面變分EM算法的出現(xiàn),什么地方不合理呢?這個(gè)α\alphaα和β\betaβ其實(shí)是有關(guān)聯(lián)的,
文章中的專業(yè)說法:α\alphaα和β\betaβ之間有耦合性,
工科數(shù)學(xué)的說法:“α\alphaα和β\betaβ互相不獨(dú)立”,
說人話就是:“α\alphaα和β\betaβ有一腿”
“變分EM”算法啥意思,就是把α\alphaα和β\betaβ撇清關(guān)系后,然后使用EM算法迭代收斂。
**關(guān)鍵性問題來了,這個(gè)論文假設(shè)一個(gè)文章(論文中,document定義為一個(gè)word sequence)包含多個(gè)主題,那說好的聚類呢?如何把這個(gè)原理用來文章內(nèi)容聚類?
回到Dirichlet分布,上面提到,這個(gè)式子的目的是計(jì)算“根據(jù)某個(gè)主題分布生成某個(gè)文檔的概率”
也就是說,目標(biāo)函數(shù)是求得,哪個(gè)主題分布,能生成某個(gè)文章的概率最大,我們就認(rèn)為,這個(gè)文章的各個(gè)段落大意,滿足這個(gè)主題分布。
這樣說在理解上又進(jìn)一步了,但是依然不清晰,回到式(2),其中有一項(xiàng)是:
p(wn∣zn,β)p(w_n|z_n,\beta)p(wn?∣zn?,β),
這個(gè)意思是:
根據(jù)"假設(shè)滿足"的主題znz_nzn?,我們從訓(xùn)練集中選擇一個(gè)單詞wnw_nwn?,來計(jì)算概率p(wn∣zn,β)p(w_n|z_n,\beta)p(wn?∣zn?,β)
如果確定最終得到的p(θ,z∣w,α,β)p(\theta,z|w,\alpha,\beta)p(θ,z∣w,α,β)是最大的,那么我們就認(rèn)為這個(gè)假設(shè)的“主題分布θ\thetaθ”就是我們想要的聚類分布,聚類算法結(jié)束。
**
怎么理解文章中給出的示意圖呢?
圖中方框外側(cè)就是概率P中“|”的右側(cè)
圖中方框內(nèi)側(cè)就是概率P中“|”的左側(cè),
例如P(θ∣α)P(\theta|\alpha)P(θ∣α)中,
α\alphaα在“|”的右側(cè),對(duì)應(yīng)圖中的方框外側(cè)
θ\thetaθ在“|”的左側(cè),對(duì)應(yīng)圖中的方框內(nèi)側(cè)
---------Section3結(jié)束------------------Section\ 3結(jié)束------------------Section?3結(jié)束---------
---------Section5開始------------------Section\ 5開始------------------Section?5開始---------
根據(jù)上面的那個(gè)模型圖片,我們大概也能想到α\alphaα和β\betaβ是有關(guān)聯(lián)的,作者在論文的這個(gè)部分著重處理這個(gè)問題。
這個(gè)"變分EM"算法想要完全看懂的話,需要把論文后面的Appendix中所有公式推導(dǎo)一遍,沒必要,這里就說個(gè)大概。
算法大意是:
試圖讓α\alphaα與β\betaβ撇清關(guān)系,然后使用EM算法。
假定所有的隱變量(θ,α,β\theta,\alpha,\betaθ,α,β)都是服從各自的獨(dú)立分布的,然后搞出來一個(gè)KL散度,KL散度的意思是希望近似處理的前后差別不要太大。
所以由原來的p(θ,z∣w,α,β)p(\theta,z|w,\alpha,\beta)p(θ,z∣w,α,β)改為折騰q(θ,z∣,γ,?)q(\theta,z|,\gamma,\phi)q(θ,z∣,γ,?)
KL散度是兩個(gè)不同概率分布的差異的衡量指標(biāo):
(γ?,??)=argminD(q(θ,z∣γ,?)∣∣p(θ,z∣α,β))(\gamma^{*},\phi^{*})=argminD(q(\theta,z|\gamma,\phi)||p(\theta,z|\alpha,\beta))(γ?,??)=argminD(q(θ,z∣γ,?)∣∣p(θ,z∣α,β))
也就是把EM的E步中的目標(biāo)函數(shù)換了下,
其余不變,依然是EM算法的原理。
---------Section5結(jié)束------------------Section\ 5結(jié)束------------------Section?5結(jié)束---------
好了,一句話概括這個(gè)算法:
該算法中,每個(gè)document都是一個(gè)詞序列。
聚類思想是:
每次迭代時(shí)選擇的一個(gè)k維(k需要自己指定)主題分布,選擇一個(gè)詞,根據(jù)式(2)來獲取最大的p(θ,z∣w,α,β)p(\theta,z|w,\alpha,\beta)p(θ,z∣w,α,β).
復(fù)習(xí)時(shí)需要記住式(2),并且能說出“文章由多個(gè)主題組成,主題由多個(gè)詞組成”的思想
因?yàn)樽髡呓2缓侠?#xff0c;算法沒法直接落地,
硬著頭皮搞出來個(gè)"變分EM算法"來收拾爛攤子。
總結(jié)
以上是生活随笔為你收集整理的LDA主题模型原文解读的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: plsa原理
- 下一篇: .ipynb转化为.py文件后批量删除一