上周我们留了一个问题:在使用最大似然法时如何去掉那些并不重要但实际上出现次数又很多的单词呢?
这周就以这个问题开始进一步的学习概率主题模型吧。
一元语言混合模型
怎么能避免那些并不重要但实际上出现次数又很多的单词对结果的影响呢?我们很自然的就会想到将a,the这类单词和其他的单词分开,也就是需要两个或多个分布来表示一个模型。
正如下图所展示的一样,我们用了两个分布来生成一个文本挖掘的文档,选择将作为主题背景,作为主题。
此时假如文本中有一个单词‘the’,那么这个the的概率应该怎么算呢?
回顾一下,我们改变了原本使用一个词分布的模型,换为使用两个词分布的混合模型,以此来避免a,the这类单词的干扰
混合模型的评价
我们评价这个模型的效果的方法基本类似:
- 两个主题(主题,主题背景)
- 主题覆盖率
考虑一下极端情况,其中一个模型的占比为0,即为0时,也就变回了我们之前的一元语言统计模型。
计算方法
- 数据:文本d
- 混合模型:参数
- 两个一元模型:(主题背景),(主题)
- 混合的权重(模型选择):
- 最大似然法(Likelihood):
- 最大似然法的评估
参数估计
我们要怎么计算混合模型的参数呢?(用最大似然法找最大的参数)
思路:
我们先设背景分布已知,现在主要知道后,就可以知道混合模型的参数值了。
如下一个文本,只有两个单词“text”,“the”,设背景中词的分布为the占 0.9 的比例,text占 0.1 的比例,它们的似然值也如下图中所示:
现在只要求使得最大的参数就可以了,实际上就是式子取得最大值的时候.
想想数学老师也说过,两个实数和一定时(text的概率和the的概率之和为1),两个数相等时乘积最大。
所以这样就可以计算“the”在中占比为0.1,“text”在中占比为0.9。
特征
第一个特征
有上面的参数估计的例子中我们也不难看出,如果一个词在背景模型中的概率大,那么它在主题模型中的概率就小
这也是混合模型的第一个特征。
第二个特征
想想要是文档中还是只有the和text两种单词,但是the出现的次数增多,那么在中the的概率会怎么变化
像下图这种情况:
现在在主题的词分布中单词“the”的概率是大于0.1还是小于0.1呢?
答案是现在主题词分布的“the”的概率是大于0.1的,这也是混合模型的第二个特征:文档中出现次数高的单词会在主题词分布中有较高的概率
或许你会问:如果我还想要单词“the”不增加那么多,或者就算“the”出现很多次,我还想要“the”出现的概率和“text”的出现的概率差不多是1:9应该怎么办呢?
答案是增加的权重,直观的理解一下就是像是一个斥力,来控制像“the”这类的单词不要太跑偏。
混合模型小结
一元混合模型就是有两个词分布组成的模型,一个背景,一个主题
计算的方法就是用最大似然法使得参数最大,这里的文本数据比较简单,下一节将介绍使用最大期望方法求参数
-
混合模型有两个特征
- 1.背景中出现概率高的词在主题中出现的概率小
- 2.如果一个词在文本中出现概率高,那么在主题中出现的概率也高。背景词分布相当于一个斥力,增加其权重相当于增加斥力,使得主题模型往其相反的分布靠近。
最大期望算法(EM)
由于我们在上面的混合模型中假设了文档中的数据特别简单,只有“the”和“text”,所以可以直观的看出混合模型的特征,真正的文档中数据比较复杂,所以我们需要一个方法来计算参数。EM算法就是常用的一个。
再想想我们这个问题,我们主要是想知道的分布,因为的分布已经人为规定了。
如果我们知道哪些单词属于中,那么它的概率不就很清楚了吗?
于是我们就成功将问题转化为了寻找哪些单词属于的问题。
具体一点就是说,如果我拿到一个单词“text”,我怎么知道它属于哪一个分布呢?是属于还是呢?
先随机给出初始化的主题模型词分布的所有参数
这里我们首先引入隐藏变量Z,在这个一元混合模型中也就是当Z=0时代表单词来自于,当Z=1时代表单词来自于。
从上图左下角可以看出,单词“text”属于主题词分布的概率是
EM算法的计算步骤
EM算法故名思议可以分为两步:E和M
在上面我们已经讲过EM算法需要初始化中词分布的概率,这样我们的两步具体就是:
E-step
- 根据初始化中的词分布的概率,计算每个词属于的概率,即(注意此时这些概率只和可不是1,因为不为1)——也就是计算期望步骤
M-step
- 一个确定分布总这些词的概率之和本应该是1(即为1),所以根据他们已得的概率分配在中的占比——也就是最大化过程
举个具体栗子:
上图展示了EM算法迭代三次的结果:
首先我们初始化中词分布是平均概率,为0.25,拿“text”词来看,出现4次,属于的概率是0.71(E-step),重新分配后占比为0.44(M-step),以此类推
似然值也是不断增加
类似于梯度下降算法,上图展示了似然值不断“爬山”的过程,当然也会可能陷入局部最大值,这取决于初始化的值。
EM算法总结
当一个文档中单词太多我们就无法直观的看出主题词分布了,此时EM算法是一个比较好的方法来不断使得似然值增大,当增加的不明显时,我们可认为已经达到了局部最大值
- 分为两步:即E-step求期望,M-step来最大化
- 这是一元(即一个主题)的情况,如果主题数量增加,可先对每个主题处理。对于单个主题EM算法依然有效
PLSA算法
PLSA即概率潜在语义分析
与上面的所讲的一元混合模型不同的是在PLSA中有很多主题,其实计算方法基本上是再加上不同主题的处理
k个主题下我们模型变为:
- 输入:文本集合C,k个主题,单词的集合V
- 输出:主题,主题覆盖率
PLSA认为上帝在写文章时先以一定概率选择了一个主题,然后在这主题下以一定概率选择了一个词,重复这个过程就完成了一篇文章
PLSA作为生成模型生成单词的概率如下:
正如上图所展示的,在k个主题情况下,我们生成单词w的概率是上图黄色标注出来的式子之和。请确保先理解这点,这是接下来顺利进行的关键
其中为背景比重,为主题的比重
我们可以得到上面的计算公式
用EM算法求解PLSA中的参数
E-step
我们一共有K+1个隐藏变量
上图展示了单词属于主题j的概率和属于背景的概率
计算得满足两个条件:
1.一个文档中主题覆盖率之和为1
2.一个主题中所有单词的占比之和为1
M-step
PLSA算法总结
相比于一元混合模型而言,我们将主题增加了k个,这就意味着我们得考虑主题覆盖率和不同主题的情况
依然用EM算法来寻找最优解
LDA算法
潜在狄利克雷分配
实际上LDA算法是PLSA的一个扩展,PLSA的扩展分为两种:
1. 用户控制的PLSA
自定义一个分布,这个分布中包含用户偏爱的词,由此对单词进行一定筛选作用
正如上图所看到的一样,我们增加了一个分布,并偏爱“battery”和“life”两个单词,这个分布会在M-step更新概率的时候使用,并为“battery”和“life”两个单词增加概率使得其更为重要。
其中u为一个系数,当u为0时相当于没有偏爱,当u趋近于无穷大时,相当于只有“battery”和“life”的新增分布。
2 .LDA
LDA为文档覆盖率和主题都设置了先验概率
LDA的计算过程答题与PLSA类似,但为文档覆盖率和主题都设置了先验概率
概率主题模型总结
一个模型中包含各种词的概率分布
输入:文本集合C,k个主题,单词的集合V
输出:主题,主题覆盖率
用EM算法来求得是的似然值最大的参数
PLSA算法是一个基本的主题模型,可包含多个主题
LDA是PLSA的一个扩展,允许设置主题的先验概率和主题覆盖率的先验概率