LDA简要介绍
前情提要
这里只列出与之有关的数学公式,并不做具体的推导与其背后的数学故事。如果感兴趣的朋友可以看看LDA数学八卦,里面有完整的故事背景和数学证明。
gamma函数:
其数学形式为:
如果对其做分部积分,我们有如下性质:
易知:
Dirichlet分布:
其数学形式如下:
对于给定的
p
⃗
\vec p
p和
N
N
N,定义多项分布为:
而上述这两个分布是共轭关系。
Dirichlet 分布的一个性质:
上面的内容不懂也没有关系,只需要在用到的时候过来查阅便好,这里列出只是方便查阅。
吉布斯采样:
这部分内容与LDA的训练过程有关。我在博客 MCMC和Gibbs Sampling中对其进行了详细的介绍。不清楚的朋友可以看到训练过程后,再看这篇博客。
PLSA
说到LDA,不得不先介绍一下PLSA,PLSA的基本思想是,假设一篇文章有多个topic,每个topic生成语料库中词的概率不同。
因此不难看出,这是一个词袋模型,我们把生成的过程分为两个部分,一个是doc->topic,另一个是topic->word
假设我们有
K
K
K个topic:
- 每个topic,对应一个生成word的概率分布,将其记为 φ k \varphi_k φk,其中k代表第k个topic
- 对于包含M篇文档的语料 C = ( d 1 , d 2 , ⋯ , d m ) C=(d_1,d_2,\cdots,d_m) C=(d1,d2,⋯,dm),对其中的任一文档都有doc-topic的概率分布,记为 θ m \theta_m θm
对文档
d
m
d_m
dm生成每个词的概率为:
所以整篇文档生成的概率为:
同样地,可以写出整个语料库的概率,并使用EM算法得到其局部最优。
LDA
可以看出,PLSA是频率学派的作品,贝叶斯学派对此持不同意见。在贝叶斯学派看来,随机变量应该属于某种先验分布,即
φ
\varphi
φ和
θ
\theta
θ应该是要满足先验分布的。而我们知道,
φ
\varphi
φ和
θ
\theta
θ本身是多项分布,那么由于狄利克雷与多项分布的共轭性,其先验分布自然选狄利克雷分布。其物理过程如下图所示:
因此,我们将这个过程拆分为两个物理过程理解,
第一步:
α
⃗
→
θ
⃗
m
→
z
⃗
m
\vec \alpha \rightarrow \vec \theta_m \rightarrow \vec z_m
α→θm→zm:
可以看出,整体是一个Dirichlet-Multinomial共轭结构。因此有:
如果有先验分布得到 p ⃗ ← D i r ( p ⃗ ∣ α ⃗ ) \vec p \leftarrow Dir(\vec p|\vec \alpha) p←Dir(p∣α),且 p ⃗ \vec p p满足多项式分布。那么如果使用该概率分布生成整个语料,我们有:
进一步地,由于共轭性,我们有
θ
⃗
m
\vec \theta_m
θm满足后验分布:
由于M篇文档的所有topics相互独立,所以我们有m个相互独立的Dirichlet-Multinomial共轭结构:
第二步:
β
⃗
→
φ
⃗
k
→
w
⃗
k
\vec \beta \rightarrow \vec \varphi_k \rightarrow \vec w_k
β→φk→wk
同样的,我们有:
其中,
φ
⃗
k
\vec \varphi_k
φk的后验概率为:
而语料中的K个topic生成word同样是相互独立的,因此我们有K个相互独立的Dirichlet-Multinomial共轭结构,从而可以得到整个语料库中的所有词生成概率:
那么,结合(26)和(27),我们自然有:
LDA的训练
训练目标是参数 φ \varphi φ和 θ \theta θ,而 α , β \alpha,\beta α,β是超参数。
那么我们怎么去估计这两个参数呢?我们知道,word是可以观测到的已知数据,而topic是隐含的变量。如果我们有
p
(
w
⃗
,
z
⃗
)
p(\vec w,\vec z)
p(w,z)的联合概率,那么根据式子(28)我们自然可以估计参数
φ
\varphi
φ和
θ
\theta
θ。由于topic是隐含变量,要估计联合概率,自然希望通过某种方式采样topics,最终使得这些topics能够收敛,而之前说过,高维的采样考虑使用吉布斯采样。因此这里使用吉布斯采样对topic进行采样。假设这里我们已经清楚了吉布斯采样在LDA中的计算细节,那么LDA Training的过程是:
吉布斯采样在LDA中的计算细节:
由于联合概率的分母计算量较大,因此我们最终需要采样的分布是
p
(
z
⃗
∣
w
⃗
)
p(\vec z|\vec w)
p(z∣w)。那么接下来:
这个过程仅仅涉及到第m篇文章和第k个topic,因此与其他的M+K-2个Dirichlet-Multinomial共轭结构相互独立。其本身涉及的共轭结构:
因此我们有:
根据狄利克雷分布的性质:
最终我们可以得到:
参考
LDA数学八卦
beautyxiaowang: 作者你好,我想问一下你分享的这篇文章的原文是那一篇呢?
qbdl: 不是说用C语言实现吗?
fenfyue: 函数keywords那部分你能跑通嘛?