潜在狄利克雷分布(LDA)的随机变分推断(SVI)算法原理与参数估计过程
题目描述
潜在狄利克雷分布(LDA)是一种生成式主题模型,用于从文本集合中自动发现潜在主题。传统LDA使用吉布斯采样或变分推断(VI)进行参数估计,但计算成本较高。随机变分推断(SVI)通过结合随机梯度下降和变分推断,使LDA能够高效处理大规模文本数据。本题要求解释SVI如何优化LDA的变分参数,并逐步推导其更新公式。
解题过程
1. LDA模型的基本设定
LDA假设每篇文档由多个主题混合生成,每个主题是词汇表上的概率分布。模型参数包括:
- 主题-词分布 \(\beta_k\)(主题\(k\)下词语的概率分布,服从狄利克雷先验\(\eta\))。
- 文档-主题分布 \(\theta_d\)(文档\(d\)的主题比例,服从狄利克雷先验\(\alpha\))。
- 观测变量 \(w_{d,n}\)(文档\(d\)中第\(n\)个词)。
- 隐变量 \(z_{d,n}\)(生成\(w_{d,n}\)的主题)。
生成过程为:
- 对每个主题\(k\),从狄利克雷分布采样\(\beta_k \sim \text{Dir}(\eta)\)。
- 对每篇文档\(d\):
- 采样主题比例\(\theta_d \sim \text{Dir}(\alpha)\)。
- 对每个词位置\(n\):
- 采样主题\(z_{d,n} \sim \text{Multinomial}(\theta_d)\)。
- 采样词语\(w_{d,n} \sim \text{Multinomial}(\beta_{z_{d,n}})\)。
2. 变分推断(VI)的核心思想
后验分布\(p(z, \theta, \beta | w, \alpha, \eta)\)难以直接计算,VI通过一个简单的变分分布\(q(z, \theta, \beta)\)近似后验,并最小化KL散度\(\text{KL}(q \| p)\)。
- 变分分布假设隐变量独立(平均场假设):
\[ q(z, \theta, \beta) = \prod_{k} q(\beta_k | \lambda_k) \prod_{d} \left[ q(\theta_d | \gamma_d) \prod_{n} q(z_{d,n} | \phi_{d,n}) \right], \]
其中:
-
\(q(\beta_k | \lambda_k)\)是狄利克雷分布(参数\(\lambda_k\))。
-
\(q(\theta_d | \gamma_d)\)是狄利克雷分布(参数\(\gamma_d\))。
-
\(q(z_{d,n} | \phi_{d,n})\)是多项分布(参数\(\phi_{d,n}\))。
-
目标等价于最大化证据下界(ELBO):
\[ \mathcal{L}(q) = \mathbb{E}_q[\log p(w, z, \theta, \beta)] - \mathbb{E}_q[\log q(z, \theta, \beta)]. \]
3. 随机变分推断(SVI)的动机
传统VI需遍历全部文档更新参数,计算成本高。SVI的核心改进:
- 随机采样:每次迭代随机采样一小批文档(甚至单篇文档)。
- 自然梯度:使用信息几何中的自然梯度(而非普通梯度)更新全局参数\(\lambda\),使收敛更稳定。
4. SVI for LDA的步骤推导
(1)局部变分参数(每篇文档)
对单篇文档\(d\),固定全局参数\(\lambda\),优化局部参数\(\gamma_d\)和\(\phi_d\):
- E步:迭代更新直至收敛(类似坐标上升):
\[ \phi_{d,n,k} \propto \exp\left( \mathbb{E}_q[\log \theta_{d,k}] + \mathbb{E}_q[\log \beta_{k, w_{d,n}}] \right), \]
\[ \gamma_{d,k} = \alpha_k + \sum_{n=1}^{N_d} \phi_{d,n,k}. \]
其中\(\mathbb{E}_q[\log \theta_{d,k}] = \Psi(\gamma_{d,k}) - \Psi(\sum_j \gamma_{d,j})\)(\(\Psi\)为Digamma函数)。
(2)全局变分参数(整个语料)
全局参数\(\lambda_k\)表示主题\(k\)的分布。传统VI的更新需对所有文档求和:
\[\lambda_{k,v} = \eta_v + \sum_{d=1}^{D} \sum_{n=1}^{N_d} \phi_{d,n,k} \cdot \mathbb{I}(w_{d,n}=v). \]
SVI改为基于随机采样的文档\(d\)计算随机自然梯度:
- 采样文档\(d\),计算其局部充分统计量:
\[ s_{k,v} = \sum_{n=1}^{N_d} \phi_{d,n,k} \cdot \mathbb{I}(w_{d,n}=v). \]
- 随机自然梯度为:
\[ \hat{\nabla}_\lambda \mathcal{L} = \eta + D \cdot s - \lambda, \]
其中\(D\)是总文档数,缩放因子\(D\)保证无偏性。
- 更新全局参数(学习率\(\rho_t\)衰减):
\[ \lambda^{(t+1)} = (1-\rho_t) \lambda^{(t)} + \rho_t \left( \eta + D \cdot s \right). \]
5. 算法流程总结
- 初始化全局参数\(\lambda\)。
- 对每次迭代\(t=1,2,\dots\):
- 随机采样一篇文档\(d\)。
- E步:固定\(\lambda\),优化该文档的\(\phi_d\)和\(\gamma_d\)。
- M步:计算文档\(d\)的充分统计量\(s\),用自然梯度更新\(\lambda\)。
- 重复直至收敛。
关键点说明
- 自然梯度:考虑概率分布的几何结构,比普通梯度更高效。
- 学习率调度:需满足Robbins-Monro条件(\(\sum \rho_t = \infty, \sum \rho_t^2 < \infty\))。
- 扩展性:SVI将计算复杂度从\(O(D)\)降至\(O(1)\)每迭代,适合流式数据。