LDA主题模型和Gibbs Sampling 学习整理

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/suibianti/article/details/56843994

目录

LDA主题模型和Gibbs Sampling 学习整理

LDA主题模型模型我主要参考的是LDA数学八卦通俗理解LDA主题模型主题模型-LDA浅析进行学习和理解的。非常感谢他们的分享。


LDA模型

Dirichlet-Multinomial共轭

LDA必须要理解这个共轭结构,其实也没什么难的,就是下面的公式:

Dirichlet+Dirichlet

Dir(p|α)+Mult(n|p,N)=Dir(p|α+n)

通俗的来说,就是LDA数学八卦所举的例子,从一个坛子里面的抽出一个骰子,然后根据骰子的面来组成语料库,那么坛子里面的骰子的分布就是先验分布,我们这里假设其为Dirichlet分布(相信为了方便起见,你不会使用其他先验分布),那么不断投掷骰子得到的语料库我们认定其为多项分布,那么根据我们不断投掷的结果,我们可以用贝叶斯公式很轻松的得到坛子里面骰子的分布,很巧的是,后验分布也是Dirichlet分布(这个是你就会明白假设先验分布为Dirichlet分布的好处了)。就是,先验分布都是Dirichlet分布,抽样分布为多项分布的特点我们称其为Dirichlet-Multinomial共轭。


LDA模型

引用自通俗理解LDA主题模型

首先必须了解这两个物理过程:
αθmzm,n
表示使用参数α 生成了一个主题分布θm并且通过这个主题分布生成一个主题词 zm,n。还原为物理过程为:在生成第m篇文档的时候,先从第一个坛子中抽取了一个doc-topic的骰子θm,然后投掷这个骰子生成了文档中第n个词的topic编号zm,n.
βφkωm,n|k=zm,n
表示使用参数β 和主题词zm,n生成了一个词汇分布φk并且通过这个词汇的分布生成了一个词汇ωm,n,其物理过程为:在K个topic-word骰子φk中,挑选编号为k=zm,n的那个骰子进行投掷,然后生成word ωm,n.

这里我们必须要注意到的是,编号为k的骰子其每个面的概率亦或者说,其分布是根据参数β决定的,与k没有关系,它只是指定一个topic而已,与词汇的生成无关。也就说这两个物理过程是完全独立的.明白这一点很重要!!!

对于每篇文档m来说,

θm=(θ(1)m,θ(2)m,,θ(k)m,,θ(K)m)

代表doc-topic骰子每个面的概率
nm=(n(1)m,n(2)m,,n(k)m,,n(K)m)

代表每个面出现的次数,也就是topic出现的次数。那么文档m对应的概率分布为:Mult(nm|θm,Vm)
同理,对于每个topic k来说,

代表topic-word骰子每个面的概率

代表每个面出现的次数,也就是每个单词的个数,那么topic k对应的概率分布为Mult(nk|φk,Vk)
其次利用Dirichlet-Multinomial共轭来解释这两个物理过程
针对第一个物理过程αθmzm,n
我们应该这样看待这个物理过程,把语料库按文档进行分组,然后为每个文档抽取Km个topics
我们认为αθmzm表示生成第m篇文档中的所有词对应的topics,并且有αθm对应Dirichlet分布,θmzm 对应Multinomial分布。
这里的θm是贝叶斯派所假设的变量,表示doc-topic骰子的每个面出现的概率,一共存在K个面。θm看成一个骰子,重复投掷Km次。θm就是第m篇文档的主题分布
θm=(θ(1)m,θ(2)m,,θ(k)m,,θ(K)m)

其分布p(θm|α)=Dir(θm|α)α是一个先验参数。
而经过抽样,这个抽样样本正好符合多项分布,即p(nm)=Multinomial(nm|θm,Km),K_m代表取样次数,这里指第m篇文档抽取topic的总数,也就是实验的次数,nm代表每个topic出现的频率
nm=(n(1)m,n(2)m,,n(k)m,,n(K)m)

经过抽样之后呢,θm的分布就发生了变化,变成了后验分布p(θm|nm)=Dir(θm|nm+α)
综上则有
Dir(θm|α)+Mult(nm|θm,Km)=Dir(θm|nm+α)
处理第二个物理过程时,我们需要将 βφkωm,n|k=zm,n 转换为 βφkωk(具体过程参考LDA数学八卦)。我们应该这样看待这个物理过程,把语料库按topics进行分组,然后为每个topic抽取Vk个词汇
我们认为βφkωk 表示生成第k个topic的所有单词,并且βφk 对应Dirichlet分布,φkωk 对应Multinomial分布
φk是贝叶斯派所假设的变量,表示topic-doc骰子每个面出现的概率,一共存在V个面。φk看成一个骰子,重复投掷Vk次。φk就是第k个topic的词分布
φk=(φ(1)k,φ(2)k,,φ(v)k,,φ(V)k)

其分布为p(φk|β)=Dir(φk|β).β只是一个先验参数。
而经过抽样,这个抽样正好符合多项分布,即p(nk)=Mult(nk|φk,Vk),Vk代表的是第k个topic抽取单词的个数,也是实验的次数,nk代表每个单词出现的频率。
nk=(n(1)k,n(2)k,,n(v)k,,n(V)k)

综上则有
Dir(φk|β)+Mult(nk|φk,Vk)=Dir(φk|nk+β)

V代表取样次数,这里特指语料库词汇的总数
nk=(n(1)k,n(2)k,,n(t)k,,n(V)k) 其中n(t)k 表示在V词取样中的词word=t的个数。

LDA公式推导

到这里,我们的需要的材料基本就足够了。
p(ω,z|α,β)
(1)=p(ω|z,β)p(z|α)
(2)=Kk=1p(ωk|zk,β)Mm=1p(zm|α)
(3)=Kk=1p(ωk|β)Mm=1p(zm|α)
(4)=Kk=1p(ωk|φk)p(φk|β)dφkMm=1p(zm|θm)p(θm|α)dθm
(5)=Kk=1Mult(nk|φk,Vk)Dir(φk|β)dφk
Mm=1Mult(nm|θm,Km)Dir(θm|α)dθm
(6)=Kk=1Vki=1φiknik1Δ(β)Vki=1φikβi1dφkMm=1Kmi=1θimnim1Δ(α)Kmi=1θimαi1dθk
(7)=Kk=11Δ(β)Vki=1φiknik+βi1dφkMm=11Δ(α)Kmi=1θimnim+αi1dθm
(8)=Kk=1Δ(nk+β)Δ(β)Mm=1Δ(nm+α)Δ(α)

看到这么多公式请不要害怕,我们将其一一分解就简单了很多
首先(5)~(8)属于计算问题,只要将其满足的分布带入公式即可,其余就剩下计算部分了。
按多项式分布概率计算公式来说Mult(nm|θm,Km)=(Kmnm)Ki=1mθimnim,但是(Kmnm) 在词袋模型中并没有任何意义,因为topics之间是相互独立,并无顺序可言。故
Mult(nm|θm,Km)=i=1Kmθimnim

表示在第m篇文档中,topics的概率分布为多项分布
Dir(θm|α)=1Δ(α)Kmi=1θimαi1,其中
Δ(α)=i=1Kmφimαi1dφm

同理
Mult(nk|φk,Vk)=i=1Vkφikβi1

表示在k个topic中,words的概率分布为多项分布,words之间也没有顺序可言。
Dir(φk|β)=1Δ(β)Vmi=1nikβi1,其中
Δ(β)=i=1Vkθimβi1dθm

接下来是(1)~(4)部分

我认为从公式(2)推导到(3)时候

p(ωk|zk,β)p(ωk|zk,β)

有人可能会问zk 去哪了?它是怎么消失的呢?这里LDA数学八卦里面具体解释原因,个人猜想是因为这个时候不需要zk,因为在将 βφkωm,n|k=zm,n 转换为 βφkωk的时候,我们就考虑文档,只考虑在每个topic中词汇的分布,那么zk也就是失去了其概率意义,故而此处省略不计。


LDA总结

至此我们得到了LDA模型:(好干净的公式,不是吗?)

p(ω,z|α,β)=p(ω|z,β)p(z|α)

=k=1KΔ(nk+β)Δ(β)m=1MΔ(nm+α)Δ(α)


Gibbs Sampling

这里我不介绍Gibbs Sampling的原理,详细请参考LDA数学八卦

我们要明确的是Gibbs Sampling的真正采样的分布是p(z|ω)
根据Gibbs Sampling算法的要求,我们要求得任一个坐标轴i对应的条件分布p(zi=k|z¬i,ω)。假设已经观测到的词ωi=t,则由贝叶斯法则,我们很容易得到(别问我,我也不知道怎么容易得到的,)
p(zi=k|z¬i,ω)p(zi=k,ωi=t|z¬i,ω¬i)

上述公式的推算会涉及到两个Dirichlet-Multinomial共轭结构
αθmzm

βφkωk

所以θm,φk的后验分布都是Dirichlet分布,即
p(θm|z¬i,ω¬i)=Dir(nm,¬i+α)

p(φk|z¬i,ω¬i)=Dir(nk,¬i+β)

Gibbs Sampling 公式推算

p(zi=k|z¬i,ω)p(zi=k,ωi=t|z¬i,ω¬i)
=p(zi=k,ωi=t,θm,φ|z¬i,ω¬i)dθmdφk
=p(zi=k,θm|z¬i,ω¬i)p(ωi=t,φk|z¬i,ω¬i)dθmdφk
=p(zi=k|θm)p(θm|z¬i,ω¬i)p(ωi=t|φk)p(φk|z¬i,ω¬i)dθmdφk
=p(zi=k|θm)Dir(θm|nm,¬i+α)dθmp(ωi=t|φ)Dir(φ|nk,¬i)dφk
=θm,kDir(θm|nm,¬i+α)dθmφk,tDir(φ|nk,¬i)dφk
=E(θm,k)E(φ(k,t)
=θ^m,kφ^k,t

Dirichlet参数估计公式,详见通俗理解LDA

θ^m,k=nkm,¬i+αkKk=1(nkm,¬i+αk)

φ^k,t=ntk,¬i+βtVt=1(ntk,¬i+βt)

最终我们得到了LDA模型的Gibbs Sampling公式:
p(zi=k|z¬i,ω)nkm,¬i+αkKk=1(nkm,¬i+αk)ntk,¬i+βtVt=1(ntk,¬i+βt)

好了,文章到此结束了,LDA学的不是很扎实,文章表述可能也有不清楚的地方,哪里有不正之处,还请赐教。这是我的邮箱 hzsong@outlook.com

展开阅读全文

没有更多推荐了,返回首页