LDA—主题模型

三、LDA

2.1 Unigram Model

假设我们的词典中一共有 V 个词,Unigram Model就是认为上帝按照下面游戏规则产生文本的。

添加描述

图2.1

骰子各个面的概率记为 →p=(p1,p2,⋅⋅⋅,pV),对于一篇文档 →w=(w1,w2,⋅⋅⋅,wn),生成该文档的概率为:

p(w1,w2,⋅⋅⋅,wn)=n∏i=1p(wi)(59)

假设我们预料是由 m 篇文档组成即 W=(→w1,→w2,⋅⋅⋅,→wm),每篇文档是相互独立的,则该预料的概率为:

p(W|→p)=n∏i=1p(→wi|→p)(60)

假设预料中总共有 N 个词,每个词 wi 的词频为 ni ,那么 →n=(n1,n2,⋅⋅⋅,nV) 服从多项式分布,可参考1.5节的多项式分布概念。

p(→n|→p)=Mult(→n|→p,N)=(N→n)V∏k=1pnkk(61)

此时公式(60)为:

p(W|→p)=n∏i=1p(→wi|→p)=V∏k=1pnkk(62)

我们需要估计模型中的参数 →p,可以用最大似然估计:

^pML=argmax→pV∑k=1nkln(pk)s.t.V∑k=1pk=1,V∑k=1nk=N(63)

于是参数 pk 的估计值就是:

L(→p)=V∑k=1nkln(pk)+λ(V∑k=1pk−1)∂L(→p)∂pk=nkpk+λ=0⇒pk=−nkλV∑k=1nk=N⇒λ=−Npk=nkN(64)

2.2 贝叶斯Unigram Model

对于以上模型,统计学家中贝叶斯学派就不同意了,为什么上帝只有一个固定的筛子呢,在贝叶斯学派看来,一切参数都是随机变量,模型中 →p 不是唯一固定的,而是服从一个分布,所以贝叶斯Unigram Model游戏规则变为:

添加描述

图2.2

上帝这个坛子里面有些骰子数量多,有些骰子数量少,所以从概率分布的角度看,坛子里面的骰子 →p 服从一个概率分布 p(→p),这个分布称为参数 →p 的先验分布。先验分布 p(→p) 可以有多种选择,注意到 →n 是服从多项式分布的,p(→n|→p)=Mult(→n|→p,N),回顾1.7节可知,p(→p) 最好的选择是Dirichlet分布:

p(→p|→α)=Dir(→p|→α)=1Δ(→α)V∏k=1pαk−1k,→α=(α1,α2,⋅⋅⋅,αV)(65)

于是,在给定了参数 →p 的先验分布 Dir(→p|→α) 时候,语料中各个词出现的次数服从多项式分布 →n∼Mult(→n|→p,N),所以后验分布为:

p(→p|→n,→α)=p(→n|→p)p(→p|→α)∫p(→n|→p)p(→p|→α)d→p=1Δ(→α+→n)V∏k=1pαk+nk−1k(66)

对参数 →p 采用贝叶斯估计,假设参数 →p 服从 Dir(→p|→α) 分布,我们利用样本信息对 →p 的先验分布进行修正,得到 →p 的后验分布也是服从 Dir(→p|→α+→n) 分布。可以用 →p 的期望值作为参数 →p 的估计值。由1.6节可知,→p 的期望值为:

E(→p)=(n1+α1∑Vk=1(nk+αk),n2+α2∑Vk=1(nk+αk),⋅⋅⋅,nV+αV∑Vk=1(nk+αk))(67)

接下来我们计算语料产生的概率,开始并不知道上帝到底用哪个骰子,所以每个骰子都有可能被使用,使用的概率由 p(→p|→α) 决定的,对于每个具体的骰子,由该骰子产生预料的概率为 p(W|→p),所以语料产生的概率为:

p(W|→α)=∫p(W|→p)p(→p|→α)d→p=∫V∏k=1pnkkDir(→p|→α)d→p=∫V∏k=1pnkk1Δ(→α)V∏k=1pαk−1kd→p=1Δ(→α)∫V∏k=1pnk+αk−1kd→p=Δ(→α+→n)Δ(→α)(68)

2.3 PLSA

1. PLSA Model

概率隐语义分析,是主题模型的一种。上面介绍的 Unigram Model 相对简单,没有考虑文档有多个主题的情况,一般一篇文档可以由多个主题(Topic)组成,文档中的每个词都是由一个固定的Topic生成的,所以PLSA的游戏规则为:

2. EM算法推导PLSA

PLSA 模型中 doc-topic 和 topic-word 的每个面的概率值是固定的,所以属于点估计,但是PLSA模型既含有观测变量 di,wj,又含有隐变量 zk,就不能简单地直接使用极大似然估计法估计模型参数,我们可以采用EM算法估计参数。我们先介绍推导过程用到的符号含义:

D={d1,d2,⋅⋅⋅,dN}:表示语料中 N 篇文档;W={w1,w2,⋅⋅⋅,wM}:表示语料中 M 个词组;n(di,wj):表示词 wj 在文档 di 中出现的频次,N=(n(di,wj))ij∈RN×M;Z={z1,z2,⋅⋅⋅,zK}:表示 K 个主题,每篇文档可以有多个主题;p(wj|di):表示词 wj 在给定文档 di 中出现的概率;p(zk|di):表示主题 zk 在给定文档 di 下出现的概率;p(wj|zk):表示词 wj 在给定主题 zk 下出现的概率。

一般给定语料,di,wj 是可以观测的,zk 是隐变量,不可以直观地观测到。我们定义“doc-word”的生成模型,如图1.8所示。

  • select a document di with probability p(di)
  • pick a latent class zk with probability p(zk|di)
  • generate a word wj with probability p(wj|zk)

图2.3

下面进入正题,用EM算法进行模型参数估计,似然函数为:

L=N∏i=1M∏j=1p(di,wj)n(di,wj)logL=N∑i=1M∑j=1n(di,wj)logp(di,wj)=N∑i=1M∑j=1n(di,wj)log[K∑k=1p(di)p(zk|di)p(wj|zk)]=N∑i=1M∑j=1n(di,wj)[logp(di)+logK∑k=1p(zk|di)p(wj|zk)]=N∑i=1n(di)logp(di)+N∑i=1M∑j=1n(di,wj)logK∑k=1p(zk|di)p(wj|zk)(69)

对于给定训练预料,希望公式 (69) 最大化。p(zk|di) 和 p(wj|zk) 是 PLSA 模型需要求解的参数,按照通常的做法是令偏导数 为0,但是参数是以求和的形式出现在对数函数里面,求导后会变得很复杂。n(di) 表示第 i 篇文档的词数,所以当预料固定,公式(69)中第一项可以看作常量,所以只要最大化(69)中的第二项即可,如公式(70)所示。

N∑i=1M∑j=1n(di,wj)logK∑k=1p(zk|di)p(wj|zk)(70)

引入 Qk(zk) 表示 zk 的概率分布(K∑k=1Qk(zk)=1,Qk(zk)≥0),根据Jensen不等式得:

N∑i=1M∑j=1n(di,wj)logK∑k=1Qk(zk)p(zk|di)p(wj|zk)Qk(zk)≥N∑i=1M∑j=1n(di,wj)K∑k=1Qk(zk)logp(zk|di)p(wj|zk)Qk(zk)(71)

当 Qk(zk)=p(zk|di)p(wj|zk)K∑l=1p(zl|di)p(wj|zl)=p(wj,zk|di)K∑l=1p(wj,zl|di)=p(zk|wj,di) 时,公式(71)不等式中等号成立,所以只需要最大化:

minp(zk|di),p(wj|zk)N∑i=1M∑j=1n(di,wj)K∑k=1Qk(zk)logp(zk|di)p(wj|zk)Qk(zk)s.t.M∑j=1p(wj|zk)=1,K∑k=1p(zk|di)=1(72)

根据拉格朗日乘子法

l=N∑i=1M∑j=1n(di,wj)K∑k=1Qk(zk)logp(zk|di)p(wj|zk)Qk(zk)+λ1(M∑j=1p(wj|zk)−1)+λ2(K∑k=1p(zj|di)−1)∂l∂p(wj|zk)=N∑i=1n(di,wj)Qk(zk)p(wj|zk)+λ1,∂l∂p(zk|di)=M∑j=1n(di,wj)Qk(zk)p(zk|di)+λ2

所以可得:

p(wj|zk)=−N∑i=1n(di,wj)Qk(zk)λ1,M∑j=1p(wj|zk)=1⇒λ1=−M∑j=1N∑i=1n(di,wj)Qk(zk)⇒p(wj|zk)=N∑i=1n(di,wj)Qk(zk)M∑j=1N∑i=1n(di,wj)Qk(zk)p(zk|di)=−M∑j=1n(di,wj)Qk(zk)λ2,K∑k=1p(zk|di)=1⇒λ2=−K∑k=1M∑j=1n(di,wj)Qk(zk)=n(di)⇒p(zk|di)=M∑j=1n(di,wj)Qk(zk)n(di)(73)

总结EM算法为:

  1. E-step 随机初始化变量 p(zk|di),p(wj|zk),计算隐变量后验概率。

Qk(zk)=p(zk|di)p(wj|zk)K∑l=1p(zl|di)p(wj|zl)=p(wj,zk|di)K∑l=1p(wj,zl|di)=p(zk|wj,di)

  1. M-step 最大化似然函数,更新变量 p(zk|di),p(wj|zk)

p(wj|zk)=N∑i=1n(di,wj)Qk(zk)M∑j=1N∑i=1n(di,wj)Qk(zk),p(zk|di)=M∑j=1n(di,wj)Qk(zk)n(di)

  1. 重复1、2两步,直到收敛。

2.4 LDA

对于 PLSA 模型,贝叶斯学派表示不同意,为什么上帝只有一个 doc-topic 骰子,为什么上帝只有固定 K 个topic-word骰子?p(zk|di) 和 p(wj|zk) 是模型的参数,一切参数都是随机变量,模型中 p(zk|di) 和p(wj|zk) 不是唯一固定的,类似 2.2 节贝叶斯 Unigram Model 和 2.1 节 Unigram Model 的关系。所以 LDA 游戏规则为:

添加描述

假设我们训练语料有 M 篇 doc,词典中有 V 个word,K个topic。对于第 m 篇文档有 Nm 个词。

  • →ϑm:p(z|dm),第 m 篇文档的主题分布概率,→Θ={→ϑm}Mm=1∈RM×K;
  • →φk:p(w|zk),主题为 k 的词的概率分布,→Φ={→φk}Kk=1∈RK×V;
  • n(k)m:第 m 篇文档中属于 topic k 的词的个数,→n_m=(n_m(1),n_m(2),⋅⋅⋅,n_m(K));
  • n(t)k:topic k 产生词 t 的个数,→n_k=(n_k(1),n_k(2),⋅⋅⋅,n_k(V));
  • →α∈RK×1:→ϑ_m 先验分布超参数;
  • →β∈RV×1:→φk 先验分布超参数;
  • zm,n:第 m 篇文档中第 n 个词的主题;
  • wm,n:第 m 篇文档中第n 个词。

LDA的概率图模型表示如图2.4所示。

图2.4

1. 联合概率分布

p(→w,→z|→α,→β)=p(→w|→z,→β)p(→z|→α)(74)

1)→α−→_Dir→ϑ_m−→Mult→z_m:第一步对 Dir 分布进行采样得到样本 →ϑm(也就是从第一个坛子中抽取 doc-topic 骰子 →ϑm);第二步 doc-topic 骰子有 K 个面,每个面表示一个主题,那么在一次投掷骰子过程中,每个主题的概率为 →ϑm=(ϑ(1)m,ϑ(2)m,⋅⋅⋅,ϑ(K)m),第 m 篇文档有 Nm 个词,所以需要投掷 Nm 次骰子,为该篇文档中的每个词生成一个主题, 第 n 个词对应的主题为 zm,n,整篇文档的主题表示为 →zm。在 Nm 次投掷过程中,每个主题出现的次数为→nm=(n(1)m,n(2)m,⋅⋅⋅,n(K)m),那么 →nm 服从多项式分布 Mult(→nm|→ϑm,Nm)(只生成每个词的主题,并未由主题产生具体的词)。可以采用贝叶斯估计对参数 →ϑm 进行估计。

  • →ϑm 的先验分布为 Dir(→ϑ_m|→α)
  • 后验分布为(推导过程可以参考1.7节) p(→ϑm|→nm,→α)=p(→nm|→ϑm)p(→ϑm|→α)∫p(→nm|→ϑm)p(→ϑm|→α)d→ϑm=mult(→nm|→ϑm,Nm)Dir(→ϑm|→α)∫mult(→nm|→ϑm,Nm)Dir(→ϑm|→α)d→ϑm=Dir(→ϑm|→α+→nm)(75)
  • →ϑm 的贝叶斯估计值为

E(→ϑm)=⎛⎜⎝α1+n(1)m∑Kk=1(αk+n(k)m),⋅⋅⋅,αK+n(K)m∑Kk=1(αk+n(k)m)⎞⎟⎠(76)

下面我们计算第 m 篇文档的主题概率分布:

p(→zm|→α)=∫p(→zm|→ϑm)p(→ϑm|→α)d→ϑm=∫K∏k=1(ϑ(k)m)n(k)m1Δ(→α)K∏k=1(ϑ(k)m)αk−1d→ϑm=1Δ(→α)∫K∏k=1(ϑ(k)m)n(k)m+αk−1d→ϑm=Δ(→α+→nm)Δ(→α)(77)

整个语料中的 M 篇文档是相互独立的,所以可以得到语料中主题的概率为:

p(→z|→α)=M∏m=1p(→zm|→α)=M∏m=1Δ(→α+→nm)Δ(→α)(78)

2)→β−→Dir→φk−→Mult→wk:第一步对 Dir 分布进行 K 次采样得到样本 {→φk}Kk=1(从第二个坛子中独立地抽取了 K 个topic-word骰子 {→φk}Kk=1);第二步根据之前得到的主题 →z,为每个 zm,n 生成对应的词 wm,n,→z 中的值有 K 种不同的取值(因为我们假设语料有 K 个主题),所以可以将 →z 中的元素分为 K 类。我们现在为第 k 个主题生成对应的词,那么需要选择编号为 k 的 topic-word 骰子,该骰子有 V 个面,每个面表示一个词,那么在一次投掷骰子过程中,每个词的概率为 →φk=(φ(1)k,φ(2)k,⋅⋅⋅,φ(V)k) ,第 k 个主题有 Nk 个词,所以需要投掷 Nk 次骰子,为该主题生成 Nk 个词。在 Nk 次投掷过程中,每个词出现的次数为 →nk=(n(1)k,n(2)k,⋅⋅⋅,n(V)k),那么 →nk 服从多项式分布 Mult(→nk|→φk,Nk),可以采用贝叶斯估计对参数 →φk 进行估计。

  • →φk 的先验分布为 Dir(→φ_k|→β)
  • 后验分布为(推导过程可以参考1.7节)

p(→φk|→nk,→β)=p(→nk|→φk)p(→φk|→β)∫p(→nk|→φk)p(→φk|→β)d→φk=mult(→nk|→φk,Nk)Dir(→φk|→β)∫mult(→nk|→φk,Nk)Dir(→φk|→β)d→φk=Dir(→φk|→β+→nk)(79)

  • →φk 的贝叶斯估计值为

E(→φk)=⎛⎜⎝β1+n(1)k∑Vt=1(βt+n(t)k),⋅⋅⋅,βV+n(V)k∑Vt=1(βt+n(t)k)⎞⎟⎠(80)

下面我们计算第 k 个主题的词概率分布:

p(→wk|→β)=∫p(→wk|→φk)p(→φk|→β)d→φk=∫V∏t=1(φ(t)k)n(t)k1Δ(→β)V∏t=1(φ(t)k)βt−1d→φk=1Δ(→β)∫V∏t=1(φ(t)k)n(t)k+βt−1d→φk=Δ(→β+→nk)Δ(→β)(81)

整个语料中的 K 个主题是相互独立的,所以可以得到语料中词的概率为:

p(→w|→z,→β)=K∏k=1p(→wk|→β)=K∏k=1Δ(→β+→nk)Δ(→β)(82)

由公式(74)、(78)、(82) 可得联合概率分布为:

p(→w,→z|→α,→β)=p(→w|→z,→β)p(→z|→α)=K∏k=1Δ(→β+→nk)Δ(→β)M∏m=1Δ(→α+→nm)Δ(→α)(83)

2. Gibbs Sampling

上面我们已经推导出参数的贝叶斯估计公式,但是仍然存在一个问题,公式中的 →nk 和 →nm 无法根据语料直接得到,如果我们知道语料中的每个词的主题,即得到 →z,那么就可以推断出→n_k 和 →n_m,进一步就可以得出贝叶斯的参数估计。

我们需要利用 Gibbs Sampling 对 p(→z|→w) 进行采样来得到 →z。根据1.10节 Gibbs Sampling 的原理可知,我们首先需要推导条件概率 p(zi=k|→z−i,→w)。 先介绍一些符号定义。

i=(m,n):下标索引;−i:表示去除下标为 i 的词;wi=t:第 m 篇文档中第 n 个词为 t;zi=k:第 m 篇文档中第 n 个词的主题为 k;n(t)k,−i:除去下标为 i 这个词,剩下的所有词中,词 t 属于主题 k 的统计次数,→nk,−i=(n(1)k,n(2)k,⋅⋅⋅,n(t)k−1,⋅⋅⋅,n(V)k)(这里假设 wi=t,zi=k);n(k)m,−i:除去下标为 i 的这个词,第 m 篇文档中主题 k 产生词的个数, →nm,−i=(n(1)m,n(2)m,⋅⋅⋅,n(k)m−1,⋅⋅⋅,n(K)m) (这里假设 zi=k );→z={zi=k,→z−i}:语料的主题;→w={wi=t,→w−i}:语料的单词。

p(zi=k|→z−i,→w)=p(→w,→z)p(→w,→z−i)=p(→w|→z)p(→w−i|→z−i)p(wi)⋅p(→z)p(→z−i)∝Δ(→nk+→β)Δ(→nk,−i+→β)⋅Δ(→nm+→α)Δ(→nm,−i+→α)=n(t)k,−i+β(t)∑Vv=1(n(v)k,−i+β(v))⋅n(k)m,−i+α(k)∑Kj=1(n(j)m,−i+α(j))(84)

1)p(→w−i|→z−i)$和$p(→z−i) 的计算过程类似 p(→w|→z) 和 p(→z),仅仅在计算的时候不考虑下标为 i 的这个词,我们假设 wi=t,zi=k ;当已知语料时,p(wi) 可以从语料中统计出来,所以可以认为是常量。

p(→w|→z)=Δ(→β+→nk)K∏z=1,z≠kΔ(→β+→nz)Δ(→β)p(→w−i|→z−i)=Δ(→β+→nk,−i)K∏z=1,z≠kΔ(→β+→nz)Δ(→β)p(→z)=Δ(→α+→nm)M∏i=1,i≠mΔ(→α+→ni)Δ(→α)p(→z−i)=Δ(→α+→nm,−i)M∏i=1,i≠mΔ(→α+→ni)Δ(→α)(85)

2)我们是推断 i=(m,n) 词 t 的主题为 k 的条件概率

Δ(→nk+→β)=∏Vv=1Γ(n(v)k+β(v))Γ(∑Vv=1(n(v)k+β(v)))Δ(→nk,−i+→β)=Γ(n(t)k+β(t)−1)∏Vv=1,v≠tΓ(n(v)k+β(v))Γ(∑Vv=1,v≠t(n(v)k+β(v))+n(t)k+β(t)−1)Δ(→nm+→α)=∏Kj=1Γ(n(j)m+α(j))Γ(∑Kj=1(n(j)m+α(j)))Δ(→nm,−i+→α)=Γ(n(k)m+α(k)−1)∏Kj=1,j≠kΓ(n(j)m+α(j))Γ(∑Kj=1,j≠k(n(j)m+α(j))+n(k)m+α(k)−1)

我们再利用另外一种方法推导条件概率:

p(zi=k|→z−i,→w)∝p(zi=k,wi=t|→z−i,→w−i)=∫p(zi=k,wi=t,→ϑm,→φk|→z−i,→w−i)d→ϑmd→φk=∫p(zi=k,→ϑm|→z−i,→w−i)⋅p(wi=t,→φk|→z−i,→w−i)d→ϑmd→φk=∫p(zi=k|→ϑm)p(→ϑm|→z−i,→w−i)⋅p(wi=t|→φk)p(→φk|→z−i,→w−i)d→ϑmd→φk=∫p(zi=k|→ϑm)Dir(→ϑm|→nm,−i+→α)⋅p(wi=t|→φk)Dir(→φk|→nk,−i+→β)d→ϑmd→φk=∫ϑ(k)mDir(→ϑm|→nm,−i+→α)d→ϑm⋅∫φ(t)kDir(→φk|→nk,−i+→β)d→φk=E(ϑ(k)m)⋅E(φ(t)k)=n(k)m,−i+α(k)∑Kj=1(n(j)m,−i+α(j))⋅n(t)k,−i+β(t)∑Vv=1(n(v)k,−i+β(v))

已经推导出条件概率,可以用Gibbs Sampling公式进行采样了。

添加描述

参考文献

1(http://www.arbylon.net/publications/text-est.pdf)

2(http://www.iro.umontreal.ca/~nie/IFT6255/Hofmann-UAI99.pdf)

3(http://www.jmlr.org/papers/volume3/blei03a/blei03a.pdf)

5(http://cs229.stanford.edu/notes/cs229-notes8.pdf)

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券