首先说明,机器学习领域有很多缩写相同,但所指代的单词不同的词语,如LR,既是Linear Regression(线性回归),又可指Logistic Regression(逻辑回归)。LDA也是,既可以指Latent Dirichlet Allocation,也可指Linear Disciminant Analysis(线性判别式分析),初学者不要搞混。(我也是初学者来着)
书中对隐迪利克雷分配的介绍相较于MLAPP好理解一些。本文也会结合《统计学习方法》中的内容加以补充,只想看概率图模型的请直接跳转到5.3。
文章目录
5.1 狄利克雷分布Dirichlet Distribution
由于书中直接开始讲隐狄利克雷分配,于是笔者好奇心重去查了些狄利克雷分布的相关内容(笔者基础差),整理到另一篇文章里了,需要的下面是链接:
5.2 LDA模型定义
隐狄利克雷分配是文本(document)集合的生成模型。模型假设文本由一个又一个话题(topic)组成,话题又由一个又一个单词组成。反过来说,每个单词在每个话题中占的比例不同,每个话题在每个文本占的比例也不同。
5.2.1 LDA模型的假设
①单词和话题的分布都是多项式分布,其先验分布都是狄利克雷分布。
②文本的生成过程:先有单词和话题的先验分布(狄利克雷分布)生成单词和话题的多项分布,由单词的多项分布生成一个话题序列,然后再由话题的多项分布生成单词序列,也就是文本。
③隐变量:在整个生成过程中,只有文本我们是知道的。各个话题的单词分布、文本的话题分布、话题序列的参数我们都不知道,即为隐变量。
其中假设①需要说明一下,这里用到了共轭分布的性质。简单来说就是如果多项分布的先验分布是狄利克雷分布,那么其后验分布也是狄利克雷分布,具体过程请看7.5.1狄利克雷分布。
5.2.2 LDA模型的变量
根据上面的内容,我们知道模型包含文本、话题、单词三种数据。下面确定我们的数学表达符号(for precise notation)。
文本: D = { d 1 , d 2 , . . . , d m } m = 1 M D=\left \{ d_{1} ,d_{2} ,...,d_{m} \right \} _{m=1}^{M} D={d1,d2,...,dm}m=1M, d m d_{m} dm指第 m m m个文本,一共有 M M M个文本。 d m = { d m 1 , d m 2 , . . . , d m N } n = 1 N d_{m}=\left \{ d_{m1},d_{m2},...,d_{mN} \right \}_{n=1}^{N} dm={dm1,dm2,...,dmN}n=1N, d m n d_{mn} dmn指第 m m m个文本里的第 n n n个单词,共有 N m N_{m} Nm个单词。所以 D D D实际上是一个 M × N m M\times N_{m} M×Nm的矩阵数组。
话题: Z = { z 1 , z 2 , . . . , z k } k = 1 K Z=\left \{ z_{1} ,z_{2} ,...,z_{k} \right \} _{k=1}^{K} Z={z1,z2,...,zk}k=1K, z k z_{k} zk指第 k k k个话题,一共有 K K K个话题。
单词: W = { w 1 , w 2 , . . . , w v } v = 1 V W=\left \{ w_{1} ,w_{2} ,...,w_{v} \right \} _{v=1}^{V} W={w1,w2,...,wv}v=1V, w v w_{v} wv指第 v v v个单词,一共有 V V V个单词。
5.3.3 LDA模型中的变量分布
首先解释一下超参数(hyperparameter)。作为先验分布的狄利克雷分布的参数称为超参数,一般由我们事先给定。在没有先验知识的情况下,超参数向量的所有分量均为1。
话题分布:
文本
d
m
d_{m}
dm中的话题分布
p
(
z
∣
d
m
)
p\left (z|d_{m} \right )
p(z∣dm),参数为
θ
=
{
θ
1
,
θ
2
,
.
.
.
,
θ
M
}
m
=
1
M
\theta=\left \{ \theta _{1},\theta _{2},...,\theta _{M} \right \}_{m=1}^{M}
θ={θ1,θ2,...,θM}m=1M,
θ
m
=
{
θ
m
1
,
θ
m
2
,
.
.
.
,
θ
m
k
}
k
=
1
K
\theta _{m}=\left \{ \theta _{m1},\theta _{m2},...,\theta_{mk} \right \}_{k=1}^{K}
θm={θm1,θm2,...,θmk}k=1K ,所以
θ
\theta
θ实际上是一个
M
×
K
M\times K
M×K的参数矩阵。
先验分布超参数为
α
=
{
α
1
,
α
2
,
.
.
.
,
α
k
}
k
=
1
K
\alpha=\left \{ \alpha _{1},\alpha _{2},...,\alpha _{k} \right \}_{k=1}^{K}
α={α1,α2,...,αk}k=1K。
单词分布:
话题
z
k
z_{k}
zk中的单词分布
p
(
w
∣
z
k
)
p\left (w|z_{k} \right )
p(w∣zk),参数为
φ
=
{
φ
1
,
φ
2
,
.
.
.
,
φ
K
}
k
=
1
K
\varphi=\left \{ \varphi _{1},\varphi _{2},...,\varphi _{K} \right \}_{k=1}^{K}
φ={φ1,φ2,...,φK}k=1K,
φ
k
=
{
φ
k
1
,
φ
k
2
,
.
.
.
,
φ
k
v
}
v
=
1
V
\varphi _{k}=\left \{ \varphi _{k1},\varphi _{k2},...,\varphi _{kv} \right \}_{v=1}^{V}
φk={φk1,φk2,...,φkv}v=1V ,所以
φ
\varphi
φ实际上是一个
K
×
V
K\times V
K×V的参数矩阵。
先验分布超参数为
β
=
{
β
1
,
β
2
,
.
.
.
,
β
v
}
v
=
1
V
\beta=\left \{ \beta _{1},\beta _{2},...,\beta _{v} \right \}_{v=1}^{V}
β={β1,β2,...,βv}v=1V。
5.2.4 LDA模型的生成过程
已知文本集合 D D D,话题集合 Z Z Z,单词集合 W W W,单词分布先验分布超参数 α \alpha α,话题分布先验分布超参数 β \beta β
步骤1:生成话题的单词分布
φ
∼
D
i
r
(
β
)
\varphi\sim Dir(\beta)
φ∼Dir(β),随机生成
K
K
K个
φ
k
\varphi_{k}
φk,作为
K
K
K个单词多项式分布的参数。
p
(
w
∣
z
k
)
∼
M
u
l
t
(
φ
k
)
p\left (w|z_{k} \right )\sim Mult(\varphi_{k})
p(w∣zk)∼Mult(φk)
步骤2:生成文本的话题分布
θ
∼
D
i
r
(
α
)
\theta\sim Dir(\alpha)
θ∼Dir(α),随机生成
M
M
M个
θ
m
\theta_{m}
θm,作为
M
M
M个话题多项式分布的参数。
p
(
z
∣
d
m
)
∼
M
u
l
t
(
θ
m
)
p\left (z|d_{m} \right )\sim Mult(\theta_{m})
p(z∣dm)∼Mult(θm)
步骤3:生成文本
从第一个文本第一个单词开始,每一步生成一个话题,一个单词。共随机生成
M
M
M个文本,每个文本
N
m
N_{m}
Nm个单词。
步骤3-1: 根据
M
u
l
t
(
θ
m
)
Mult(\theta_{m})
Mult(θm)生成一个话题
z
m
n
z_{mn}
zmn
步骤3-2: 根据
M
u
l
t
(
φ
z
m
n
)
Mult(\varphi_{z_{mn}})
Mult(φzmn)生成一个单词
w
m
n
w_{mn}
wmn。
5.3 LDA的概率图模型
5.3.1 表示 represent
图中结点(一般算法中多称结点而非节点)表示随机变量,空心结点表示隐变量,实心结点表示观测变量。有向边表示概率依存关系,矩形表示重复,板块内数字表示重复次数。
![图片名称](https://i-blog.csdnimg.cn/blog_migrate/52243cd592af09776173155602977c80.png)
5.3.2 解释 illustration
K框框:
结点
β
\beta
β指向结点
φ
k
\varphi_{k}
φk,矩阵下标为
K
K
K:从满足超参数为
β
\beta
β的狄利克雷分布随机生成参数
φ
k
\varphi_{k}
φk,重复
K
K
K次,得到话题的单词分布
K
×
V
K\times V
K×V的参数矩阵。
M框框:
结点 α \alpha α指向结点 θ m \theta_{m} θm,矩阵下标为 M M M:从满足超参数为 α \alpha α的狄利克雷分布随机生成参数 θ m \theta_{m} θm,重复 M M M次,得到文本的话题分布 M × K M\times K M×K的参数矩阵。
N m N_{m} Nm框框:
①结点 θ m \theta_{m} θm指向结点 z m n z_{mn} zmn:从满足参数为 θ m \theta_{m} θm的第 m m m个话题(多项式)分布随机生成话题 z m n z_{mn} zmn。
②结点 θ m \theta_{m} θm和结点 φ k \varphi_{k} φk指向 z m n z_{mn} zmn:找到 z m n z_{mn} zmn对应的话题的单词分布,满足参数为 φ k = z m n \varphi_{k=z_{mn}} φk=zmn。从该分布中随机生成单词 w m n w_{mn} wmn。
矩阵下标为 N m N_{m} Nm,重复①②步骤 N m N_{m} Nm次。得到长度为 N m N_{m} Nm的话题序列以及长度为 N m N_{m} Nm的单词序列。
5.4 LDA的公式求解
5.4.1 LDA概率公式
根据图3-1,
α
,
β
\alpha,\beta
α,β是已知的超参数,我们可以写出基础的条件概率公式:
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(w,z,\theta,\varphi|\alpha ,\beta)=\prod_{k=1}^{K}p(\varphi _{k}|\beta ) \prod_{m=1}^{M}p(\theta_{m}|\alpha )\prod_{n=1}^{N_{m}}p(z_{mn}|\theta_{m})p(w_{mn}|\varphi_{z_{mn}})
p(w,z,θ,φ∣α,β)=k=1∏Kp(φk∣β)m=1∏Mp(θm∣α)n=1∏Nmp(zmn∣θm)p(wmn∣φzmn)
累乘符号上的参数就对应着概率图模型的框框,比较好理解(吧?)。
5.4.2 LDA参数求解
接下来就是求未知的
θ
,
φ
,
z
\theta, \varphi, z
θ,φ,z了,经典方法是对隐变量进行积分,得到文档的边缘分布,然后最大化边缘概率。
θ
\theta
θ和
φ
\varphi
φ都是连续型变量,
z
z
z是离散型变量。所以要对
θ
\theta
θ,
φ
\varphi
φ积分,对
z
z
z求和。
对
θ
\theta
θ积分(
α
\alpha
α生成的所有文本,共有
M
M
M个):
∫
p
(
θ
m
∣
α
)
d
θ
m
\int p(\theta_{m}|\alpha )d \theta_{m}
∫p(θm∣α)dθm
对
φ
\varphi
φ积分(
β
\beta
β生成的所有话题,共有
K
K
K种):
∫
p
(
φ
k
∣
β
)
d
φ
k
\int p(\varphi _{k}|\beta )d\varphi _{k}
∫p(φk∣β)dφk
对
z
z
z求和(单词对应的所有话题,共有
K
K
K种):
p
(
z
m
n
∣
θ
m
,
φ
z
m
n
)
=
∑
l
=
1
K
p
(
z
m
n
=
l
∣
θ
m
)
p
(
w
m
n
∣
φ
z
m
n
=
l
)
p(z_{mn}|\theta_{m},\varphi_{z_{mn}} )=\sum_{l=1}^{K}p(z_{mn=l}|\theta_{m})p(w_{mn}|\varphi_{z_{mn}=l})
p(zmn∣θm,φzmn)=l=1∑Kp(zmn=l∣θm)p(wmn∣φzmn=l)
最终,超参数
α
,
β
\alpha,\beta
α,β给定条件下所有文本的生成概率为
p
(
w
∣
α
,
β
)
=
∏
k
=
1
K
∫
p
(
φ
k
∣
β
)
[
∏
m
=
1
M
∫
p
(
θ
m
∣
α
)
∏
n
=
1
N
m
[
∑
l
=
1
L
p
(
z
m
n
=
l
∣
θ
m
)
p
(
w
m
n
∣
φ
z
m
n
=
l
)
]
d
θ
m
]
d
φ
k
p(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}^{L}p(z_{mn=l}|\theta_{m})p(w_{mn}|\varphi_{z_{mn}=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∑Lp(zmn=l∣θm)p(wmn∣φzmn=l)]dθm]dφk
这个公式无法计算,因此需要引入近似推断的方法处理。主要有两种:Gibbs采样和变分推断。后续博主会写一篇文章介绍变分推断(varational inference)。
参考文献
[1]David Bellot. Learning Probabilistic Graphical Models in R. Packt Publishing, 2016
[2]Murphy, K.P… Machine Learning A Probailistic Perspective. The MIT Press, 2012
[3]李航.《统计学习方法》(第二版).清华大学出版社, 2019
ps:文中方程都是KeTex手打的,另外我也是刚开始学的小白,笔记可能会有问题,欢迎指正!