码迷,mamicode.com
首页 > 其他好文 > 详细

TopicModel - PLSA模型及PLSA的EM推导

时间:2015-01-09 22:26:13      阅读:347      评论:0      收藏:0      [点我收藏+]

标签:em   lsa   plsa   

http://blog.csdn.net/pipisorry/article/details/42560877

基于概率统计的PLSA模型,用EM算法学习模型参数。

PLSA的概率图模型如下

技术分享

其中D代表文档,Z代表隐含类别或者主题,W为观察到的单词,技术分享表示单词出现在文档技术分享的概率,技术分享表示文档技术分享中出现主题技术分享下的单词的概率,技术分享给定主题技术分享出现单词技术分享的概率。并且每个主题在所有词项上服从Multinomial 分布,每个文档在所有主题上服从Multinomial 分布。

整个文档的生成过程:

(1) 以技术分享的概率选中文档技术分享

(2) 以技术分享的概率选中主题技术分享

(3) 以技术分享的概率产生一个单词。

我们可以观察到的数据就是技术分享对,而技术分享是隐含变量。

技术分享的联合分布为技术分享

技术分享技术分享分布对应了两组Multinomial 分布,我们需要估计这两组分布的参数。下面给出用EM算法估计PLSA参数的详细推导过程。


Estimate parameters in PLSA  by EM

文本语言模型的参数估计-最大似然估计、MAP及贝叶斯估计一文所述,常用的参数估计方法有MLE、MAP、贝叶斯估计等等。

但是在PLSA中,如果我们试图直接用MLE来估计参数,就会得到似然函数

技术分享    ( p(di)是无关常量 )

其中技术分享是单词技术分享出现在文档技术分享中的次数。

注意这是一个关于技术分享技术分享的函数,一共有N*K + M*K个自变量,如果直接对这些自变量求偏导数,我们会发现由于自变量包含在对数和中,这个方程的求解很困难。因此对于这样的包含“隐含变量”或者“缺失数据”的概率模型参数估计问题,我们采用EM算法。

EM算法的步骤是:

(1)E步骤:求隐含变量Given当前估计的参数条件下的后验概率。

(2)M步骤:最大化Complete data对数似然函数的期望,此时我们使用E步骤里计算的隐含变量的后验概率,得到新的参数值。

两步迭代进行直到收敛。

[在PLSA中,Incomplete data 是观察到的技术分享,隐含变量是主题技术分享,那么complete data就是三元组技术分享]

针对我们PLSA参数估计问题

在E步骤中,直接使用贝叶斯公式计算隐含变量在当前参数取值条件下的后验概率,有

技术分享

在这个步骤中,我们假定所有的技术分享技术分享都是已知的,因为初始时随机赋值,后面迭代的过程中取前一轮M步骤中得到的参数值。

在M步骤中,我们最大化Complete data对数似然函数的期望。其期望是

技术分享

注意这里技术分享是已知的,取得是前面E步骤里面的估计值。下面我们来最大化期望,这又是一个多元函数求极值的问题,可以用拉格朗日乘数法。拉格朗日乘数法可以把条件极值问题转化为无条件极值问题,在PLSA中目标函数就是技术分享,约束条件是

技术分享

由此我们可以写出拉格朗日函数

技术分享

这是一个关于技术分享技术分享的函数,分别对其求偏导数,我们可以得到

技术分享

注意这里进行过方程两边同时乘以技术分享技术分享的变形,联立上面4组方程,我们就可以解出M步骤中通过最大化期望估计出的新的参数值

技术分享

解方程组的关键在于先求出技术分享,其实只需要做一个加和运算就可以把技术分享的系数都化成1,后面就好计算了。

然后使用更新后的参数值,我们又进入E步骤,计算隐含变量技术分享 Given当前估计的参数条件下的后验概率。如此不断迭代,直到满足终止条件。

注意到我们在M步骤中还是使用对Complete Data的MLE,那么如果我们想加入一些先验知识进入我们的模型,我们可以在M步骤中使用MAP估计。正如文本语言模型的参数估计-最大似然估计、MAP及贝叶斯估计中投硬币的二项分布实验中我们加入“硬币一般是两面均匀的”这个先验一样。而由此计算出的参数的估计值会在分子分母中多出关于先验参数的preduo counts,其他步骤都是一样的。具体可以参考Mei Qiaozhu 的Notes

PLSA的实现也不难,网上有很多实现code。

4 Estimate parameters in a simple mixture unigram language model by EM

在PLSA的参数估计中,我们使用了EM算法。EM算法经常用来估计包含“缺失数据”或者“隐含变量”模型的参数估计问题。这两个概念是互相联系的,当我们的模型中有“隐含变量”时,我们会认为原始数据是“不完全的数据”,因为隐含变量的值无法观察到;反过来,当我们的数据incomplete时,我们可以通过增加隐含变量来对“缺失数据”建模。

为了加深对EM算法的理解,下面我们来看如何用EM算法来估计一个简单混合unigram语言模型的参数。本部分主要参考Zhai老师的EM算法Notes

4.1 最大似然估计与隐含变量引入

所谓unigram语言模型,就是构建语言模型是抛弃所有上下文信息,认为一个词出现的概率与其所在位置无关,具体概率图模型可以参见LDA及Gibbs Samping一文中的介绍。什么是混合模型(mixture model)呢?通俗的说混合概率模型就是由最基本的概率分布比如正态分布、多元分布等经过线性组合形成的新的概率模型,比如混合高斯模型就是由K个高斯分布线性组合而得到。混合模型中产生数据的确切“component model”对我们是隐藏的。我们假设混合模型包含两个multinomial component model,一个是背景词生成模型技术分享,另一个是主题词生成模型技术分享。注意这种模型组成方式在概率语言模型中很常见,比如在TwitterLDA中使用的背景词和主题词两个多元分布;TimeUserLDA中使用的Global Topic 和Personal Topic两个多元分布,都是这类模型。为了表示单词是哪个模型生成的,我们会为每个单词增加一个布尔类型的控制变量。

文档的对数似然函数为

技术分享

技术分享为第i个文档中的第j个词,技术分享为表示文档中背景词比例的参数,通常根据经验给定。因此技术分享是已知的,我们只需要估计技术分享即可。

同样的我们首先试图用最大似然估计来估计参数。也就是去找最大化似然函数的参数值,有

技术分享

这是一个关于技术分享的函数,同样的,技术分享包含在了对数和中。因此很难求解极大值,用拉格朗日乘数法,你会发现偏导数等于0得到的方程很难求解。所以我们需要依赖数值算法,而EM算法就是其中常用的一种。

我们为每个单词引入一个布尔类型的变量z表示该单词是background word 还是topic word.即

技术分享

这里我们假设”complete data”不仅包含可以观察到F中的所有单词,而且还包括隐含的变量z。那么根据EM算法,在E步骤我们计算“complete data”的对数似然函数有

技术分享

比较一下技术分享技术分享,求和运算在对数之外进行,因为此时通过控制变量z的设置,我们明确知道了单词是由背景词分布还是topic 词分布产生的。技术分享技术分享的关系是怎样的呢?如果带估计参数是技术分享,原始数据是X,对于每一个原始数据分配了一个隐含变量H,则有

技术分享

技术分享

4.2 似然函数的下界分析

EM算法的基本思想就是初始随机给定待估计参数的值,然后通过E步骤和M步骤两步迭代去不断搜索更好的参数值。更好的参数值应该要满足使得似然函数更大。我们假设一个潜在的更好参数值是技术分享,第n次迭代M步骤得到的参数估计值是技术分享,那么两个参数值对应的似然函数和”complete data”的似然函数的差满足

技术分享

我们寻找更好参数值的目标就是要最大化技术分享,也等价于最大化技术分享。我们来计算隐含变量在给定当前数据X和当前估计的参数值技术分享条件下的条件概率分布即技术分享,有

技术分享

其中右边第三项是技术分享技术分享的相对熵,总为非负值。因此我们有

技术分享

技术分享

于是我们得到了潜在更好参数值技术分享的incomplete data似然函数的下界。这里我们尤其要注意右边后两项为常数,因为不包含技术分享。所以incomplete data似然函数的下界就是complete data似然函数的期望,也就是诸多EM算法讲义中出现的Q函数,表达式为

技术分享

可以看出这个期望等于complete data似然函数乘以对应隐含变量条件概率再求和。对于我们要求解的问题,Q函数就是

技术分享

这里多解释几句Q函数。单词相应的变量z为0时,单词为topic word,从多元分布技术分享中产生;当z为1时,单词为background word,从多元分布技术分享产生。同时我们也可以看到如何求Q函数即complete data似然函数的期望,也就是我们要最大化的那个期望(EM算法最大化期望指的就是这个期望),我们要特别关注隐含变量在观察到数据X和前一轮估计出的参数值技术分享条件下取不同值的概率,而隐含变量不同的值对应complete data的不同的似然函数,我们要计算的所谓的期望就是指complete data的似然函数值在不同隐含变量取值情况下的期望值。

4.3 EM算法的一般步骤

通过4.2部分的分析,我们知道,如果我们在下一轮迭代中可以找到一个更好的参数值技术分享使得

技术分享

那么相应的也会有技术分享,因此EM算法的一般步骤如下

(1) 随机初始化参数值技术分享,也可以根据任何关于最佳参数取值范围的先验知识来初始化技术分享

(2) 不断两步迭代寻找更优的参数值技术分享

(a) E步骤(求期望) 计算Q函数

技术分享

(b)M步骤(最大化)通过最大化Q函数来寻找更优的参数值技术分享

技术分享

(3) 当似然函数技术分享收敛时算法停止。

这里需要注意如何尽量保证EM算法可以找到全局最优解而不是局部最优解呢?第一种方法是尝试许多不同的参数初始值,然后从得到的很多估计出的参数值中选取最优的;第二种方法是通过一个更简单的模型比如只有唯一全局最大值的模型来决定复杂模型的初始值。

通过前面的分析可以知道,EM算法的优势在于complete data的似然函数技术分享更容易最大化,因为已经假定了隐含变量的取值,当然要乘以隐含变量取该值的条件概率,所以最终变成了最大化期望值。由于隐含变量变成了已知量,Q函数比原始incomplete data的似然函数更容易求最大值。因此对于“缺失数据”的情况,我们通过引入隐含变量使得complete data的似然函数容易最大化。

在E步骤中,主要的计算难点在于计算隐含变量的条件概率技术分享,在PLSA中就是

技术分享

在我们这个简单混合语言模型的例子中就是

技术分享

技术分享

我们假设z的取值只于当前那一个单词有关,计算很容易,但是在LDA中用这种方法计算隐含变量的条件概率和最大化Q函数就比较复杂,可以参见原始LDA论文的参数推导部分。我们也可以用更简单的Gibbs Sampling来估计参数,具体可以参见LDA及Gibbs Samping

继续我们的问题,下面便是M步骤。使用拉格朗日乘数法来求Q函数的最大值,约束条件是

技术分享

构造拉格朗日辅助函数

技术分享

对自变量技术分享求偏导数

技术分享

令偏导数为0解出来唯一的极值点

技术分享

容易知道这里唯一的极值点就是最值点了。注意这里Zhai老师变换了一下变量表示,把对文档里面词的遍历转化成了对词典里面的term的遍历,因为z的取值至于对应的那一个单词有关,与上下文无关。因此E步骤求隐含变量的条件概率公式也相应变成了

技术分享

最后我们就得到了简单混合Unigram语言模型的EM算法更新公式

即E步骤 求隐含变量条件概率和M步骤 最大化期望估计参数的公式

技术分享

整个计算过程我们可以看到,我们不需要明确求出Q函数的表达式。取而代之的是我们计算隐含变量的条件概率,然后通过最大化Q函数来得到新的参数估计值。

因此EM算法两步迭代的过程实质是在寻找更好的待估计参数的值使得原始数据即incomplete data似然函数的下界不断提升,而这个“下界“就是引入隐含变量之后的complete data似然函数的期望,也就是诸多EM算法讲义中出现的Q函数,通过最大化Q函数来寻找更优的参数值。同时,上一轮估计出的参数值会在下一轮E步骤中当成已知条件计算隐含变量的条件概率,而这个条件概率又是最大化Q函数求新的参数值是所必需的。



from:http://blog.csdn.net/pipisorry/article/details/42560877

ref:TopicModel - EM算法


TopicModel - PLSA模型及PLSA的EM推导

标签:em   lsa   plsa   

原文地址:http://blog.csdn.net/pipisorry/article/details/42560877

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!