EM算法求解pLSA主题模型

2020-03-17 17:20:04 浏览数 (1)

前言

说到主题模型通常会想到LDA主题模型。确实,近些年出现的主题模型或多或少与LDA模型存在联系,但是今天我们要介绍的是比LDA还要早的pLSA主题模型。

a

什 么 是 pLSA 主 题 模 型 ?

主题模型的起源是隐性语义索引(Latent Semantic Indexing,LSI)。隐性语义索引并不是概率模型,因此也算不上一个主题模型,但是其基本思想为主题模型的发展奠定了基础,LSI通过奇异值分解的方法计算出文本中各个主题的概率分布,在LSI的基础上,Hofman提出了概率隐性语义索引(probability Latent Semantic Indexing,pLSI),该模型被看成是一个真正意义上的主题模型。而LDA是又在pLSI的基础上进行扩展得到的一个更为完全的概率生成模型。

b

pLSA 的 主 要 内 容

主题模型要做的就是求出每篇文档的K个主题分布出来,对每篇文档中的词特征映射为这k个主题相当于一种降维的操作;将不同的文档聚类一个或两个主题分布中概率高的主题下面,相当于一种聚类的操作;主题模型因为样本中没有标签所以属于一种无监督的学习。当谈到主题模型的时候,通常包括5项内容:

  1. 主题模型的输入;
  2. 主题模型的基本假设;
  3. 主题模型的表示;
    1. 图模型;
    2. 生成过程;
  4. 参数估计;
  5. 新样本的推断;

一般,主题模型的输入和基本假设这两个部分对于大部分的主题模型都是相同的。下面来分别从5个方面说一说pLSI主题模型。

i. 主题模型的输入

主题模型第一个主要的输入就是文档的集合,文档的集合用词项文档矩阵来表示,这里的词项数不重复的单词。下图是词项文档矩阵的一个实例:

▲词项文档矩阵的实例

上面这个词项文档矩阵可以看出,语料中包括6篇文档,整个语料中共有5个词项(不重复的单词),文档

中ship和ocean,voyage三个词项各出现一次。这里需要注意的就是,同一个词项可能出现了多次,但是在词项文档矩阵中还是用1来表示。这种方式虽然简单,所以有了TF-IDF,而TF-IDF模型包含了词的权重,更加准确。把对应的1换成了该词的TF-IDF值。

我们并不知道我们需要给文档指定多少个主题,所以主题个数K需要我们自己进行设定,所以在模型训练之前就需要指定好主题个数k,而且存在一定的经验性。确定k值可以使用不同的k值进行重复的实验,综合起来选择效果最好的k值。

ii. 主题模型的基本假设

主题模型另一个重要的假设就是词袋假设,即认为一篇文档中的单词是可以交换次序的而不影响模型的训练结果。可能后面的一些主题模型的派生模型中一些可交换性可能会被打破。

iii. 主题模型的表示

前面说的两小节都是大部分主题模型相同的内容,从这小节开始,不同的主题模型有不同的相关内容。主题模型的表示有两种:一种是图模型,能够直观的了解主题模型的实现过程,一种是生成过程,通过文字描述来介绍主题模型的实现过程。其实本质都差不多,只是不同的表示方式而已。

▲pLSI的图模型

下面说一说图模型的一些符号的表示含义:

  1. 方框表示其中内容进行重复,右下角是重复的次数;
  2. 灰色的节点表示观测值,也就是可以确定的变量;
  3. 空心的节点表示隐含随机变量;
  4. 箭头表示依赖关系;

表示文档

表示文档

的主题,

表示在给定主题

下单词,M代表文档数目,N表示文档的长度;

表示文档

出现的概率,

表示文档

中主题

出现的概率,

表示在给定主题

出现单词

的概率;

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

下面是pLSI的文档的生成过程,这个文档的生成过程循环M词,也就是文本档的个数:

▲pLSI文档的生成过程

根据pLSI的图模型也可以发现,其实pLSI就是一个含有隐含变量的贝叶斯网络,观测到的变量有

,那这两个变量的联合分布就可以写出来,也就是

这里得到模型的两组主要参数,其实从pLSI的文档的生成过程也可以看出我们需要求的就是

这两组参数:

表示的各文档的主题概率分布;

表示的各主题下词项概率分布;

iV. 参数估计

通过上面的分析,可以知道

就是我们待估计的两个参数,也就是我们想要知道的各个文档下的主题概率分布以及各个主题下的词项概率分布。对于参数估计很自然的想法是使用极大似然估计,那么在这之前需要找出目标函数:

通过上面的推导,我们得到了关于参数

的目标函数:

对于上面的目标函数,做极大似然估计,通过导数等于0的方式求出极大的参数,但是对于我们的目标函数导数并不是那么好求:

  1. 拥有隐变量

中有加法;

所以我们通过改变一些策略,通过构建EM算法来求含有隐变量的参数估计,EM算法的过程:

  1. 首先初始化参数

,给定他们初始值,当然初始值对EM算法的收敛结果有很大的影响,所有这里一般多选几组初始值,然后选择最优的那组初始值。

  1. E-step:以当前已知的参数估计隐变量的后验概率

  1. M-step:求关于后验概率关于参数

的似然函数的期望的极大值,得到最优的参数值

,带入E-step从而循环迭代;

E-step也就是求隐变量的后验概率,即:

.......................................................................................................................(8)

M-step求关于参数的似然函数的期望,在这之前需要进一步推导目标函数,由(7)式可知:

,因为式子

是一个定值,可以理解为一个常数,后面需要求期望,由期望性质可知

,当随机变量为一个定值的时候,他的期望等于他本身,也就是

,因为我们求期望的最大化,所以可以把一些定值省略,所以这里使用

而不是

号...........................................................................................(9)

然后就可以计算关于后验概率关于参数

的似然函数的期望,即:

......................................................................................................(10)

有了关于参数

的函数

,并且带有概率加和为1的约束条件:

▲带约束的

很显然,这是只有等式约束的求极值问题,使用Lagrange乘子法解决。

V. 新样本的推断

在pLSI中,对于新样本的推断仍然采用EM算法完成。不过由于我们只需要得到新样本

文档在主题空间的表达

,而不需要修改

,因此只在EM算法中的M步骤更新

而保持

不变。

首发: 触摸壹缕阳光~https://zhuanlan.zhihu.com/p/40877820 参考: 1.邹博的机器学习 2.自然语言处理中主题模型的发展~论文

0 人点赞