潜在狄利克雷分配
- 潜在狄利克雷分配(latent Dirichlet allocation,LDA)是文本集合的生成概率模型。假设每个文本由话题的一个多项分布表示,每个话题由单词的一个多项分布表示,特别假设文本的话题分布的先验分布是狄利克雷分布,话题的单词分布的先验分布也是狄利克雷分布。
- LDA的文本集合生成过程:首先随机生成一个文本的话题分布,之后在该文本的每个位置,依据该文本的话题分布随机生成一个话题,然后在该位置依据该话题的单词分布随机生成一个单词,直至文本的最后一个位置,生成整个文本。重复以上过程直至生成所有文本。
- LDA模型是含有隐变量的概率图模型。模型中,每个话题的单词分布、每个文本的话题分布、文本每个位置的话题都是隐变量,文本每个位置的单词是观测变量。利用LDA进行话题分析,就是对给定文本集合,学习到每个文本的话题分布,以及每个话题的单词分布。
1 狄利克雷分布
1.1 分布定义
首先介绍作为 LDA 模型基础的多项分布和狄利克雷分布 。
1.1.1 多项分布
多项分布( multinomial distribution) 是一种多元离散随机变量的概率分布,是二项分布 ( binomial distribution) 的扩展 。
多项分布:若多元离散随机变量
X
=
(
X
1
,
X
2
,
…
,
X
k
)
X = (X_1 , X_2 , … , X_k )
X=(X1,X2,…,Xk) 的概率质量函数为
P
(
X
1
=
n
1
,
X
2
=
n
2
,
…
,
X
k
=
n
k
)
=
n
!
n
1
!
n
2
!
.
.
.
n
k
!
p
1
n
1
p
2
n
2
.
.
.
p
k
n
k
=
n
!
∏
i
=
1
k
n
i
!
∏
i
=
1
k
p
i
n
i
P(X_1=n_1,X_2=n_2, …,X_k=n_k )=\frac{n!}{n_1!n_2!...n_k!}p_1^{n_1}p_2^{n_2}...p_k^{n_k}=\frac{n!}{\prod_{i=1}^kn_i!}\prod_{i=1}^kp_i^{n_i}
P(X1=n1,X2=n2,…,Xk=nk)=n1!n2!...nk!n!p1n1p2n2...pknk=∏i=1kni!n!i=1∏kpini
其中
p
=
(
p
1
,
p
2
,
.
.
.
,
p
k
)
,
p
i
≥
0
,
i
=
1
,
2
,
.
.
.
,
k
p=(p_1,p_2,...,p_k),p_i \geq0, i = 1, 2, . . . ,k
p=(p1,p2,...,pk),pi≥0,i=1,2,...,k ,
∑
i
=
1
k
p
i
=
1
\sum_{i=1}^kp_i = 1
∑i=1kpi=1,
∑
i
=
1
k
n
i
=
n
\sum_{i=1}^k n_i= n
∑i=1kni=n,则称随机变量
X
X
X 服从参数为
(
n
,
p
)
(n , p)
(n,p) 的多项分布,记作
X
∼
M
u
l
t
(
n
,
p
)
X\sim Mult(n, p)
X∼Mult(n,p) 。
当试验的次数 n n n 为 1 时,多项分布变成类别分布 (categorical distribution) 。类别分布表示试验可能出现的 k k k 种结果的概率。显然多项分布包含类别分布。
1.1.2 狄利克雷分布
狄利克雷分布 ( Dirichlet distribution) 是一种多元连续随机变量的概率分布,是贝塔分布 ( beta distribution) 的扩展。在贝叶斯学习中,狄利克雷分布常作为多项分布的先验分布使用。
狄利克雷分布:若多元连续随机变量
θ
=
(
θ
1
,
θ
2
.
…
.
θ
k
)
\theta = (\theta_1, \theta_2. … .\theta_k)
θ=(θ1,θ2.….θk) 的概率密度函数为
p
(
θ
∣
α
)
=
Γ
(
∑
i
=
1
k
α
i
)
∏
i
=
1
k
Γ
(
α
i
)
∏
i
=
1
k
θ
i
α
i
−
1
p(\theta|\alpha)=\frac{\Gamma(\sum_{i=1}^k\alpha_i)}{\prod_{i=1}^k\Gamma (\alpha_i)}\prod_{i=1}^k\theta_i^{\alpha_i-1}
p(θ∣α)=∏i=1kΓ(αi)Γ(∑i=1kαi)i=1∏kθiαi−1
其中
∑
i
=
1
k
θ
i
=
1
,
θ
i
≥
0
\sum_{i=1}^k\theta_i=1,\theta_i \geq 0
∑i=1kθi=1,θi≥0,
α
=
(
α
1
,
α
2
,
.
.
.
,
α
k
)
\alpha = (\alpha_1,\alpha_2,...,\alpha_k)
α=(α1,α2,...,αk),
α
i
>
0
,
i
=
1
,
2
,
.
.
.
,
k
\alpha_i >0,i=1,2,...,k
αi>0,i=1,2,...,k,则称随机变量
θ
\theta
θ服从参数为
α
\alpha
α的狄利克雷分布,记作
θ
∼
D
i
r
(
α
)
\theta\sim Dir(\alpha)
θ∼Dir(α)
式中
Γ
(
s
)
\Gamma(s)
Γ(s)是伽马函数,定义为
Γ
(
s
)
=
∫
0
∞
x
s
−
1
e
−
x
d
x
,
s
>
0
\Gamma(s) = \int_0^∞x^{s-1}e^{-x}dx,s>0
Γ(s)=∫0∞xs−1e−xdx,s>0
具有性质
Γ
(
s
+
1
)
=
s
Γ
(
s
)
\Gamma(s+1)=s\Gamma(s)
Γ(s+1)=sΓ(s)
当
s
s
s是自然数时,有
Γ
(
s
+
1
)
=
s
!
\Gamma(s+1)=s!
Γ(s+1)=s!
由于满足条件
θ
i
≥
0
\theta_i \geq 0
θi≥0,
∑
i
=
1
k
θ
i
=
1
\sum_{i=1}^k\theta_i=1
∑i=1kθi=1,所以狄利克雷分布
θ
\theta
θ存在于
(
k
−
1
)
(k-1)
(k−1)维单纯形上。
令
B
(
α
)
=
∏
i
=
1
k
Γ
(
α
i
)
Γ
(
∑
i
=
1
k
α
i
)
B(\alpha)=\frac{\prod_{i=1}^k\Gamma (\alpha_i)}{\Gamma(\sum_{i=1}^k\alpha_i)}
B(α)=Γ(∑i=1kαi)∏i=1kΓ(αi),则狄利克雷分布的密度函数可以写成
p
(
θ
∣
α
)
=
1
B
(
α
)
∏
i
=
1
k
θ
i
α
i
−
1
p(\theta|\alpha)=\frac{1}{B(\alpha)}\prod_{i=1}^k\theta_i^{\alpha_i-1}
p(θ∣α)=B(α)1i=1∏kθiαi−1
B
(
α
)
B(\alpha)
B(α)是规范化因子,称为多元贝塔函数(或扩展的贝塔函数)。由密度函数的性质
∫
Γ
(
∑
i
=
1
k
α
i
)
∏
i
=
1
k
Γ
(
α
i
)
∏
i
=
1
k
θ
i
α
i
−
1
d
θ
=
Γ
(
∑
i
=
1
k
α
i
)
∏
i
=
1
k
Γ
(
α
i
)
∫
∏
i
=
1
k
θ
i
α
i
−
1
d
θ
=
1
\int \frac{\Gamma(\sum_{i=1}^k\alpha_i)}{\prod_{i=1}^k\Gamma (\alpha_i)}\prod_{i=1}^k\theta_i^{\alpha_i-1}d \theta = \frac{\Gamma(\sum_{i=1}^k\alpha_i)}{\prod_{i=1}^k\Gamma (\alpha_i)}\int\prod_{i=1}^k\theta_i^{\alpha_i-1}d \theta=1
∫∏i=1kΓ(αi)Γ(∑i=1kαi)i=1∏kθiαi−1dθ=∏i=1kΓ(αi)Γ(∑i=1kαi)∫i=1∏kθiαi−1dθ=1
得
B
(
α
)
=
∫
∏
i
=
1
k
θ
i
α
i
−
1
d
θ
B(\alpha)=\int\prod_{i=1}^k\theta_i^{\alpha_i-1}d \theta
B(α)=∫i=1∏kθiαi−1dθ
上式是多元贝塔函数的积分表达式。
1.1.3 二项分布和贝塔分布
二项分布是多项分布的特殊情况,贝塔分布是狄利克雷分布的特殊情况。
二项分布是指如下概率分布。
X
X
X 为离散随机变量,取值为
m
m
m,其概率质量函数为
P
(
X
=
m
)
=
(
n
m
)
p
m
(
1
−
p
)
n
−
m
,
m
=
0
,
1
,
2
,
.
.
.
,
n
P(X=m)=\left(\begin{aligned} n\\m\end{aligned}\right)p^m(1-p)^{n-m},m=0,1,2,...,n
P(X=m)=(nm)pm(1−p)n−m,m=0,1,2,...,n
其中
n
n
n和
p
p
p是参数
贝塔分布是指如下概率分布
X
X
X 为连续随机变量 ,取值范围为
[
0
,
1
]
[0 , 1]
[0,1], 其概率密度函数为
p
(
x
)
=
{
1
B
(
s
,
t
)
x
(
s
−
1
)
(
1
−
x
)
t
−
1
,
0
≤
x
≤
1
0
,
其他
p(x)=\left \{ \begin{aligned} & \frac{1}{B(s,t)}x^{(s-1)(1-x)^{t-1}},&0 \leq x \leq 1 \\ &0,&其他 \end{aligned} \right.
p(x)=⎩
⎨
⎧B(s,t)1x(s−1)(1−x)t−1,0,0≤x≤1其他
其中
s
>
0
s>0
s>0和
t
>
0
t>0
t>0是参数,
B
(
s
,
t
)
=
Γ
(
s
)
Γ
(
t
)
Γ
(
s
+
t
)
B(s,t)=\frac{\Gamma(s)\Gamma(t)}{\Gamma(s+t)}
B(s,t)=Γ(s+t)Γ(s)Γ(t),是贝塔函数,定义为
B
(
s
,
t
)
=
∫
0
1
x
(
s
−
1
)
(
1
−
x
)
t
−
1
d
x
B(s,t)=\int_0^1x^{(s-1)}(1-x)^{t-1}dx
B(s,t)=∫01x(s−1)(1−x)t−1dx
当
s
,
t
s,t
s,t是自然数时,
B
(
s
,
t
)
=
(
s
−
1
)
!
(
t
−
1
)
!
(
s
+
t
−
1
)
!
B(s,t)=\frac{(s-1)!(t-1)!}{(s+t-1)!}
B(s,t)=(s+t−1)!(s−1)!(t−1)!
当
n
n
n 为 1 时, 二项分布变成伯努利分布 ( Bernoulli distribution) 或 0-1 分布 。伯努利分布表示试验可能出现的 2 种结果的概率。显然 二项分布包含伯努利分布。下图给出几种概率分布的关系 。
1.2 共轭先验
狄利克雷分布有一些重要性质: (1)狄利克雷分布属于指数分布族;(2) 狄利克雷分布是多项分布的共轭先验
共轭先验:如果后验分布与先验分布属于同类,则先验分布与后验分布称为共轭分布,先验分布称为共轭先验。如果多项分布的先验分布是狄利克雷分布,则其后验分布也为狄利克雷分布,两者构成共轭分布 。作为先验分布的狄利克雷分布的参数又称为超参数。使用共轭分布的好处是便于从先验分布计算后验分布。
设 W = { w 1 , w 2 , . . . , w k } W=\{w_1,w_2,...,w_k\} W={w1,w2,...,wk}是由 k k k 个元素组成的集合。随机变量 X X X 服从 W W W上的多项分布 , X ∼ M u l t ( n , θ ) X \sim Mult(n,\theta) X∼Mult(n,θ),其中 n = ( n 1 , n 2 , . . . , n k ) n=(n_1,n_2,...,n_k) n=(n1,n2,...,nk)和 θ = ( θ 1 , θ 2 , . . . , θ k ) \theta=(\theta_1,\theta_2,...,\theta_k) θ=(θ1,θ2,...,θk)是参数。参数 n n n 为从 W W W 中重复独立抽取样本的次数, n i n_i ni为样本中 w i w_i wi出现的次数 ( i = 1 , 2 , . . . , k i = 1,2,...,k i=1,2,...,k); 参数 θ i \theta_i θi 为 w i w_i wi出现的概率 ( i = 1 , 2 , . . . , k ) (i=1 , 2,...,k) (i=1,2,...,k) 。
将样本数据表示为
D
D
D , 目标是计算在样本数据
D
D
D 给定条件下参数
θ
\theta
θ的后验概率
p
(
θ
∣
D
)
p(\theta|D)
p(θ∣D) 。 对于给定的样本数据
D
D
D , 似然函数是
p
(
D
∣
θ
)
=
θ
1
n
1
θ
2
n
2
.
.
.
θ
k
n
k
=
∏
i
=
1
k
θ
i
n
i
p(D|\theta)=\theta_1^{n_1}\theta_2^{n_2}...\theta_k^{n_k}=\prod_{i=1}^k\theta_i^{n_i}
p(D∣θ)=θ1n1θ2n2...θknk=i=1∏kθini
假设随机变量
θ
\theta
θ服从狄利克雷分布
p
(
θ
∣
α
)
p(\theta|α)
p(θ∣α) ,其中
α
=
(
α
1
,
α
2
,
…
.
α
k
)
α=(α_1,α_2,….α_k)
α=(α1,α2,….αk) 为参数。则
θ
\theta
θ的先验概率分布为
p
(
θ
∣
α
)
=
Γ
(
∑
i
=
1
k
α
i
)
∏
i
=
1
k
Γ
(
α
i
)
∏
i
=
1
k
θ
i
α
i
−
1
=
1
B
(
α
)
∏
i
=
1
k
θ
i
α
i
−
1
=
D
i
r
(
θ
∣
α
)
,
α
i
>
0
p(\theta|\alpha)=\frac{\Gamma(\sum_{i=1}^k\alpha_i)}{\prod_{i=1}^k\Gamma (\alpha_i)}\prod_{i=1}^k\theta_i^{\alpha_i-1}=\frac{1}{B(\alpha)}\prod_{i=1}^k\theta_i^{\alpha_i-1}=Dir(\theta|\alpha),\alpha_i>0
p(θ∣α)=∏i=1kΓ(αi)Γ(∑i=1kαi)i=1∏kθiαi−1=B(α)1i=1∏kθiαi−1=Dir(θ∣α),αi>0
根据贝叶斯规则,在给定样本数据
D
D
D 和参数
α
α
α 条件下,
θ
\theta
θ的后验概率分布是
p
(
θ
∣
D
,
α
)
=
p
(
D
,
θ
∣
α
)
p
(
D
∣
α
)
=
p
(
D
∣
θ
)
p
(
θ
∣
α
)
p
(
D
∣
α
)
=
∏
i
=
1
k
θ
i
n
i
1
B
(
α
)
θ
i
α
i
−
1
∫
∏
i
=
1
k
θ
i
n
i
1
B
(
α
)
θ
i
α
i
−
1
d
θ
=
1
B
(
α
+
n
)
∏
i
=
1
k
θ
i
α
i
+
n
i
−
1
=
D
i
r
(
θ
∣
α
+
n
)
\begin{aligned} p(\theta|D,\alpha)&=\frac{p(D,\theta | \alpha)}{p(D|\alpha)}\\ &=\frac{p(D|\theta)p(\theta|\alpha)}{p(D|\alpha)}\\ &=\frac{\prod_{i=1}^k\theta_i^{n_i}\frac{1}{B(\alpha)}\theta_i^{\alpha_i-1}}{\int\prod_{i=1}^k\theta_i^{n_i}\frac{1}{B(\alpha)}\theta_i^{\alpha_i-1}d\theta}\\ &=\frac{1}{B(\alpha+n)}\prod_{i=1}^k\theta_i^{\alpha_i+n_i-1}\\ &=Dir(\theta|\alpha+n) \end{aligned}
p(θ∣D,α)=p(D∣α)p(D,θ∣α)=p(D∣α)p(D∣θ)p(θ∣α)=∫∏i=1kθiniB(α)1θiαi−1dθ∏i=1kθiniB(α)1θiαi−1=B(α+n)1i=1∏kθiαi+ni−1=Dir(θ∣α+n)
可以看出先验分布和后验分布都是狄利克雷分布,两者有不同的参数,所以狄利克雷分布是多项分布的共轭先验。狄利克雷后验分布的参数等于狄利克雷先验分布参数
α
=
(
α
1
,
α
2
,
…
.
α
k
)
α=(α_1,α_2,….α_k)
α=(α1,α2,….αk)加上多项分布的观测计数
n
=
(
n
1
,
n
2
,
.
.
.
,
n
k
)
n=(n_1,n_2,...,n_k)
n=(n1,n2,...,nk), 好像试验之前就已经观察到计数
α
=
(
α
1
,
α
2
,
…
.
α
k
)
α=(α_1,α_2,….α_k)
α=(α1,α2,….αk),因此也把
α
α
α 叫做先验伪计数 (prior pseudo-counts) 。
2 潜在狄利克雷分配模型
2.1 基本想法
LDA 模型表示文本集合的自动生成过程:首先,基于单词分布的先验分布(狄利克雷分布)生成多个单词分布,即决定多个话题内容;之后,基于话题分布的先验分布(狄利克雷分布)生成多个话题分布,即决定多个文本内容;然后,基于每一个话题分布生成话题序列,针对每一个话题,基于话题的单词分布生成单词,整体构成一个单词序列,即生成文本,重复这个过程生成所有文本。文本的单词序列是观测变量,文本的话题序列是隐变量,文本的话题分布和话题的单词分布也是隐变量。
LDA 模型是概率图模型,其特点是以狄利克雷分布为多项分布的先验分布,学习就是给定文本集合,通过后验概率分布的估计,推断模型的所有参数。利用 LDA 进行话题分析,就是对给定文本集合,学习到每个文本的话题分布,以及每个话题的单词分布。
LDA与PLSA的异同:LDA(潜在狄利克雷分配)是PLSA(概率潜在语义分析)的扩展。
- ①相同点:两者都假设话题是单词的多项分布,文本是话题的多项分布。
- ②不同点:LDA使用狄利克雷分布作为先验分布,而PLSA不使用先验分布(或者说假设先验分布是均匀分布),两者对文本生成有不同假设;学习过程LDA基于贝叶斯学习,而PLSA基于极大似然估计;LDA的优点是,使用先验概率分布,可以防止学习过程产生过拟合
2.2 模型定义
2.2.1 模型要素
- 潜在狄利克雷分配 (LDA) 使用三个集合:
- 一是单词集合 W = { w 1 , . . , w v , . . . , w V } W=\{w_1,..,w_v,...,w_V\} W={w1,..,wv,...,wV},其中 w v w_v wv是第 v v v 个单词, v = 1 , 2 , … , V v =1, 2,… ,V v=1,2,…,V , V V V 是单词的个数 。
- 二是文本集合 D = { w 1 , . . . , w m … , w M } D = \{\mathbf{w}_1,...,\mathbf{w}_m …,\mathbf{w}_M\} D={w1,...,wm…,wM} ,其中 w m \mathbf{w}_m wm 是第 m m m 个文本 , m = 1 , 2 , … , M m= 1, 2,…,M m=1,2,…,M, M M M 是文本的个数。文本 w m \mathbf{w}_m wm 是一个单词序列 w m = ( w m 1 , . . , w m n , . . . , w m N m ) \mathbf{w}_m=(w_{m1},..,w_{mn},...,w_{mN_m}) wm=(wm1,..,wmn,...,wmNm) ,其中 w m n w_{mn} wmn 是文本 w m \mathbf{w}_m wm 的第 n n n 个单词 , n = 1 , 2 , … , N m n = 1,2,… ,N_m n=1,2,…,Nm, N m N_m Nm 是文本 w m \mathbf{w}_m wm 中单词的个数。
- 三是话题集合 Z = { z 1 , … , z k , … , z K } Z = \{z_1,…,z_k,…, z_K\} Z={z1,…,zk,…,zK},其中 z k z_k zk 是第 k k k 个话题 , k = 1 , 2 , … , K k = 1, 2,… ,K k=1,2,…,K , K K K 是话题的个数 。
- 每一个话题 z k z_k zk 由一个单词的条件概率分布 p ( w ∣ z k ) p(w|z_k) p(w∣zk) 决定, w ∈ W w \in W w∈W。分布 p ( w ∣ z k ) p(w|z_k) p(w∣zk)服从多项分布 (严格意义上类别分布) ,其参数为 φ k \varphi _k φk。参数 φ k \varphi _k φk 服从狄利克雷分布(先验分布) ,其超参数为 β \beta β。参数 φ k \varphi _k φk 是一个 V V V 维向量 φ k = ( φ k 1 , φ k 2 , . . . , φ k V ) \varphi _k=(\varphi _{k1},\varphi _{k2},...,\varphi _{kV}) φk=(φk1,φk2,...,φkV) , 其中 φ k v \varphi _{kv} φkv 表示话题 z k z_k zk 生成单词 w v w_v wv 的概率。所有话题的参数向量构成一个 K × V K \times V K×V 矩阵 φ = { φ k } k = 1 K \mathbf{\varphi}=\{\varphi_k\}^K_{k=1} φ={φk}k=1K 。超参数 β \beta β 也是一个 V 维向量 β = ( β 1 , β 2 , . . . , β V ) β = (\beta_1,\beta_2,...,\beta_V) β=(β1,β2,...,βV) 。
- 每一个文本 w m \mathbf{w}_m wm 由一个话题的条件概率分布 p ( z ∣ w m ) p(z |\mathbf{w}_m ) p(z∣wm) 决定 , z ∈ Z z \in Z z∈Z。分布 p ( z ∣ w m ) p(z |\mathbf{w}_m ) p(z∣wm)服从多项分布 (严格意义上类别分布) ,其参数为 θ m \theta_m θm。 参数 θ m \theta_m θm 服从狄利克雷分布〈先验分布) ,其超参数为 α α α。参数 θ m \theta_m θm 是一个 K K K 维向量 θ m = ( θ m 1 , θ m 2 , . . . , θ m K ) \theta_m=(\theta_{m1},\theta_{m2},...,\theta_{mK}) θm=(θm1,θm2,...,θmK), 其中 θ m k \theta_{mk} θmk 表示文本 w m \mathbf{w}_m wm 生成话题 z k z_k zk 的概率 。 所有文本的参数向量构成一个 M × K M \times K M×K 矩阵 θ = { θ m } m = 1 M \mathbf{\theta}=\{\theta_m\}^M_{m=1} θ={θm}m=1M 。 超参数 α α α 也是一个 K K K 维向量 α = ( α 1 , α 2 , … , α K ) α= (α_1 ,α_2,…,α_K) α=(α1,α2,…,αK) 。
- 每一个文本 w m \mathbf{w}_m wm 中的每一个单词 w m n w_{mn} wmn 由该文本的话题分布 p ( z ∣ w m ) p(z|\mathbf{w}_m) p(z∣wm) 以及所有话题的单词分布 p ( w ∣ z k ) p(w|z_k) p(w∣zk) 决定。
2.2.2 生成过程
LDA文本集合的生成过程如下:
给定单词集合 W W W,文本集合 D D D,话题集合 Z Z Z,狄利克雷分布的超参数 α \alpha α 和 β \beta β
-
(1)生成话题的单词分布
随机生成 K K K个话题的单词分布。具体过程如下,按照狄利克雷分布 D i r ( β ) Dir(\beta) Dir(β) 随机生成一个参数向量 φ k = ( φ k 1 , φ k 2 , . . . , φ k V ) \varphi _k=(\varphi _{k1},\varphi _{k2},...,\varphi _{kV}) φk=(φk1,φk2,...,φkV), φ k ∼ D i r ( β ) \varphi _k∼Dir(\beta) φk∼Dir(β) ,作为话题 z k z_k zk 的单词分布 p ( w ∣ z k ) , w ∈ W , k = 1 , 2 , . . . , K p(w|z_k),w∈W,k=1,2,...,K p(w∣zk),w∈W,k=1,2,...,K
-
(2)生成文本的话题分布
随机生成 M M M个文本的话题分布。具体过程如下,按照狄利克雷分布 D i r ( α ) Dir(\alpha) Dir(α) 随机生成一个参数向量 θ m = ( θ m 1 , θ m 2 , . . . , θ m K ) \theta_m=(\theta_{m1},\theta_{m2},...,\theta_{mK}) θm=(θm1,θm2,...,θmK), θ m ∼ D i r ( α ) \theta_m∼Dir(\alpha) θm∼Dir(α) ,作为文本 w m w_m wm 的话题分布 p ( z ∣ w m ) , m = 1 , 2 , . . . , M p(z|w_m),m=1,2,...,M p(z∣wm),m=1,2,...,M
-
(3)生成文本的单词序列
随机生成 M M M个文本的 N m N_m Nm 个单词。文本 w m ( m = 1 , 2 , . . . , M ) w_m(m=1,2,...,M) wm(m=1,2,...,M)的单词 w m n ( n = 1 , 2 , . . . , N m ) w_{mn}(n=1,2,...,N_m) wmn(n=1,2,...,Nm) 的生成过程如下:
- (3-1)首先按照多项式分布 M u l t ( θ m ) Mult(\theta_m) Mult(θm)随机生成一个话题 z m n , z m n ∼ M u l t ( θ m ) z_{mn},z_{mn}∼Mult(\theta_m) zmn,zmn∼Mult(θm)
- (3-2)然后按照多项式分布 M u l t ( φ z m n ) Mult(\varphi _{z_{mn}}) Mult(φzmn)随机生成一个单词 w m n , w m n ∼ M u l t ( φ z m n ) w_{mn},w_{mn}∼Mult(\varphi _{z_{mn}}) wmn,wmn∼Mult(φzmn) 。文本 w m w_m wm本身是单词序列 w m = ( w m 1 , w m 2 , . . . , w m N m ) w_m=(w_{m1},w_{m2},...,w_{mN_m}) wm=(wm1,wm2,...,wmNm),对应着隐式的话题序列 z m = ( z m 1 , z m 2 , . . . , z m N m ) z_m=(z_{m1},z_{m2},...,z_{mN_m}) zm=(zm1,zm2,...,zmNm)
LDA 的文本生成过程中,假定话题个数 K K K 给定,实际通常通过实验选定 。 狄利克雷分布的超参数 α α α 和 β \beta β 通常也是事先给定的。在没有其他先验知识的情况下,可以假设向量 α α α 和 β \beta β 的所有分量均为 1, 这时的文本的话题分布 θ m \theta_m θm 是对称的,话题的单词分布 φ k \varphi _k φk也是对称的。
2.2.3 概率图模型
LDA 作为概率图模型的板块表示 ( plate notation) 。图中结点表示随机变量 ,实心结点是观测变量,空心结点是隐变量;有向边表示概率依存关系;矩形(板块)表示重复,板块内数字表示重复的次数。
图中的 LDA 板块表示,结点 α α α 和 β \beta β 是模型的超参数,结点 φ k \varphi _k φk 表示话题的单词分布的参数,结点 θ m \theta_m θm 表示文本的话题分布的参数,结点 z m n z_{mn} zmn 表示话题,结点 w m n w_{mn} wmn 表示单词。结点 β β β 指向结点 φ k \varphi _k φk,重复 K K K 次,表示根据超参数 β β β 生成 K K K 个话题的单词分布的参数 φ k \varphi _k φk;结点 α α α 指向结点 θ m \theta_m θm ,重复 M M M 次,表示根据超参数 α α α 生成 M M M个文本的话题分布的参数 θ m \theta_m θm;而结点 θ m \theta_m θm 指向结点 z m n z_{mn} zmn ,重复 N m N_m Nm 次,表示根据文本的话题分布 θ m \theta_m θm 生成 N m N_m Nm 个话题 z m n z_{mn} zmn;结点 z m n z_{mn} zmn 指向结点 w m n w_{mn} wmn ,同时 K K K 个结点 φ k \varphi _k φk也指向结点 w m n w_{mn} wmn, 表示根据话题 z m n z_{mn} zmn 以及 K K K 个话题的单词分布 φ k \varphi _k φk 生成单词 w m n w_{mn} wmn 。
板块表示的优点是简洁,板块表示展开之后,成为普通的有向图表示(下图) 。有向图中结点表示随机变量,有向边表示概率依存关系。可以看出 LDA 是相同随机变量被重复多次使用的概率图模型。
2.2.4 随机变量序列的可交换性
一个有限的随机变量序列是可交换的 ( exchangeable ) ,是指随机变量的联合概率分布对随机变量的排列不变。
P
(
x
1
,
x
2
,
.
.
.
,
x
N
)
=
P
(
x
π
(
1
)
,
x
π
(
2
)
,
.
.
.
,
x
π
(
N
)
)
P(x_1,x_2,...,x_N)=P(x_{\pi(1)},x_{\pi(2)},...,x_{\pi(N)})
P(x1,x2,...,xN)=P(xπ(1),xπ(2),...,xπ(N))
这里
π
(
1
)
,
π
(
2
)
,
.
.
.
,
π
(
N
)
\pi(1),\pi(2),...,\pi(N)
π(1),π(2),...,π(N)代表自然数
1
,
2
,
…
,
N
1,2,… ,N
1,2,…,N 的任意一个排列。 一个无限的随机变量序列是无限可交换 ( infinitely exchangeable) 的,是指它的任意一个有 限子序列都是可交换的 。
如果一个随机变量序列 X 1 , X 2 , … , X N , … X_1,X_2,… ,X_N ,… X1,X2,…,XN,…是独立同分布的 , 那么它们是无限可交换的。反之不然。
随机变量序列可交换的假设在贝叶斯学习中经常使用 。 根据 De Finetti 定理,任意一个无限可交换的随机变量序列对一个随机参数是条件独立同分布的。即任意一个无限可交换的随机变量序列
X
1
,
X
2
,
…
,
X
i
,
…
X_1,X_2,… ,X_i ,…
X1,X2,…,Xi,… 的基于一个随机参数
Y
Y
Y 的条件概率,等于基于这个随机参数
Y
Y
Y 的各个随机变量
X
1
,
X
2
,
…
,
X
N
,
…
X_1,X_2,… ,X_N ,…
X1,X2,…,XN,… 的条件概率的乘积 。
P
(
X
1
,
X
2
,
…
,
X
N
,
…
∣
Y
)
=
P
(
X
1
∣
Y
)
P
(
X
2
∣
Y
)
.
.
.
P
(
X
i
∣
Y
)
.
.
.
P(X_1,X_2,… ,X_N ,…|Y)=P(X_1|Y)P(X_2|Y)...P(X_i|Y)...
P(X1,X2,…,XN,…∣Y)=P(X1∣Y)P(X2∣Y)...P(Xi∣Y)...
LDA 假设文本由无限可交换的话题序列组成 。 由 De Finetti 定理知 , 实际是假设文本中的话题对一个随机参数是条件独立同分布的。所以在参数给定的条件下 , 文本中的话题的顺序可以忽略。作为对比,概率潜在语义模型假设文本中的话题是独立同分布的,文本中的话题的顺序也可以,忽略。
2.2.5 概率公式
LDA 模型整体是由观测变量和隐变量组成的联合概率分布,可以表为
p
(
w
,
z
,
θ
,
φ
∣
α
,
β
)
=
∏
k
=
1
K
p
(
φ
k
∣
β
)
∏
m
=
1
M
p
(
θ
m
∣
α
)
∏
n
=
1
N
m
p
(
z
m
n
∣
θ
m
)
p
(
w
m
n
∣
z
m
n
,
φ
)
p(\mathbf{w},\mathbf{z},\theta,\varphi|\alpha,\beta)=\prod_{k=1}^Kp(\varphi_k|\beta)\prod_{m=1}^Mp(\theta_m|\alpha)\prod_{n=1}^{N_m}p(z_{mn}|\theta_m)p(w_{mn}|z_{mn},\varphi)
p(w,z,θ,φ∣α,β)=k=1∏Kp(φk∣β)m=1∏Mp(θm∣α)n=1∏Nmp(zmn∣θm)p(wmn∣zmn,φ)
其中观测变量
w
\mathbf{w}
w 表示所有文本中的单词序列,隐变量
z
\mathbf{z}
z 表示所有文本中的话题序列,隐变量
θ
\theta
θ 表示所有文本的话题分布的参数,隐变量
φ
\varphi
φ 表示所有话题的单词分布的参数,
α
α
α 和
β
β
β 是超参数。式中
p
(
φ
k
∣
β
)
p(\varphi_k|\beta)
p(φk∣β) 表示超参数
β
β
β 给定条件下第
k
k
k 个话题的单词分布的参数
φ
k
\varphi_k
φk 的生成概率,
p
(
θ
m
∣
α
)
p(\theta_m|\alpha)
p(θm∣α) 表示超参数
α
α
α 给定条件下第
m
m
m 个文本的话题分布的参数
θ
m
\theta_m
θm 的生成概率 ,
p
(
z
m
n
∣
θ
m
)
p(z_{mn}|\theta_m)
p(zmn∣θm) 表示第
m
m
m 个文本的话题分布
θ
m
\theta_m
θm 给定条件下文本的第
n
n
n 个位置的话题
z
m
n
z_{mn}
zmn 的生成概率 ,
p
(
w
m
n
∣
z
m
n
,
φ
)
p(w_{mn}|z_{mn},\varphi)
p(wmn∣zmn,φ) 表示在第
m
m
m 个文本的第
n
n
n 个位置的话题
z
m
n
z_{mn}
zmn 及所有话题的单词分布的参数
φ
\varphi
φ 给定条件下第
m
m
m 个文本的第
n
n
n 个位置的单词
w
m
n
w_{mn}
wmn 的生成概率。
第
m
m
m个文本的联合概率分布可以表为
p
(
w
m
,
z
m
,
θ
m
,
φ
∣
α
,
β
)
=
∏
k
=
1
K
p
(
φ
k
∣
β
)
p
(
θ
m
∣
α
)
∏
n
=
1
N
m
p
(
z
m
n
∣
θ
m
)
p
(
w
m
n
∣
z
m
n
,
φ
)
p(\mathbf{w}_m,\mathbf{z}_m,\theta_m,\varphi|\alpha,\beta)=\prod_{k=1}^Kp(\varphi_k|\beta)p(\theta_m|\alpha)\prod_{n=1}^{N_m}p(z_{mn}|\theta_m)p(w_{mn}|z_{mn},\varphi)
p(wm,zm,θm,φ∣α,β)=k=1∏Kp(φk∣β)p(θm∣α)n=1∏Nmp(zmn∣θm)p(wmn∣zmn,φ)
其中
w
m
\mathbf{w}_m
wm 表示该文本中的单词序列 ,
z
m
\mathbf{z}_m
zm 表示该文本的话题序列 ,
θ
m
\theta_m
θm 表示该文本的话题分布参数。
LDA 模型的联合分布含有隐变量,对隐变量进行积分得到边缘分布。
参数
θ
m
\theta_m
θm 和
φ
\varphi
φ 给定条件下第
m
m
m 个文本的生成概率是
p
(
w
m
∣
θ
m
,
φ
)
=
∏
n
=
1
N
m
[
∑
k
=
1
K
p
(
z
m
n
=
k
∣
θ
m
)
p
(
w
m
n
∣
φ
k
)
]
p(\mathbf{w}_m|\theta_m,\varphi)=\prod_{n=1}^{N_m}\left[\sum_{k=1}^Kp(z_{mn}=k|\theta_m)p(w_{mn}|\varphi_k)\right]
p(wm∣θm,φ)=n=1∏Nm[k=1∑Kp(zmn=k∣θm)p(wmn∣φk)]
超参数
α
α
α 和
β
β
β 给定条件下第
m
m
m 个文本的生成概率是
p
(
w
m
∣
α
,
β
)
=
∏
k
=
1
K
∫
p
(
φ
k
∣
β
)
[
∫
p
(
θ
m
∣
α
)
∏
n
=
1
N
m
[
∑
l
=
1
K
p
(
z
m
n
=
l
∣
θ
m
)
p
(
w
m
n
∣
φ
l
)
]
d
θ
m
]
d
φ
k
p(\mathbf{w}_m|\alpha,\beta)=\prod_{k=1}^K\int p(\varphi_k|\beta) \left[ \int p(\theta_m|\alpha)\prod_{n=1}^{N_m}\left[ \sum_{l=1}^Kp(z_{mn}=l|\theta_m)p(w_{mn}|\varphi_l)\right]d\theta_m\right]d\varphi_k
p(wm∣α,β)=k=1∏K∫p(φk∣β)[∫p(θm∣α)n=1∏Nm[l=1∑Kp(zmn=l∣θm)p(wmn∣φl)]dθm]dφk
超参数
α
α
α 和
β
β
β 给定条件下所有文本的生成概率是
p
(
w
∣
α
,
β
)
=
∏
k
=
1
K
∫
p
(
φ
k
∣
β
)
[
∏
m
=
1
M
∫
p
(
θ
m
∣
α
)
∏
n
=
1
N
m
[
∑
l
=
1
K
p
(
z
m
n
=
l
∣
θ
m
)
p
(
w
m
n
∣
φ
l
)
]
d
θ
m
]
d
φ
k
p(\mathbf{w}|\alpha,\beta)=\prod_{k=1}^K\int p(\varphi_k|\beta) \left[ \prod_{m=1}^M\int p(\theta_m|\alpha)\prod_{n=1}^{N_m}\left[ \sum_{l=1}^Kp(z_{mn}=l|\theta_m)p(w_{mn}|\varphi_l)\right]d\theta_m\right]d\varphi_k
p(w∣α,β)=k=1∏K∫p(φk∣β)[m=1∏M∫p(θm∣α)n=1∏Nm[l=1∑Kp(zmn=l∣θm)p(wmn∣φl)]dθm]dφk
3 LDA 的吉布斯抽样算法
- 输入:文本的单词序列 w = { w 1 , . . . , w m … , w M } \mathbf{w} = \{\mathbf{w}_1,...,\mathbf{w}_m …,\mathbf{w}_M\} w={w1,...,wm…,wM} , w m = ( w m 1 , . . , w m n , . . . , w m N m ) \mathbf{w}_m=(w_{m1},..,w_{mn},...,w_{mN_m}) wm=(wm1,..,wmn,...,wmNm);
- 输出:文本的话题序列 z = { z 1 , . . . , z m … , z M } \mathbf{z} = \{\mathbf{z}_1,...,\mathbf{z}_m …,\mathbf{z}_M\} z={z1,...,zm…,zM} , z m = ( z m 1 , . . , z m n , . . . , z m N m ) \mathbf{z}_m=(z_{m1},..,z_{mn},...,z_{mN_m}) zm=(zm1,..,zmn,...,zmNm)的后验概率分布 p ( z ∣ w , α , β ) p(\mathbf{z}|\mathbf{w},\alpha,\beta) p(z∣w,α,β) 的样本计数,模型的参数 φ \varphi φ 和 θ \theta θ 的估计值;
- 参数:超参数 α α α 和 β \beta β , 话题个数 K K K 。
-
设所有计数矩阵的元素 n m k n_{mk} nmk, n k v n_{kv} nkv,计数向量的元素 n m n_m nm, n k n_k nk初值为 0;
-
对所有文本 w m \mathbf{w}_m wm, m = 1 , 2 , … , M m = 1, 2,… , M m=1,2,…,M,对第 m m m 个文本中的所有单词 w m n w_{mn} wmn, n = 1 , 2 , … , N m n=1,2 ,…,N_m n=1,2,…,Nm,
- 抽样话题 z m n ∼ M u l t ( 1 K ) z_{mn} \sim Mult(\frac{1}{K}) zmn∼Mult(K1);
- 增加文本-话题计数 n m k = n m k + 1 n_{mk} = n_{mk} + 1 nmk=nmk+1,
- 增加文本-话题和计数 n m = n m + 1 n_m= n_m +1 nm=nm+1 ,
- 增加话题-单词计数 n k v = n k v + 1 n_{kv} = n_{kv} + 1 nkv=nkv+1,
- 增加话题-单词和计数 n k = n k + 1 n_k = n_k+ 1 nk=nk+1;
-
循环执行以下操作,直到进入燃烧期。对所有文本 w m \mathbf{w}_m wm, m = 1 , 2 , … , M m = 1, 2,… , M m=1,2,…,M,对第 m m m 个文本中的所有单词 w m n w_{mn} wmn, n = 1 , 2 , … , N m n=1,2 ,…,N_m n=1,2,…,Nm
-
(a) 当前的单词 w m n w_{mn} wmn 是第 v v v 个单词,话题指派 z m n z_{mn} zmn 是第 k k k 个话题;
- 减少文本-话题计数 n m k = n m k − 1 n_{mk} = n_{mk} - 1 nmk=nmk−1,
- 减少文本-话题和计数 n m = n m − 1 n_m= n_m -1 nm=nm−1 ,
- 减少话题-单词计数 n k v = n k v − 1 n_{kv} = n_{kv} - 1 nkv=nkv−1,
- 减少话题-单词和计数 n k = n k − 1 n_k = n_k- 1 nk=nk−1;
-
(b) 按照满条件分布进行抽样
p ( z i ∣ z − i , w , α , β ) ∝ n k v + β v ∑ v = 1 V ( n k v + β v ) . n m k + α k ∑ k = 1 K ( n m k + α k ) p(z_i|\mathbf{z}_{-i},\mathbf{w},\alpha,\beta) \propto \frac{n_{kv}+\beta_v}{\sum_{v=1}^V(n_{kv}+\beta_v)} . \frac{n_{mk}+\alpha_k}{\sum_{k=1}^K(n_{mk}+\alpha_k)} p(zi∣z−i,w,α,β)∝∑v=1V(nkv+βv)nkv+βv.∑k=1K(nmk+αk)nmk+αk
得到新的第 k ′ k' k′ 个话题,分配给 z m n z_{mn} zmn; -
(c)增加计数 n m k ′ = n m k ′ + 1 n_{mk'} = n_{mk'} + 1 nmk′=nmk′+1, n m = n m + 1 n_m= n_m +1 nm=nm+1 , n k ′ ′ v = n k ′ v + 1 n_{k''v} = n_{k'v} + 1 nk′′v=nk′v+1, n k ′ = n k ′ + 1 n_{k'} = n_{k'}+ 1 nk′=nk′+1;
-
(d)得到更新的两个计数矩阵 N K × V = [ n k v ] N_{K\times V} = [n_{kv}] NK×V=[nkv] 和 N M × K = [ n m k ] N_{M \times K} = [n_{mk}] NM×K=[nmk] ,表示后验概率分布 p ( z ∣ w , α , β ) p(\mathbf{z}|\mathbf{w},\alpha,\beta) p(z∣w,α,β) 的样本计数;
-
-
利用得到的样本计数,计算模型参数
θ m k = n m k + α k ∑ k = 1 K ( n m k + α k ) φ k v = n k v + β v ∑ v = 1 V ( n k v + β v ) \theta_{mk}=\frac{n_{mk}+\alpha_k}{\sum_{k=1}^K(n_{mk}+\alpha_k)}\\ \varphi_{kv}=\frac{n_{kv}+\beta_v}{\sum_{v=1}^V(n_{kv}+\beta_v)} θmk=∑k=1K(nmk+αk)nmk+αkφkv=∑v=1V(nkv+βv)nkv+βv
4 LDA 的变分 EM 算法
LDA 的变分 EM 算法如下:
- 输入:给定文本集合 D = { w 1 , . . . , w m … , w M } D = \{\mathbf{w}_1,...,\mathbf{w}_m …,\mathbf{w}_M\} D={w1,...,wm…,wM} ;
- 输出:变分参数 γ \gamma γ , η \eta η,模型参数 α α α, φ \varphi φ 。
交替选代 E 步和 M 步,直到收敛。
-
(1) E 步
固定模型参数 α α α, φ \varphi φ ,通过关于变分参数 γ \gamma γ , η \eta η 的证据下界的最大化,估计变分参数 γ \gamma γ , η \eta η。
-
(2) M 步
固定变分参数 γ \gamma γ , η \eta η ,通过关于模型参数 α α α, φ \varphi φ 的证据下界的最大化,估计模型参数 α α α, φ \varphi φ
根据变分参数 γ \gamma γ , η \eta η ,可以估计模型参数 θ = ( θ 1 , . . . , θ m , . . . , θ M ) \theta=(\theta_1,...,\theta_m,...,\theta_M) θ=(θ1,...,θm,...,θM), z = ( z 1 , . . . , z m … , z M ) \mathbf{z} = (\mathbf{z}_1,...,\mathbf{z}_m …,\mathbf{z}_M) z=(z1,...,zm…,zM)