主题模型
主题模型(topic model)是以非监督学习的方式对文集 的隐含语义结构(latent semantic structure) 进行聚类(clustering) 的统计模型。
主题模型主要被用于自然语言处理(Natural language processing)中的语义分析(semantic analysis)和文本挖掘(text mining)问题,例如按主题对文本进行收集、分类和降维;也被用于生物信息学(bioinfomatics)研究。
LDA主题模型
LDA全称隐含狄利克雷分布(Latent Dirichlet Allocation, LDA),
- 是一种主题模型,它可以自动分析每个文档,统计文档中的词语,根据统计的信息判断当前文档包含哪些主题以及各个主题所占比例各为多少。
- 是一种无监督学习模型:在训练时不需要手工标注的训练集,需要的仅是文档集以及指定主题的数量即可。
- 是一种贝叶斯模型:先验分布 + 数据(似然)= 后验分布
- 是一种典型的词袋模型,它认为一篇文档是由一组词组成的集合,词与词之间没有顺序和先后关系。一篇文档可以包含多个主题,文档中每一个词都由其中的一个主题生成。
假设有
M
M
M篇文档
{
d
1
,
.
.
.
,
d
M
}
\{d_1,...,d_M\}
{d1,...,dM},第
i
i
i篇文档有
N
i
N_i
Ni个词
{
w
i
1
,
.
.
.
,
w
i
N
i
}
\{w_{i1},...,w_{iN_i}\}
{wi1,...,wiNi},所有文档中出现的词构成词汇表
V
V
V(不重复),同时,
V
V
V表示词汇表中元素个数。现在的目标是找到每一篇文档的主题分布 和每一个主题中词的分布。
在LDA模型中,假设主题数目为
K
K
K已知。
为方便理解,对LDA生成一篇文档的过程作如下描述:
- 有两种类型的骰子: 一种是doc-topic骰子,每个doc-topic骰子有 K K K个面,每个面对应一个主题编号;一种是topic-word骰子,每个骰子有 V V V个面,每个面对应一个词;
- 每种骰子,每个面出现的概率不是固定的,假设服从狄利克雷分布;
- 生成文档
d
m
d_m
dm中的
n
n
n个单词,
- 从狄利克雷分布中抽样得到doc-topic骰子各个面的概率分布 θ \theta θ,掷骰子doc-topic获得文档 d m d_m dm第 n n n个词的主题;(从整个过程执行完的全局来看:重复掷doc-topic骰子 N i N_i Ni次,得到文档中所有词的主题,这样,各个主题中词的个数服从以 θ \theta θ为参数的多项式分布,所以,掷骰子相当于从该多项式分布中采样)
- 获得第 n n n个单词的主题后相当于拿到一个对应的topic-word骰子,从它的先验分布,狄利克雷分布,中抽样获得各个面的概率分布 ϕ \phi ϕ,掷骰子topic-word获得第 n n n个词。(从整个过程执行完的全局来看:假设文档中与第 n n n个词主题相同的词有 l l l个,需要重复掷骰子 l l l次获得,这样,一篇文档中某一主题的各个词的个数服从参数为 ϕ \phi ϕ的多项式分布,掷骰子相当于从该多项式分布采样)
具体地:任一文档 d m d_m dm,
- 设文档
d
m
d_m
dm的主题分布为随机变量
Θ
m
=
(
Θ
m
1
,
.
.
.
,
Θ
m
k
)
\Theta_{m}=(\Theta_{m1},...,\Theta_{mk})
Θm=(Θm1,...,Θmk),其中
Θ
m
i
\Theta_{mi}
Θmi表示文档
d
m
d_m
dm中包含第
i
i
i个主题的概率,
1
≤
i
≤
K
1\leq i\leq K
1≤i≤K,假设
Θ
m
∼
D
i
r
(
α
1
,
.
.
.
,
α
K
)
\Theta_{m}\sim Dir(\alpha_1,...,\alpha_K)
Θm∼Dir(α1,...,αK)。
从 D i r ( α 1 , . . . , α K ) Dir(\alpha_1,...,\alpha_K) Dir(α1,...,αK)中采样得到一个主题分布 θ m = ( θ m 1 , . . . , θ m K ) \theta_m=(\theta_{m1},...,\theta_{mK}) θm=(θm1,...,θmK)。 - 设文档
d
m
d_m
dm中的第
n
n
n个单词的主题分布
Z
m
n
=
(
Z
m
n
1
,
.
.
.
,
Z
m
n
K
)
\Zeta_{mn}=(\Zeta_{mn1},...,\Zeta_{mnK})
Zmn=(Zmn1,...,ZmnK),其中,
Z
m
n
i
\Zeta_{mni}
Zmni表示第
n
n
n个单词的主题是第
i
i
i个主题的概率,则
Z
m
n
∣
Θ
m
=
θ
m
∼
m
u
l
t
i
(
θ
m
1
,
.
.
.
,
θ
m
K
)
\Zeta_{mn}|\Theta_{m}=\theta_{m}\sim multi(\theta_{m1},...,\theta_{mK})
Zmn∣Θm=θm∼multi(θm1,...,θmK)。
从 m u l t i ( θ m 1 , . . . , θ m K ) multi(\theta_{m1},...,\theta_{mK}) multi(θm1,...,θmK)中采样获取第 n n n个单词的主题 z m n z_{mn} zmn,不妨设其为第 k k k个主题。 - 主题
k
k
k中词的先验分布
Φ
k
=
(
Φ
k
1
,
.
.
.
,
Φ
k
V
)
\Phi_k=(\Phi_{k1},...,\Phi_{kV})
Φk=(Φk1,...,ΦkV),其中
Φ
k
j
,
1
≤
j
≤
V
\Phi_{kj},1\leq j\leq V
Φkj,1≤j≤V表示主题
k
k
k中出现词汇表中第
j
j
j个词的概率,假设
Φ
k
∼
D
i
r
(
β
1
,
.
.
.
,
β
V
)
\Phi_k\sim Dir(\beta_1,...,\beta_{V})
Φk∼Dir(β1,...,βV)。
从 D i r ( β 1 , . . . , β V ) Dir(\beta_1,...,\beta_{V}) Dir(β1,...,βV)中采样得到主题 k k k的词分布 φ k = ( φ k 1 , . . . , φ k V ) \varphi_k=(\varphi_{k1},...,\varphi_{kV}) φk=(φk1,...,φkV)。 - 设在文档
d
m
d_m
dm中主题为
k
k
k的单词中,词汇表中各个单词的个数
W
m
k
W_{mk}
Wmk服从多项式分布
m
u
l
t
i
(
φ
k
1
,
.
.
.
,
φ
k
V
)
multi(\varphi_{k1},...,\varphi_{kV})
multi(φk1,...,φkV)。
从 m u l t i ( φ k 1 , . . . , φ k V ) multi(\varphi_{k1},...,\varphi_{kV}) multi(φk1,...,φkV)中采样获取第 n n n个单词 w m n w_{mn} wmn。
每一篇文档的主题分布:估计参数
α
1
,
.
.
.
,
α
K
\alpha_1,...,\alpha_K
α1,...,αK
{
Θ
m
∼
D
i
r
(
α
1
,
.
.
.
,
α
K
)
Z
m
n
∣
Θ
m
=
θ
m
∼
m
u
l
t
i
(
θ
m
1
,
.
.
.
,
θ
m
K
)
⟹
Θ
m
∣
Z
m
n
=
z
m
n
∼
D
i
r
(
α
1
+
z
m
n
1
,
.
.
.
,
α
K
+
z
m
n
K
)
\begin{cases} \Theta_{m}\sim Dir(\alpha_1,...,\alpha_K)\\ \Zeta_{mn}|\Theta_{m}=\theta_{m}\sim multi(\theta_{m1},...,\theta_{mK}) \end{cases}\Longrightarrow \Theta_{m}| \Zeta_{mn}=z_{mn}\sim Dir(\alpha_1+z_{mn1},...,\alpha_K+z_{mnK})
{Θm∼Dir(α1,...,αK)Zmn∣Θm=θm∼multi(θm1,...,θmK)⟹Θm∣Zmn=zmn∼Dir(α1+zmn1,...,αK+zmnK)
每一个主题中词的分布:估计参数
β
1
,
.
.
.
,
β
V
\beta_1,...,\beta_{V}
β1,...,βV
{
Φ
k
∼
D
i
r
(
β
1
,
.
.
.
,
β
V
)
W
m
k
∣
Φ
k
=
φ
k
∼
m
u
l
t
i
(
β
1
,
.
.
.
,
β
V
)
⟹
Φ
k
∣
W
m
n
=
f
m
n
∼
D
i
r
(
β
1
+
f
m
n
1
,
.
.
.
,
β
V
+
f
m
n
V
)
\begin{cases} \Phi_k\sim Dir(\beta_1,...,\beta_{V})\\ W_{mk}|\Phi_k=\varphi_{k}\sim multi(\beta_1,...,\beta_{V}) \end{cases}\Longrightarrow \Phi_k| W_{mn}=f_{mn}\sim Dir(\beta_1+f_{mn1},...,\beta_V+f_{mnV})
{Φk∼Dir(β1,...,βV)Wmk∣Φk=φk∼multi(β1,...,βV)⟹Φk∣Wmn=fmn∼Dir(β1+fmn1,...,βV+fmnV)
后续:模型求解