潜在狄利克雷分布(LDA)的随机变分推断(SVI)算法原理与参数估计过程
字数 2735 2025-11-08 10:02:38

潜在狄利克雷分布(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}\)的主题)。

生成过程为:

  1. 对每个主题\(k\),从狄利克雷分布采样\(\beta_k \sim \text{Dir}(\eta)\)
  2. 对每篇文档\(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的核心改进:

  1. 随机采样:每次迭代随机采样一小批文档(甚至单篇文档)。
  2. 自然梯度:使用信息几何中的自然梯度(而非普通梯度)更新全局参数\(\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. 算法流程总结

  1. 初始化全局参数\(\lambda\)
  2. 对每次迭代\(t=1,2,\dots\)
    • 随机采样一篇文档\(d\)
    • E步:固定\(\lambda\),优化该文档的\(\phi_d\)\(\gamma_d\)
    • M步:计算文档\(d\)的充分统计量\(s\),用自然梯度更新\(\lambda\)
  3. 重复直至收敛。

关键点说明

  • 自然梯度:考虑概率分布的几何结构,比普通梯度更高效。
  • 学习率调度:需满足Robbins-Monro条件(\(\sum \rho_t = \infty, \sum \rho_t^2 < \infty\))。
  • 扩展性:SVI将计算复杂度从\(O(D)\)降至\(O(1)\)每迭代,适合流式数据。
潜在狄利克雷分布(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)\)每迭代,适合流式数据。