LSA(Latent semantic analysis,隱性語義分析)、pLSA(Probabilistic latent semantic analysis,概率隱性語義分析)和 LDA(Latent Dirichlet allocation,隱狄利克雷分配)這三種模型都可以歸類到話題模型(Topic model,或稱為主題模型)中。相對於比較簡單的向量空間模型,主題模型通過引入主題這個概念,更進一步地對文本進行語義層面上的理解。
LSA 模型就是對詞-文檔共現矩陣進行SVD,從而得到詞和文檔映射到抽象出的topic上的向量表示,之前的一篇博客稍微提到過一點。LSA 通過將詞映射到topic上得到distributional representation(詞的分布表示),進而緩解文檔檢索、文檔相似度計算等任務中所面臨的同義詞(多詞一義)問題:比如我搜索“Java 講義”,如果系統只是用字符匹配來檢索的話,是不會返回一篇出現了“Java 課件”但通篇沒出現“講義”這個詞的文檔的。所以說,單純地從詞-文檔共現矩陣取出詞向量表示和文檔向量表示的向量空間模型,盡管利用了大規模文檔集的統計信息,仍然是無法直接從“語義”這個層面上去理解文本的。但是 LSA 這種將詞映射到topic上的向量表示,很難去應對一詞多義問題:比如“Java”這個詞既可能指編程語言,也可能指爪哇島,即使這兩種含義的“Java”都在文檔集里出現過,得到的 LSA 模型也無法很好地區分。
關於 LSA ,這里稍微扯遠一點,有一個挺有意思的演講視頻:你的用詞透露了你未來的精神狀態(對應的paper在這里),用 LSA 來預測人的未來精神狀態,相信看完這個視頻之后一定會體會到科學的力量。
pLSA 模型是有向圖模型,將主題作為隱變量,構建了一個簡單的貝葉斯網,采用EM算法估計模型參數。相比於 LSA 略顯“隨意”的SVD,pLSA 的統計基礎更為牢固。
這篇博客就是整理一下 pLSA 模型的推導過程。
pLSA:頻率學派
相比於 LDA 模型里涉及先驗分布,pLSA 模型相對簡單:觀測變量為文檔 $d_m\in\mathbb D$(文檔集共 M 篇文檔)、詞 $w_n\in\mathbb W$(設詞匯表共有 V 個互不相同的詞),隱變量為主題 $z_k\in\mathbb Z$(共 K 個主題)。在給定文檔集后,我們可以得到一個詞-文檔共現矩陣,每個元素 $n(d_m,w_n)$ 表示的是詞 $w_n$ 在文檔 $d_m$ 中的詞頻。也就是說,pLSA 模型也是基於詞-文檔共現矩陣的,不考慮詞序。
pLSA 模型通過以下過程來生成文檔(記號里全部省去了對參數的依賴):
(1) 以概率 $P(d_m)$ 選擇一篇文檔 $d_m$
(2) 以概率 $P(z_k|d_m)$ 得到一個主題 $z_k$
(3) 以概率 $P(w_n|z_k)$ 生成一個詞 $w_n$
概率圖模型如下所示(取自[2]):
圖里面的淺色節點代表不可觀測的隱變量,方框是指變量重復(plate notation),內部方框表示的是文檔 $d_m$ 的長度是 N,外部方框表示的是文檔集共 M 篇文檔。pLSA 模型的參數 $\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 個)。
聯合分布
拿到貝葉斯網當然先要看看聯合分布咯。這個貝葉斯網表達的是如下的聯合分布:
$$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)$$
假設有一篇文檔為 $\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 可以知道,它們三個是有向圖模型里非常典型的 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)$$
所以最終的聯合分布表達式為
$$P(d_m,w_n)=P(d_m)\sum_k P(z_k|d_m)P(w_n|z_k)$$
似然函數
這樣的話,我們要做的事就是從文檔集里估計出上面的參數。pLSA 是頻率學派的方法,將模型參數看作具體值,而不是有先驗的隨機變量。所以,考慮最大化對數似然函數:
$$\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}$$
參數估計:EM算法迭代求解
由於參數全部在求和號里被外層的log套住,所以很難直接求偏導數估計參數。到了這里,就輪到EM算法閃亮登場了。之前的一篇簡單介紹EM的博客里解決的是這樣的問題:觀測變量 y ,隱變量 z ,參數 $\theta$ ,目標函數 $L(\theta)=\ln P(y)=\ln \sum_k P(z_k)P(y|z_k)$ (省略 $\theta$ 依賴),Q函數 $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函數的形式為
$$\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) 聯合概率 $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$ 迭代得到的參數值加一個下標 $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}$$
基於以上兩個結果,得到Q函數的形式為
$$\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)$),已經全部為已知量。
2. M步,求極大值
剩下的工作就是
$$\theta_{t+1}=\arg\max_{\theta}Q(\theta;\theta_t)$$
問題將會被概括為如下的約束最優化問題:
目標函數:$\max_{\theta}Q(\theta;\theta_t)$
約束:$\sum_n P(w_n|z_k)=1$,$\sum_k P(z_k|d_m)=1$
使用Lagrange乘數法,得到Lagrange函數為
$$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))$$
令其對參數的偏導數等於零,得到 $K\times M+V\times K$ 個方程,這些方程的解就是最優化問題的解:
$$\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)}$$
當模型參數全部估計好后,便得到了完整的 pLSA 模型。上面的迭代過程很明顯是一個頻數估計(極大似然估計)的形式,意義很明確。模型使用EM算法進行參數估計時往往都會推導出這樣的結果,例如HMM。
pLSA 模型小結
上面的一系列公式因為總是在前面掛着兩個求和號,所以看上去貌似挺熱鬧,其實它相比於朴素的三硬幣模型的推導過程來說,無非就是多了作為條件出現的隨機變量 d ,其余地方沒有本質區別。
不難看出來,pLSA 模型需要估計的參數數量是和訓練文檔集的大小是有關系的 —— 因為有 $P(z_k|d_m)$ 。顯然,在訓練集上訓練出來的這組參數無法應用於訓練文檔集以外的測試文檔。
作為頻率學派的模型,pLSA 模型中的參數被視作具體的值,也就談不上什么先驗。如果在真實應用場景中,我們對於參數事先有一些先驗知識,那么就需要使用貝葉斯估計來做參數估計。
LDA 模型
相比於 pLSA ,2003年提出的 LDA 模型顯然名氣更響,應用起來也豐富得多。LDA 將模型參數視作隨機變量,將多項式分布的共軛先驗(也就是Dirichlet分布)作為參數的先驗分布,並使用Gibbs sampling方法對主題進行采樣。中文資料簡直不要太多,個人認為最經典的當屬《 LDA 數學八卦》,作者將 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數學八卦
[7] http://www.cnblogs.com/bentuwuying/p/6219970.html