二、pLSA Model
Unigram Model
模型过于简单。事实上人们写一篇文章往往需要先确定要写哪几个主题。如:写一篇计算机方面的文章,最容易想到的词汇是:内存、CPU、编程、算法等等。之所以能马上想到这些词,是因为这些词在对应的主题下出现的概率相对较高。
因此可以很自然的想到:一篇文章由多个主题构成,而每个主题大概可以用与该主题相关的频率最高的一些词来描述。
上述直观的想法由
Hoffman
在 1999 年的probabilistic Latent Semantic Analysis:pLSA
模型中首先进行了明确的数学化。主题
topic
:表示一个概念。具体表示为一系列相关的词,以及它们在该概念下出现的概率。- 与某个主题相关性比较强的词,在该主题下出现概率较高
- 与某个主题相关性比较弱的词,在该主题下出现概率较低
主题示例:给定一组词:
证明,推导,对象,酒庄,内存
,下列三个主题可以表示为:- 数学主题:
- 计算机主题:
- 红酒主题:
证明 推导 对象 酒庄 内存 数学 0.45 0.35 0.2 0 0 计算机 0.2 0.15 0.45 0 0.2 红酒 0 0 0.2 0.8 0
2.1 文档生成算法
假设话题集合 有 个话题,分别为 。
pLSA
模型的文档生成规则:以概率 选中第 个话题 ,然后在话题 中以概率 选中第 个单词 。
重复执行上一步
挑选话题--> 挑选单词
次,则得到一篇包含 个单词 的文档,记作 。其中: , 表示文档的第 个单词为 。
对于包含 篇文档的数据集 ,假设所有文档都是如此生成。则数据集 的生成规则:
以概率 选中第 篇文档。这个概率仅仅用于推导原理,事实上随着公式的推导,该项会被消掉。
通常选择均匀选择,即
对于第 篇文档,以概率 选中第 个话题 ,然后在话题 中以概率 选中第 个单词 。
重复执行上一步
挑选话题--> 挑选单词
次,则得到一篇包含 个单词 的文档,记作 。重复执行上述文档生成规则 次,即得到 篇文档组成的文档集合 。
2.2 模型原理
令
- 表示:选中第 篇文档 的条件下,选中第 个话题 的概率
- 表示:选中第 个话题 的条件下,选中第 个单词 的概率
待求的是参数 和 :
根据
pLSA
概率图模型(盘式记法),结合成对马尔可夫性有:即:文档和单词关于主题条件独立。
对于文档 ,给定其中的单词 ,有:
根据该等式,可以得到:
即:给定文档 的条件下,某个的单词 出现的概率可以分成三步:
- 首先得到给定的文档 的条件下,获取某个话题 的概率
- 再得到该话题 生成该单词 的概率
- 对所有的话题累加 即得到给定的单词 在给定文档 中出现的概率
对于给定文档 中主题 生成的单词 ,有:
则已知文档 中出现了单词 的条件下,该单词由主题 生成的概率为:
其物理意义为:给定文档 的条件下,单词 由主题 生成的概率占单词 出现的概率的比例。
2.3 参数求解
pLSA
模型由两种参数求解方法:矩阵分解、EM
算法。
2.3.1 矩阵分解
根据前面的推导,有: 。其中文档 和单词 是观测到的,主题 是未观测到的、未知的。
令 ,根据:
则有:
令:
则有: 。
由于 是观测的、已知的,所以
pLSA
对应着矩阵分解。其中要求满足约束条件:.
2.3.2 EM 算法
在文档 中,因为采用词袋模型,所以单词的生成是独立的。假设文档 中包含单词 ,其中:
- 表示文档 的单词总数。
- 表示文档 的第 个单词为 。
则有:
根据前面的推导,有:。则:
则有:
假设文档 的单词 中,单词 有 个, 。 则有:
的物理意义为:文档 中单词 的数量。
考虑观测变量 ,它表示第 篇文档 以及该文档中的 个单词。
则有:
由于文档之间是相互独立的,因此有:
要使得观测结果发生,则应该最大化 。但是这里面包含了待求参数的乘积,其最大化难于求解,因此使用
EM
算法求解。考虑完全变量 ,其中 为文档中 中每位置的单词背后的话题。
- 由于采用词袋模型,所以生成单词是相互独立的,因此有:
根据 有:
于是:
- 由于文档之间是相互独立的,因此有:
假设在文档 中,单词 不论出现在文档的哪个位置,都是由同一个话题 产生的。
则有:
则有:
则完全数据的对数似然函数为:
E
步:求取Q
函数,为 关于后验概率 的期望。根据前面的推导,有:
其中 均为上一轮迭代的结果,为已知量。
则有:
M
步:最大化Q
函数,同时考虑约束条件:对每个参数进行求导并使之等于0 ,联立方程求解得到:
文档-主题概率 更新方程
其物理意义:文档 中每个位置背后的、属于主题 的频数(按概率计数),除以位置的个数。也就是主题 的频率。
主题-单词概率 更新方程
其物理意义为:单词 在数据集 中属于主题 的频数(按概率计数),除以数据集 中属于主题 的频数(按概率计数)。即单词 的频率。
pLSA
的EM
算法:输入:文档集合 ,话题集合 ,字典集合
输出:参数 和 ,其中:
算法步骤:
初始化: 令 , 为 和 赋初值, 。
迭代,迭代收敛条件为参数变化很小或者
Q
函数的变化很小。迭代步骤如下:E
步:计算 函数。- 先计算后验概率:
再计算 函数:
M
步:计算 函数的极大值,得到参数的下一轮迭代结果:重复上面两步直到收敛