您的位置:首页 > 其它

LDA(一):LDA前身PLSA介绍与推导

2016-05-21 13:36 253 查看

PLSA介绍与推导:

概率隐语义分析(PLSA)是一个著名的针对文本建模的模型,是一个生成模型。因为加入了主题模型,所以可以很大程度上改善多词一义和一词多义的问题。

数学基础:

生成模型: 预测模型的公式是P(y|x)P(y|x),即给定输入,输出给定输入的概率分布,就要学习联合分布P(x,y)P(x,y),所以还要先求出P(x)P(x),反应的数据本身的相似度。 这样的方法之所以称为生成方法,是因为模型表示了给定输入X产生输出Y的生成关系。用于随机生成的观察值建模,特别是在给定某些隐藏参数情况下。典型的生成模型有:朴素贝叶斯和隐马尔科夫模型等。(但是朴素贝叶斯没有体现词之间的关系!)

而判别模型:没有中间过程,直接对样本学习出概率P(y|x)P(y|x),也可写作P(y|x;θ)P(y|x;\theta),可以理解为给定θ\theta值的情况下根据特征值来预测概率,想想LR就是这样的。我们只不过要先梯度下降求出θ\theta罢了,如svm,LR 对于分类任务常用

生成文档(文本建模)

Unigram模型:

这里我们称这个包含不重样单词的集合为词袋(bags of words)



对于Unigram模型,生成一篇文档的方法就是随机的从这个词袋中抽取单词组成。而这篇文档的被生成的概率就是被抽出
每个词概率
(首发球员)的
乘积


所以生成一篇文档w→=(w1,w2,w3...wn)\overrightarrow{w}=(w_1,w_2,w_3...w_n)的概率就是p(w→)=p(w1)p(w2)...p(wn)p(\overrightarrow{w}) = p(w_1)p(w_2)...p(w_n)

假设语料库中有多篇文档,而且文档与文档之间是独立的,那么整个语料库的生成概率就是就是n篇文档概率之积:P(W)=p(w1−→)p(w2−→)...p(wn−→)P(W)=p(\overrightarrow{w_1})p(\overrightarrow{w_2})...p(\overrightarrow{w_n})

2.Mixture of unigrams模型:



对于Mixture of unigrams,我们在生成一篇文档之前先给它一个主题(注意:这篇文档只有这一个主题),然后根据这个主题的(词袋)词分布来随机选择出n个词

所以对于整个语料库,生成文档的概率就是:对每个主题下生成的文档(每个主题可以随机挑所以可以生成多个文档)的概率进行加和:p(W)=p(z1)∏n=1Np(wn−→|z1)+...+p(zn)∏n=1Np(wn−→|zn)=∑zp(z)∏n=1Np(wn−→|z)p(W) = p(z_1)\prod_{n=1}^Np(\overrightarrow{w_n}|z_1)+...+p(z_n)\prod_{n=1}^Np(\overrightarrow{w_n}|z_n)=\sum_zp(z)\prod_{n=1}^Np(\overrightarrow{w_n}|z)

3.PLSA模型:

就以上两个模型来说,每个文档只包含一个主题未免太单一了。Hoffmm在1999年提出了概率隐语义分析(Probabilistic Latent Semantic Analysis)。他认为每个主题下都有一个词汇的概率分布,而一篇文章通常由多个主题构成,并且文章中的每个单词都是由某个主题生成的。

每个文档在所有主题上服从多项分布

Pz1 z_1z2 z_2zk z_k
文档d1d_10.30.30.050.050.010.01
文档d2d_2 0.050.050.20.20.050.05
文档did_i0.010.010.20.20.010.01

每个主题在所有词上服从多项分布。

Pw1 w_1w2 w_2wj w_j
主题z1z_1 0.10.10.250.250.110.11
主题z2z_20.250.250.10.10.150.15
主题zkz_k0.210.210.10.10.050.05

1.所以整篇文档的过程就是:

1.先以p(di)p(d_i)的概率选中文档djd_j

2.以p(zk|di)p(z_k|d_i)的概率从这个文档ii的主题概率分布中挑选出主题zkz_k

3.以p(wj|zk)p(w_j|z_k)的概率产生一个单词wjw_j

这其实就是一个简单的单链
贝叶斯网络
,![Alt text](./Screenshot from 2016-05-20 15-59-05.png)因为里面包含隐变量zz,所以通常采用
EM算法
学习模型参数,所以有如下推导过程。

2.算法推导过程:

观察数据为(di,wj)(d_i,w_j)对,主题zjz_j是隐含变量,对(di,wj)(d_i,w_j)进行极大似然估计。

目标函数存在未知变量,使用EM算法求最优值。

E-step:假定参数已知,求zkz_k的后验概率。

M-step:求似然函数期望最大值(实为找到
最优参数
)。

存在约束条件,转换为拉格朗日乘子法,求驻点 。

不断迭代EM步直到收敛。

详细过程如下:

2.1.首先明确两个重要概率:

(di,wi)(d_i,w_i)的联合分布(某文档和某个词同时出现的概率)为:p(di,wj)=p(wj|di)∗p(di)p(d_i,w_j) = p(w_j|d_i)*p(d_i)

某个文档生成某个词的概率
而计算每个文档的主题分布是PLSA任务的目标?
:p(wj|di)=∑k=1kp(wj|zk)p(zk|di)p(w_j|d_i) = \sum_{k=1}^kp(w_j|z_k)p(z_k|d_i)

第一个公式好理解,就是该文档出现的概率乘以该文档下出现该词的概率

第二个公式可以理解为有语料库中
某个词的生成概率
p(wi)p(w_i)得来的

p(wj)=∑kk=1p(wj|zk)p(zk)p(w_j) = \sum_{k=1}^kp(w_j|z_k)p(z_k)这是全概率公式,可理解为每个主题下生成该词概率的加和。

我们对上式同时除以一个did_i,得到p(wj|di)=∑kk=1p(wj|zk,di)p(zk|di)p(w_j|d_i) = \sum_{k=1}^kp(w_j|z_k,d_i)p(z_k|d_i),

在贝叶斯网络中

,这是一个
Head to tail
模型。zz将dd,ww阻隔,在zz已知的情况下,dd对ww无影响。所以上式就可以简化成我们的第二个公式p(wj|di)=∑kk=1p(wj|zk)p(zk|di)p(w_j|d_i) = \sum_{k=1}^kp(w_j|z_k)p(z_k|d_i)

2.2 对观察数据(di,wi)(d_i,w_i)进行极大似然估计(目标函数是所有出现概率的乘积):

L=∏Ni=1∏Mj=1p(di,wj)=∏i∏jp(di,wj)n(di,wj)L = \prod_{i=1}^N\prod_{j=1}^M p(d_i,w_j)= \prod_i\prod_jp(d_i,w_j)^{n(d_i,w_j)} 这里n(di,wj)n(d_i,w_j)代表这个文档和词同时出现的次数,类似于二项分布p3(1−p)2p^3(1-p)^2。另外,因为有重复的出现,出现次数就不是MM或NN了,所以不标记。

取对数似然:

l=∑i∑jn(di,wj) log p(di,wj)l = \sum_i\sum_jn(d_i,w_j)~log~p(d_i,w_j)

=∑i∑jn(di,wj) log p(wj|di)p(di)=\sum_i\sum_jn(d_i,w_j)~log~p(w_j|d_i)p(d_i) 参照(1)式

=∑i∑jn(di,wj) log[ p(wj|zk)p(zk|di)p(di)]=\sum_i\sum_jn(d_i,w_j)~log[~p(w_j|z_k)p(z_k|d_i)p(d_i)] 参照(2)式

=∑i∑jn(di,wj)( log[ p(wj|zk)p(zk|di)]+log p(di))=\sum_i\sum_jn(d_i,w_j)(~log[~p(w_j|z_k)p(z_k|d_i)]+log~p(d_i))

=∑i∑jn(di,wj) log p(wj|zk)p(zk|di))+∑i∑jn(di,wj)log p(di)=\sum_i\sum_jn(d_i,w_j)~log~p(w_j|z_k)p(z_k|d_i))+\sum_i\sum_jn(d_i,w_j)log~p(d_i) 出现的次数是确定的,文档的概率也是已有的,对求取极大值点无影响,所以省略。

由此,我们得到
新的目标似然函数
: l=∑i∑jn(di,wj) log p(wj|zk)p(zk|di)l = \sum_i\sum_jn(d_i,w_j)~log~p(w_j|z_k)p(z_k|d_i)

2.3使用逐渐逼近的EM方法:

观察目标函数,其中p(wj|zk)p(w_j|z_k)和p(zk|di)p(z_k|d_i)都是未知变量。存在
隐变量z
,所以这里我们采用
EM算法
来估计这两个参数。

- E步(求
隐变量后验概率(条件概率)
):为了进行EM算法迭代,我们需要先求出变量的后验分布。所以此处就假定p(wj|zk)p(w_j|z_k)和p(zk|di)p(z_k|d_i)已知(因为总会收敛,所以在这里不妨把未知变量随机假定一个值),求出隐含变量Z的后验分布以进行下面的M步。

- M步(
求似然函数期望的最大值(似然函数乘以隐变量条件概率)
):在(di,wj,zk)(d_i,w_j,z_k)已知的前提下,求关于参数p(wj|zk)p(w_j|z_k)和p(zk|di)p(z_k|d_i)的似然函数期望最大值。得到它们的最优解p(wj|zk)p(w_j|z_k)和p(zk|di)p(z_k|d_i),带入E步,循环迭代。

步骤推导:

2.3.1 zkz_k的
后验概率
隐变量的条件概率
):

由贝叶斯公式得到:zkz_k的后验概率p(zk|wj)=p(wj|zk)p(zk)∑kk=1p(wj|zk)p(zk)p(z_k|w_j) =\frac{ p(w_j|z_k)p(z_k)}{\sum_{k=1}^k p(w_j|z_k)p(z_k)}

和前面贝叶斯网络一样,同除did_i,而did_i对wjw_j是没有影响的,所以可以忽略:p(zk|di,wj)=p(wj|zk)p(zk|di)∑kk=1p(wj|zk)p(zk|di)p(z_k|d_i,w_j) =\frac{ p(w_j|z_k)p(z_k|d_i)}{\sum_{k=1}^k p(w_j|z_k)p(z_k|d_i)}

2.3.2求似然函数
期望
最大值:

回顾EM算法整体框架:

Repeat until convergence{

(E-step) For each i, set

Qi(z(i)):=p(z(i)|x(i);θ)Q_i(z^{(i)}):=p(z^{(i)}|x^{(i)};\theta)}
隐变量的条件概率


(M-step)Set

θ:=arg maxθ∑i∑(i)zQi(z(i))logp(z(i),x(i);θ)Qi(z(i))\theta:=arg~max_\theta\sum_i\sum_z^{(i)}Q_i(z^{(i)})log\frac{p(z^{(i)},x^{(i)};\theta)}{Q_i(z^{(i)})}

对于M步,我们可以将他进行简化:

这里简略表示θ:=QlogPQ=Q(logP−logQ)=QlogP−QlogQ≃QlogP\theta:= Qlog\frac{P}{Q} = Q(logP-logQ)=QlogP-QlogQ\simeq QlogP虽然我们求得是最大值,但并不关心具体是多少,而是关注什么参数下取得极大值。那么假如我们已经求出了后验分布Q,成为了已知,对参数估计没有影响,所以QlogQQlogQ可以省略。

由此我们得到最新的
似然函数期望最大值
公式:θ:=arg maxθ∑i∑z(i)Qi(z(i))log p(z(i),x(i);θ)\theta:=arg~max_\theta\sum_i\sum_z^{(i)}Q_i(z^{(i)})log~{p(z^{(i)},x^{(i)};\theta)}

跳出框架,我们把此式应用到前面的目标似然中:

l=∑i∑jn(di,wj) log p(wj|zk)p(zk|di)l = \sum_i\sum_jn(d_i,w_j)~log~p(w_j|z_k)p(z_k|d_i)

=∑i∑jn(di,wj) log p(wj|di)~=\sum_i\sum_jn(d_i,w_j)~log~p(w_j|d_i)

方便对比M-step,写回原式,这里log p(wj|di))log~p(w_j|d_i))就是包含隐变量zkz_k的似然函数log p(wj,zk|di)log~{p(w_j,z_k|d_i)},然后再去乘以
隐含变量条件概率
期望


得到似然函数期望公式:

E(l)=∑i∑jn(di,wj) log p(wj,zk|di)∑k=1kp(zk|di,wj)E(l) = \sum_i\sum_jn(d_i,w_j)~log~p(w_j,z_k|d_i)\sum_{k=1}^kp(z_k|d_i,w_j)

E(l)=∑i∑jn(di,wj) log p(wj|zk)p(zk|di)∑k=1kp(zk|di,wj)E(l) = \sum_i\sum_jn(d_i,w_j)~log~p(w_j|z_k)p(z_k|d_i)\sum_{k=1}^kp(z_k|d_i,w_j)

暴露p(wj|zk),p(zk|di)p(w_j|z_k),p(z_k|d_i)出是因为我们要求关于这两个概率的期望最大值。并且PLSA的核心就是求这两个概率。

注意:这里存在两个
约束条件
s.t={∑Mi=1p(wj|zk)=1∑Kk=1p(zk|di)=1每个主题下所有词的概率和为1每篇文档下所有主题的概率和为1s.t=
\begin{cases}
\sum_{i=1}^Mp(wj|z_k) = 1& \text{每个主题下所有词的概率和为1}\\
\sum_{k=1}^Kp(z_k|d_i) = 1& \text{每篇文档下所有主题的概率和为1}
\end{cases}

有约束条件我们就直接上拉格朗日乘子法:Lag=∑i∑jn(di,wj) log p(wj|zk)p(zk|di)∑k=1kp(zk|di,wj)+∑k=1kτk(1−∑j=1Mp(wj|zk))+∑i=1Nρi(1−∑k=1Kp(wj|zk))Lag =\sum_i\sum_jn(d_i,w_j)~log~p(w_j|z_k)p(z_k|d_i)\sum_{k=1}^kp(z_k|d_i,w_j)+\sum_{k=1}^k\tau _k(1-\sum_{j=1}^Mp(w_j|z_k))+\sum_{i=1}^N\rho _i(1-\sum_{k=1}^Kp(w_j|z_k))

求驻点

∂Lag∂p(wj|zk)=∑in(di,wj)p(zk|di,wj)p(wj|zk)−τk=0\frac{\partial Lag}{\partial p(w_j|z_k)} = \frac{\sum_in(d_i,w_j)p(z_k|d_i,w_j)}{p(w_j|z_k)}- \tau_k = 0 当j,k同时存在求驻点时才有∑j,∑K\sum_j,\sum_K项,所以都被省略掉

∂Lag∂p(zk|di)=∑in(di,wj)p(zk|di,wj)p(zk|di)−ρi=0\frac{\partial Lag}{\partial p(z_k|d_i)} = \frac{\sum_in(d_i,w_j)p(z_k|d_i,w_j)}{p(z_k|d_i)}- \rho_i= 0

分析第一个等式:

∂Lag∂p(wj|zk)=∑in(di,wj)p(zk|di,wj)p(wj|zk)−τk=0\frac{\partial Lag}{\partial p(w_j|z_k)} = \frac{\sum_in(d_i,w_j)p(z_k|d_i,w_j)}{p(w_j|z_k)}- \tau_k = 0 **

⇉∑in(di,wj)p(zk|di,wj)=τk p(wj|zk)\rightrightarrows\sum_in(d_i,w_j)p(z_k|d_i,w_j) =\tau_k ~p(w_j|z_k) (1)

⇉∑i∑Mj=1n(di,wj)p(zk|di,wj)=∑Mj=1τk p(wj|zk)\rightrightarrows\sum_i\sum_{j=1}^Mn(d_i,w_j)p(z_k|d_i,w_j) =\sum_{j=1}^M\tau_k ~p(w_j|z_k) 对第k个主题下所有单词的概率求和 = 1

⇉∑i∑Mj=1n(di,wj)p(zk|di,wj)=τk\rightrightarrows\sum_i\sum_{j=1}^Mn(d_i,w_j)p(z_k|d_i,w_j) =\tau_k 其中p(zk|di,wj)p(z_k|d_i,w_j)我们是可以通过
E-step
求出来的,把τk\tau_k 带回到(1)得到:

∑in(di,wj)p(zk|di,wj)=⟮∑i∑j=1Mn(di,wj)p(zk|di,wj)⟯ p(wj|zk)\sum_in(d_i,w_j)p(z_k|d_i,w_j) =\lgroup\sum_i\sum_{j=1}^Mn(d_i,w_j)p(z_k|d_i,w_j) \rgroup ~p(w_j|z_k)

最终得到M-step:⎧⎩⎨⎪⎪⎪⎪p(wj|zk)=∑in(di,wj)p(zk|di,wj)∑i∑Mj=1n(di,wj)p(zk|di,wj) p(zk|di)=∑jn(di,wj)p(zk|di,wj)∑j∑kk=1n(di,wj)p(zk|di,wj)\begin{cases}
p(w_j|z_k) =\frac{\sum_in(d_i,w_j)p(z_k|d_i,w_j)}{\sum_i\sum_{j=1}^Mn(d_i,w_j)p(z_k|d_i,w_j)} & \text{}\\
\ p(z_k|d_i) =\frac{\sum_jn(d_i,w_j)p(z_k|d_i,w_j)}{\sum_j\sum_{k=1}^kn(d_i,w_j)p(z_k|d_i,w_j)} & \text{}
\end{cases}

加上之前的E-step:p(zk|di,wj)=p(wj|zk)p(zk|di)∑kk=1p(wj|zk)p(zk|di)p(z_k|d_i,w_j) =\frac{ p(w_j|z_k)p(z_k|d_i)}{\sum_{k=1}^k p(w_j|z_k)p(z_k|d_i)}

不断EM迭代,最终使p(wj|zk)p(w_j|z_k)和p(zk|di)p(z_k|d_i)收敛

参考:

【1】邹博-机器学习
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: