在前一节中,我们已经确立了潜在狄利克雷分配(LDA)的贝叶斯表述,现在我们来应对进行后验推断的挑战。我们的目标是计算给定观测词 w 和超参数 α 与 β 的潜在变量(主要是主题分配 z)的后验分布。也就是说,我们想得到 p(z,θ,ϕ∣w,α,β)。
尽管可以通过从每个潜在变量(z, θ, ϕ)的条件分布中迭代采样来应用标准吉布斯采样,但连续参数 θ(文档-主题分布)和 ϕ(主题-词语分布)的高维度使其效率不高。此外,我们通常最关心的是主题分配 z 本身,或者是 θ 和 ϕ 的期望值。
折叠吉布斯采样为LDA提供了一种优雅且通常有效的方法。其核心思想是利用LDA模型中狄利克雷先验与多项式似然之间的共轭性,分析性地积分掉,或“折叠”连续参数 θ 和 ϕ。这使得我们得到一个吉布斯采样器,它只需要对每个文档 d 中的每个词 n 遍历离散的主题分配 zd,n。
折叠吉布斯采样更新规则
LDA折叠吉布斯采样的核心是,在给定所有其他主题分配 z¬(d,n)、观测词 w 以及超参数 α,β 的情况下,将特定词元 (d,n)(文档 d 中的第 n 个词)分配给特定主题 k 的条件概率。我们将 wd,n 对应的词汇表词表示为 v。
利用贝叶斯定理并运用条件独立性和狄利克雷-多项式共轭性,我们可以推导这个条件概率。我们积分掉 θd(文档 d 的主题比例)和 ϕk(主题 k 的词语分布):
p(zd,n=k∣z¬(d,n),w,α,β)∝p(wd,n=v∣zd,n=k,z¬(d,n),β)×p(zd,n=k∣zd,¬n,α)
让我们分析右侧的这两个项:
-
文档-主题项 p(zd,n=k∣zd,¬n,α): 该项反映了主题 k 在文档 d 中出现的可能性,考虑了同一文档中其他词的分配 (zd,¬n) 和文档-主题先验 α。积分掉 θd 会得到一个与文档 d 中已分配给主题 k 的词的数量(不包括当前词 n)加上先验参数 αk 成比例的概率。设 Nd,k¬n 是文档 d 中(不包括词 n)分配给主题 k 的词的数量。为简便起见,假设 α 是对称先验(即对所有 k 都有 αk=α):
p(zd,n=k∣zd,¬n,α)∝Nd,k¬n+α
该项倾向于将词分配给文档中已经常用的主题。
-
主题-词语项 p(wd,n=v∣zd,n=k,z¬(d,n),β): 该项反映了特定词 v 在主题 k 下出现的可能性,考虑了语料库中所有其他词的分配 (z¬(d,n)) 和主题-词语先验 β。积分掉 ϕ 会得到一个与词 v 在语料库中其他地方被分配给主题 k 的次数加上先验参数 βv 成比例的概率。设 Nk,v¬(d,n) 是词 v 在所有文档中分配给主题 k 的计数(不包括当前实例 (d,n))。设 Nk¬(d,n) 是分配给主题 k 的词的总数(不包括当前实例)。假设 β 是对称先验(即对所有 v 都有 βv=β),且 V 是词汇表大小:
p(wd,n=v∣zd,n=k,z¬(d,n),β)∝Nk¬(d,n)+VβNk,v¬(d,n)+β
该项倾向于将词分配给经常生成这种特定词类型 v 的主题。
结合这些,采样主题分配 zd,n 的完整条件概率是:
p(zd,n=k∣z¬(d,n),wd,n=v,α,β)∝(Nd,k¬n+α)×Nk¬(d,n)+VβNk,v¬(d,n)+β
这个公式给出了将当前词元 wd,n 分配给每个主题 k 的非归一化概率。我们计算所有 K 个主题的这个值,然后对它们进行归一化,形成一个有效的概率分布,从中我们采样新的主题分配。
折叠吉布斯采样更新中,主题分配 zd,n=k 的依赖关系。该概率取决于与文档相关的计数 (Nd,k) 以及与主题和词类型相关的计数 (Nk,v, Nk),并受先验 (α, β) 调节。
LDA 的折叠吉布斯采样算法
该算法步骤如下:
-
初始化:
- 选择主题数量 K。
- 设置超参数 α 和 β(通常是对称的,例如 α=50/K, β=0.01)。
- 对于语料库中的每个词元 wd,n,随机分配一个主题 zd,n∈{1,...,K}。
- 根据这些随机分配初始化计数矩阵:
- Nd,k:文档 d 中分配给主题 k 的词的数量。
- Nk,v:词 v 在所有文档中分配给主题 k 的次数。
- Nk:所有文档中分配给主题 k 的词的总数 (Nk=∑vNk,v)。
-
迭代(MCMC 采样):
- 重复所需迭代次数(包括预热期和采样期):
- 对于每个文档 d=1…M:
- 对于每个词位置 n=1…Nd(其中 Nd 是文档 d 的长度):
- 设 kold=zd,n 是当前主题分配,v=wd,n 是词类型。
- 减少计数: 减少与当前分配 (d,n,kold,v) 相关的计数:
Nd,kold←Nd,kold−1
Nkold,v←Nkold,v−1
Nkold←Nkold−1
(这些计数现在表示公式所需的 N¬(d,n))。
- 计算采样概率: 对于每个主题 k′=1…K,使用以下公式计算非归一化概率 pk′′:
pk′′=(Nd,k′¬n+α)×Nk′¬(d,n)+VβNk′,v¬(d,n)+β
(注意:此处使用的计数是减少后的计数)。
- 归一化: 创建一个归一化概率分布 P=[p1,...,pK],其中 pk′=pk′′/∑j=1Kpj′。
- 采样新主题: 从多项式分布 P 中为词 (d,n) 抽取一个新主题 knew。
knew∼Multinomial(1,P)
- 更新分配: 设置 zd,n=knew。
- 增加计数: 增加与新分配 (d,n,knew,v) 相关的计数:
Nd,knew←Nd,knew+1
Nknew,v←Nknew,v+1
$N_{k_{new}} \leftarrow N_{k_{new}} + 1
-
输出:
- 丢弃初始“预热期”的样本。
- 使用预热期后一个或多个样本的计数来估计模型参数。
估计模型参数(θ 和 ϕ)
尽管 θ 和 ϕ 在采样过程中被积分掉,但我们可以使用采样器的最终计数(通常是充分预热后最后一次迭代的计数,或多个预热后样本的平均值)来估计它们的后验期望。
文档 d 的预期文档-主题分布是:
θ^d,k=∑k′=1K(Nd,k′+αk′)Nd,k+αk
主题 k 的预期主题-词语分布是:
ϕ^k,v=∑v′=1V(Nk,v′+βv′)Nk,v+βv
这些估计的分布 θ^ 和 ϕ^ 分别表示每个文档的学习主题混合,以及定义每个主题的词语概率。
讨论
折叠吉布斯采样是一种广泛使用的 LDA 推断方法,因为它相对简单,并且能有效地使用模型的共轭特性。通过避免直接采样连续参数,它有时可以比标准吉布斯采样器更有效地对主题分配 z 的后验分布进行采样。
然而,它仍然是一种 MCMC 方法。需要评估收敛性(例如,通过监测数据的对数似然或主题一致性指标),并且需要一个合适的预热期。采样器按顺序处理词语,这可能导致混合缓慢,尤其是在大型数据集或主题数量较多的情况下。分配之间的关联可能意味着需要多次迭代才能从后验中获得独立的样本。
尽管存在这些潜在限制,折叠吉布斯采样为 LDA 的贝叶斯推断提供了一个可靠的基线和明确的方法。它与基于优化的方法(如变分贝叶斯,我们接下来会研究)形成对比,通过确定性近似权衡采样变异性以实现可能更快的收敛。