相信很多人第一次看到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=1∑nP(Ai)P(B∣Ai)
如果我们把事件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(A1∣B)=P(B)P(A1,B)=∑i=1nP(Ai)P(B∣Ai)P(A1)P(B∣A1)
贝叶斯公式则恰好相反,其作用于’由结果推原因’:现在有一个’结果’B已经发生,在众多可能的’原因’中,到底是哪一个导致了这结果"。贝叶斯公式表示,在众多原因中,某一个原因导致结果的概率。
概念3:先验概率、后验概率、似然函数
以上贝叶斯公式
P
(
A
∣
B
)
P(A|B)
P(A∣B)是后验概率,
P
(
A
)
P(A)
P(A)是先验分布,
P
(
B
∣
A
)
P(B|A)
P(B∣A)是似然函数,
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(k∣n,p)=Cnkpk(1−p)n−k=k!(n−k)!n!pk(1−p)n−k
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(1−p)β−1=(x−1)!
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(k∣n,p)P(p∣α,β)=Binorm(k∣n,p)Beta(p∣α,β)=Cnkpk(1−p)n−k∗Γ(α)Γ(β)Γ(α+β)pα−1(1−p)β−1=∝pk+α−11−pn−k+β−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∣α,β))=∫01t∗Beta(p∣α,β)dt=∫01t∗Γ(α)Γ(β)Γ(α+β)tα−1(1−t)β−1dt=∫01Γ(α)Γ(β)Γ(α+β)tα(1−t)β−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,m3∣n,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=1∏Kpkmk
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α1−1p2α2−1p3α3−1=∏k=1KΓ(αk)Γ(∑k=1Kαk)k=1∏Kpkαk−1
多项式分布和 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=1∏Kpkαk−1=Δ(α)1k=1∏Kpkαk−1
其中的
Δ
(
α
⃗
)
\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=1∏Kpkαk−1=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=1∏Kpkαk−1
对这个式子有点印象就可以了,下一节我们继续总结LDA的原理。
参考资料:
https://www.cnblogs.com/pinard/p/6831308.html
https://zhuanlan.zhihu.com/p/31470216
https://www.jianshu.com/p/fa97454c9ffd
下一篇 LDA主题模型2——算法原理