PLSA概率潜在语义分析数学推导
為什么要研究PLSA模型
PLSA模型是LDA模型先前的一個工作,理解PLSA模型有助于我們對LDA模型的理解。
每個生成過程都擁有一個固定概率。
特別感謝
本文是在上過張家俊老師的《文本數據挖掘》后有感所寫,特別感謝老師的講授。
PLSA的數學推導
一句話概括:
我們希望把文檔集或單篇文章的生成概率表示出來,在分解得到對應的兩個概率:主題生成文章、詞生成主題。選擇概率的前n個即可完成對文章的分解表示。
具體推導
由于已有很多的博客對PLSA和EM算法進行了充分介紹,因此本文主要對PLAS及其中使用的EM算法進行推導,不再做原理性上的解釋。
我將根據自己的理解詳細闡述每一步處理的motive
參數定義
- d documents 文檔集合
- z 主題集合
- w 詞項空間
- 𝑀 文檔數
- 𝑁 特征數
- k 主題數
在這個模型中,篇章集合d與詞項空間w已知的,而主題z是未知的。我們的假設是篇章以一定概率生成主題,而主題以一定概率生成詞匯。
因此需要通過某種方法計算未知的主題z。
計算z的目的是對于給定的觀測數據 (d, w),PLSA模型基于最大似然估計學習p(wj|zk)和p(zk|di) 的取值
如果能確定這兩個概率的值,就能完成一篇文章乃至文檔集的生成(PLSA假設概率是定值)
使用n(di,wj){n\left(d_{i}, w_{j}\right)}n(di?,wj?)代表詞wj在文檔di中出現的次數。一篇文章單詞的生成是獨立的,做一個類別方便理解,類似于讓大猩猩去敲鍵盤,那么恰好生成一部《莎士比亞》的概率就是每個詞被湊巧打出來概率的連續相乘。取對數后表示為:log?∏i=1M∏j=1Np(di,wj)n(di,wj)\log \prod_{i=1}^{M} \prod_{j=1}^{N} p\left(d_{i}, w_{j}\right)^{n\left(d_{i}, w_{j}\right)}log∏i=1M?∏j=1N?p(di?,wj?)n(di?,wj?)
如果我們用L表示生成文檔集的概率,利用對數函數的特性將指數前移進行第一次變換。再將 log?p(di,wj)\log p\left(d_{i}, w_{j}\right)logp(di?,wj?)進行“拆解”,可以用全概率公式來表示聯合概率,具體來說拆解為∑k=1Kp(wj∣zk)p(zk∣di)\sum_{k=1}^{K} p\left(w_{j} \mid z_{k}\right) p\left(z_{k} \mid d_{i}\right)∑k=1K?p(wj?∣zk?)p(zk?∣di?) 這作為第二次變換。
兩次變換見下式:
L=log?∏i=1M∏j=1Np(di,wj)n(di,wj)=∑i=1M∑j=1Nn(di,wj)log?p(di,wj)=∑i=1M∑j=1Nn(di,wj)log?p(di)∑k=1Kp(wj∣zk)p(zk∣di)\begin{array}{l}\mathcal{L}=\log \prod_{i=1}^{M} \prod_{j=1}^{N} p\left(d_{i}, w_{j}\right)^{n\left(d_{i}, w_{j}\right)}=\sum_{i=1}^{M} \sum_{j=1}^{N} n\left(d_{i}, w_{j}\right) \log p\left(d_{i}, w_{j}\right) \\=\sum_{i=1}^{M} \sum_{j=1}^{N} n\left(d_{i}, w_{j}\right) \log p\left(d_{i}\right) \sum_{k=1}^{K} p\left(w_{j} \mid z_{k}\right) p\left(z_{k} \mid d_{i}\right)\end{array} L=log∏i=1M?∏j=1N?p(di?,wj?)n(di?,wj?)=∑i=1M?∑j=1N?n(di?,wj?)logp(di?,wj?)=∑i=1M?∑j=1N?n(di?,wj?)logp(di?)∑k=1K?p(wj?∣zk?)p(zk?∣di?)?
上式看起來可以直接通過求p(zk∣di)p\left(z_{k} \mid d_{i}\right)p(zk?∣di?)和p(wj∣zk)p\left(w_{j} \mid z_{k}\right)p(wj?∣zk?)的偏導來使L最大化,而且這兩個概率式子都有求和為1的約束,引入拉格朗日乘子法求對偶問題是很自然的。
but wait!
對數函數里面有求和操作,這可沒法求偏導了呀,因此我們只能設計以下一系列變換,“扔掉”多余部分,最終使得對數函數里沒有求和符號
但是如果直接求偏導,會發現由于上面的自變量包含在對數和中,求解后的結果難以計算,使得L最大化的計算成為不可能。
思考這個公式,使用極大似然估計時,我們通常運用拉格朗日乘子法,把約束化為目標函數的一部分,求偏導使其最大化。
因此,我們需要尋找一種替代方案,來使得L可計算
上式中的logp(di)log p\left(d_{i}\right)logp(di?)是文檔生成文檔集的先驗概率,所以在運算中可以去除,使用log對數的特性對函數進行變換得到以下結果(log(m*n)=log m+log n ):
L=∑i=1M∑j=1Nn(di,wj)log?p(di)+∑i=1M∑j=1Nn(di,wj)log?∑k=1Kp(wj∣zk)p(zk∣di)\begin{array}{l}\mathcal{L}=\sum_{i=1}^{M} \sum_{j=1}^{N} n\left(d_{i}, w_{j}\right) \log p\left(d_{i}\right)+\sum_{i=1}^{M} \sum_{j=1}^{N} n\left(d_{i}, w_{j}\right) \log \sum_{k=1}^{K} p\left(w_{j} \mid z_{k}\right) p\left(z_{k} \mid d_{i}\right)\end{array} L=∑i=1M?∑j=1N?n(di?,wj?)logp(di?)+∑i=1M?∑j=1N?n(di?,wj?)log∑k=1K?p(wj?∣zk?)p(zk?∣di?)?
加號的前半部分一定為正,所以上式一定大于下式。得到:
上式≥∑i=1M∑j=1Nn(di,wj)log?∑k=1Kp(wj∣zk)p(zk∣di)上式\geq \sum_{i=1}^{M} \sum_{j=1}^{N} n\left(d_{i}, w_{j}\right) \log \sum_{k=1}^{K} p\left(w_{j} \mid z_{k}\right) p\left(z_{k} \mid d_{i}\right) 上式≥i=1∑M?j=1∑N?n(di?,wj?)logk=1∑K?p(wj?∣zk?)p(zk?∣di?)
引入一個概率分式p(zk∣di,wj)p\left(z_{k} \mid d_{i}, w_{j}\right)p(zk?∣di?,wj?),上式等價于:
L=∑i=1M∑j=1Nn(di,wj)log?∑k=1Kp(zk∣di,wj)p(wj∣zk)p(zk∣di)p(zk∣di,wj)\mathcal{L}=\sum_{i=1}^{M} \sum_{j=1}^{N} n\left(d_{i}, w_{j}\right) \log \sum_{k=1}^{K} p\left(z_{k} \mid d_{i}, w_{j}\right) \frac{p\left(w_{j} \mid z_{k}\right) p\left(z_{k} \mid d_{i}\right)}{p\left(z_{k} \mid d_{i}, w_{j}\right)} L=i=1∑M?j=1∑N?n(di?,wj?)logk=1∑K?p(zk?∣di?,wj?)p(zk?∣di?,wj?)p(wj?∣zk?)p(zk?∣di?)?
把log函數內部的公式可以看做一個求均值的函數,而log函數是一個凹函數,利凸函數的特性即均值的函數大于函數的均值,可以得到以下公式:(具體證明為Jensen不等式)。
- 在這兒提供另一種理解。把 p(wj∣zk)p(zk∣di)p(zk∣di,wj)\frac{p\left(w_{j} \mid z_{k}\right) p\left(z_{k} \mid d_{i}\right)}{p\left(z_{k} \mid d_{i}, w_{j}\right)}p(zk?∣di?,wj?)p(wj?∣zk?)p(zk?∣di?)? 理解為一個自變量X, 那么X前面的p(zk∣di,wj)p\left(z_{k} \mid d_{i}, w_{j}\right)p(zk?∣di?,wj?)和求和符號組合作用即為求X的均值。又因為對數函數是凹函數,均值的函數大于函數的均值,所以log(average(X))>=average(log(X))
上式≥∑i=1M∑j=1Nn(di,wj)∑k=1Kp(zk∣di,wj)log?p(wj∣zk)p(zk∣di)p(zk∣di,wj)上式\geq \sum_{i=1}^{M} \sum_{j=1}^{N} n\left(d_{i}, w_{j}\right) \sum_{k=1}^{K} p\left(z_{k} \mid d_{i}, w_{j}\right) \log \frac{p\left(w_{j} \mid z_{k}\right) p\left(z_{k} \mid d_{i}\right)}{p\left(z_{k} \mid d_{i}, w_{j}\right)} 上式≥i=1∑M?j=1∑N?n(di?,wj?)k=1∑K?p(zk?∣di?,wj?)logp(zk?∣di?,wj?)p(wj?∣zk?)p(zk?∣di?)?
對數函數里沒有求和符號了,似乎也可以直接求偏導,但有些聯合概率分布中也包含了求偏導項,所以還需要進一步拆分
利用對數性質對上式進行拆分,即log(A/B) = log(A)-log(B)可得
后半部分形式上類似H(x)=p(x)log(p(x)),即信息熵的定義,因此形式可以轉化為:
后辦部分一定為正,省去可得:
長征終于要到頭了,經過無數變換,我們拿到了p(wj∣zk)p(zk∣di)p\left(w_{j} \mid z_{k}\right) p\left(z_{k} \mid d_{i}\right)p(wj?∣zk?)p(zk?∣di?),而且對數函數求導終于不再包含難以處理的求和運算了。
此時利用以下約束
引入拉格朗日乘子法
求偏導后可以得到:
類似的,可以得到另一個偏導:
帶入約束的等式中:
可得:
將βi與αk帶入上式的p(zk∣di)p\left(z_{k} \mid d_{i}\right)p(zk?∣di?)和p(wj∣zk)p\left(w_{j} \mid z_{k}\right)p(wj?∣zk?)
得到三個要估計的參數:
面臨雞生蛋蛋生雞的難題,三個參數估計時互相依賴。因此使用EM算法,先隨機初始化后驗概率,再進行迭代。
EM算法
總結
以上是生活随笔為你收集整理的PLSA概率潜在语义分析数学推导的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JDBCDataSource
- 下一篇: JavaScript中onblur事件