前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >LDA—主题模型

LDA—主题模型

原创
作者头像
用户1062972
发布2019-07-05 18:45:56
1.5K0
发布2019-07-05 18:45:56
举报
文章被收录于专栏:machine learning

三、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)

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 2.1 Unigram Model
  • 2.2 贝叶斯Unigram Model
  • 2.3 PLSA
  • 2.4 LDA
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档