发现了一篇讲解的非常好的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(W∣D)=P(W∣T)P(T∣D)=P(W,T∣D)(1)
上面的式子中,D是某一篇文档,T是文档D对应的主题集合,W是根据T生成的单词。
对于(1)式可能会有人困惑,为什么 P ( W ∣ D ) = = P ( W , T ∣ D ) P(W|D) == P(W,T|D) P(W∣D)==P(W,T∣D),我觉得可以这样理解:因为给定一篇文档的时候,我们并不知道这篇文档的主题是哪些,但是这些主题是隐含在文档中的,所以是一个隐变量,所以二者应该是相等的。
LDA是基于贝叶斯估计的,谈到贝叶斯估计就要涉及到:似然概率、先验概率和后验概率。在(1)式中,
P
(
W
∣
T
)
和
P
(
T
∣
D
)
P(W|T)和P(T|D)
P(W∣T)和P(T∣D)都是后验概率,根据贝叶斯公式应该有:
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(T∣D)=P(D)P(D∣T)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(W∣T)=P(T)P(T∣W)P(W)(3)
所以(1)式可以进一步分解为(2)、(3)的乘积,在(2)和(3)式中,
P
(
T
)
是
主
题
的
先
验
概
率
,
P
(
D
∣
T
)
是
主
题
的
似
然
函
数
P(T)是主题的先验概率, P(D|T)是主题的似然函数
P(T)是主题的先验概率,P(D∣T)是主题的似然函数
P
(
W
)
是
单
词
的
先
验
概
率
,
P
(
T
∣
W
)
是
单
词
的
似
然
函
数
P(W)是单词的先验概率,P(T|W)是单词的似然函数
P(W)是单词的先验概率,P(T∣W)是单词的似然函数
在LDA模型中,假设一篇文档可以有
k
k
k个主题,一个主题下有多个属于这个主题的单词。
如果我们用一个多面的骰子来模拟主题,那么确定一篇文档D有哪几个主题就相当于是抛掷这面骰子k次,朝上的那个面对应的主题作为文档D的一个主题。确定选择这个主题的哪个单词作为文档D的一个单词也可以用骰子来模拟。
通过二项式定理与二项分布、多项式定理与多项分布我们可以知道,上面的两个过程就是多项式分布,也就是每篇文档的主题分布(主题的似然函数,也就是 L ( T ∣ D ) = P ( D ∣ T ) L(T|D) = P(D|T) L(T∣D)=P(D∣T))是多项式分布,每个主题下的词分布(词的似然函数,也就是 L ( W ∣ T ) = P ( T ∣ W ) L(W|T)=P(T|W) L(W∣T)=P(T∣W))也是多项式分布。
在以前的博客中,我说明了贝叶斯估计与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 θ是一个k维的向量,向量的每一维表示某个主题的概率,和为1),用概率公式来表达就是 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α1−1...θkαk−1 --------------------------------通过 α \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...θkrk,其中N表示文档i词的个数,rk表示第k个主题选择的次数,∑rk=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=1∏Np(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∣α,β)==∫θ∫φz∑p(θ,z,φ,W∣α,β)∫θ∫φz∑p(θ∣α)n=1∏Np(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