NLP —— 图模型(三)pLSA(Probabilistic latent semantic analysis,概率隐性语义分析)模型...
? ? ? LSA(Latent semantic analysis,隱性語義分析)、pLSA(Probabilistic latent semantic analysis,概率隱性語義分析)和 LDA(Latent Dirichlet allocation,隱狄利克雷分配)這三種模型都可以歸類到話題模型(Topic model,或稱為主題模型)中。相對于比較簡單的向量空間模型,主題模型通過引入主題這個概念,更進一步地對文本進行語義層面上的理解。
? ? ? LSA 模型就是對詞-文檔共現(xiàn)矩陣進行SVD,從而得到詞和文檔映射到抽象出的topic上的向量表示,之前的一篇博客稍微提到過一點。LSA 通過將詞映射到topic上得到distributional representation(詞的分布表示),進而緩解文檔檢索、文檔相似度計算等任務(wù)中所面臨的同義詞(多詞一義)問題:比如我搜索“Java 講義”,如果系統(tǒng)只是用字符匹配來檢索的話,是不會返回一篇出現(xiàn)了“Java 課件”但通篇沒出現(xiàn)“講義”這個詞的文檔的。所以說,單純地從詞-文檔共現(xiàn)矩陣取出詞向量表示和文檔向量表示的向量空間模型,盡管利用了大規(guī)模文檔集的統(tǒng)計信息,仍然是無法直接從“語義”這個層面上去理解文本的。但是 LSA 這種將詞映射到topic上的向量表示,很難去應(yīng)對一詞多義問題:比如“Java”這個詞既可能指編程語言,也可能指爪哇島,即使這兩種含義的“Java”都在文檔集里出現(xiàn)過,得到的 LSA 模型也無法很好地區(qū)分。
? ? ? 關(guān)于 LSA ,這里稍微扯遠一點,有一個挺有意思的演講視頻:你的用詞透露了你未來的精神狀態(tài)(對應(yīng)的paper在這里),用 LSA 來預(yù)測人的未來精神狀態(tài),相信看完這個視頻之后一定會體會到科學的力量。?
? ? ? pLSA 模型是有向圖模型,將主題作為隱變量,構(gòu)建了一個簡單的貝葉斯網(wǎng),采用EM算法估計模型參數(shù)。相比于 LSA 略顯“隨意”的SVD,pLSA 的統(tǒng)計基礎(chǔ)更為牢固。
? ? ??這篇博客就是整理一下 pLSA 模型的推導(dǎo)過程。
pLSA:頻率學派
? ? ? 相比于 LDA 模型里涉及先驗分布,pLSA 模型相對簡單:觀測變量為文檔 $d_m\in\mathbb D$(文檔集共 M 篇文檔)、詞 $w_n\in\mathbb W$(設(shè)詞匯表共有 V 個互不相同的詞),隱變量為主題 $z_k\in\mathbb Z$(共 K 個主題)。在給定文檔集后,我們可以得到一個詞-文檔共現(xiàn)矩陣,每個元素 $n(d_m,w_n)$ 表示的是詞 $w_n$ 在文檔 $d_m$ 中的詞頻。也就是說,pLSA 模型也是基于詞-文檔共現(xiàn)矩陣的,不考慮詞序。
? ? ? pLSA 模型通過以下過程來生成文檔(記號里全部省去了對參數(shù)的依賴):
? ? ? (1) 以概率 $P(d_m)$ 選擇一篇文檔 $d_m$
? ? ? (2)?以概率 $P(z_k|d_m)$ 得到一個主題 $z_k$
? ? ? (3)?以概率 $P(w_n|z_k)$ 生成一個詞 $w_n$
概率圖模型如下所示(取自[2]):
? ? ? 圖里面的淺色節(jié)點代表不可觀測的隱變量,方框是指變量重復(fù)(plate notation),內(nèi)部方框表示的是文檔 $d_m$ 的長度是 N,外部方框表示的是文檔集共 M 篇文檔。pLSA 模型的參數(shù) $\theta$ 顯而易見就是:$K\times M$ 個?$P(z_k|d_m)$ 、$V\times K$?個?$P(w_n|z_k)$ 。$P(z_k|d_m)$ 表征的是給定文檔在各個主題下的分布情況,文檔在全部主題上服從多項式分布(共 M 個);$P(w_n|z_k)$ 則表征給定主題的詞語分布情況,主題在全部詞語上服從多項式分布(共 K 個)。
? ? ? ? 聯(lián)合分布
? ? ? ? 拿到貝葉斯網(wǎng)當然先要看看聯(lián)合分布咯。這個貝葉斯網(wǎng)表達的是如下的聯(lián)合分布:
$$P(d_m,z_k,w_n)=P(d_m)P(z_k|d_m)P(w_n|z_k)$$
$$P(d_m,w_n)=P(d_m)P(w_n|d_m)$$
假設(shè)有一篇文檔為 $\vec{w}=(w_1,w_2,...,w_N)$ ,生成它的概率就是
$$P(\vec{w}|d_m)=\prod_{n=1}^N P(w_n|d_m)$$
? ? ? ? 我們看一下 $P(w_n|d_m)$ 的表達式。如果不考慮隨機變量之間的條件獨立性的話,有
$$P(w_n|d_m)=\sum_k P(z_k|d_m)P(w_n|z_k,d_m)$$
但是觀察圖模型中的 d 、z 、w 可以知道,它們?nèi)齻€是有向圖模型里非常典型的 head-to-tail 的情況:當 z 已知時,d 和 w 條件獨立,也就是
$$P(w_n|z_k,d_m)=P(w_n|z_k)$$
進而有
$$P(w_n|d_m)=\sum_k P(z_k|d_m)P(w_n|z_k)$$
? ? ? 所以最終的聯(lián)合分布表達式為
$$P(d_m,w_n)=P(d_m)\sum_k P(z_k|d_m)P(w_n|z_k)$$
? ? ? 似然函數(shù)
? ? ? 這樣的話,我們要做的事就是從文檔集里估計出上面的參數(shù)。pLSA 是頻率學派的方法,將模型參數(shù)看作具體值,而不是有先驗的隨機變量。所以,考慮最大化對數(shù)似然函數(shù):
$$\begin{aligned}L(\theta)&=\ln \prod_{m=1}^M\prod_{n=1}^N P(d_m,w_n)^{n(d_m,w_n)}\\&=\sum_m\sum_n n(d_m,w_n)\ln?P(d_m,w_n)\\&=\sum_m\sum_n n(d_m,w_n)(\ln P(d_m)+\ln P(w_n|d_m))\\&=\sum_m\sum_n n(d_m,w_n)\ln P(w_n|d_m)+\sum_m\sum_n n(d_m,w_n)\ln P(d_m)\end{aligned}$$
第二項可以直接去掉,那么不妨直接記:
$$\begin{aligned}L(\theta)&=\sum_m\sum_n n(d_m,w_n)\ln P(w_n|d_m)\\&=\sum_m\sum_n n(d_m,w_n)\ln \bigl[\sum_k P(z_k|d_m)P(w_n|z_k)\bigr]\end{aligned}$$
? ? ? 參數(shù)估計:EM算法迭代求解
? ? ? 由于參數(shù)全部在求和號里被外層的log套住,所以很難直接求偏導(dǎo)數(shù)估計參數(shù)。到了這里,就輪到EM算法閃亮登場了。之前的一篇簡單介紹EM的博客里解決的是這樣的問題:觀測變量 y ,隱變量 z ,參數(shù) $\theta$ ,目標函數(shù) $L(\theta)=\ln P(y)=\ln \sum_k P(z_k)P(y|z_k)$ (省略?$\theta$?依賴),Q函數(shù) $Q(\theta;\theta_t)=\mathbb E_{z|y;\theta_t}[\ln P(y,z)]=\sum_k P(z_k|y;\theta_t)\ln P(y,z)$ ,進而有 $\theta_{t+1}=\arg\max_{\theta}Q(\theta;\theta_t)$ 來迭代求取。
? ? ? 1. E步,求期望
? ? ? 那么,仿照上面的寫法,對于 pLSA 模型來說,Q函數(shù)的形式為
$$\begin{aligned}Q(\theta;\theta_t)&=\sum_m\sum_n n(d_m,w_n) \mathbb E_{z_k|w_n,d_m;\theta_t}[\ln P(w_n,z_k|d_m)]\\&=\sum_m\sum_n n(d_m,w_n) \sum_k P(z_k|w_n,d_m;\theta_t)\ln?P(w_n,z_k|d_m)\end{aligned}$$
? ? ? (1) 聯(lián)合概率 $P(w_n,z_k|d_m)$ 的求解:
$$P(w_n,z_k|d_m)=P(z_k|d_m)P(w_n|z_k, d_m)=P(z_k|d_m)P(w_n|z_k)$$
? ? ? (2) $P(z_k|w_n,d_m;\theta_t)$ 的求解:
? ? ? 所謂的 $\theta_t$ 實際上就是上一步迭代的全部?$K\times M$ 個?$P(z_k|d_m)$ 和 $V\times K$?個?$P(w_n|z_k)$ 。為了避免歧義,將時間步 $t$ 迭代得到的參數(shù)值加一個下標 $t$ 。
$$\begin{aligned}P(z_k|w_n,d_m;\theta_t)&=\frac{P_t(z_k,w_n,d_m)}{P_t(w_n,d_m)}=\frac{P_t(d_m)P_t(z_k|d_m)P_t(w_n|z_k)}{P_t(d_m)P_t(w_n|d_m)}\\&=\frac{P_t(z_k|d_m)P_t(w_n|z_k)}{P_t(w_n|d_m)}=\frac{P_t(z_k|d_m)P_t(w_n|z_k)}{\sum_j P_t(z_j|d_m)P_t(w_n|z_j)}\end{aligned}$$
? ? ? 基于以上兩個結(jié)果,得到Q函數(shù)的形式為
$$\begin{aligned}Q(\theta;\theta_t)&=\sum_m\sum_n n(d_m,w_n) \sum_k P(z_k|w_n,d_m;\theta_t)(\ln P(z_k|d_m)+\ln?P(w_n|z_k))\\&=\sum_m\sum_n n(d_m,w_n) \sum_k \frac{P_t(z_k|d_m)P_t(w_n|z_k)}{\sum\limits_j P_t(z_j|d_m)P_t(w_n|z_j)}(\ln P(z_k|d_m)+\ln?P(w_n|z_k))\end{aligned}$$
終于,在這個形式里面,除了 $\theta$(全部?$K\times M$ 個?$P(z_k|d_m)$ 和 $V\times K$?個?$P(w_n|z_k)$),已經(jīng)全部為已知量。
? ? ? 2. M步,求極大值
? ? ? 剩下的工作就是
$$\theta_{t+1}=\arg\max_{\theta}Q(\theta;\theta_t)$$
問題將會被概括為如下的約束最優(yōu)化問題:
? ? ? 目標函數(shù):$\max_{\theta}Q(\theta;\theta_t)$
? ? ? 約束:$\sum_n P(w_n|z_k)=1$,$\sum_k?P(z_k|d_m)=1$
使用Lagrange乘數(shù)法,得到Lagrange函數(shù)為
$$Q(\theta;\theta_t)+\sum_k\tau_k(1-\sum_n P(w_n|z_k))+\sum_m\rho_m(1-\sum_k?P(z_k|d_m))$$
令其對參數(shù)的偏導(dǎo)數(shù)等于零,得到?$K\times M+V\times K$ 個方程,這些方程的解就是最優(yōu)化問題的解:
$$\frac{\partial}{\partial?P(w_n|z_k)}=\frac{\sum\limits_m n(d_m,w_n)P(z_k|w_n,d_m;\theta_t)}{?P(w_n|z_k)}-\tau_k=0,\quad 1\leq n\leq V, 1\leq k\leq K$$
$$\frac{\partial}{\partial P(z_k|d_m)}=\frac{\sum\limits_n n(d_m,w_n)P(z_k|w_n,d_m;\theta_t)}{P(z_k|d_m)}-\rho_m=0,\quad 1\leq m\leq M, 1\leq k\leq K$$
? ? ? 方程的解為
$$P(w_n|z_k)=\frac{\sum_m n(d_m,w_n)P(z_k|w_n,d_m;\theta_t)}{\tau_k}$$
$$P(z_k|d_m)=\frac{\sum_n n(d_m,w_n)P(z_k|w_n,d_m;\theta_t)}{\rho_m}$$
注意到兩個約束條件,即
$$\sum_n \frac{\sum_m n(d_m,w_n)P(z_k|w_n,d_m;\theta_t)}{\tau_k}=1$$
$$\sum_k \frac{\sum_n n(d_m,w_n)P(z_k|w_n,d_m;\theta_t)}{\rho_m}=1$$
從中可求得 $\tau_k$ 、$\rho_m$ ,所以方程的解為
$$P_{t+1}(w_n|z_k)=\frac{\sum_m n(d_m,w_n)P(z_k|w_n,d_m;\theta_t)}{\sum_n\sum_m n(d_m,w_n)P(z_k|w_n,d_m;\theta_t)}$$
$$P_{t+1}(z_k|d_m)=\frac{\sum_n n(d_m,w_n)P(z_k|w_n,d_m;\theta_t)}{\sum_k\sum_n n(d_m,w_n)P(z_k|w_n,d_m;\theta_t)}$$
? ? ? 當模型參數(shù)全部估計好后,便得到了完整的 pLSA 模型。上面的迭代過程很明顯是一個頻數(shù)估計(極大似然估計)的形式,意義很明確。模型使用EM算法進行參數(shù)估計時往往都會推導(dǎo)出這樣的結(jié)果,例如HMM。
pLSA 模型小結(jié)
? ? ? 上面的一系列公式因為總是在前面掛著兩個求和號,所以看上去貌似挺熱鬧,其實它相比于樸素的三硬幣模型的推導(dǎo)過程來說,無非就是多了作為條件出現(xiàn)的隨機變量 d ,其余地方?jīng)]有本質(zhì)區(qū)別。
? ? ? 不難看出來,pLSA 模型需要估計的參數(shù)數(shù)量是和訓練文檔集的大小是有關(guān)系的 —— 因為有 $P(z_k|d_m)$ 。顯然,在訓練集上訓練出來的這組參數(shù)無法應(yīng)用于訓練文檔集以外的測試文檔。
? ? ? 作為頻率學派的模型,pLSA 模型中的參數(shù)被視作具體的值,也就談不上什么先驗。如果在真實應(yīng)用場景中,我們對于參數(shù)事先有一些先驗知識,那么就需要使用貝葉斯估計來做參數(shù)估計。
LDA 模型
? ? ? 相比于 pLSA ,2003年提出的 LDA 模型顯然名氣更響,應(yīng)用起來也豐富得多。LDA 將模型參數(shù)視作隨機變量,將多項式分布的共軛先驗(也就是Dirichlet分布)作為參數(shù)的先驗分布,并使用Gibbs sampling方法對主題進行采樣。中文資料簡直不要太多,個人認為最經(jīng)典的當屬《 LDA 數(shù)學八卦》,作者將 LDA 模型用物理過程詳細解釋,抽絲剝繭地剖析了來龍去脈,看完之后會有一種大呼過癮的感覺。英文資料推薦 Parameter estimatiom for text analysis。
LDA 模型。圖來自 [5]
?
參考:
[1]?Unsupervised Learning by Probabilistic Latent Semantic Analysis
[2]?Latent Dirichlet Allocation, JMLR 2003
[3]?Topic Model Series [1]: pLSA?
[4]?http://blog.tomtung.com/2011/10/plsa/#blei03
[5]?Parameter estimatiom for text analysis
[6] LDA數(shù)學八卦
[7]?http://www.cnblogs.com/bentuwuying/p/6219970.html
轉(zhuǎn)載于:https://www.cnblogs.com/Determined22/p/7237111.html
總結(jié)
以上是生活随笔為你收集整理的NLP —— 图模型(三)pLSA(Probabilistic latent semantic analysis,概率隐性语义分析)模型...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: css中的一些常用选择器
- 下一篇: Intellij IDEA 的使用