隐式狄利克雷分布(LDA)的在线变分贝叶斯(Online Variational Bayes)算法原理与参数更新过程
题目描述
隐式狄利克雷分布(LDA)是一种生成式主题模型,用于从文档集合中自动发现潜在主题。传统的LDA变分推断算法(如坐标上升变分推断,CAVI)需要将所有文档同时加载到内存中进行迭代优化,难以处理大规模或流式数据。在线变分贝叶斯(Online Variational Bayes, Online VB)算法通过在线学习的方式,逐批(mini-batch)处理文档,动态更新全局主题-词分布参数,从而实现高效、可扩展的LDA训练。本题要求详细讲解Online VB算法的核心思想、数学推导及参数更新过程。
解题过程讲解
第一步:回顾LDA的基本设定
LDA假设文档集合包含 \(K\) 个主题,每个主题是词表上的一个多项式分布 \(\beta_k\)(全局参数)。每个文档 \(d\) 对应一个主题比例分布 \(\theta_d\)(局部参数),文档中的每个词由一个主题 \(z_{dn}\) 生成。生成过程为:
- 采样全局主题-词分布:\(\beta_k \sim \text{Dir}(\eta)\)。
- 对每个文档 \(d\):
- 采样主题比例:\(\theta_d \sim \text{Dir}(\alpha)\)。
- 对文档中每个词 \(n\):
- 采样主题:\(z_{dn} \sim \text{Mult}(\theta_d)\)。
- 采样词:\(w_{dn} \sim \text{Mult}(\beta_{z_{dn}})\)。
传统变分推断用变分分布 \(q(\beta, \theta, z) = \prod_k q(\beta_k) \prod_d q(\theta_d) \prod_n q(z_{dn})\) 近似真实后验,并通过CAVI迭代优化局部参数(文档级)和全局参数(主题级)。
第二步:Online VB的核心思想
Online VB将LDA的变分推断转化为随机优化问题:
- 将全局参数 \(\beta\) 的更新视为优化一个关于全体文档的期望目标函数。
- 每次仅用一小批文档(mini-batch)计算目标函数的无偏随机梯度,并沿梯度方向更新全局参数。
- 好处:无需全量数据载入内存,可增量处理流数据,且能收敛到与传统VB相近的解。
第三步:数学形式化与变分目标
LDA的边际对数似然可分解为:
\[\log p(w | \alpha, \eta) = \mathbb{E}_q[\log p(\beta, \theta, z, w)] - \mathbb{E}_q[\log q(\beta, \theta, z)] + \text{KL}(q || p) \]
变分推断最大化证据下界(ELBO):
\[\mathcal{L}(q) = \mathbb{E}_q[\log p(\beta, \theta, z, w)] - \mathbb{E}_q[\log q(\beta, \theta, z)] \]
假设变分分布为:
\[q(\beta, \theta, z) = \prod_k \text{Dir}(\beta_k | \lambda_k) \prod_d \text{Dir}(\theta_d | \gamma_d) \prod_n \text{Mult}(z_{dn} | \phi_{dn}) \]
其中 \(\lambda_k\) 是全局主题-词分布的变分参数,\(\gamma_d, \phi_{dn}\) 是文档级局部参数。
第四步:随机自然梯度推导
ELBO 可写为全局部分和局部部分之和:
\[\mathcal{L} = \sum_k \mathcal{L}_k(\lambda_k) + \sum_d \mathcal{L}_d(\lambda, \gamma_d, \phi_d) \]
其中 \(\mathcal{L}_k\) 仅依赖全局参数 \(\lambda_k\),\(\mathcal{L}_d\) 依赖全局参数和文档 \(d\) 的局部参数。
传统VB(CAVI)交替更新:
- 固定 \(\lambda\),对每个文档 \(d\) 优化 \(\gamma_d, \phi_d\)(局部E步)。
- 固定 \(\gamma, \phi\),用全量文档更新 \(\lambda\)(全局M步):
\[ \lambda_{kv} = \eta + \sum_d \sum_n \phi_{dn}^k \cdot [w_{dn}=v] \]
(\(\phi_{dn}^k\) 是词 \(n\) 属于主题 \(k\) 的概率,\([w_{dn}=v]\) 是指示函数。)
Online VB 的关键是将全局更新转化为随机优化:
- 定义文档 \(d\) 对全局参数的“贡献”为:
\[ t_d = \{ t_{kv}^{(d)} \},\quad t_{kv}^{(d)} = \sum_n \phi_{dn}^k \cdot [w_{dn}=v] \]
- 全量更新可写为:\(\lambda = \eta + \sum_d t_d\)。
- Online VB 每次采样一小批文档 \(S\)(大小 \(|S| \ll D\)),计算该批的贡献和 \(t_S = \sum_{d \in S} t_d\),然后更新 \(\lambda\) 为:
\[ \lambda_{\text{new}} = (1 - \rho_t) \lambda_{\text{old}} + \rho_t (\eta + \frac{D}{|S|} t_S) \]
其中 \(\rho_t\) 是学习率(随时间衰减),\(\frac{D}{|S|} t_S\) 是对全量贡献的无偏估计(乘以缩放因子 \(D/|S|\))。
第五步:算法步骤详解
-
初始化:
- 设置全局参数 \(\lambda_{kv} = \eta + \text{random small noise}\)。
- 选择学习率衰减策略(如 \(\rho_t = (\tau_0 + t)^{-\kappa}\),\(\tau_0 > 0, \kappa \in (0.5,1]\))。
-
循环处理每一批文档(直到收敛):
a. 采样小批量:从文档集(或流数据)中随机采样 \(|S|\) 个文档。
b. 局部E步:对每个文档 \(d \in S\):- 初始化局部变分参数 \(\gamma_d, \phi_d\)(可沿用上轮值或随机初始化)。
- 执行CAVI迭代至收敛(通常少量迭代即可):
\[ \phi_{dn}^k \propto \exp\left( \Psi(\gamma_{dk}) + \Psi(\lambda_{k, w_{dn}}) - \Psi(\sum_v \lambda_{kv}) \right) \]
\[ \gamma_{dk} = \alpha + \sum_n \phi_{dn}^k \]
($\Psi$ 是 digamma 函数。)
- 计算文档 $d$ 的充分统计量:
\[ t_{kv}^{(d)} = \sum_{n=1}^{N_d} \phi_{dn}^k \cdot [w_{dn}=v] \]
c. 全局M步(在线更新):
- 计算小批量的总统计量:\(t_S = \sum_{d \in S} t_d\)。
- 更新全局参数:
\[ \lambda_{\text{new}} = (1 - \rho_t) \lambda_{\text{old}} + \rho_t \left( \eta + \frac{D}{|S|} t_S \right) \]
其中 $D$ 是总文档数(流数据中可估计或使用动态值)。
d. 衰减学习率:更新 \(t = t+1\),计算新学习率 \(\rho_t\)。
- 输出:
- 全局主题-词分布:\(\beta_{kv} \propto \lambda_{kv}\)。
- 对新文档,固定 \(\lambda\) 运行局部E步即可推断其主题分布 \(\theta_d\)。
第六步:关键点与收敛性
- 无偏梯度估计:\(\mathbb{E}[\frac{D}{|S|} t_S] = \sum_d t_d\),保证了随机更新的正确性。
- 学习率要求:需满足 Robbins-Monro 条件(\(\sum \rho_t = \infty, \sum \rho_t^2 < \infty\))以确保收敛到局部最优。
- 内存效率:每批只需维护 \(|S|\) 个文档的局部参数,全局参数 \(\lambda\) 的维度为 \(K \times V\)(与主题数、词表大小相关)。
- 适用场景:大规模文本流、动态新增文档、在线学习系统。
总结
Online VB 将LDA的变分推断转化为随机优化,通过小批量文档的局部推断结果,以随机梯度方式持续更新全局主题-词分布。其核心在于用缩放后的批量统计量无偏估计全量梯度,并结合衰减学习率保证收敛。该框架使LDA能高效处理海量或流式文本数据,成为主题模型在大数据场景下的关键扩展。