以下内容有部分源于课件,主要是上课推导太快了没听明白所以这里又来整理了一遍。
LDA
首先是从LSA入手。他对于一篇文章的初始标识和向量空间模型相似,使用词表维度的向量来表示,但是向量内的元素是单词在文档中出现的次数。
SVD for LDA
此外,我们了解一下奇异值分解(SVD):
A
m
×
n
=
U
m
×
m
Σ
m
×
n
V
n
×
n
T
A_{m×n} = U_{m×m}\Sigma_{m×n} V_{n×n}^T
Am×n=Um×mΣm×nVn×nT
其中,
U
U
U为左奇异矩阵,
V
V
V为右奇异矩阵,
Σ
\Sigma
Σ为奇异值矩阵,且
U
,
V
U,V
U,V都是正交矩阵。这里要提到一个SVD的性质:在奇异值矩阵中按序排列,奇异值减少很迅速(很多时候前10%甚至1%就占了全部奇异值之和的99%以上),也就是说我们可以用最大的K个其意志和对应的左右奇异向量来描述近似矩阵。
这里就是想要找到一个比较小的值k,保留前k个奇异向量和奇异值,其中
U
U
U 的维度从
m
×
m
m×m
m×m 变成了
m
×
k
m×k
m×k ,
V
V
V的维度从
n
×
n
n×n
n×n 变成了
m
×
k
m×k
m×k ,
Σ
Σ
Σ 的维度从
m
×
n
m×n
m×n 变成了
k
×
k
k×k
k×k 的方阵,从而达到降维效果。
A
m
×
n
=
U
m
×
m
Σ
m
×
n
V
n
×
n
T
≈
U
m
×
k
Σ
k
×
k
V
m
×
k
T
A_{m×n} = U_{m×m}\Sigma_{m×n} V_{n×n}^T \approx U_{m×k}\Sigma_{k×k} V_{m×k}^T
Am×n=Um×mΣm×nVn×nT≈Um×kΣk×kVm×kT
把上面的SVD应用到主题模型,可以认为:
- K是主题数;
- 经过SVD分解后, U i , l U_{i,l} Ui,l对应第 i i i个单词和第 l l l个词义类的相关性,矩阵 U U U就是词-词义类矩阵;
- V l , j V_{l,j} Vl,j表示第 j j j篇文档与第 l l l个主题的相关性,矩阵 V V V是主题-文档矩阵;
- Σ l , l \Sigma_{l,l} Σl,l表示第 l l l个词义类与第 l l l个主题之间的相关性。
EM for LDA
EM算法
首先了解一下一般的EM算法:
对于观测变量 X X X和潜在变量 Z Z Z,在参数 θ \theta θ控制下,根据分布 p ( X , Z ∣ θ ) p(X,Z|\theta) p(X,Z∣θ),目标为最大化关于 θ \theta θ的可能性 p ( X ∣ θ ) p(X|\theta) p(X∣θ)。
过程描述如下:
- 为 θ o l d \theta^{old} θold选一个初始设定(初始化)
- E step来计算 p ( Z ∣ X , θ o l d ) p(Z|X,\theta^{old}) p(Z∣X,θold)
- M step来计算 θ n e w \theta^{new} θnew: θ n e w = a r g m a x θ Q ( θ , θ o l d ) Q ( θ , θ o l d ) = ∑ Z p ( Z ∣ X , θ o l d ) ln p ( X , Z ∣ θ ) \theta^{new}=arg max_\theta Q(\theta, \theta^{old})\\ Q(\theta, \theta^{old}) = \sum_Z p(Z|X,\theta^{old}) \ln p(X,Z|\theta) θnew=argmaxθQ(θ,θold)Q(θ,θold)=Z∑p(Z∣X,θold)lnp(X,Z∣θ)
- 检查对数似然或参数值的收敛性,如果不满足收敛准则,就计算 θ o l d ← θ n e w \theta^{old}\leftarrow\theta^{new} θold←θnew,并返回第2.步
EM for LDA
通常根据迪利克雷分布采样得到单词和主题、文档和主题的分布,并基于主题采样单词、基于文本采样主题。
可以抽象为下面的上帝掷骰子:
Gibbs Sampling for LDA
变量初设
假设语料库中有M篇文档,所有的word和topic如下表示:
w
→
=
(
w
→
1
,
⋯
,
w
→
M
)
z
→
=
(
z
→
1
,
⋯
,
z
→
M
)
其
中
,
w
→
m
表
示
第
m
篇
文
档
中
的
词
,
z
→
m
表
示
这
些
词
对
应
的
t
o
p
i
c
编
号
注
意
w
→
和
z
→
都
是
由
更
小
的
、
代
表
每
篇
文
章
内
内
容
的
向
量
构
成
的
\overrightarrow{\pmb w} = (\overrightarrow{w}_1, \cdots,\overrightarrow{w}_M)\\ \overrightarrow{\pmb z} = (\overrightarrow{z}_1,\cdots,\overrightarrow{z}_M)\\ 其中,\\ \overrightarrow{w}_m表示第m篇文档中的词,\\\overrightarrow{z}_m表示这些词对应的topic编号\\ 注意\overrightarrow{w}和\overrightarrow{z}都是由更小的、代表每篇文章内内容的向量构成的
www=(w1,⋯,wM)zzz=(z1,⋯,zM)其中,wm表示第m篇文档中的词,zm表示这些词对应的topic编号注意w和z都是由更小的、代表每篇文章内内容的向量构成的
结合LDA分析推导过程
LDA可以分为以下两个主要的物理过程
- α → → θ → m → z m , n \overrightarrow\alpha \rightarrow \overrightarrow\theta_m \rightarrow z_{m,n} α→θm→zm,n,表示在生成第 m m m篇文档的时候,现从第一个坛子中抽一个doc-topic骰子 θ → m \overrightarrow\theta_m θm,然后投掷这个骰子生成了文档中第 n n n个词的topic编号 z m , n z_{m,n} zm,n。
- β → → ψ → k → w m , n ∣ k = z m , n \overrightarrow\beta \rightarrow \overrightarrow\psi_k \rightarrow w_{m,n}|k=z_{m,n} β→ψk→wm,n∣k=zm,n,表示你用如下动作生成语料中第m篇文档的第n个词:在上帝手下的K个topic-word骰子 ψ → k \overrightarrow\psi_k ψk中,挑选编号为 k = z m , n k=z_{m,n} k=zm,n的那个骰子进行透支,然后生成word w m , n w_{m,n} wm,n。
过程一
对于过程一,显然
α
→
→
θ
→
m
\overrightarrow\alpha \rightarrow \overrightarrow\theta_m
α→θm对应于Dirichlet分布,
θ
m
→
z
m
,
n
\theta_m \rightarrow z_{m,n}
θm→zm,n对应于Mutinomial分布,所以说整体上有
D
i
r
i
c
h
l
e
t
−
M
u
t
i
n
o
m
i
a
l
Dirichlet-Mutinomial
Dirichlet−Mutinomial共轭结构:
p
(
z
→
m
∣
α
→
)
=
Δ
(
n
→
m
+
α
→
)
Δ
(
α
→
)
p(\overrightarrow z_m|\overrightarrow\alpha)=\frac{\Delta(\overrightarrow n_m+\overrightarrow\alpha)}{\Delta(\overrightarrow\alpha)}
p(zm∣α)=Δ(α)Δ(nm+α)
其中
n
→
m
=
(
n
→
m
(
1
)
,
⋯
,
n
→
m
(
K
)
)
\overrightarrow n_m=(\overrightarrow n_m^{(1)},\cdots,\overrightarrow n_m^{(K)})
nm=(nm(1),⋯,nm(K)),
n
→
m
(
k
)
\overrightarrow n_m^{(k)}
nm(k)表示第
m
m
m篇文档中第
k
k
k个topic产生的词的数量。
进一步,利用
D
i
r
i
c
h
l
e
t
−
M
u
t
i
n
o
m
i
a
l
Dirichlet-Mutinomial
Dirichlet−Mutinomial共轭结构,我们得到参数
θ
→
m
\overrightarrow\theta_m
θm的后验分布恰好是:
D
i
r
(
θ
→
m
∣
n
→
m
+
α
→
)
Dir(\overrightarrow\theta_m|\overrightarrow n_m + \overrightarrow\alpha)
Dir(θm∣nm+α)
由于语料库中M篇文档的topics生成过程相互独立,所以我们得到M个相互独立的
D
i
r
i
c
h
l
e
t
−
M
u
t
i
n
o
m
i
a
l
Dirichlet-Mutinomial
Dirichlet−Mutinomial共轭结构,从而我们可以得到整个语料中topics生成概率:
p
(
z
→
∣
α
→
)
=
∏
m
=
1
M
p
(
z
m
→
∣
α
→
)
=
∏
m
=
1
M
Δ
(
n
→
m
+
α
→
)
Δ
(
α
→
)
p(\overrightarrow{\pmb z}|\overrightarrow{\alpha})=\prod_{m=1}^Mp(\overrightarrow{z_m}|\overrightarrow{\alpha})=\prod_{m=1}^M\frac{\Delta(\overrightarrow n_m+\overrightarrow\alpha)}{\Delta(\overrightarrow\alpha)}
p(zzz∣α)=m=1∏Mp(zm∣α)=m=1∏MΔ(α)Δ(nm+α)
过程二
在语料中所有词的topic已经生成的条件下,任何两个word的生成动作都是可交换的,于是我们把语料中的词进行交换,把具有相同topic的词放在一起:
w
→
=
(
w
→
(
1
)
,
⋯
,
w
→
(
M
)
)
z
→
=
(
z
→
(
1
)
,
⋯
,
z
→
(
M
)
)
\overrightarrow{\pmb w} = (\overrightarrow{w}_{(1)}, \cdots,\overrightarrow{w}_{(M)})\\ \overrightarrow{\pmb z} = (\overrightarrow{z}_{(1)},\cdots,\overrightarrow{z}_{(M)})
www=(w(1),⋯,w(M))zzz=(z(1),⋯,z(M))
从而有:
p
(
w
→
(
k
)
∣
β
→
)
=
Δ
(
n
→
k
+
β
→
)
Δ
(
β
→
)
p(\overrightarrow w_{(k)}| \overrightarrow \beta)=\frac{\Delta(\overrightarrow n_k+\overrightarrow\beta)}{\Delta(\overrightarrow\beta)}
p(w(k)∣β)=Δ(β)Δ(nk+β)
其中,
n
→
k
=
(
n
k
(
1
)
,
⋯
,
n
k
(
V
)
)
\overrightarrow n_k=(n_k^{(1)},\cdots,n_k^{(V)})
nk=(nk(1),⋯,nk(V)),
n
k
(
t
)
n_k^{(t)}
nk(t)表示第
k
k
k个topic产生的词中word t的个数
综合
利用共轭结构,我们得到参数
ψ
→
k
\overrightarrow\psi_k
ψk的后验分布恰好是:
D
i
r
(
ψ
→
k
∣
n
→
k
+
β
→
)
Dir(\overrightarrow\psi_k|\overrightarrow n_k + \overrightarrow\beta)
Dir(ψk∣nk+β)
而利用K个相互独立的topics生成words的过程,借助K个独立共轭结构,可以得到整个语料中词生成概率:
p
(
w
→
∣
z
→
,
β
→
)
=
p
(
w
→
′
∣
z
→
′
,
β
→
)
=
∏
k
=
1
K
p
(
w
→
(
k
)
∣
z
→
(
k
)
,
β
→
)
=
∏
k
=
1
K
Δ
(
n
→
k
+
β
→
)
Δ
(
β
→
)
p(\overrightarrow{\pmb{w}}|\overrightarrow{\pmb{z}}, \overrightarrow\beta)=p(\overrightarrow{\pmb{w}}\prime|\overrightarrow{\pmb{z}}\prime, \overrightarrow\beta)=\prod_{k=1}^Kp(\overrightarrow w_{(k)}|\overrightarrow z_{(k)}, \overrightarrow \beta)=\prod_{k=1}^K\frac{\Delta{(\overrightarrow n_k+\overrightarrow \beta)}}{\Delta(\overrightarrow \beta)}
p(www∣zzz,β)=p(www′∣zzz′,β)=k=1∏Kp(w(k)∣z(k),β)=k=1∏KΔ(β)Δ(nk+β)
结合
p
(
w
→
∣
z
→
,
β
→
)
p(\overrightarrow{{w}}|\overrightarrow{{z}}, \overrightarrow\beta)
p(w∣z,β)和
p
(
z
→
∣
α
→
)
p(\overrightarrow{{z}}|\overrightarrow\alpha)
p(z∣α)可以得到联合分布:
p
(
z
→
,
w
→
∣
α
→
,
β
→
)
=
∏
k
=
1
K
Δ
(
n
→
k
+
β
→
)
Δ
(
β
→
)
∗
∏
m
=
1
M
Δ
(
n
→
m
+
α
→
)
Δ
(
α
→
)
p(\overrightarrow{{z}},\overrightarrow{{w}}|\overrightarrow\alpha,\overrightarrow\beta)=\prod_{k=1}^K\frac{\Delta{(\overrightarrow n_k+\overrightarrow \beta)}}{\Delta(\overrightarrow \beta)}*\prod_{m=1}^M\frac{\Delta(\overrightarrow n_m+\overrightarrow\alpha)}{\Delta(\overrightarrow\alpha)}
p(z,w∣α,β)=k=1∏KΔ(β)Δ(nk+β)∗m=1∏MΔ(α)Δ(nm+α)
算法模型
综上我们有算法模型如下:
PLSA
有以下参数和推导关系:
θ
d
=
p
(
z
∣
d
)
ψ
k
=
p
(
w
∣
z
k
)
p
(
w
∣
d
m
)
=
∑
z
=
1
K
p
(
w
∣
z
)
p
(
z
∣
d
m
)
=
∑
z
=
1
K
ψ
z
w
θ
m
z
p
(
w
→
∣
d
m
)
=
∏
i
=
1
n
∑
z
=
1
K
p
(
w
i
∣
z
)
p
(
z
∣
d
m
)
=
∏
i
=
1
n
∑
z
=
1
K
ψ
z
w
i
θ
d
z
\theta_d=p(z|d) \\ \psi_k = p(w|z_k)\\ p(w|d_m)=\sum_{z=1}^Kp(w|z)p(z|d_m)=\sum_{z=1}^K\psi_{zw}\theta_{mz}\\ p(\overrightarrow{w}|d_m)=\prod_{i=1}^n\sum_{z=1}^Kp(w_i|z)p(z|d_m)=\prod_{i=1}^n\sum_{z=1}^K\psi_{zw_i}\theta_{dz}
θd=p(z∣d)ψk=p(w∣zk)p(w∣dm)=z=1∑Kp(w∣z)p(z∣dm)=z=1∑Kψzwθmzp(w∣dm)=i=1∏nz=1∑Kp(wi∣z)p(z∣dm)=i=1∏nz=1∑Kψzwiθdz
第一行
θ
d
\theta_d
θd表示对于每篇文档而言topic的概率;
第二行
ψ
k
\psi_k
ψk表示对于每个topic而言单词的概率;
第三行
p
(
w
∣
d
m
)
p(w|d_m)
p(w∣dm)表示第m篇文章
d
m
d_m
dm中每个单词的生成概率;
由此可知第四行
p
(
w
→
∣
d
m
)
p(\overrightarrow{w}|d_m)
p(w∣dm)表示的整篇文档的生成概率
其过程可抽象为这样的上帝掷骰子: