LDA学习笔记---来自《Parameter estimation for text analysis》

来源:互联网 发布:学号 姓名 性别 sql 编辑:程序博客网 时间:2024/05/23 20:21

LDA学习笔记---来自《Parameter estimation for text analysis》

LDA的概率图如下图1所示:QQ截图20130312094645

参数的意思如图2所示:

QQ截图20130312094711
根据模型,文章m的第n个词为t的概率为:

p(wm,n=t|θ⃗ m,Φ)=k=1Kp(wm,n=t|ϕ⃗ k)p(zm,n=k|θ⃗ m)


如果我们写出complete-data的联合分布,那么式子就是这样的:

QQ截图20130312094748

通过对ϑm(文章的topic分布)和Φ(topic的词分布)积分以及zm,n求和,我们可以求得wm的边缘分布:

QQ截图20130312094757

因为一个语料库有很多篇文章,而且文章之间都是相互独立的,所以整个语料库的似然为

p(W|α⃗ ,β⃗ )=m=1Mp(wm|α⃗ ,β⃗ )

虽然LDA(latent Dirichlet allocation)是个相对简单的模型,对它直接推断一般也是不可行的,所以我们要采用近似推断的方法,比如Gibbs sampling。

Gibbs sampling

Gibbs sampling是MCMC(Markov-chain Monte Carlo)算法的一种特殊情况,经常用于处理高维模型的近似推断。MCMC方法可以通过马尔科夫链的平稳分布模拟高维的概率分布p(x⃗ )。当马尔科夫链经过了burn-in阶段,消除了初始参数的影响,进入平稳状态之后,它的每次转移都能生成一个p(x⃗ )的样本。Gibbs samppling 是MCMC的特殊情况,它每次固定一个维度的xi,然后通过其他维度的数据(x⃗ ¬i)生成这个维度的样本。算法如下:

  1. choose dimension i(random by permutation)。
  2. sample xi from p(xi|x⃗ ¬i)

为了构造Gibbs抽样,我们必须知道条件概率p(xi|x⃗ ¬i),这个概率可以通过以下公式获得:

p(xi|x⃗ ¬i)=p(xi,x⃗ ¬i)p(x⃗ ¬i)=p(xi,x⃗ ¬i)p(x⃗ )dxi


对于那些含有隐藏变量z⃗ 的模型来说,通常需要求得他们的后验概率p(z⃗ |x⃗ ),对于这样的模型,Gibbs sampler的式子如下:

p(zi|z⃗ ¬i,x⃗ )=p(z⃗ ,x⃗ )p(z⃗ ¬i,x⃗ )=p(z⃗ ,x⃗ )zp(z⃗ ,x⃗ )dxi


当样本zr~,r[1,R]的数量足够多时,隐藏变量的后验概率可以用以下式子来估计:

p(z⃗ |x⃗ )=1Rr=1Rδ(z⃗ zr~)


其中Kronecker delta δ(u⃗ )={1 if u⃗ =0;0 otherwise }

为了构造LDA的采样器,我们首先确定模型中的隐含变量为zm,n。而参数ΘΦ都可以用观察到的wm,n和对应的zm,n求积分得到。贝叶斯推断的目标是分布p(z⃗ |w⃗ ),它与联合分布成正比:

p(z⃗ |w⃗ )=p(z⃗ ,w⃗ )p(w⃗ )=Wi=1p(zi,wi)Wi=1Kk=1p(zi=k,wi)


这里忽略了超参数(hyperparameter)。可以看到分母部分十分难求,它包括了KW个项的求和。所以我们使用Gibbs Sample方法,通过全部的条件分布p(zi|z⃗ ¬i,w⃗ )来模拟得到p(z⃗ |w⃗ )

LDA的联合分布

LDA的联合分布可以写成如下的式子:

p(z⃗ ,w⃗ |α⃗ ,β⃗ )=p(w⃗ |z⃗ ,β⃗ )p(z⃗ |α⃗ )


因为式子中的第一部分与α独立,第二部分与β独立,所以两个式子可以分别处理。先看第一个分布p(w⃗ |z⃗ ),可以从观察到的词以及其主题的多项分布中生成:

p(z⃗ ,w⃗ ,Φ)=i=1Wp(wi|zi)=i=1Wφzi,wi


意思是,语料中的W个词是根据主题zi观察到的独立多项分布。(我们把每个词看做独立的多项分布产生的结果,忽略顺序因素,所以没有多项分布的系数)。φzi,wi是一个KV的矩阵,把词划分成主题和词汇表,公式如下:

p(z⃗ ,w⃗ ,Φ)=k=1Ki:zi=kp(wi=t|zi=k)=k=1Kt=1Vφn(t)kk,t


n(t)k代表了主题k下词t出现的次数。目标分布p(w⃗ |z⃗ ,β⃗ )可以通过对Φ求狄利克雷积分得到:

QQ截图20130312094831

类似地,主体分布p(z⃗ |a⃗ )也可以通过这种方法产生,ΘDK的矩阵,公式如下:

p(z⃗ |Θ)=i=1Wp(zi|di)=m=1Mk=1Kp(zi=k|di=m)=m=1Mk=1Kθn(k)mm,k


n(k)m代表了文章m下主题k出现的次数。对Θ求积分,我们得到:

QQ截图20130312094838

然后联合分布就变成了

p(z⃗ ,w⃗ |α⃗ ,β⃗ )=z=1KΔ(nz+β⃗ )Δ(β⃗ )m=1MΔ(nm+α⃗ )Δ(α⃗ )

完全条件分布(full conditional)

我们令i=(m,n)代表第m篇文章中的第n个词,¬i代表除去这个词之后剩下的其他词,令w⃗ ={wi=t,w⃗ ¬i}z⃗ ={zi=k,z⃗ ¬i},我们求得

QQ截图20130312094849

这个式子需要注意的:

  1. 因为忽略了p(wi)这个常数,所以后来的式子是成正比。
  2. 对于第m篇文章中的第n个词,其主题为k,n(t)k=n(t)k,¬i+1,n(k)m=n(k)m,¬i+1,对于其他文档和其他主题都没有影响。

这个公式很漂亮,右边是p(topic|doc)p(word|topic),这个概率其实就是doctopicword的路径概率,所以Gibbs Sampling 公式的物理意义就是在K条路径中采样。(图)

QQ截图20130312101904

多项分布参数

QQ截图20130312100040

QQ截图20130312100050

根据图3和图4的Dirichlet-Multinomial结构,我们知道θmϕk的后验概率为:(令M={w⃗ ,z⃗ })(备注1):

QQ截图20130312095426

最后,根据狄利克雷分布的期望<Dir(a⃗ )>=ai/iai(备注2),我们得到

ϕk,t=n(t)k+βtVt=1n(t)k+βt


θm,k=n(k)m+αkKk=1n(k)m+αk

最后,整个LDA算法的流程图为

QQ截图20130312094950
备注:
1.狄利克雷分布的后验概率公式:

QQ截图20130312100417
2.由于狄利克雷分布为:

Dir(p⃗ |α⃗ )=Γ(Kk=1αk)Kk=1Γ(αk)k=1Kpαk1k


对于p⃗ 中一项pi的期望为:

E(pi)=10piDir(p⃗ |α⃗ )dp=Γ(Kk=1αk)Γ(αi)Γ(αi+1)Γ(Kk=1αk+1)=αiKk=1αk


参考文献:
1.主要来自《Parameter estimation for text analysis》
2.《LDA数学八卦》
原创粉丝点击