LDA主题模型1——数学基础

相信很多人第一次看到LDA算法都会头大,不管是看论文还是看博客,都少不了各种各样的公式和理论,概率分布、共轭分布、贝叶斯公式、Gibbs采样等等,一大堆耳熟又陌生的词,经常带着一大堆问号去学习,又带着一大堆问号离开。。。本篇文章将会一点点的将其攻克。

下一篇 LDA主题模型2——算法原理


就像大家所看到的一样,LDA需要很多数学基础,这是毋庸置疑的,LDA的数学基础有很多,最主要的两个是共轭分布的一些列概念与Gibbs采样的概念。关于Gibbs采样,我有专门的文章对其总结,从问题描述到原理演进到案例展示都很详细,强烈建议有需要的同学点击这个链接阅读https://blog.csdn.net/u012290039/article/details/105696097
接下来我们来重点讨论共轭分布的概念。

提到共轭分布,不得不说一下全概率公式、贝叶斯公式、先验分布、后验分布、似然函数等概率论的相关概念,等对这些有了系统概念体系有了了解,我们就很容易明白共轭分布,也对LDA的原理有启示的作用。

概念1:全概率公式

P ( B ) = ∑ i = 1 n P ( A i ) P ( B ∣ A i ) P(B)=\sum_{i=1}^{n}P(A_i)P(B|A_i) P(B)=i=1nP(Ai)P(BAi)

如果我们把事件B看做’结果’,把诸事件A1,A2…看做导致这个结果的可能的’原因’,则可以形象地把全概率公式看做成为’由原因推结果’

概念2:贝叶斯公式

P ( A 1 ∣ B ) = P ( A 1 , B ) P ( B ) = P ( A 1 ) P ( B ∣ A 1 ) ∑ i = 1 n P ( A i ) P ( B ∣ A i ) P(A_1|B)=\frac{P(A_1,B)}{P(B)}=\frac{P(A_1)P(B|A_1)}{\sum_{i=1}^{n}P(A_i)P(B|A_i)} P(A1B)=P(B)P(A1,B)=i=1nP(Ai)P(BAi)P(A1)P(BA1)

贝叶斯公式则恰好相反,其作用于’由结果推原因’:现在有一个’结果’B已经发生,在众多可能的’原因’中,到底是哪一个导致了这结果"。贝叶斯公式表示,在众多原因中,某一个原因导致结果的概率。

概念3:先验概率、后验概率、似然函数

以上贝叶斯公式 P ( A ∣ B ) P(A|B) P(AB)是后验概率, P ( A ) P(A) P(A)是先验分布, P ( B ∣ A ) P(B|A) P(BA)是似然函数, P ( B ) P(B) P(B是全概率公式的展开。或许在实际应用中,这个公式,我们更加熟悉:
P ( θ ∣ x ) = P ( θ , x ) P ( x ) = P ( x ∣ θ ) P ( θ ) P ( x ) P(\theta|x)=\frac{P(\theta,x)}{P(x)}=\frac{P(x|\theta)P(\theta)}{P(x)} P(θx)=P(x)P(θ,x)=P(x)P(xθ)P(θ)

x表示样本, θ \theta θ表示参数,一般我们的参数是概率分布的参数,所以参数也就表示了原因。

先验分布 P ( θ ) P(\theta) P(θ) 在观察样本之前,按照经验认为 θ \theta θ符合某种概率分布,是纯主观的经验估计。比如出门乘坐交通工具,我们认为有步行、公交、地铁三种,概率均为 1 3 \frac{1}{3} 31,那么如果10分钟之内到达目的地,原因就有三种可能性。

后验分布 P ( θ ∣ x ) P(\theta|x) P(θx) 在考在观察一系列样本数据 x x x后,模型参数 θ \theta θ服从的概率分布,实际是对先验分布的修正更接近事实情况。比如上面的例子,10分钟之内行程1公里,那么三种原因的概率就不再是简单的先验各 1 3 \frac{1}{3} 31的情况了。

似然函数 P ( x ∣ θ ) P(x|\theta) P(xθ) 在给定模型参数 θ \theta θ的条件下,样本数据 x x x服从这一概率模型的相似程度。比如:可以想象一下逻辑回归的推导过程,定义 θ \theta θ参数,由 s i g m o i d sigmoid sigmoid函数逐渐推导出样本数据的概率模型,然后最大似然求极值。

全概率公式 P ( x ) P(x) P(x) x x x是样本, P ( x ) P(x) P(x)是一个确定值,可以通过全概率公式展开。

概念4:共轭分布

P ( θ ∣ x ) = P ( x ∣ θ ) P ( θ ) P ( x ) P(\theta|x)=\frac{P(x|\theta)P(\theta)}{P(x)} P(θx)=P(x)P(xθ)P(θ)

P ( x ) P(x) P(x)是一个定值,我们将其看做是一个系数,暂不考虑。如果后验概率分布 P ( θ ∣ x ) P(\theta|x) P(θx)和先验概率分布 P ( θ ) P(\theta) P(θ)满足同样的分布规律,那么,先验分布和后验分布被叫做共轭分布。简单来理解:参数分布在经过观察一系列数据后仍然符合原来的分布规律。先验分布*数据(似然)= 后验分布,接下来详细解释。

LDA用到的共轭分布

LDA为什么要用到共轭分布呢?其实,这是一种计算技巧,不用共轭能不能算,也能算,有一个模型Correlated Topic Model代码量是相当大的。当我们每观察一次模型,后验概率与先验概率是同一种分布的时候,问题就变得简单了。

1)二项式分布与Beta分布

B i n o r m ( k ∣ n , p ) = C n k p k ( 1 − p ) n − k = n ! k ! ( n − k ) ! p k ( 1 − p ) n − k \begin{aligned} Binorm(k|n,p)&=C_n^kp^k(1-p)^{n-k}\\ &=\frac{n!}{k!(n-k)!}p^k(1-p)^{n-k} \end{aligned} Binorm(kn,p)=Cnkpk(1p)nk=k!(nk)!n!pk(1p)nk

k表示随机变量(x轴),随机变量取不同的值形成的数据分布,表示为二项式分布,是离散分布。期望值E(x)=np

B e t a ( p ∣ α , β ) = Γ ( α + β ) Γ ( α ) Γ ( β ) p α − 1 ( 1 − p ) β − 1 Γ ( x ) = ( x − 1 ) ! \begin{aligned} Beta(p|\alpha,\beta)&=\frac{\Gamma(\alpha+\beta)}{\Gamma(\alpha)\Gamma(\beta)}p^{\alpha-1}(1-p)^{\beta-1}\\ \Gamma(x)&=(x-1)! \end{aligned} Beta(pα,β)Γ(x)=Γ(α)Γ(β)Γ(α+β)pα1(1p)β1=(x1)!

p表示随机变量(x轴),p取不同的值,形成的分布就是Beta分布,是连续分布。关于这一点同样用于多项式分布与Dirichlet分布。发现了什么?Beta分布的变量是二项式分布数据的参数,仔细理解。
这也是为什么有时候我们看到:比如高斯分布求期望是E(X)=u,二项式分布的期望E(x)=np,而Beta分布求期望用的是E( p),变量不同。

我们来看下以 B e t a Beta Beta分布为先验的二项式分布的共轭分布:
P ( k ∣ n , p ) P ( p ∣ α , β ) = B i n o r m ( k ∣ n , p ) B e t a ( p ∣ α , β ) = C n k p k ( 1 − p ) n − k ∗ Γ ( α + β ) Γ ( α ) Γ ( β ) p α − 1 ( 1 − p ) β − 1 = ∝ p k + α − 1 1 − p n − k + β − 1 \begin{aligned} P(k|n,p)P(p|\alpha,\beta) & =Binorm(k|n,p)Beta(p|\alpha,\beta)\\ & =C_n^kp^k(1-p)^{n-k} * \frac{\Gamma(\alpha+\beta)}{\Gamma(\alpha)\Gamma(\beta)} p^{\alpha-1}(1-p)^{\beta-1}\\ &=\propto{p^{k+\alpha-1}{1-p}^{n-k+\beta -1}} \end{aligned} P(kn,p)P(pα,β)=Binorm(kn,p)Beta(pα,β)=Cnkpk(1p)nkΓ(α)Γ(β)Γ(α+β)pα1(1p)β1=pk+α11pnk+β1

可见,我们的后验分布确实与先验分布一样,还是Beta分布。

OK,我们回过头来在此看一下共轭分布的概念,结合具体的二项式分布与Beta分布加深理解:
先验分布 P ( θ ) P(\theta) P(θ) *数据(似然) P ( x ∣ θ ) P(x|\theta) P(xθ) = 后验分布 P ( θ ∣ x ) P(\theta|x) P(θx)
1)数据(似然) P ( x ∣ θ ) P(x|\theta) P(xθ) :不难理解,这里表示符合二项式分布的数据,用二项式分布的参数 θ \theta θ表示了。
2)先验分布 P ( θ ) P(\theta) P(θ):数据分布参数 θ \theta θ并不是固定的,经验上本身符合一定的概率分布,这里是 B e t a Beta Beta分布,称为先验,注意这里 θ \theta θ是变量,Beta分布表示不同 θ \theta θ变量的概率表示。
3)后验分布 P ( θ ∣ x ) P(\theta|x) P(θx):我们观察到了数据的分布 P ( x ∣ θ ) P(x|\theta) P(xθ),先验经过修正变成了后验,但是这里仍然是参数 θ \theta θ变量的概率表达式,本质上与先验一样,只不过是经过修正了的。而共轭的特性让先验与后验称为了统一分布形式,后验可以继续以先验的形式计算,这是非常有利的。
多项式分布与 D i r i c h l e t Dirichlet Dirichlet分布同理

Beta分布有个重要的性质,期望值:
E ( B e t a ( p ∣ α , β ) ) = ∫ 0 1 t ∗ B e t a ( p ∣ α , β ) d t = ∫ 0 1 t ∗ Γ ( α + β ) Γ ( α ) Γ ( β ) t α − 1 ( 1 − t ) β − 1 d t = ∫ 0 1 Γ ( α + β ) Γ ( α ) Γ ( β ) t α ( 1 − t ) β − 1 d t = Γ ( α + β ) Γ ( α ) Γ ( β ) Γ ( α + 1 ) Γ ( β ) Γ ( α + β + 1 ) = α α + β \begin{aligned} E(Beta(p|\alpha,\beta)) &=\int_0^1{t*Beta(p|\alpha,\beta)}dt\\ &=\int_0^1{t*\frac{\Gamma(\alpha+\beta)}{\Gamma(\alpha)\Gamma(\beta)}t^{\alpha-1}(1-t)^{\beta-1}}dt\\ &=\int_0^1{\frac{\Gamma(\alpha+\beta)}{\Gamma(\alpha)\Gamma(\beta)}t^{\alpha}(1-t)^{\beta-1}}dt\\ &=\frac{\Gamma(\alpha+\beta)}{\Gamma(\alpha)\Gamma(\beta)}\frac{\Gamma(\alpha+1)\Gamma(\beta)}{\Gamma(\alpha+\beta+1)}\\ &=\frac{\alpha}{\alpha+\beta} \end{aligned} E(Beta(pα,β))=01tBeta(pα,β)dt=01tΓ(α)Γ(β)Γ(α+β)tα1(1t)β1dt=01Γ(α)Γ(β)Γ(α+β)tα(1t)β1dt=Γ(α)Γ(β)Γ(α+β)Γ(α+β+1)Γ(α+1)Γ(β)=α+βα

上式中,概率分布积分为1,所以只剩下了系数。

2)多项式分布与Dirichlet分布
多项式分布为:
m u l t i ( m 1 , m 2 , m 3 ∣ n , p 1 , p 2 , p 3 ) = n ! m 1 ! m 2 ! m 3 ! p 1 m 1 p 2 m 2 p 3 m 3 \begin{aligned} multi(m_1,m_2,m_3|n,p_1,p_2,p_3)=\frac{n!}{m_1!m_2!m_3!}p_1^{m_1}p_2^{m_2}p_3^{m_3} \end{aligned} multi(m1,m2,m3n,p1,p2,p3)=m1!m2!m3!n!p1m1p2m2p3m3

我们用向量 m ⃗ \vec{m} m 表示 [ m 1 , m 2 , m 3 , . . . ] [m_1,m_2,m_3,...] [m1,m2,m3,...]
m u l t i ( m ⃗ ∣ n , p ⃗ ) = ( n m ⃗ ) ∏ k = 1 K p k m k \begin{aligned} multi(\vec{m}|n,\vec{p})=(\begin{matrix}n\\ \vec{m}\end{matrix}) \prod_{k=1}^{K} p_k^{m_k} \end{aligned} multi(m n,p )=(nm )k=1Kpkmk
D i r i c h l e t 分 布 为 : Dirichlet分布为: Dirichlet
D i r i c h l e t ( p 1 , p 2 , p 3 , ∣ α 1 , α 2 , α 3 ) = Γ ( α 1 + α 2 + α 3 ) Γ ( α 1 ) ∗ Γ ( α 2 ) ∗ Γ ( α 3 ) p 1 α 1 − 1 p 2 α 2 − 1 p 3 α 3 − 1 D i r i c h l e t ( p ⃗ ∣ α ⃗ ) = Γ ( ∑ k = 1 K α k ) ∏ k = 1 K Γ ( α k ) ∏ k = 1 K p k α k − 1 \begin{aligned} Dirichlet(p_1,p_2,p_3,|\alpha_1,\alpha_2,\alpha_3) &=\frac{\Gamma(\alpha_1+\alpha_2+\alpha_3)}{\Gamma(\alpha_1)*\Gamma(\alpha_2)*\Gamma(\alpha_3)}p_1^{\alpha_1-1}p_2^{\alpha_2-1}p_3^{\alpha_3-1}\\ Dirichlet(\vec{p}|\vec{\alpha})&=\frac{\Gamma(\sum_{k=1}^{K}\alpha_k)}{\prod_{k=1}^{K} \Gamma(\alpha_k)}\prod_{k=1}^{K}p_k^{\alpha_k-1}\\ \end{aligned} Dirichlet(p1,p2,p3,α1,α2,α3)Dirichlet(p α )=Γ(α1)Γ(α2)Γ(α3)Γ(α1+α2+α3)p1α11p2α21p3α31=k=1KΓ(αk)Γ(k=1Kαk)k=1Kpkαk1

多项式分布和 D i r i c h l e t Dirichlet Dirichlet的共轭性质与二项式分布与 B e t a Beta Beta分布一样。在LDA中我们真正应用的是多项式分布和 D i r i c h l e t Dirichlet Dirichlet的共轭性质,但是在二项式分布与 B e t a Beta Beta分布中我们详细描述的共轭关系解释在这里完全一样

同理我们可以得到 D i r i c h l e t Dirichlet Dirichlet分布的期望值。
E ( D i r i c h l e t ( p ⃗ ∣ α ⃗ ) ) = ( α 1 ∑ k = 1 K α k , α 2 ∑ k = 1 K α k , . . . , α ∑ k = 1 K α k ) E(Dirichlet(\vec{p}|\vec{\alpha}))=(\frac{\alpha_1}{\sum_{k=1}^{K}\alpha_k},\frac{\alpha_2}{\sum_{k=1}^{K}\alpha_k},...,\frac{\alpha}{\sum_{k=1}^{K}\alpha_k}) E(Dirichlet(p α ))=(k=1Kαkα1,k=1Kαkα2,...,k=1Kαkα)

关于期望值的性质,非常重要,为什么?因为一般情况下我们感兴趣的是并不是分布本身,而是其期望值,这在我的另一篇文章MCMC中也强调过,这在接下来要讲的LDA中有明显的体现。

另外一点,由于 D i r i c h l e t Dirichlet Dirichlet分布表达比较复杂,我们一般对其进行简化:
D i r i c h l e t ( p ⃗ ∣ α ⃗ ) = Γ ( ∑ k = 1 K α k ) ∏ k = 1 K Γ ( α k ) ∏ k = 1 K p k α k − 1 = 1 Δ ( α ⃗ ) ∏ k = 1 K p k α k − 1 \begin{aligned} Dirichlet(\vec{p}|\vec{\alpha}) &=\frac{\Gamma(\sum_{k=1}^{K}\alpha_k)}{\prod_{k=1}^{K} \Gamma(\alpha_k)}\prod_{k=1}^{K}p_k^{\alpha_k-1}\\ &=\frac{1}{\Delta(\vec{\alpha})}\prod_{k=1}^{K}p_k^{\alpha_k-1} \end{aligned} Dirichlet(p α )=k=1KΓ(αk)Γ(k=1Kαk)k=1Kpkαk1=Δ(α )1k=1Kpkαk1
其中的 Δ ( α ⃗ ) \Delta(\vec{\alpha}) Δ(α )是归一化因子:
∫ Γ ( ∑ k = 1 K α k ) ∏ k = 1 K Γ ( α k ) ∏ k = 1 K p k α k − 1 = 1 \begin{aligned} \int \frac{\Gamma(\sum_{k=1}^{K}\alpha_k)}{\prod_{k=1}^{K} \Gamma(\alpha_k)}\prod_{k=1}^{K}p_k^{\alpha_k-1}=1 \end{aligned} k=1KΓ(αk)Γ(k=1Kαk)k=1Kpkαk1=1

Δ ( α ⃗ ) = ∏ k = 1 K Γ ( α k ) Γ ( ∑ k = 1 K α k ) = ∫ ∏ k = 1 K p k α k − 1 \begin{aligned} \Delta(\vec{\alpha}) &=\frac{\prod_{k=1}^{K} \Gamma(\alpha_k)}{\Gamma(\sum_{k=1}^{K}\alpha_k)}\\ &=\int \prod_{k=1}^{K}p_k^{\alpha_k-1} \end{aligned} Δ(α )=Γ(k=1Kαk)k=1KΓ(αk)=k=1Kpkαk1
对这个式子有点印象就可以了,下一节我们继续总结LDA的原理。

参考资料:
https://www.cnblogs.com/pinard/p/6831308.html
https://zhuanlan.zhihu.com/p/31470216
https://www.jianshu.com/p/fa97454c9ffd

下一篇 LDA主题模型2——算法原理

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值