文章目录
- 摘要
- Abstract
- 1. 概率图模型
- 1.1 模型推断概念
- 1.2 模型推断分类
- 1.2.1 变量消去
- 1.2.2 信念传播
- 1.2.3 近似推断
- 1.2.3.1 采样法
- 1.2.3.1.1 MCMC(马尔可夫链蒙特卡罗)方法
- 1.2.3.2 变分推断
- 1.3 话题模型
- 1.3.1 LDA的基本单元
- 1.3.2 话题模型的构成
- 1.3.3 LDA的基本问题
- 1.3.3.1 模型参数估计
- 1.3.3.2 模型推断
- 1.3.4 实例
- 2. 总结
摘要
概率图模型通过对目标变量的边际分布或条件分布进行推断,能够有效处理高维和复杂数据。在模型推断中,参数估计可采用极大似然估计或EM方法,推断方法包括变量消去法和信念传播算法。对于复杂分布,近似推断方法(如采样法和变分推断)被广泛使用。本周通过实例展示了话题模型LDA的应用,利用LDA模型进行文本数据的主题推断,介绍了其基本构成及推断步骤。
Abstract
Probability graph model can deal with high and complex data effectively by inferring marginal or conditional distribution of target variables. In the model inference, parameters can be estimated by maximum likelihood estimation or EM method, which includes variable elimination method and belief propagation algorithm. For complex distributions, approximate inference methods such as sampling and variational inference are widely used. This week, we demonstrate the application of topic model LDA through examples, and use LDA model to make topic inference of text data, and introduce its basic structure and inference steps.
1. 概率图模型
1.1 模型推断概念
基于概率图模型定义的分布,能对目标变量的边际分布或某些可观测变量为条件分布进行推断
对概率图模型,需要确定具体分布的参数(参数估计或者学习问题)通常使用极大似然估计或后验概率估计求解。贝叶斯学派中,将参数视为待推测的变量,则参数估计过程和推断过程十分相似。以下图是贝叶斯学派的观点。
假设图模型所对应的变量集X = {x1,x2,…,xn}能分为XE,XF两个不相交的变量集,推断问题的目标就是计算边际概率 p(XF)或者条件概率p(XF|XE),由条件概率定义容易有
联合概率p(XF,XE)可基于图模型(如势函数)获得,推断问题的关键就在于如何高效计算边际分布,即
p
(
x
E
)
=
∑
F
p
(
x
F
,
x
E
)
p(\mathbf{x}_E)=\sum_Fp(\mathbf{x}_F,\mathbf{x}_E)
p(xE)=F∑p(xF,xE)
1.2 模型推断分类
1.2.1 变量消去
给出以下例题:
上述在隐马尔可夫链中的求解过程:
上述图面说明:在求解x5中通过消去无关变量实现最终的求解(此问题也说明了在隐马尔可夫链中只有前面一个的状态有关,与之前所有的信息状态无关)。
上述是在有向图中,在无向图中也同样适用,假如忽略上述箭头,通过势函数的分析得到下面的公式:
P
(
x
1
,
x
2
,
x
3
,
x
4
,
x
5
)
=
1
Z
ψ
12
(
x
1
,
x
2
)
ψ
23
(
x
2
,
x
3
)
ψ
34
(
x
3
,
x
4
)
ψ
35
(
x
3
,
x
5
)
P(x_1,x_2,x_3,x_4,x_5)=\frac{1}{Z}\psi_{12}(x_1,x_2)\psi_{23}(x_2,x_3)\psi_{34}(x_3,x_4)\psi_{35}(x_3,x_5)
P(x1,x2,x3,x4,x5)=Z1ψ12(x1,x2)ψ23(x2,x3)ψ34(x3,x4)ψ35(x3,x5)其中Z为规范化因子,边际分布p(x5)可以这样计算:
变量消去法实际上是利用了乘法对加法的分配律,将对多个变量的积的求和问题转化为对部分变量交替进行求积和求和的问题。这种转化使得每次的求和求积运算被限制在局部,仅和部分变量有关。
变量消去存在一个明显的缺点:若需要计算多个边际分布,重复使用变量消去法将会造成大量的冗余计算。
1.2.2 信念传播
信念传播算法将变量消去法中的求和操作看作一个消息传递过程,较好的解决了求解多个边际分布时重复计算问题。
对于mij(xj)的计算就是信念传播的过程,完善了变量消去存在的缺陷,有公式如下:
m
i
j
(
x
j
)
=
∑
x
i
ψ
(
x
i
,
x
j
)
∏
k
∈
n
(
i
)
∖
j
m
k
i
(
x
i
)
m_{ij}(x_j)=\sum_{x_i}\psi(x_i,x_j)\prod_{k\in n(i)\setminus j}m_{ki}(x_i)
mij(xj)=xi∑ψ(xi,xj)k∈n(i)∖j∏mki(xi)
若图中没有环,则信念传播算法经过两个步骤即可完成所有消息传递,进而能计算所有变量上的边际分布:
- 指定一个根节点,从所有叶节点开始向根节点传递消息,直到根节点收到所有邻接结点的消息
- 从根节点开始向叶节点传递消息,知道所有叶节点均收到消息
1.2.3 近似推断
近似推断方法大致分为两类:
- 采样法:通过使用随机化方法完成近似,如马尔可夫链蒙特卡罗算法(MCMC)
- 变分推断:使用确定性近似完成推断
1.2.3.1 采样法
- 在很多任务中,主要关心的并非概率分布本身,而是基于概率分布的期望,并且还能基于期望进一步作出决策。
- 若直接计算或逼近这个期望比推断概率分布更容易,则直接操作无疑使得推断问题更为高效
- 采样法基于这个思路,假定目标是计算函数f(x)在概率密度函数p(x)下的期望:
E p [ f ] = ∫ f ( x ) p ( x ) d x \mathbb{E}_p[f]=\int f(x)p(x)dx Ep[f]=∫f(x)p(x)dx - 可根据p(x)抽取一组样本{x1,x2,…,xN},然后计算f(x)在这些样本上的均值
f ^ = 1 N ∑ i = 1 N f ( x i ) \hat{f}=\frac{1}{N}\sum_{i=1}^{N}f(x_i) f^=N1i=1∑Nf(xi)
用于近似期望E[f],如果样本{x1,x2,…,xN}独立,基于大数定理,这种通过大量采样的方法就获得较高的近似精度。问题的关键是如何采样(如何高效的从图模型所描述的概率分布中获取样本)
1.2.3.1.1 MCMC(马尔可夫链蒙特卡罗)方法
给定连续变量x∈X的概率密度函数p(x),x在区间A中的概率为:
P
(
A
)
=
∫
A
p
(
x
)
d
x
P(A)=\int_Ap(x)dx
P(A)=∫Ap(x)dx
MCMC先构造出服从p分布的独立同分布随机变量x1、x2,…,xn,再得到无偏估计:
p
~
(
f
)
=
1
N
∑
i
=
1
N
f
(
x
i
)
\tilde{p}(f)=\frac{1}{N}\sum_{i=1}^Nf(x_i)
p~(f)=N1i=1∑Nf(xi)
MCMC算法的关键在于通过”构造平稳分布为p的马尔可夫链来产生样本:当马尔可夫链运行足够长的时间(收敛到平稳状态)则产生的样本x近似服从p分布;并且通过多次重复运行、遍历马尔可夫链就可以取得多个服从该分布的独立同分布样本。
判断马尔可夫链的平稳态:
- 假定马尔可夫链T的状态转移概率为T(x’|x),t时刻状态的分布为p(x^t),则若在某个时刻马尔可夫链满足平稳条件:
p ( x t ) T ( x t − 1 ∣ x t ) = p ( x t − 1 ) T ( x t ∣ x t − 1 ) p(\mathbf{x}^t)T(\mathbf{x}^{t-1}\mid\mathbf{x}^t)=p(\mathbf{x}^{t-1})T(\mathbf{x}^t\mid\mathbf{x}^{t-1}) p(xt)T(xt−1∣xt)=p(xt−1)T(xt∣xt−1) - 若满足上述公式,则认为p(x)是该马尔可夫链的平稳分布,且马尔可夫链在满足该条件时已经收敛到平稳状态。
MCMC方法设法构造一条马尔可夫链,使其收敛至平稳分布恰为待估计参数的后验分布,然后通过该马尔可夫链产生样本,用这些样本进行估计。同时在MCMC中如何构造马尔科夫链的转移概率至关重用,不同构造方法产生不同的MCMC算法。
MH算法是MCMC算法的代表之一。基于“拒绝采样”逼近平稳分布。
- 算法每次根据上一轮采样结果 x t − 1 \mathbf{x}^{t-1} xt−1来采样获得候选状态样本 x ∗ \mathbf{x}^{*} x∗,但是这个样本会以一定概率被拒绝。
- 若从状态
x
t
−
1
\mathbf{x}^{t-1}
xt−1到状态
x
∗
\mathbf{x}^{*}
x∗的转移概率为
Q
(
x
∗
∣
x
t
−
1
)
A
(
x
∗
∣
x
t
−
1
)
Q(\mathrm{x}^{*}|\mathrm{x}^{t-1})A(\mathrm{x}^{*}|\mathrm{x}^{t-1})
Q(x∗∣xt−1)A(x∗∣xt−1),
x
∗
\mathbf{x}^{*}
x∗最终被收敛到平稳状态,则:
为达到平稳状态,只需将接受率设置为:
A ( x ∗ ∣ x t − 1 ) = min ( 1 , p ( x ∗ ) Q ( x t − 1 ∣ x ∗ ) p ( x t − 1 ) Q ( x ∗ ∣ x t − 1 ) ) A(\mathbf{x}^*\mid\mathbf{x}^{t-1})=\min\left(1,\frac{p(\mathbf{x}^*)Q(\mathbf{x}^{t-1}|\mathbf{x}^*)}{p(\mathbf{x}^{t-1})Q(\mathbf{x}^*|\mathbf{x}^{t-1})}\right) A(x∗∣xt−1)=min(1,p(xt−1)Q(x∗∣xt−1)p(x∗)Q(xt−1∣x∗))
1.2.3.2 变分推断
变分推断根据已知简单分布来逼近需推断的复杂分布,同时通过限制近似分布的类型,从而得到一种局部最优、但具有确定解的近似后验分布
图模型中,已知变量样本x = {x1、x2,…,xn},
Θ
\Theta
Θ是服从x与z的分布参数。所有能观察到的变量x的联合分布概率密度函数是:
p
(
x
∣
Θ
)
=
∏
i
=
1
N
∑
z
p
(
x
i
,
z
∣
Θ
)
p(\mathbf{x}\mid\Theta)=\prod_{i=1}^N\sum_\mathbf{z}p(x_i,\mathbf{z}\mid\Theta)
p(x∣Θ)=i=1∏Nz∑p(xi,z∣Θ)
推断和学习任务主要是由观察变量x来估计隐变量z和分布参数
Θ
\Theta
Θ(回顾前几周所学的EM算法最大化对数似然估计)
1.3 话题模型
话题模型是一类生成式有向图模型,主要用来处理离散型的数据集合(如文本集合)。是一种非监督产生式模型,话题模型能够有效利用海量数据法文档集合中隐含的语义。隐狄里克雷分配模型(LDA)是话题模型的典型代表。
1.3.1 LDA的基本单元
- 词:待处理数据中的基本离散单元
- 文档:待处理的数据对象,由词组成,词在文档中不计顺序。其中,数据对象只要能用“词袋(bag-of-words”表示就可以使用话题模型
- 话题:表示一个概念,具体表示为一系列相关的词,以及它们在该概念下出现的概率
1.3.2 话题模型的构成
- 一个话题就像一个箱子,里面装着这个概念下出现概率较高的词
- 假定一个数据集中一共包含k个话题和T篇文档,文档中的词来自一个包含N个词的字典
- 用T个N维向量W={w1,w2,…,wT}表示文档集合
- 用k个N维向量 β k \beta_k βk表示话题
- wt的第n个分量wt,n表示文档t中词频
下面产生文档中的N个词的步骤:
- 根据 Θ k \Theta_k Θk进行话题指派,得到文档t中词n的话题Zt,n
- 根据指派的话题所对应的词分布 b e t a k beta_k betak随机采样生成词
1.3.3 LDA的基本问题
1.3.3.1 模型参数估计
给定训练数据W={w1,w2,…,wT},参数通过极大似然法估计,寻找下面公式中的两个参数以最大化对数似然
L
L
(
α
,
η
)
=
∑
t
=
1
T
ln
p
(
w
t
∣
α
,
η
)
LL(\boldsymbol{\alpha},\boldsymbol{\eta})=\sum_{t=1}^T\ln p(\boldsymbol{w}_t\mid\boldsymbol{\alpha},\boldsymbol{\eta})
LL(α,η)=t=1∑Tlnp(wt∣α,η)
1.3.3.2 模型推断
模型已知,上述公式中两个变量已经确定,根据词频来推断文档话题结构(推断 Θ t , β k , z t , n \Theta_t,\beta_k,z_{t,n} Θt,βk,zt,n),通过求解 p ( z , β , Θ ∣ W , α , η ) = p ( W , z , β , Θ ∣ α , η ) p ( W ∣ α , η ) p(\mathbf{z},\boldsymbol{\beta},\Theta\mid\mathbf{W},\boldsymbol{\alpha},\boldsymbol{\eta})=\frac{p(\mathbf{W},\mathbf{z},\boldsymbol{\beta},\Theta\mid\boldsymbol{\alpha},\boldsymbol{\eta})}{p(\mathbf{W}\mid\boldsymbol{\alpha},\boldsymbol{\eta})} p(z,β,Θ∣W,α,η)=p(W∣α,η)p(W,z,β,Θ∣α,η)进行模型推断。
1.3.4 实例
下面是利用LDA进行一个简单话题模型的例子:
import nltk
from nltk.corpus import stopwords
from nltk.tokenize import word_tokenize
from gensim import corpora
from gensim.models import LdaModel
# 下载停用词和其他必要的数据
nltk.download('punkt')
nltk.download('stopwords')
# 示例文本数据
documents = [
"Machine learning is fascinating and it is applied in many fields.",
"Deep learning is a subset of machine learning and is used in AI applications.",
"Natural language processing involves computational linguistics and deep learning.",
"Neural networks are at the core of deep learning technologies.",
"Artificial intelligence encompasses machine learning and deep learning techniques.",
]
# 数据预处理:分词、去除停用词等
stop_words = set(stopwords.words('english'))
def preprocess(text):
tokens = word_tokenize(text.lower()) # 转为小写并分词
tokens = [word for word in tokens if word.isalpha()] # 去除非字母字符
tokens = [word for word in tokens if word not in stop_words] # 去除停用词
return tokens
processed_docs = [preprocess(doc) for doc in documents]
# 创建词典和语料库
dictionary = corpora.Dictionary(processed_docs)
corpus = [dictionary.doc2bow(doc) for doc in processed_docs]
# 使用LDA模型进行主题推断,num_topics=2表示希望推断出2个主题
lda_model = LdaModel(corpus, num_topics=2, id2word=dictionary, passes=15)
# 打印每个主题及其关联词
for idx, topic in lda_model.print_topics(-1):
print(f"Topic {idx}: {topic}")
# 推断给定新文档的主题分布
new_doc = "Deep learning is a critical component of AI."
bow = dictionary.doc2bow(preprocess(new_doc))
topics = lda_model.get_document_topics(bow)
print(f"\nNew document topic distribution: {topics}")
输出结果:
Topic 0: 0.070*“deep” + 0.070*“learning”
2. 总结
首先学习了概率图模型的推断问题,详细深入学习了变量消去法、信念传播及近似推断技术的原理和应用场景。在复杂问题中,利用采样法(如MCMC)和变分推断能够更有效地逼近分布。话题模型LDA被广泛应用于文本挖掘和自然语言处理任务,本文通过代码实例展示了LDA模型的构建及其推断流程,能够有效从文本数据中提取潜在的语义结构。未来研究可以进一步优化推断算法,提高计算效率和模型精度。