之前写过变分方法(variational method)不再优化一个数或向量,而是优化一个"函数/场"
文章目录
- 0、为什么叫"变分"?
- 1、数学本源
-
-
- [1.1 变分推断的核心公式](#1.1 变分推断的核心公式)
- [1.2. 没有结合神经网络时是怎样的?](#1.2. 没有结合神经网络时是怎样的?)
-
- 2、结合神经网络的形式
-
- 2.1传统变分推断 (无神经网络)
- 2.2深度变分推断 (结合神经网络, 如 VAE)
- [2.3 变分推断公式本身相同,不同的是如何表示 q ϕ ( z ∣ x ) q_\phi(z|x) qϕ(z∣x)](#2.3 变分推断公式本身相同,不同的是如何表示 q ϕ ( z ∣ x ) q_\phi(z|x) qϕ(z∣x))
0、为什么叫"变分"?
名字来自变分法(Calculus of Variations):
它研究的是:
如何让"函数的函数"(泛函 functional)取得最小值
比如:
- 普通优化:最小化 (f(x))
- 变分优化:最小化 (Eu(x))
典型形式,几乎所有变分模型都是这个结构:
E ( u ) = E data ( u ) ⏟ ∗ 数据一致性 + E ∗ prior ( u ) ⏟ 先验/正则 E(u) = \underbrace{E_{\text{data}}(u)}*{\text{数据一致性}} + \underbrace{E*{\text{prior}}(u)}_{\text{先验/正则}} E(u)= Edata(u)∗数据一致性+先验/正则 E∗prior(u)
(1) 数据项(data term)
让结果"符合观测"
例如光流:
I 1 ( x ) ≈ I 2 ( x + u ) I_1(x) \approx I_2(x + u) I1(x)≈I2(x+u)
(2) 正则项(regularization)
让结果"合理"
比如:
- 平滑
- 边缘保持
- 稀疏性
经典例子:
∣ ∇ u ∣ 2 ( 平滑 ) |\nabla u|^2 \quad (\text{平滑}) ∣∇u∣2(平滑)
或 TV:
∣ ∇ u ∣ 1 ( 保边缘 ) |\nabla u|_1 \quad (\text{保边缘}) ∣∇u∣1(保边缘)
1、数学本源
1.1 变分推断的核心公式
变分推断的核心目标是:找到一个好的近似分布 q ϕ ( z ) q_\phi(z) qϕ(z),让它尽可能接近真实的后验分布 p ( z ∣ x ) p(z|x) p(z∣x)。
由于真实后验分布 p ( z ∣ x ) p(z|x) p(z∣x) 通常涉及难以计算的积分(归一化常数),我们转而优化一个叫做 ELBO (Evidence Lower Bound,证据下界) 的量。最大化 ELBO 等价于最小化近似分布 q q q 与真实后验 p p p 之间的差异(KL 散度)。
核心公式推导
-
取对数边际似然(Log Marginal Likelihood):
log p θ ( x ) \log p_\theta(x) logpθ(x)
这是我们要最大化的目标,但它是常数(对于给定的 x x x),我们无法直接优化它来求参数,因为里面包含了无法计算的后验。
-
引入变分分布 q ϕ ( z ) q_\phi(z) qϕ(z):
我们引入任意一个分布 q ϕ ( z ) q_\phi(z) qϕ(z) 来近似后验。利用数学恒等式,我们可以将 log p θ ( x ) \log p_\theta(x) logpθ(x) 分解为两部分:
log p θ ( x ) = D K L ( q ϕ ( z ) ∣ ∣ p θ ( z ∣ x ) ) ⏟ KL Divergence ≥ 0 + L ( θ , ϕ ) ⏟ ELBO \log p_\theta(x) = \underbrace{D_{KL}(q_\phi(z) || p_\theta(z|x))}{\text{KL Divergence} \ge 0} + \underbrace{\mathcal{L}(\theta, \phi)}{\text{ELBO}} logpθ(x)=KL Divergence≥0 DKL(qϕ(z)∣∣pθ(z∣x))+ELBO L(θ,ϕ)
其中:
- log p θ ( x ) \log p_\theta(x) logpθ(x) 是数据的对数似然。
- D K L ( q ϕ ( z ) ∣ ∣ p θ ( z ∣ x ) ) D_{KL}(q_\phi(z) || p_\theta(z|x)) DKL(qϕ(z)∣∣pθ(z∣x)) 是近似分布 q q q 和真实后验 p p p 之间的 KL 散度。因为 KL 散度永远非负,所以:
- L ( θ , ϕ ) ≤ log p θ ( x ) \mathcal{L}(\theta, \phi) \le \log p_\theta(x) L(θ,ϕ)≤logpθ(x)。这就是为什么它叫"下界"。
-
ELBO 的具体表达式(未结合神经网络前):
展开 KL 散项,我们可以得到 ELBO 的标准形式:
L ( θ , ϕ ) = E q ϕ ( z ∣ x ) log p θ ( x ∣ z ) − D K L ( q ϕ ( z ) ∣ ∣ p θ ( z ) ) \mathcal{L}(\theta, \phi) = \mathbb{E}{q\phi(z|x)} \\log p_\\theta(x\|z) - D_{KL}(q_\phi(z) || p_\theta(z)) L(θ,ϕ)=Eqϕ(z∣x)logpθ(x∣z)−DKL(qϕ(z)∣∣pθ(z))
这个公式的物理意义非常清晰:
- 第一项 E q ϕ ( z ∣ x ) log p θ ( x ∣ z ) \mathbb{E}{q\phi(z|x)} \\log p_\\theta(x\|z) Eqϕ(z∣x)logpθ(x∣z) :重构项(Reconstruction Term) 。它衡量的是:如果我们用 q ϕ q_\phi qϕ 采样出的 z z z 来重构数据 x x x,重构的效果好不好?我们希望重构误差越小越好(即对数似然越大越好)。
- 第二项 − D K L ( q ϕ ( z ) ∣ ∣ p θ ( z ) ) - D_{KL}(q_\phi(z) || p_\theta(z)) −DKL(qϕ(z)∣∣pθ(z)) :正则化项(Regularization Term) 。它衡量的是:我们学习到的近似后验 q ϕ ( z ) q_\phi(z) qϕ(z) 和原始先验 p θ ( z ) p_\theta(z) pθ(z)(通常是标准正态分布)有多像?我们希望它们越像越好,这样 z z z 的分布就是平滑且合法的。
1.2. 没有结合神经网络时是怎样的?
在深度学习普及之前(2000年代及以前),变分推断通常用于传统统计模型,如高斯混合模型(GMM)、主题模型(LDA)、线性高斯状态空间模型等。
在这种语境下,变分推断通常被称为 Mean-Field Approximation(均值场近似) 或 Expectation-Maximization (EM) 算法的变体。
关键特征:
-
分布形式是固定的(Parametric Family) :
没有神经网络来拟合任意复杂的 q ( z ∣ x ) q(z|x) q(z∣x)。相反,研究者必须人为假设 q ϕ ( z ) q_\phi(z) qϕ(z) 属于某个简单的数学分布家族。
- 例如:假设 z z z 服从高斯分布 N ( μ , Σ ) N(\mu, \Sigma) N(μ,Σ)。
- 参数 ϕ \phi ϕ 仅仅是均值 μ \mu μ 和协方差 Σ \Sigma Σ。
-
解析解(Analytical Solutions) :
由于分布形式简单,ELBO 中的期望 E q ϕ ( z ∣ x ) log p θ ( x ∣ z ) \mathbb{E}{q\phi(z|x)} \\log p_\\theta(x\|z) Eqϕ(z∣x)logpθ(x∣z) 和 KL 散度通常可以解析计算(即写出闭式解,不需要采样)。
- 我们不需要用蒙特卡洛采样来估计梯度。
- 我们可以直接对 L \mathcal{L} L 关于 ϕ \phi ϕ 求导,令导数为0,解出最优的 μ \mu μ 和 Σ e a c h \Sigma each Σeach。
-
变分EM算法(Variational EM) :
训练过程通常是一个交替优化的过程:
- E步(变分步) :固定模型参数 θ \theta θ,通过解析公式更新变分参数 ϕ \phi ϕ(即更新 q ( z ) q(z) q(z))。
- M步(最大似然步) :固定变分参数 ϕ \phi ϕ(即固定近似后验),通过最大似然估计更新生成模型参数 θ \theta θ。
具体例子:高斯混合模型 (GMM)
在传统的 GMM 变分推断中:
- 隐变量 :每个数据点 x i x_i xi 所属的簇 z i z_i zi(离散变量,但在变分推断中常松弛为连续概率向量)。
- 近似分布 : q ( z i ) = Categorical ( γ i ) q(z_i) = \text{Categorical}(\gamma_i) q(zi)=Categorical(γi)。
- 参数 : ϕ = { γ i } i = 1 N \phi = \{\gamma_i\}_{i=1}^N ϕ={γi}i=1N,即每个数据点属于各个簇的概率。
- 更新公式 :
γ i k ∝ exp ( E q log π k + E q log N ( x i ∣ μ k , Σ k ) ) \gamma_{ik} \propto \exp(\mathbb{E}{q}\\log \\pi_k + \mathbb{E}{q}\\log \\mathcal{N}(x_i \| \\mu_k, \\Sigma_k)) γik∝exp(Eqlogπk+EqlogN(xi∣μk,Σk))
这是一个可以直接计算的公式,不需要反向传播。
具体例子:线性高斯模型
- 隐变量 :连续向量 z z z。
- 近似分布 : q ( z ∣ x ) = N ( z ; μ , Σ ) q(z|x) = N(z; \mu, \Sigma) q(z∣x)=N(z;μ,Σ)。
- 参数 : ϕ = { μ , Σ } \phi = \{\mu, \Sigma\} ϕ={μ,Σ}。
- 更新方式 :通过求解线性方程组或简单的矩阵运算更新 μ \mu μ 和 Σ \Sigma Σ。
2、结合神经网络的形式
2.1传统变分推断 (无神经网络)
- 近似分布 q ( z ∣ x ) q(z|x) q(z∣x) 的形式: 固定且简单(如高斯、多项式)。参数少(均值、方差)。
- 参数 ϕ \phi ϕ 的含义 :分布的统计参数(如 μ , Σ \mu, \Sigma μ,Σ)。
- 如何优化 ϕ \phi ϕ : 解析解或简单的数值优化。通过求导令其为0。
- 期望 E ... \mathbb{E}\\dots E... 的计算 : 解析计算。直接积分得到公式。
- 适用场景 :小数据、低维、结构化模型(LDA, GMM, 状态空间模型)。
灵活性 :低。如果真实后验很复杂,简单的 q q q 无法逼近,导致推断质量差。
2.2深度变分推断 (结合神经网络, 如 VAE)
- 近似分布 q ( z ∣ x ) q(z|x) q(z∣x) 的形式:复杂且灵活。由神经网络参数化,可以拟合任意复杂的分布。
- 参数 ϕ \phi ϕ 的含义:神经网络的所有权重和偏置。
- 如何优化 ϕ \phi ϕ :随机梯度下降 (SGD) 。通过反向传播计算梯度 ∇ ϕ L \nabla_\phi \mathcal{L} ∇ϕL。
- 期望 E ... \mathbb{E}\\dots E... 的计算 : 蒙特卡洛采样 。必须用采样估计期望(这就需要重参数化技巧)。
- 适用场景:大数据、高维、非结构化数据(图像、文本、视频)。
- 灵活性: 高。深层神经网络可以逼近任意复杂的后验分布。 |
2.3 变分推断公式本身相同,不同的是如何表示 q ϕ ( z ∣ x ) q_\phi(z|x) qϕ(z∣x)
没有结合神经网络时的变分推断 :
它是一种基于解析推导 的统计学习方法。它依赖于对分布形式的强假设 (如高斯假设),通过数学公式直接解出参数。它适用于结构清晰、维度较低的传统统计模型。
结合神经网络后的变分推断 :
它是一种基于优化和采样 的深度学习技术。它利用神经网络作为万能函数近似器 来打破对分布形式的限制,通过重参数化技巧 和反向传播来处理高维和非线性问题。它使得贝叶斯方法能够应用于图像、语言等复杂数据。
变分推断公式本身(ELBO)在两种情况下是完全相同 的,区别仅在于我们如何表示 q ϕ ( z ∣ x ) q_\phi(z|x) qϕ(z∣x) 以及如何计算其梯度。