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

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

LDA的概率图如下图1所示:

参数的意思如图2所示:


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

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


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

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

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

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⃗ ,β⃗ ) 可以通过对 Φ 求狄利克雷积分得到:

类似地,主体分布 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 出现的次数。对 Θ 求积分,我们得到:

然后联合分布就变成了

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} ,我们求得

这个式子需要注意的:

  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条路径中采样。(图)

多项分布参数

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

最后,根据狄利克雷分布的期望 <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算法的流程图为


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


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数学八卦》

你可能感兴趣的:(LDA)