跳转至

第二十章:潜在狄利克雷分配(LDA)

20.1 引言与背景

潜在狄利克雷分配(Latent Dirichlet Allocation,简称LDA)是由David Blei、Andrew Ng和Michael Jordan于2003年提出的一种层次化概率生成模型。该模型属于概率图模型的范畴,专门用于从离散数据(如文本文档)中提取潜在的语义结构。LDA的核心思想是:每一篇文档可以表示为若干潜在主题的混合,而每一个主题则可以表示为词汇表上词语的一个概率分布。

在LDA出现之前,文本挖掘领域主要采用词频-逆文档频率(TF-IDF)等基于词频的统计方法,或者使用pLSA(概率潜在语义分析)等模型。然而,这些方法要么忽略了对文档生成过程的显式建模,要么缺乏对主题分布的先验约束,导致在处理新文档时容易出现过拟合或泛化能力不足的问题。LDA通过引入Dirichlet先验,有效解决了这一问题,并在文本分类、信息检索、推荐系统等多个领域获得了广泛应用。

LDA模型的提出受到了早期潜在语义分析(LSA)和pLSA的深刻影响,但其创新之处在于将贝叶斯推断的思想引入到主题模型的学习中。与pLSA不同,LDA为每一个文档的主题分布和每一个主题的词分布都赋予了Dirichlet先验,从而将模型参数积分掉,只保留隐变量进行推断。这种设计使得LDA能够更好地处理稀疏数据,并在一定程度上避免了过拟合问题。

20.2 Dirichlet先验

Dirichlet分布是Beta分布在多维情形的推广,是一种常用的离散概率分布的先验分布。设词汇表大小为\(V\),主题数为\(K\),则对于每一个主题\(k\),其词分布\(\boldsymbol{\beta}_k\)是一个\(V\)维的多项式参数,满足:

\[\boldsymbol{\beta}_k \sim \text{Dir}(\boldsymbol{\eta})\]

其中\(\boldsymbol{\eta} = (\eta_1, \eta_2, \ldots, \eta_V)\)是Dirichlet分布的超参数向量,通常取对称形式即\(\eta_1 = \eta_2 = \cdots = \eta_V = \eta\),此时Dirichlet分布的概率密度函数为:

\[p(\boldsymbol{\beta}_k | \boldsymbol{\eta}) = \frac{\Gamma(V\eta)}{\Gamma(\eta)^V} \prod_{v=1}^{V} \beta_{kv}^{\eta-1}\]

类似地,对于每一篇文档\(d\),其主题分布\(\boldsymbol{\theta}_d\)也是一个\(K\)维的多项式参数,满足:

\[\boldsymbol{\theta}_d \sim \text{Dir}(\boldsymbol{\alpha})\]

其中\(\boldsymbol{\alpha} = (\alpha_1, \alpha_2, \ldots, \alpha_K)\)是Dirichlet分布的超参数向量,通常也取对称形式\(\alpha_1 = \alpha_2 = \cdots = \alpha_K = \alpha\)。超参数\(\alpha\)控制着主题分布的稀疏性:较小的\(\alpha\)值倾向于产生稀疏的主题分布(即每篇文档只涉及少数几个主题),而较大的\(\alpha\)值则产生较为均匀的主题分布。

Dirichlet分布的一个重要性质是它是多项式分布的共轭先验。当Dirichlet先验与多项式似然函数结合时,后验分布仍然是Dirichlet分布,这使得贝叶斯推断变得简洁可行。这一共轭性质在LDA的变分推断和Gibbs Sampling中都得到了充分利用。

20.3 生成过程

LDA的核心是一个层次化的生成模型,其生成过程可以通过以下步骤直观理解。假设我们有\(M\)篇文档,词汇表大小为\(V\),主题数为\(K\),每一篇文档\(d\)包含\(N_d\)个词语。LDA的生成过程如下:

第一步,对于每一个主题\(k\)\(k = 1, 2, \ldots, K\)),从Dirichlet先验中抽取其词分布:

\[\boldsymbol{\beta}_k \sim \text{Dir}(\boldsymbol{\eta})\]

第二步,对于每一篇文档\(d\)\(d = 1, 2, \ldots, M\)),从Dirichlet先验中抽取其主题分布:

\[\boldsymbol{\theta}_d \sim \text{Dir}(\boldsymbol{\alpha})\]

第三步,对于文档\(d\)中的每一个词语位置\(i\)\(i = 1, 2, \ldots, N_d\)),首先从主题分布中抽取一个主题:

\[z_{di} \sim \text{Multinomial}(\boldsymbol{\theta}_d)\]

第四步,给定选定的主题\(z_{di} = k\),从该主题的词分布中抽取具体的词语:

\[w_{di} \sim \text{Multinomial}(\boldsymbol{\beta}_{z_{di}})\]

上述生成过程可以用下面的联合概率分布来描述:

\[p(\mathbf{W}, \mathbf{Z}, \boldsymbol{\Theta}, \boldsymbol{\Beta} | \boldsymbol{\alpha}, \boldsymbol{\eta}) = \prod_{k=1}^{K} p(\boldsymbol{\beta}_k | \boldsymbol{\eta}) \prod_{d=1}^{M} p(\boldsymbol{\theta}_d | \boldsymbol{\alpha}) \prod_{i=1}^{N_d} p(z_{di} | \boldsymbol{\theta}_d) p(w_{di} | z_{di}, \boldsymbol{\Beta})\]

其中\(\mathbf{W}\)表示所有词语的观测变量,\(\mathbf{Z}\)表示所有隐含主题变量,\(\boldsymbol{\Theta} = \{\boldsymbol{\theta}_d\}\)表示所有文档的主题分布,\(\boldsymbol{\Beta} = \{\boldsymbol{\beta}_k\}\)表示所有主题的词分布。

从生成过程可以看出,LDA是一种典型的词袋模型(Bag of Words),它忽略了词语之间的顺序信息,只关心词语在文档中出现的频率。这一简化虽然丢失了部分信息,但大大降低了模型的复杂度,使得大规模文本分析成为可能。

20.4 Gibbs Sampling推断

由于LDA模型中存在多个隐变量和复杂的积分操作,直接计算后验分布是不可行的。为此,研究者们提出了多种近似推断算法,其中最常用的是Gibbs Sampling方法。Gibbs Sampling是一种Markov Chain Monte Carlo(MCMC)方法,通过迭代采样来近似计算高维条件分布。

在LDA中,我们通常将主题分布\(\boldsymbol{\theta}_d\)和词分布\(\boldsymbol{\beta}_k\)积分掉,只保留词语-主题的分配变量\(z_{di}\)作为隐变量。这样做的理论依据是Dirichlet-多项式共轭关系:给定超参数\(\boldsymbol{\alpha}\)和主题分配\(\mathbf{z}\),主题分布\(\boldsymbol{\theta}_d\)的积分可以解析地求出。

\(N_{dk}\)表示文档\(d\)中分配给主题\(k\)的词语数量,\(N_{kv}\)表示整个语料库中分配给主题\(k\)且词语为\(v\)的数量。则Gibbs Sampling的核心是计算词语\(w_{di}=v\)在给定文档\(d\)的当前主题分配情况下,被分配到主题\(k\)的条件概率:

\[p(z_{di}=k | \mathbf{z}^{-di}, \mathbf{w}, \boldsymbol{\alpha}, \boldsymbol{\eta}) \propto \frac{N_{kv}^{-di} + \eta_v}{\sum_{v'=1}^{V} (N_{kv'}^{-di} + \eta_{v'})} \cdot \frac{N_{dk}^{-di} + \alpha_k}{\sum_{k'=1}^{K} (N_{dk'}^{-di} + \alpha_{k'})}\]

其中上标\(^{-di}\)表示排除当前词语\(w_{di}\)之后的计数。这个公式的直观解释是:词语\(w_{di}\)被分配到主题\(k\)的概率与该主题产生词语\(v\)的概率以及文档\(d\)产生主题\(k\)的概率成正比。

Gibbs Sampling的完整算法流程如下:首先初始化所有词语的主题分配(可以随机分配或使用其他启发式方法);然后迭代进行以下步骤:对于每一个词语\(w_{di}\),根据上述条件概率分布采样一个新的主题\(z_{di}\),更新相应的计数统计;在经过足够次数的迭代后,收集各文档的主题分布和各个主题的词分布的样本,用这些样本来估计模型参数。

实际应用中,通常会跳过前若干次迭代(称为burn-in期),以确保采样链已经收敛到平稳分布。收敛判断可以采用多种方法,包括监控对数似然的变化、采用Geweke诊断等。采样完成后,可以使用以下公式估计模型参数:

\[\hat{\theta}_{dk} = \frac{N_{dk} + \alpha_k}{\sum_{k'=1}^{K} (N_{dk'} + \alpha_{k'})}, \quad \hat{\beta}_{kv} = \frac{N_{kv} + \eta_v}{\sum_{v'=1}^{V} (N_{kv'} + \eta_{v'})}\]

20.5 变分推断

除了Gibbs Sampling之外,变分推断(Variational Inference)是另一种常用的LDA近似推断方法。变分推断的核心思想是将复杂的概率模型近似为一个更易处理的变分分布,然后通过最大化似然函数的下界(ELBO)来学习模型参数。

在LDA的标准变分推断中,我们引入一个变分分布来近似真实的后验分布:

\[q(\boldsymbol{\Theta}, \boldsymbol{\Beta}, \mathbf{Z} | \boldsymbol{\gamma}, \boldsymbol{\phi}, \boldsymbol{\lambda}) = \prod_{d=1}^{M} q(\boldsymbol{\theta}_d | \boldsymbol{\gamma}_d) \prod_{k=1}^{K} q(\boldsymbol{\beta}_k | \boldsymbol{\lambda}_k) \prod_{i=1}^{N_d} q(z_{di} | \boldsymbol{\phi}_{di})\]

其中变分分布被分解为三个独立的部分:每个文档的主题分布\(q(\boldsymbol{\theta}_d | \boldsymbol{\gamma}_d)\)服从参数为\(\boldsymbol{\gamma}_d\)的Dirichlet分布;每个主题的词分布\(q(\boldsymbol{\beta}_k | \boldsymbol{\lambda}_k)\)服从参数为\(\boldsymbol{\lambda}_k\)的Dirichlet分布;每个词语的主题分配\(q(z_{di} | \boldsymbol{\phi}_{di})\)服从参数为\(\boldsymbol{\phi}_{di}\)的多项式分布。

变分推断的目标是最大化证据下界(Evidence Lower Bound,ELBO):

\[\mathcal{L}(\boldsymbol{\gamma}, \boldsymbol{\phi}, \boldsymbol{\lambda}) = \mathbb{E}_q[\log p(\mathbf{W}, \boldsymbol{\Theta}, \boldsymbol{\Beta}, \mathbf{Z} | \boldsymbol{\alpha}, \boldsymbol{\eta})] - \mathbb{E}_q[\log q(\boldsymbol{\Theta}, \boldsymbol{\Beta}, \mathbf{Z})]\]

通过对ELBO关于变分参数\(\boldsymbol{\gamma}\)\(\boldsymbol{\phi}\)\(\boldsymbol{\lambda}\)进行优化,我们可以得到迭代更新公式。这些更新公式与Gibbs Sampling的条件概率公式具有相似的结构,反映了数据和先验之间的平衡。

变分推断的优点是推理速度通常快于Gibbs Sampling,尤其当数据集非常大或需要在线学习时,变分方法更加高效。然而,变分推断得到的是近似后验分布,而不是精确的样本,这可能导致对后验方差的低估。Gibbs Sampling虽然计算成本较高,但通常能给出更准确的近似结果。

20.6 与pLSA的对比

概率潜在语义分析(Probabilistic Latent Semantic Analysis,pLSA)是LDA之前广泛使用的一种主题模型,由Thomas Hofmann于1999年提出。理解LDA与pLSA之间的联系与区别,有助于更深刻地把握LDA的设计思想。

生成模型的视角:pLSA本质上是一个条件化模型,它直接建模词语与文档之间的条件概率关系\(P(w|d)\),而没有为模型参数引入先验分布。相对而言,LDA是一个完全的贝叶斯模型,它为所有参数都引入了Dirichlet先验,并将参数积分掉,只保留隐变量进行推断。

参数与隐变量的区别:在pLSA中,主题-词分布\(P(w|z)\)和文档-主题分布\(P(z|d)\)都是待学习的模型参数,参数数量随文档数和主题数的增加而线性增长。而在LDA中,这些分布被赋予先验后成为随机变量,模型参数的数量不会随文档数增加而增加,这使得LDA在新文档的泛化能力上具有明显优势。

贝叶斯与频率派的对比:LDA采用贝叶斯推断方法,关注后验分布的完整估计;pLSA则采用最大似然估计或最大后验估计,只关注点估计。这一差异导致LDA在处理稀疏数据和不确定性量化方面更具优势。

计算复杂度:pLSA的参数可以直接通过EM算法求解,计算相对简单。LDA由于涉及积分和近似推断,计算更加复杂,通常需要使用Gibbs Sampling或变分推断等迭代方法。

模型扩展性:LDA作为层次化贝叶斯模型,更容易进行各种扩展。例如,可以将LDA扩展为分层Dirichlet过程(HDP-LDA)以自动确定主题数目;可以扩展为动态主题模型(DTM)以建模文档的时间演变;还可以扩展为关联主题模型(ATM)以建模词语之间的关联关系等。

下表总结了LDA与pLSA的主要区别:

比较维度 LDA pLSA
模型性质 层次贝叶斯生成模型 条件化概率模型
参数先验 Dirichlet先验 无先验
参数数量 与文档数无关 随文档数线性增长
推断方法 Gibbs Sampling/变分推断 EM算法
泛化能力 较弱
扩展性 易于扩展 扩展困难

20.7 总结与展望

潜在狄利克雷分配(LDA)作为主题模型的开创性工作,在文本挖掘和机器学习领域产生了深远影响。通过引入Dirichlet先验,LDA成功地将贝叶斯思想融入到主题建模中,既解决了模型参数的稀疏性问题,又为后续的模型扩展提供了灵活的框架。

LDA的核心贡献体现在以下几个方面:首先,它提供了一种优雅的概率框架来描述文档、主题和词语之间的生成关系,使得模型的推理和学习过程具有明确的概率语义。其次,Dirichlet-多项式的共轭结构使得模型可以进行有效的近似推断,无论是通过Gibbs Sampling还是变分推断,都能在合理的计算成本下获得满意的结果。最后,LDA的层次化设计使其成为一系列扩展模型的基石,这些扩展模型在社交网络分析、推荐系统、计算机视觉等领域都有广泛应用。

然而,LDA也存在一些局限性。LDA假设主题数目是预先给定的,这在实际应用中往往需要通过交叉验证或其他准则来确定。此外,LDA的词袋模型假设忽略了词语之间的顺序信息和上下文关系,可能丢失重要的语义信息。LDA假设每个主题的词分布是独立的,而实际上词语之间往往存在复杂的语义关联。这些局限性推动了后续研究的不断深入,包括非参数贝叶斯方法(如HDP)、动态主题模型、相关主题模型等。

总之,LDA作为统计学习领域的重要模型,不仅在学术研究中具有重要价值,更在实际应用中展现出强大的生命力。深入理解LDA的数学原理和推断方法,对于掌握现代机器学习技术具有重要意义。

公式汇总表

编号 公式名称 公式表达式
(20.1) Dirichlet分布密度函数 $p(\boldsymbol{\beta}_k
(20.2) LDA联合概率分布 $p(\mathbf{W}, \mathbf{Z}, \boldsymbol{\Theta}, \boldsymbol{\Beta}
(20.3) Gibbs Sampling条件概率 $p(z_{di}=k
(20.4) 主题分布参数估计 \(\hat{\theta}{dk} = \frac{N{dk} + \alpha_k}{\sum_{k'=1}^{K} (N_{dk'} + \alpha_{k'})}\)
(20.5) 词分布参数估计 \(\hat{\beta}{kv} = \frac{N{kv} + \eta_v}{\sum_{v'=1}^{V} (N_{kv'} + \eta_{v'})}\)
(20.6) 证据下界(ELBO) $\mathcal{L}(\boldsymbol{\gamma}, \boldsymbol{\phi}, \boldsymbol{\lambda}) = \mathbb{E}_q[\log p(\mathbf{W}, \boldsymbol{\Theta}, \boldsymbol{\Beta}, \mathbf{Z}