NLP —— 圖模型(三)pLSA(Probabilistic latent semantic analysis,機率隱性語義分析)模型

      LSA(Latent semantic analysis,隱性語義分析)、pLSA(Probabilistic latent semantic analysis,機率隱性語義分析)和 LDA(Latent Dirichlet allocation,隱狄利克雷分配)這三種模型均可以歸類到話題模型(Topic model,或稱爲主題模型)中。相對於比較簡單的向量空間模型,主題模型經過引入主題這個概念,更進一步地對文本進行語義層面上的理解。html

      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 模型經過如下過程來生成文檔(記號裏所有省去了對參數的依賴):spa

      (1) 以機率 $P(d_m)$ 選擇一篇文檔 $d_m$視頻

      (2) 以機率 $P(z_k|d_m)$ 獲得一個主題 $z_k$htm

      (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

相關文章
相關標籤/搜索