基于变分推断(Variational Inference)的主题模型(如LDA)参数估计算法
题目描述
在概率主题模型,特别是潜在狄利克雷分配(LDA)中,模型参数(即文档-主题分布和主题-词分布)的后验分布通常是无法直接计算的(因为分母的归一化常数难以处理)。变分推断(Variational Inference, VI)是一种将复杂的后验推断问题转化为一个优化问题的近似推断方法。本题目要求详细讲解如何应用变分推断来估计LDA模型的参数,即如何通过引入一个易于处理的变分分布来近似真实的后验分布,并通过优化变分下界来迭代求解模型参数。
解题过程详解
第一步:回顾LDA的生成过程与推断难题
LDA是一个生成模型,假设每篇文档的生成过程如下:
- 从狄利克雷分布 \(Dir(\alpha)\) 中采样生成文档的主题分布 \(\theta_d\)。
- 对于文档中的第 \(n\) 个词:
a. 从多项式分布 \(Mult(\theta_d)\) 中采样一个主题编号 \(z_{dn}\)。
b. 从对应于主题 \(z_{dn}\) 的多项式分布 \(Mult(\beta_{z_{dn}})\) 中采样生成具体的词 \(w_{dn}\)。
其中,\(\alpha\) 是文档-主题分布的狄利克雷先验参数,\(\beta\) 是主题-词分布的参数(矩阵),是我们需要从数据中学习的目标之一。
给定观测到的文档集合 \(W\)(词序列),我们想要推断每篇文档的主题分布 \(\theta_d\) 和每个词背后的主题 \(z_{dn}\),并学习全局的主题-词分布 \(\beta\)。这需要计算后验分布 \(p(\theta, z | w, \alpha, \beta)\)。这个分布非常复杂,因为隐变量 \(\theta\) 和 \(z\) 之间、以及不同词的主题之间都存在耦合关系,导致其无法进行解析求解(即“难以处理”)。
第二步:变分推断的核心思想——用简单分布逼近复杂后验
变分推断的核心思想是,用一个由变分参数 \(\phi, \gamma\) 控制的、易于处理的简单分布 \(q(\theta, z | \phi, \gamma)\) 来近似真实后验 \(p(\theta, z | w, \alpha, \beta)\)。
对于LDA,我们选择的变分分布 \(q\) 通常具有“平均场”形式,即假设所有隐变量相互独立:
\[q(\theta, z | \gamma, \phi) = q(\theta | \gamma) \prod_{n=1}^{N} q(z_n | \phi_n) \]
其中:
- \(\gamma\) 是文档-主题分布的变分狄利克雷参数(向量)。
- \(\phi_n\) 是第 \(n\) 个词的主题分布的变分多项分布参数(向量)。
这个假设打破了隐变量之间的依赖关系,使得 \(q\) 的计算变得容易。
我们的目标是找到一组变分参数 \((\gamma^*, \phi^*)\),使得 \(q\) 尽可能接近 \(p\)。衡量两个分布差异的常用指标是KL散度(Kullback-Leibler Divergence)。
第三步:构建优化目标——证据下界(ELBO)
最小化 \(KL(q || p)\) 等价于最大化一个称为证据下界(Evidence Lower BOund, ELBO)的量,记作 \(\mathcal{L}\)。
\[\mathcal{L}(\gamma, \phi; \alpha, \beta) = E_q[\log p(\theta, z, w | \alpha, \beta)] - E_q[\log q(\theta, z | \gamma, \phi)] \]
推导如下:
- 根据KL散度定义:\(KL(q || p) = E_q[\log q] - E_q[\log p] = E_q[\log q] - E_q[\log p(\theta, z | w, \alpha, \beta)]\)。
- 由于 \(\log p(w | \alpha, \beta)\)(证据/边缘似然)与隐变量无关,我们有 \(\log p(\theta, z | w, \alpha, \beta) = \log p(\theta, z, w | \alpha, \beta) - \log p(w | \alpha, \beta)\)。
- 代入上式:\(KL(q || p) = E_q[\log q] - E_q[\log p(\theta, z, w)] + \log p(w | \alpha, \beta)\)。
- 移项得:\(\log p(w | \alpha, \beta) = \underbrace{E_q[\log p(\theta, z, w)] - E_q[\log q]}_{\text{证据下界 } \mathcal{L}} + KL(q || p)\)。
因为KL散度非负,所以 \(\log p(w | \alpha, \beta) \ge \mathcal{L}\),\(\mathcal{L}\) 是证据 \(\log p(w)\) 的下界。最大化 \(\mathcal{L}\) 会使 \(q\) 更好地近似 \(p\),同时也间接提升了数据的边际似然。
第四步:推导变分参数的更新公式(E-Step)
现在,我们需要针对每篇文档,最大化其对应的 \(\mathcal{L}\) 来求解变分参数 \(\gamma_d\) 和 \(\phi_{dn}\)。这通常通过坐标上升法迭代完成。
- 写出完整的ELBO表达式:
将LDA的联合分布 \(p\) 和变分分布 \(q\) 的概率密度函数代入 \(\mathcal{L}\),经过展开和化简(涉及狄利克雷分布和多项式分布的期望),可以得到:
\[\mathcal{L} = \sum_{k=1}^{K} (\alpha_k - \gamma_k) \Psi(\gamma_k) - \log \Gamma(\sum_{k} \gamma_k) + \log \Gamma(\sum_{k} \alpha_k) - \sum_{k} \log \Gamma(\alpha_k) \]
\[+ \sum_{k} \log \Gamma(\gamma_k) \]
\[+ \sum_{n=1}^{N} \sum_{k=1}^{K} \phi_{nk} [ \Psi(\gamma_k) - \Psi(\sum_{j=1}^{K} \gamma_j) + \log \beta_{k, w_n} - \log \phi_{nk} ] \]
其中,$\Psi$ 是Digamma函数,$\Gamma$ 是Gamma函数,$K$ 是主题数,$N$ 是文档词数。
- 固定 \(\gamma\), 优化 \(\phi_n\):
观察 \(\mathcal{L}\) 中与 \(\phi_{nk}\) 相关的项,并利用约束 \(\sum_k \phi_{nk}=1\) 构造拉格朗日函数。求导令其为零,可以得到 \(\phi_n\) 的更新公式:
\[\phi_{nk} \propto \beta_{k, w_n} \exp(\Psi(\gamma_k) - \Psi(\sum_{j=1}^{K} \gamma_j)) \]
这个公式有非常直观的解释:第 $n$ 个词属于主题 $k$ 的概率($\phi_{nk}$),正比于 **主题 $k$ 下生成该词的概率($\beta_{k, w_n}$)** 乘以 **文档主题分布中主题 $k$ 的期望对数值的指数**。
- 固定 \(\phi\), 优化 \(\gamma\):
将 \(\mathcal{L}\) 对 \(\gamma_k\) 求导并令其为零,可以得到 \(\gamma\) 的更新公式:
\[\gamma_k = \alpha_k + \sum_{n=1}^{N} \phi_{nk} \]
这个公式也很直观:文档的主题分布参数 $\gamma_k$,等于其先验 $\alpha_k$ 加上文档中所有词被分配到主题 $k$ 的“软计数”之和。
算法(针对单篇文档的E-Step):
- 初始化 \(\phi_{nk}=1/K\), \(\gamma_k = \alpha_k + N/K\)。
- 重复以下步骤直到ELBO收敛:
- 根据公式(2)更新所有的 \(\phi_{n}\)。
- 根据公式(3)更新 \(\gamma\)。
第五步:学习全局参数 \(\beta\)(M-Step)
在E-Step中,我们假设主题-词分布 \(\beta\) 是已知的。实际上,\(\beta\) 也需要从整个语料库中学习。这通过最大化整个语料库的ELBO之和来实现。
-
写出语料库ELBO中与 \(\beta\) 相关的部分:
主要相关项是 \(\sum_d \sum_n \sum_k \phi_{dnk} \log \beta_{k, w_{dn}}\)。 -
构建优化问题并求解:
在约束 \(\sum_v \beta_{kv}=1\)(每个主题下生成所有词的概率和为1)下,最大化上述和式。这又是一个带约束的优化问题。构造拉格朗日函数并求导,可以得到 \(\beta\) 的更新公式:
\[\beta_{kv} \propto \sum_{d=1}^{D} \sum_{n=1}^{N_d} \phi_{dnk} I(w_{dn}=v) \]
其中,$I(\cdot)$ 是指示函数。**解释**:主题 $k$ 下生成词 $v$ 的概率,正比于整个语料库中所有文档里,词 $v$ 被分配给主题 $k$ 的“软计数”之和。这就是一个“软聚类”的统计。
第六步:变分推断EM算法总流程
结合E-Step和M-Step,就构成了LDA参数估计的变分推断EM(VI-EM)算法:
- 初始化:随机初始化全局参数 \(\beta_{kv}\)(并归一化使其每行和为1)。设定超参数 \(\alpha\)。
- 变分E-Step(局部变分推断):对于语料库中的每一篇文档 \(d\),使用第四步中的迭代算法,固定全局 \(\beta\), 优化该文档的局部变分参数 \(\gamma_d\) 和 \(\phi_d\)。
- M-Step(全局参数更新):根据第五步的公式,利用所有文档的 \(\phi_d\) 结果,重新估计全局参数 \(\beta\)。
- 重复:交替执行E-Step和M-Step,直到整个语料库的ELBO总和收敛。
最终,我们得到:
- 全局参数:主题-词分布 \(\beta\)。
- 文档级变分参数:\(\gamma_d\) 可以作为文档 \(d\) 的主题分布 \(\theta_d\) 的近似(\(E[\theta_{dk}] \approx \gamma_{dk} / \sum_j \gamma_{dj}\)),\(\phi_d\) 描述了文档中每个词的主题归属。
总结
通过上述步骤,我们利用变分推断成功地将LDA中难以处理的后验推断问题,转化为了一个迭代优化ELBO的可行过程。核心在于引入结构简单的变分分布 \(q\) 来近似 \(p\),并通过坐标上升法分别优化局部参数(\(\phi, \gamma\))和全局参数(\(\beta\))。这种方法比传统的吉布斯采样(另一种近似推断方法)通常收敛更快,且更容易处理大规模数据,是主题模型参数估计的经典且高效的方法。