机器学习主题模型之LDA参数求解——Gibbs采样

 

LDA参数推导的Gibbs采样方法基于马尔科夫链蒙特卡洛方法,因此首先学习MCMC方法。

一、马尔科夫链蒙特卡洛方法

MCMC(Markov Chain Monte Carlo)方法是构造适合的马尔科夫链,使其平稳分布为待估参数的后验分布,抽样并使用蒙特卡洛方法进行积分计算,实现了抽样分布随模拟的进行而改变的动态模拟,弥补了传统蒙特卡洛积分只能静态模拟的缺陷。

1、蒙特卡洛方法

蒙特卡洛方法是以概率统计的理论方法为基础的一种数值计算方法,将所要求解的问题同一定的概率模型相联系,用计算机实现统计模拟或抽样,以获得问题的近似解,故又称随机抽样法或统计试验法。这种方法求得的是近似解,对于一些复杂问题往往是唯一可行的方法,模拟的样本数越大越接近真实值,但同时计算量也大幅上升。

蒙特卡洛方法的三个步骤:

(1)构造/描述概率过程

对于本身就具有随机性质的问题,如粒子运输问题,只要正确描述和模拟这个概率过程即可;对于本来不是随机性质的确定性问题,如定积分计算,就需要构造一个人为的概率过程,将不具有随机性质的问题转化为随机性质的问题。

例如要求f(x)在[a,b]上的积分,但原函数F(x)难以求解;如果可以得到x在[a,b]上的概率分布函数p(x),则定积分可以近似求解为:

        机器学习主题模型之LDA参数求解——Gibbs采样

(2)实现从已知概率分布中抽样

构造概率模型后,就可以基于概率分布去采样所需的n个x的样本集,带入求和式子即可求解。最基本的一个概率分布是(0,1)上的均匀分布,可以使用线性同余发生器LCG生成伪随机数样本:

        x:=(a*x+c)%m,  0<a<m, 0≤c<m, m>0

对于一些常见的连续分布,如正态分布、t分布、F分布、Beta分布、机器学习主题模型之LDA参数求解——Gibbs采样分布等都可以通过uniform(0,1)的样本转换而得。

对于不是常见的分布,可以使用接受-拒绝采样来得到该分布的样本,即使用一个可以采样的分布q(x)与一个常数c相乘后,使得真实分布总在cq(x)曲线的下方。

        机器学习主题模型之LDA参数求解——Gibbs采样

重复以下步骤直到获得n个被接受的采样点:

        ①从cq(x)中获得一个随机采样点机器学习主题模型之LDA参数求解——Gibbs采样,值为机器学习主题模型之LDA参数求解——Gibbs采样

        ②计算接受概率acceptance probability:机器学习主题模型之LDA参数求解——Gibbs采样

        ③从uniform(0,1)中随机生成一个值u,如果ɑ≥u,则接受采样机器学习主题模型之LDA参数求解——Gibbs采样,否则拒绝机器学习主题模型之LDA参数求解——Gibbs采样并回到第一步。

从图上可以看出,cq(x)与p(x)曲线接近的地方接受概率较高,所以这样的地方采到的点就会比较多;而在接受概率较低的、差距较大的地方采到的点就会比较少,这也就保证了这个方法的有效性。

(3)建立各种估计量。

在构造了概率模型并从中抽样后,就可以确定一个随机变量,作为所要求问题的解——无偏估计。建立各种估计量,相当于对模拟实验的结果进行考察和登记,从中得到问题的解。

 

2、马尔科夫链

当后验分布的样本相互独立时,可以使用大数定律求解;当样本不独立时,就要使用马尔科夫链的平稳分布进行抽样。

对于一个非周期的马尔科夫链,任何两个状态i,j∈E是相通的(不可约),那么它的状态转移概率的极限存在且与i无关,则称此马尔科夫链具有遍历性:机器学习主题模型之LDA参数求解——Gibbs采样,此时若满足机器学习主题模型之LDA参数求解——Gibbs采样,则称机器学习主题模型之LDA参数求解——Gibbs采样 为转移概率的极限分布。

平稳分布:若有限或无限数列机器学习主题模型之LDA参数求解——Gibbs采样 满足机器学习主题模型之LDA参数求解——Gibbs采样,则称它是概率分布;如果此概率分布满足机器学习主题模型之LDA参数求解——Gibbs采样,则称它是平稳分布。

有限马尔科夫链转移概率的极限分布一定是平稳分布;无限马尔科夫链转移概率的极限分布不一定是平稳分布。

在得到平稳分布的马尔科夫链状态转移矩阵后,就可以从这个平稳分布中采样蒙特卡洛方法所需的样本集了。

 

        机器学习主题模型之LDA参数求解——Gibbs采样

 

3、Metropolis-Hastings算法

对不满足细致平稳条件的马尔科夫链状态转移矩阵p,引入ɑ(i,j)使其可以取等号,即得到满足条件的目标矩阵P:

        机器学习主题模型之LDA参数求解——Gibbs采样

ɑ(i,j)∈[0,1]称为接受率,P可以通过任意一个马尔科夫链状态转移矩阵p乘以ɑ(i,j)得到,注意每次转移后需要归一化矩阵使得每一行之和为1。但由于ɑ(i,j)可能非常小,导致大部分采样都被拒绝转移,马尔科夫链需要采样很多次才能收敛,采样效率很低。

MH采样将接受率做了如下改进,解决了接受率过低的问题:

        机器学习主题模型之LDA参数求解——Gibbs采样

MH算法在特征很多的情况下,接受率的计算量很大;且在特征维度很高,难以求出特征的联合概率分布,只能得到特征之间的条件概率分布时,需要采取Gibbs采样的方法解决这类问题。

        机器学习主题模型之LDA参数求解——Gibbs采样

 

4、Gibbs Sampling

马尔科夫链通过转移概率矩阵可以收敛到稳定的概率分布,这意味着MCMC可以借助马尔科夫链的平稳分布特性模拟高维概率分布p(x);当马尔科夫链经过burn-in阶段,消除初始参数的影响、达到平稳状态后,每一次状态转移都可以生成待模拟分布的一个样本。

Gibbs采样是MCMC算法的一个特例,只对2维以上的情况有效,它交替随机固定某一维度,通过其他维度的值来抽样该维度的值。设p(x,y)是一个二维的联合概率分布,由下图可知:

        机器学习主题模型之LDA参数求解——Gibbs采样

        机器学习主题模型之LDA参数求解——Gibbs采样

        机器学习主题模型之LDA参数求解——Gibbs采样

        机器学习主题模型之LDA参数求解——Gibbs采样   

所以在 机器学习主题模型之LDA参数求解——Gibbs采样 这条直线上,如果用条件概率分布 机器学习主题模型之LDA参数求解——Gibbs采样 作为马尔科夫链的状态转移概率,则任意两个点之间的转移满足细致平稳条件;在机器学习主题模型之LDA参数求解——Gibbs采样 这条直线上也是如此。Gibbs采样和MH的不同之处在于,MH只是单独考虑某两个状态的采样(相当于直接从A到D),而Gibbs采样是沿着不同维度进行轮换采样的,且接受率ɑ=1 是MH算法的特例情况。最终的近似平稳分布可以通过采样结果机器学习主题模型之LDA参数求解——Gibbs采样 近似表达。

               机器学习主题模型之LDA参数求解——Gibbs采样

 

二、Gibbs采样算法求解LDA思路

在Gibbs采样算法求解LDA的方法中,假设α、η是已知的先验输入,目的是推断隐变量的分布,即估计p(θ,z,β,w|ɑ,η),可以通过对θ、β积分将它们边缘化去掉,这种方法称为collapse Gibbs sampling。

        机器学习主题模型之LDA参数求解——Gibbs采样

        机器学习主题模型之LDA参数求解——Gibbs采样

        机器学习主题模型之LDA参数求解——Gibbs采样

假设每篇文档长度N相同,分别考虑θ、β这两部分的积分,令机器学习主题模型之LDA参数求解——Gibbs采样 代表第m篇文档中分配给第k个主题的词的个数,对应的多项分布的计数为:机器学习主题模型之LDA参数求解——Gibbs采样

        机器学习主题模型之LDA参数求解——Gibbs采样

先对θ部分进行计算,根据α→θ→z的Dir-Mult共轭分布关系,省略M的连乘可得:

        机器学习主题模型之LDA参数求解——Gibbs采样

根据Dirichlet分布的积分性质可知:

        机器学习主题模型之LDA参数求解——Gibbs采样

因此θ部分积分可化为:

        机器学习主题模型之LDA参数求解——Gibbs采样

 

同样地,令机器学习主题模型之LDA参数求解——Gibbs采样 代表第k个主题对应词典中第v个词的词个数,对应的多项分布的计数为:机器学习主题模型之LDA参数求解——Gibbs采样,可将β部分的积分写为:

        机器学习主题模型之LDA参数求解——Gibbs采样

最终得到主题和词的联合分布如下:

        机器学习主题模型之LDA参数求解——Gibbs采样

 

Gibbs采样的目标是接近分布p(z|w,ɑ,η),由于w,ɑ,η已知,令机器学习主题模型之LDA参数求解——Gibbs采样 表示第m篇文档的第n个词对应的主题,机器学习主题模型之LDA参数求解——Gibbs采样 代表z去掉机器学习主题模型之LDA参数求解——Gibbs采样 后的主题分布。

        机器学习主题模型之LDA参数求解——Gibbs采样

注意到Gibbs采样只需要为机器学习主题模型之LDA参数求解——Gibbs采样 采一个样,因此不用得到上式准确的值,只需得到机器学习主题模型之LDA参数求解——Gibbs采样 取值的比值即可,将上式简化为: 

        机器学习主题模型之LDA参数求解——Gibbs采样

        机器学习主题模型之LDA参数求解——Gibbs采样

        机器学习主题模型之LDA参数求解——Gibbs采样

        机器学习主题模型之LDA参数求解——Gibbs采样

        机器学习主题模型之LDA参数求解——Gibbs采样

Gibbs采样公式的物理意义就是在K条doc→topic→word的路径中进行采样,当采样收敛后可得所有词最终的主题z,统计每篇文档中的主题概率p(topic|doc)可得文档主题分布机器学习主题模型之LDA参数求解——Gibbs采样,统计每个主题中所有的词概率p(word|topic)可得主题词分布机器学习主题模型之LDA参数求解——Gibbs采样

        机器学习主题模型之LDA参数求解——Gibbs采样

 

三、LDA Gibbs采样算法流程总结

(1)选择适当的主题总数K,及LDA模型参数ɑ、η;

(2)对应文集中的每一篇文档的每个词w,随机赋予一个主题编号z;

(3)重新扫描文集,对每个词w使用Gibbs采样公式更新它的主题编号,并更新文集中的词;

(4)重复采样过程直至收敛;

(5)统计文集中topic-word共现频率矩阵,即可得到LDA模型。

通常训练LDA模型时,取Gibbs采样收敛之后的n个迭代的结果进行平均来做参数估计,这样模型质量更高。

 

当LDA模型训练好后,要确定一篇新文档的主题时,由于各个主题的词分布机器学习主题模型之LDA参数求解——Gibbs采样 已经确定,只需要对机器学习主题模型之LDA参数求解——Gibbs采样 进行采样计算即可。

选择适合的超参数K非常关键,对于简单的语义区分可选择较小的K,对于复杂的语义区分则选择较大的K,且需要足够多的语料。

Gibbs采样容易并行化,可以很方便的使用大数据平台来分布式地训练海量文档的LDA模型。

 

 

参考资料

https://en.wikipedia.org/wiki/Latent_Dirichlet_allocation

lda数学八卦

https://blog.csdn.net/pipisorry/article/details/51373090

http://www.cnblogs.com/pinard/p/6831308.html