LDA(主题模型)

发现了一篇讲解的非常好的LDA系列。
LDA主题模型学习笔记1:模型建立
LDA主题模型学习笔记2:求解隐变量和模型参数(EM思想)
LDA主题模型学习笔记3:变分推断(E-step)
LDA主题模型学习笔记3.5:变分参数推导
LDA主题模型学习笔记4:求解模型参数(M-step)

在讲解LDA之前,如果有对贝叶斯估计、共轭分布、迪利克雷分布、多项式分布不懂的请看我之前的博客:
最大似然估计(MLE)、最大后验估计(MAP)和贝叶斯估计
共軛分布与贝叶斯估计
二项式定理与二项分布、多项式定理与多项分布

LDA的概率解释

LDA是一种文档主题生成模型,包括文档、主题、单词三层关系,LDA认为一篇文档中的每个单词应该给是这样生成的:首先以一定的概率选择了某个主题,之后再根据这个主题选择了某个单词
上面这句话用概率来解释就是:
P ( W ∣ D ) = P ( W ∣ T ) P ( T ∣ D ) = P ( W , T ∣ D ) (1) \tag{1}P(W|D) = P(W|T)P(T|D) \\ = P(W,T|D) P(WD)=P(WT)P(TD)=P(W,TD)(1)
上面的式子中,D是某一篇文档,T是文档D对应的主题集合,W是根据T生成的单词。

对于(1)式可能会有人困惑,为什么 P ( W ∣ D ) = = P ( W , T ∣ D ) P(W|D) == P(W,T|D) P(WD)==P(W,TD),我觉得可以这样理解:因为给定一篇文档的时候,我们并不知道这篇文档的主题是哪些,但是这些主题是隐含在文档中的,所以是一个隐变量,所以二者应该是相等的。

LDA是基于贝叶斯估计的,谈到贝叶斯估计就要涉及到:似然概率、先验概率和后验概率。在(1)式中, P ( W ∣ T ) 和 P ( T ∣ D ) P(W|T)和P(T|D) P(WT)P(TD)都是后验概率,根据贝叶斯公式应该有:
P ( T ∣ D ) = P ( D ∣ T ) P ( T ) P ( D ) (2) \tag{2} P(T|D) = {P(D|T)P(T) \over P(D)} P(TD)=P(D)P(DT)P(T)(2)
P ( W ∣ T ) = P ( T ∣ W ) P ( W ) P ( T ) (3) \tag{3} P(W|T) = {P(T|W)P(W) \over P(T)} P(WT)=P(T)P(TW)P(W)(3)
所以(1)式可以进一步分解为(2)、(3)的乘积,在(2)和(3)式中, P ( T ) 是 主 题 的 先 验 概 率 , P ( D ∣ T ) 是 主 题 的 似 然 函 数 P(T)是主题的先验概率, P(D|T)是主题的似然函数 P(T)P(DT)
P ( W ) 是 单 词 的 先 验 概 率 , P ( T ∣ W ) 是 单 词 的 似 然 函 数 P(W)是单词的先验概率,P(T|W)是单词的似然函数 P(W)P(TW)

在LDA模型中,假设一篇文档可以有 k k k个主题,一个主题下有多个属于这个主题的单词。
如果我们用一个多面的骰子来模拟主题,那么确定一篇文档D有哪几个主题就相当于是抛掷这面骰子k次,朝上的那个面对应的主题作为文档D的一个主题。确定选择这个主题的哪个单词作为文档D的一个单词也可以用骰子来模拟。

通过二项式定理与二项分布、多项式定理与多项分布我们可以知道,上面的两个过程就是多项式分布,也就是每篇文档的主题分布(主题的似然函数,也就是 L ( T ∣ D ) = P ( D ∣ T ) L(T|D) = P(D|T) L(TD)=P(DT))是多项式分布,每个主题下的词分布(词的似然函数,也就是 L ( W ∣ T ) = P ( T ∣ W ) L(W|T)=P(T|W) L(WT)=P(TW))也是多项式分布。

在以前的博客中,我说明了贝叶斯估计与MAP和MLE的区别,以及贝叶斯估计经常用到的一些共轭分布。LDA也使用了共轭分布来简化(2)和(3)后验概率的计算。
由于多项式分布的共轭先验为狄利克雷分布,所以 P ( T ) 和 P ( W ) P(T)和P(W) P(T)P(W)是狄利克雷分布。

LDA模型的参数

在这里插入图片描述

  • 矩形内部的参数:
    K:一篇文档的主题的个数
    N:一篇文档中单词的个数
    M:需要分析的文档的个数
  • α \alpha α是文档的主题的先验分布(狄利克雷分布)的参数
  • β \beta β是主题的单词的先验分布(狄利克雷分布)的参数, β \beta β是一个二维矩阵,行表示主题,列表示单词。
  • φ ( k ) \varphi(k) φ(k)是主题k的单词分布(多项式分布)
  • θ ( i ) \theta(i) θ(i)是文档i的主题分布(多项式分布)
  • w ( i . j ) w(i.j) w(i.j)是文档i的第j个单词
  • z ( i , j ) z(i,j) z(i,j) w ( i , j ) w(i, j) w(i,j)的主题分配

LDA模型有两个坛子,一个坛子A中盛放的是若干个 doc-topic骰子,另一个坛子B中盛放的是若干个 topic-word骰子。

对于一篇有k个主题,n个词的文档i来说,从坛子A中只选择一个doc-topic骰子,然后抛掷n次,每一次根据对应的topic从B中选择对应的topic-word骰子,然后抛掷一次,选择一个单词,这样就得到了文档i的n个单词。

模型图的解释:

  • θ \theta θ服从参数为 α \alpha α的狄利克雷分布( θ 是 一 个 k 维 的 向 量 , 向 量 的 每 一 维 表 示 某 个 主 题 的 概 率 , 和 为 1 \theta是一个k维的向量,向量的每一维表示某个主题的概率,和为1 θk1),用概率公式来表达就是 p ( θ ∣ α ) = D i r i c h l e t ( α ) = Γ ( ∑ i = 1 k α i ) ∏ i = 1 k Γ ( α i ) θ 1 α 1 − 1 . . . θ k α k − 1 p(\theta|\alpha) = Dirichlet(\alpha) = {\Gamma(\sum_{i=1}^k \alpha_{i}) \over \prod_{i=1}^k \Gamma(\alpha_i)}\theta_{1}^{\alpha_{1}-1}...\theta_{k}^{\alpha_{k}-1} p(θα)=Dirichlet(α)=i=1kΓ(αi)Γ(i=1kαi)θ1α11...θkαk1 --------------------------------通过 α \alpha α得到文档i的主题分布 θ \theta θ (相当于是为第i篇文档选择一个doc-topic 骰子 θ \theta θ
  • 根据主题向量 θ \theta θ生成文档i的第j个词的主题 z i , j z_{i,j} zi,j(换句话说就是 z i , j 服 从 参 数 为 θ 的 多 项 式 分 布 z_{i,j}服从参数为\theta的多项式分布 zi,jθ),用概率公式来表达就是 p ( z i , j ∣ θ ) = m u l t i ( θ ) = N ! r 1 ! r 2 ! . . . r k ! θ 1 r 1 θ 2 r 2 . . . θ k r k , 其 中 N 表 示 文 档 i 词 的 个 数 , r k 表 示 第 k 个 主 题 选 择 的 次 数 , ∑ r k = N p(z_{i,j}|\theta) = multi(\theta) = {N! \over r_1!r_2!...r_k!}\theta_1^{r_1}\theta_2^{r_2}...\theta_k^{r_k},其中N表示文档i词的个数,r_{k}表示第k个主题选择的次数,\sum r_{k}=N p(zi,jθ)=multi(θ)=r1!r2!...rk!N!θ1r1θ2r2...θkrkNirkkrk=N ---------------从主题分布 θ \theta θ中确定第j个词的主题 (投掷doc-topic骰子 θ \theta θ,选择一个topic z i , j z_{i,j} zi,j
  • 根据主题 z i , j z_{i,j} zi,j的生成该主题对应的词语分布 φ z i , j \varphi_{z_{i,j}} φzi,j(换句话说就是 φ z i , j \varphi_{z_{i,j}} φzi,j服从参数为 β \beta β的迪利克雷分布), φ z i , j \varphi_{z_{i,j}} φzi,j是一个 N N N维的向量,每一维表示选择某个单词的概率。用概率公式来表达就是 p ( φ z i , j ∣ β ) = D i r i c h l e t ( β ) p(\varphi_{z_{i,j}}|\beta)= Dirichlet(\beta) p(φzi,jβ)=Dirichlet(β) ----------------得到该主题的词分布 (根据选择的topic z i , j z_{i,j} zi,j选择对应的topic-word骰子 φ z i , j \varphi_{z_{i,j}} φzi,j
  • 根据词语分布 φ z i , j \varphi_{z_{i,j}} φzi,j生成文档i的第j个单词 w i , j w_{i,j} wi,j w i , j w_{i,j} wi,j服从参数为 φ z i . j \varphi_{z_{i.j}} φzi.j的多项式分布),也就是 w i , j = m u l t i ( φ z i , j ) w_{i,j} = multi(\varphi_{z_{i,j}}) wi,j=multi(φzi,j) ---------------------根据上述的词分布得到词 (投掷topic-word骰子 φ z i , j \varphi_{z_{i,j}} φzi,j,得到词)。

最终模型参数是 α , β \alpha, \beta α,β,隐变量是 θ , z , φ \theta, z, \varphi θ,z,φ W W W是文档的单词集合。针对某一篇文档,上述变量的联合概率分布是:
p ( θ , z , φ , W ∣ α , β ) = p ( θ ∣ α ) ∏ n = 1 N p ( z n ∣ θ ) p ( φ z n ∣ β ) p ( w n ∣ φ z n ) p(\theta, z, \varphi, W| \alpha, \beta) = p(\theta|\alpha) \prod_{n=1}^Np(z_{n}|\theta)p(\varphi_{z_{n}}|\beta)p(w_{n}|\varphi_{z_{n}}) p(θ,z,φ,Wα,β)=p(θα)n=1Np(znθ)p(φznβ)p(wnφzn)
为了得到关于 W W W的似然函数,要对隐变量 θ , z , φ \theta, z, \varphi θ,z,φ进行积分或者求和。最后得到 W W W的边缘概率也就是似然函数。
p ( W ∣ α , β ) = ∫ θ ∫ φ ∑ z p ( θ , z , φ , W ∣ α , β ) = ∫ θ ∫ φ ∑ z p ( θ ∣ α ) ∏ n = 1 N p ( z n ∣ θ ) p ( φ z n ∣ β ) p ( w n ∣ φ z n ) \begin{aligned} p(W| \alpha, \beta) =& \int_{\theta}\int_{\varphi}\sum_{z}p(\theta, z, \varphi, W| \alpha, \beta) \\ =& \int_{\theta}\int_{\varphi}\sum_{z}p(\theta|\alpha) \prod_{n=1}^Np(z_{n}|\theta)p(\varphi_{z_{n}}|\beta)p(w_{n}|\varphi_{z_{n}}) \end{aligned} p(Wα,β)==θφzp(θ,z,φ,Wα,β)θφzp(θα)n=1Np(znθ)p(φznβ)p(wnφzn)
这样就得到了模型的似然函数,最后就是要最大化似然函数,至此我们的LDA模型的生成过程就阐述清楚了,我们建立了一个从document->topic->word的生成过程。但要求解LDA模型的过程是与上述过程相反的,求解LDA模型的过程是word->topic->document,这一点要注意。

参考:https://www.cnblogs.com/pinard/p/6831308.html
https://www.cnblogs.com/yifdu25/p/8099826.html

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值