PLSA介绍与推导:
概率隐语义分析(PLSA)是一个著名的针对文本建模的模型,是一个生成模型。因为加入了主题模型,所以可以很大程度上改善多词一义和一词多义的问题。
数学基础:
生成模型: 预测模型的公式是 P(y|x) ,即给定输入,输出给定输入的概率分布,就要学习联合分布 P(x,y) ,所以还要先求出 P(x) ,反应的数据本身的相似度。 这样的方法之所以称为生成方法,是因为模型表示了给定输入X产生输出Y的生成关系。用于随机生成的观察值建模,特别是在给定某些隐藏参数情况下。典型的生成模型有:朴素贝叶斯和隐马尔科夫模型等。(但是朴素贝叶斯没有体现词之间的关系!)
而判别模型:没有中间过程,直接对样本学习出概率 P(y|x) ,也可写作 P(y|x;θ) ,可以理解为给定 θ 值的情况下根据特征值来预测概率,想想LR就是这样的。我们只不过要先梯度下降求出 θ 罢了,如svm,LR 对于分类任务常用
生成文档(文本建模)
Unigram模型:
这里我们称这个包含不重样单词的集合为词袋(bags of words)
对于Unigram模型,生成一篇文档的方法就是随机的从这个词袋中抽取单词组成。而这篇文档的被生成的概率就是被抽出每个词概率
(首发球员)的乘积
所以生成一篇文档 w→=(w1,w2,w3...wn) 的概率就是
假设语料库中有多篇文档,而且文档与文档之间是独立的,那么整个语料库的生成概率就是就是n篇文档概率之积:
2.Mixture of unigrams模型:
对于Mixture of unigrams,我们在生成一篇文档之前先给它一个主题(注意:这篇文档只有这一个主题),然后根据这个主题的(词袋)词分布来随机选择出n个词
所以对于整个语料库,生成文档的概率就是:对每个主题下生成的文档(每个主题可以随机挑所以可以生成多个文档)的概率进行加和:
3.PLSA模型:
就以上两个模型来说,每个文档只包含一个主题未免太单一了。Hoffmm在1999年提出了概率隐语义分析(Probabilistic Latent Semantic Analysis)。他认为每个主题下都有一个词汇的概率分布,而一篇文章通常由多个主题构成,并且文章中的每个单词都是由某个主题生成的。
每个文档在所有主题上服从多项分布
P z1 z2 … zk 文档 d1 0.3 0.05 … 0.01 文档 d2 0.05 0.2 … 0.05 … … … … … 文档 di 0.01 0.2 … 0.01
每个主题在所有词上服从多项分布。
P w1 w2 … wj 主题 z1 0.1 0.25 … 0.11 主题 z2 0.25 0.1 … 0.15 … … … … … 主题 zk 0.21 0.1 … 0.05
1.所以整篇文档的过程就是:
- 1.先以 p(di) 的概率选中文档 dj
2.以 p(zk|di) 的概率从这个文档 i 的主题概率分布中挑选出主题
zk 3.以 p(wj|zk) 的概率产生一个单词 wj
这其实就是一个简单的单链贝叶斯网络
,![Alt text](./Screenshot from 2016-05-20 15-59-05.png)因为里面包含隐变量 z ,所以通常采用EM算法
学习模型参数,所以有如下推导过程。
2.算法推导过程:
- 观察数据为
(di,wj) 对,主题 zj 是隐含变量,对 (di,wj) 进行极大似然估计。- 目标函数存在未知变量,使用EM算法求最优值。
- E-step:假定参数已知,求 zk 的后验概率。
- M-step:求似然函数期望最大值(实为找到
最优参数
)。
- 存在约束条件,转换为拉格朗日乘子法,求驻点 。
- 不断迭代EM步直到收敛。
详细过程如下:
2.1.首先明确两个重要概率:
- (di,wi) 的联合分布(某文档和某个词同时出现的概率)为:
p(di,wj)=p(wj|di)∗p(di)
- 某个文档生成某个词的概率,
而计算每个文档的主题分布是PLSA任务的目标?
:p(w
- (di,wi) 的联合分布(某文档和某个词同时出现的概率)为:
- 目标函数存在未知变量,使用EM算法求最优值。