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