潜在狄利克雷分配(Latent Dirichlet Allocation, LDA)模型的在线变分贝叶斯推断算法原理
题目描述
潜在狄利克雷分配(LDA)是一种经典的主题模型,用于从大量文本文档中发现潜在主题结构。给定一个文档集合,LDA假设每篇文档由多个主题混合而成,每个主题由单词的概率分布表示。模型的核心生成过程基于三层贝叶斯层次结构:文档-主题分布服从狄利克雷先验,主题-单词分布服从另一个狄利克雷先验,文档中的每个单词由其主题分配决定。推断目标是估计文档-主题分布(θ)和主题-单词分布(φ)的后验分布。
由于精确后验推断难以计算(涉及复杂的多重积分),实践中常采用近似推断方法。在线变分贝叶斯(Online Variational Bayes, OVB)是一种高效推断算法,它结合了变分推断的优化框架和随机梯度下降的在线学习思想,能够逐批处理文档并持续更新模型参数,特别适合处理大规模流式数据。本题将详细讲解LDA的模型设定、变分推断的核心思想,以及如何导出在线变分贝叶斯算法的参数更新步骤,确保推理过程逐步递进、精确可循。
第一步:LDA的生成过程与模型设定
首先明确LDA的生成过程,这是推导推断算法的基础:
- 设主题数为 \(K\),词汇表大小为 \(V\),文档数为 \(D\)。
- 对于每个主题 \(k\),生成主题-单词分布 \(\phi_k \sim \text{Dirichlet}(\beta)\),其中 \(\beta\) 是超参数。
- 对于每篇文档 \(d\):
- 生成文档-主题分布 \(\theta_d \sim \text{Dirichlet}(\alpha)\),其中 \(\alpha\) 是超参数。
- 对于文档中的每个单词位置 \(n\):
- 采样主题分配 \(z_{dn} \sim \text{Multinomial}(\theta_d)\)。
- 根据分配的主题 \(z_{dn}\),采样单词 \(w_{dn} \sim \text{Multinomial}(\phi_{z_{dn}})\)。
LDA的完全概率模型包含隐变量 \(Z = \{z_{dn}\}\)、\(\Theta = \{\theta_d\}\)、\(\Phi = \{\phi_k\}\),以及观测数据 \(W = \{w_{dn}\}\)。目标是计算后验分布 \(p(\Theta, \Phi, Z | W, \alpha, \beta)\)。
第二步:变分推断的基本思想
由于后验分布难以直接计算,变分推断将其转化为优化问题:
- 引入一个变分分布 \(q(\Theta, \Phi, Z)\) 来近似真实后验。LDA中常使用均值场假设,将隐变量分解为独立部分:
\[ q(\Theta, \Phi, Z) = \prod_{d=1}^D q(\theta_d | \gamma_d) \prod_{k=1}^K q(\phi_k | \lambda_k) \prod_{d=1}^D \prod_{n=1}^{N_d} q(z_{dn} | \varphi_{dn}), \]
其中:
- \(q(\theta_d | \gamma_d)\) 是狄利克雷分布,变分参数为 \(\gamma_d\)(\(K\) 维)。
- \(q(\phi_k | \lambda_k)\) 是狄利克雷分布,变分参数为 \(\lambda_k\)(\(V\) 维)。
- \(q(z_{dn} | \varphi_{dn})\) 是多项式分布,变分参数为 \(\varphi_{dn}\)(\(K\) 维概率向量)。
- 优化目标是最大化证据下界(ELBO):
\[ \mathcal{L}(q) = \mathbb{E}_q[\log p(W, Z, \Theta, \Phi | \alpha, \beta)] - \mathbb{E}_q[\log q(\Theta, \Phi, Z)]. \]
通过坐标上升法迭代更新变分参数 \(\{\gamma_d, \lambda_k, \varphi_{dn}\}\),使 \(q\) 逼近真实后验。
第三步:标准变分贝叶斯(VB)的更新公式
在批量VB中,所有文档同时参与迭代。通过最大化ELBO,可导出闭合形式的更新公式:
- 文档-主题变分参数 \(\gamma_d\):
\[ \gamma_{dk} = \alpha_k + \sum_{n=1}^{N_d} \varphi_{dnk}, \]
其中 \(\varphi_{dnk}\) 是单词 \(n\) 属于主题 \(k\) 的概率。
2. 主题-单词变分参数 \(\lambda_k\):
\[ \lambda_{kv} = \beta_v + \sum_{d=1}^D \sum_{n=1}^{N_d} \varphi_{dnk} \cdot \mathbb{I}[w_{dn} = v], \]
其中 \(\mathbb{I}[\cdot]\) 是指示函数。
3. 主题分配变分参数 \(\varphi_{dn}\):
\[ \varphi_{dnk} \propto \exp\left( \Psi(\gamma_{dk}) - \Psi\left(\sum_{j=1}^K \gamma_{dj}\right) + \Psi(\lambda_{k, w_{dn}}) - \Psi\left(\sum_{v=1}^V \lambda_{kv}\right) \right), \]
其中 \(\Psi(\cdot)\) 是 digamma 函数(对数伽马函数的导数),用于计算狄利克雷分布的期望对数。
这些更新需迭代至收敛,但每次更新需要扫描全部文档,计算开销随数据量线性增长。
第四步:在线变分贝叶斯(OVB)的推导
OVB的核心思想是采用随机优化,逐批处理文档,并持续更新全局参数(即 \(\lambda_k\)):
- 将ELBO分解为全局部分(依赖 \(\lambda\))和局部部分(依赖 \(\gamma_d, \varphi_d\)):
\[ \mathcal{L} = \sum_{d=1}^D \ell(\gamma_d, \varphi_d; \lambda) + \log p(\lambda | \beta), \]
其中 \(\ell(\cdot)\) 是文档 \(d\) 对ELBO的贡献。
- 在线处理流程:
- 随机采样一个小批量文档 \(S_t\)(大小通常为几百)。
- 对每个采样文档 \(d \in S_t\),执行局部变分推断(固定 \(\lambda\)),迭代更新 \(\gamma_d\) 和 \(\varphi_d\) 直至收敛(或固定次数)。
- 基于小批量文档的充分统计量,计算全局参数 \(\lambda\) 的“自然梯度”方向。
- 更新全局参数:
\[ \lambda_{kv}^{(t+1)} = (1 - \rho_t) \lambda_{kv}^{(t)} + \rho_t \left( \beta_v + \frac{D}{|S_t|} \sum_{d \in S_t} \sum_{n=1}^{N_d} \varphi_{dnk} \cdot \mathbb{I}[w_{dn} = v] \right), \]
其中 $\rho_t$ 是学习率,通常设为 $\rho_t = (\tau_0 + t)^{-\kappa}$($\tau_0 > 0, \kappa \in (0.5, 1]$),满足 Robbins-Monro 条件。
第五步:OVB的算法步骤与关键细节
将上述推导具体化为可执行的算法:
- 初始化:
- 设置超参数 \(\alpha, \beta\)。
- 随机初始化全局参数 \(\lambda_k\)(例如 \(\lambda_{kv} = \beta_v + \text{随机噪声}\))。
- 循环处理小批量(对于 \(t = 1, 2, \dots\)):
- 采样小批量文档 \(S_t\)。
- 对每个文档 \(d \in S_t\):
- 初始化局部参数:\(\gamma_d = \alpha + N_d / K\)(均匀分配),\(\varphi_{dnk} = 1/K\)。
- 迭代更新直至收敛(通常3~10次):
- 按第三步公式更新 \(\varphi_{dn}\)。
- 按第三步公式更新 \(\gamma_d\)。
- 计算文档 \(d\) 的充分统计量:\(E_d[\mathbb{I}[z_{dn}=k, w_{dn}=v]] = \varphi_{dnk} \cdot \mathbb{I}[w_{dn}=v]\)。
- 聚合小批量统计量,计算全局参数的中间估计:
\[ \hat{\lambda}_{kv} = \beta_v + \frac{D}{|S_t|} \sum_{d \in S_t} \sum_{n=1}^{N_d} \varphi_{dnk} \cdot \mathbb{I}[w_{dn}=v]. \]
- 更新全局参数:\(\lambda_{kv}^{(t+1)} = (1 - \rho_t) \lambda_{kv}^{(t)} + \rho_t \hat{\lambda}_{kv}\)。
- 输出:
- 主题-单词分布估计:\(\phi_{kv} \approx \lambda_{kv} / \sum_{v'=1}^V \lambda_{kv'}\)。
- 文档-主题分布估计(对于任意文档):\(\theta_{dk} \approx \gamma_{dk} / \sum_{j=1}^K \gamma_{dj}\)。
第六步:算法优势与适用场景
- 可扩展性:每步仅需处理小批量数据,内存占用低,适合大规模流式数据。
- 收敛性:在合理的学习率调度下,能保证收敛到局部最优(或平稳点)。
- 灵活性:可轻松扩展至动态主题模型或结合其他元数据。
- 注意:在线学习对学习率敏感,需谨慎调参;小批量大小影响稳定性,通常取 100~1000。
通过以上六步,我们完成了从LDA基础模型到在线变分贝叶斯推断的完整推导与讲解,涵盖了模型设定、变分近似、更新公式导出以及在线优化细节,形成了逻辑连贯、逐步递进的理解路径。