VAE中的解码器(Decoder)详解
变分自编码器(Variational Autoencoder, VAE)是一种广泛使用的生成模型,其解码器(Decoder)是模型的重要组成部分,负责从潜变量 ( z z z ) 重构数据(如图像)。在本篇博客中,我们将结合数学推导和图示(图 1.6,来源:https://arxiv.org/pdf/2403.18103),详细介绍 VAE 解码器的结构、工作原理以及其在 ELBO 优化中的作用,面向对深度学习和概率模型感兴趣的读者。

解码器的基本结构
VAE 的解码器通过一个神经网络实现,记为 ( DecoderNetwork θ ( ⋅ ) \text{DecoderNetwork}_θ(\cdot) DecoderNetworkθ(⋅) ),其中 ( θ θ θ ) 表示网络的参数。解码器的核心任务是接受潜变量 ( z z z ) 作为输入,并生成一个重构数据 ( f θ ( z ) f_θ(z) fθ(z) ):
f θ ( z ) = DecoderNetwork θ ( z ) f_θ(z) = \text{DecoderNetwork}_θ(z) fθ(z)=DecoderNetworkθ(z)
这里 ( f θ ( z ) f_θ(z) fθ(z) ) 可以看作是重构的图像或数据,依赖于 ( θ θ θ ) 参数化的神经网络。解码器定义了一个条件分布 ( p θ ( x ∣ z ) p_θ(x|z) pθ(x∣z) ),表示给定潜变量 ( z z z ) 后,数据 ( x x x ) 的生成分布。我们通常假设 ( p θ ( x ∣ z ) p_θ(x|z) pθ(x∣z) ) 为高斯分布,形式为:
p θ ( x ∣ z ) = N ( x ∣ f θ ( z ) , σ dec 2 I ) p_θ(x|z) = \mathcal{N}(x | f_θ(z), σ^2_{\text{dec}} I) pθ(x∣z)=N(x∣fθ(z),σdec2I)
其中:
- ( f θ ( z ) f_θ(z) fθ(z) ) 是分布的均值,即神经网络预测的重构结果。
- ( σ dec 2 I σ^2_{\text{dec}} I σdec2I ) 是协方差矩阵,( σ dec σ_{\text{dec}} σdec ) 是一个超参数,表示方差,( I I I ) 是单位矩阵,假设各维度独立。
重参数化采样
从 ( p θ ( x ∣ z ) p_θ(x|z) pθ(x∣z) ) 中采样生成图像 ( x ^ \hat{x} x^ ) 时,我们可以使用重参数化技巧:
x ^ = f θ ( z ) + σ dec ϵ , ϵ ∼ N ( 0 , I ) \hat{x} = f_θ(z) + σ_{\text{dec}} ϵ, \quad ϵ \sim \mathcal{N}(0, I) x^=fθ(z)+σdecϵ,ϵ∼N(0,I)
这个表达式将随机性引入 ( ϵ ϵ ϵ ),而 ( f θ ( z ) f_θ(z) fθ(z) ) 提供了确定性部分,使得梯度可以传播到 ( θ θ θ )。
(具体可以参考笔者的博客:VAE中的重参数化技巧(Reparameterization Trick)详解和VAE中的编码器(Encoder)详解)
对数似然度的推导
为了优化 VAE,我们需要计算 ELBO(证据下界),其中包括对 ( log p θ ( x ∣ z ) \log p_θ(x|z) logpθ(x∣z) ) 的期望。让我们推导 ( log p θ ( x ∣ z ) \log p_θ(x|z) logpθ(x∣z)):
p θ ( x ∣ z ) = N ( x ∣ f θ ( z ) , σ dec 2 I ) p_θ(x|z) = \mathcal{N}(x | f_θ(z), σ^2_{\text{dec}} I) pθ(x∣z)=N(x∣fθ(z),σdec2I)
高斯分布的概率密度函数为:
N ( x ∣ μ , σ 2 I ) = 1 ( 2 π σ 2 ) d / 2 exp ( − ∥ x − μ ∥ 2 2 σ 2 ) \mathcal{N}(x | μ, σ^2 I) = \frac{1}{(2\pi σ^2)^{d/2}} \exp \left( -\frac{\|x - μ\|^2}{2 σ^2} \right) N(x∣μ,σ2I)=(2πσ2)d/21exp(−2σ2∥x−μ∥2)
代入 ( μ = f θ ( z ) μ = f_θ(z) μ=fθ(z) ),( σ 2 = σ dec 2 σ^2 = σ^2_{\text{dec}} σ2=σdec2 ):
log p θ ( x ∣ z ) = log [ 1 ( 2 π σ dec 2 ) d / 2 exp ( − ∥ x − f θ ( z ) ∥ 2 2 σ dec 2 ) ] \log p_θ(x|z) = \log \left[ \frac{1}{(2\pi σ^2_{\text{dec}})^{d/2}} \exp \left( -\frac{\|x - f_θ(z)\|^2}{2 σ^2_{\text{dec}}} \right) \right] logpθ(x∣z)=log[(2πσdec2)d/21exp(−2σdec2∥x−fθ(z)∥2)]
利用对数性质:
= log ( 1 ( 2 π σ dec 2 ) d / 2 ) + log ( exp ( − ∥ x − f θ ( z ) ∥ 2 2 σ dec 2 ) ) = \log \left( \frac{1}{(2\pi σ^2_{\text{dec}})^{d/2}} \right) + \log \left( \exp \left( -\frac{\|x - f_θ(z)\|^2}{2 σ^2_{\text{dec}}} \right) \right) =log((2πσdec2)d/21)+log(exp(−2σdec2∥x−fθ(z)∥2))
= − d 2 log ( 2 π σ dec 2 ) − ∥ x − f θ ( z ) ∥ 2 2 σ dec 2 = -\frac{d}{2} \log (2\pi σ^2_{\text{dec}}) - \frac{\|x - f_θ(z)\|^2}{2 σ^2_{\text{dec}}} =−2dlog(2πσdec2)−2σdec2∥x−fθ(z)∥2
其中,( − d 2 log ( 2 π σ dec 2 ) -\frac{d}{2} \log (2\pi σ^2_{\text{dec}}) −2dlog(2πσdec2) ) 是与 ( θ θ θ ) 无关的常数项,在优化时可以忽略。因此,简化后:
log p θ ( x ∣ z ) ≈ − ∥ x − f θ ( z ) ∥ 2 2 σ dec 2 \log p_θ(x|z) \approx -\frac{\|x - f_θ(z)\|^2}{2 σ^2_{\text{dec}}} logpθ(x∣z)≈−2σdec2∥x−fθ(z)∥2
如图 1.6 所示,这一形式表明对数似然度与重构误差 ( ∥ x − f θ ( z ) ∥ 2 \|x - f_θ(z)\|^2 ∥x−fθ(z)∥2 ) 成二次关系,类似于 ( ℓ 2 \ell_2 ℓ2 ) 范数损失。
ELBO中的重构项
ELBO 的重构项是 ( E q φ ( z ∣ x ) [ log p θ ( x ∣ z ) ] \mathbb{E}_{q_φ(z|x)} [\log p_θ(x|z)] Eqφ(z∣x)[logpθ(x∣z)] ),其形式为:
E q φ ( z ∣ x ) [ log p θ ( x ∣ z ) ] = ∫ log p θ ( x ∣ z ) ⋅ q φ ( z ∣ x ) d z \mathbb{E}_{q_φ(z|x)} [\log p_θ(x|z)] = \int \log p_θ(x|z) \cdot q_φ(z|x) \, dz Eqφ(z∣x)[logpθ(x∣z)]=∫logpθ(x∣z)⋅qφ(z∣x)dz
代入 ( log p θ ( x ∣ z ) ≈ − ∥ x − f θ ( z ) ∥ 2 2 σ dec 2 \log p_θ(x|z) \approx -\frac{\|x - f_θ(z)\|^2}{2 σ^2_{\text{dec}}} logpθ(x∣z)≈−2σdec2∥x−fθ(z)∥2 ):
= − ∫ ∥ x − f θ ( z ) ∥ 2 2 σ dec 2 ⋅ q φ ( z ∣ x ) d z + C = -\int \frac{\|x - f_θ(z)\|^2}{2 σ^2_{\text{dec}}} \cdot q_φ(z|x) \, dz + C =−∫2σdec2∥x−fθ(z)∥2⋅qφ(z∣x)dz+C
其中 ( C C C ) 是常数,可以忽略。直接计算该积分通常不可行,因此我们使用重参数化技巧,将 ( z z z ) 表示为:
z = μ φ ( x ) + σ φ ( x ) ϵ , ϵ ∼ N ( 0 , I ) z = μ_φ(x) + σ_φ(x) ϵ, \quad ϵ \sim \mathcal{N}(0, I) z=μφ(x)+σφ(x)ϵ,ϵ∼N(0,I)
代入后,期望变为:
E q φ ( z ∣ x ) [ log p θ ( x ∣ z ) ] ≈ − 1 M ∑ m = 1 M ∥ x − f θ ( z ( m ) ) ∥ 2 2 σ dec 2 \mathbb{E}{q_φ(z|x)} [\log p_θ(x|z)] \approx -\frac{1}{M} \sum{m=1}^M \frac{\|x - f_θ(z^{(m)})\|^2}{2 σ^2_{\text{dec}}} Eqφ(z∣x)[logpθ(x∣z)]≈−M1m=1∑M2σdec2∥x−fθ(z(m))∥2
其中 ( z ( m ) = μ φ ( x ) + σ φ ( x ) ϵ ( m ) z^{(m)} = μ_φ(x) + σ_φ(x) ϵ^{(m)} z(m)=μφ(x)+σφ(x)ϵ(m) ),( ϵ ( m ) ϵ^{(m)} ϵ(m) ) 是 ( M M M ) 次蒙特卡洛采样的结果。( M M M ) 是采样的次数,越大越接近真实期望值。
损失函数的解读
( − 1 M ∑ m = 1 M ∥ x − f θ ( z ( m ) ) ∥ 2 2 σ dec 2 -\frac{1}{M} \sum_{m=1}^M \frac{\|x - f_θ(z^{(m)})\|^2}{2 σ^2_{\text{dec}}} −M1∑m=1M2σdec2∥x−fθ(z(m))∥2 ) 实际上是重构图像 ( f θ ( z ) f_θ(z) fθ(z) ) 与真实图像 ( x x x ) 之间的 ( ℓ 2 \ell_2 ℓ2 ) 范数损失的平均。这种形式与图 1.6 中展示的直观一致:解码器生成 ( f θ ( z ) f_θ(z) fθ(z) ) 后,直接通过 ( ℓ 2 \ell_2 ℓ2 ) 损失与 ( x x x ) 比较。
梯度计算
- 关于 ( θ θ θ ) 的梯度 :由于 ( f θ ( z ) f_θ(z) fθ(z) ) 依赖 ( θ θ θ ),梯度可以通过自动微分计算,适合反向传播。
- 关于 ( φ φ φ ) 的梯度 :通过链式法则,梯度涉及 ( μ φ ( x ) μ_φ(x) μφ(x) ) 和 ( σ φ ( x ) σ_φ(x) σφ(x) ),计算稍复杂但仍可行。
优化目标是最大化 ( E q φ ( z ∣ x ) [ log p θ ( x ∣ z ) ] \mathbb{E}_{q_φ(z|x)} [\log p_θ(x|z)] Eqφ(z∣x)[logpθ(x∣z)] ),等价于最小化负 ( ℓ 2 \ell_2 ℓ2 ) 损失。
总结
VAE 解码器通过神经网络 ( DecoderNetwork θ \text{DecoderNetwork}_θ DecoderNetworkθ ) 从潜变量 ( z z z ) 生成重构数据 ( f θ ( z ) f_θ(z) fθ(z) ),并假设 ( p θ ( x ∣ z ) p_θ(x|z) pθ(x∣z) ) 为高斯分布。其对数似然度简化为 ( ℓ 2 \ell_2 ℓ2 ) 范数形式,在 ELBO 中通过蒙特卡洛近似计算重构项。解码器的设计不仅体现了生成过程的概率特性,还与传统图像重建损失自然衔接,是 VAE 训练的关键部分。
希望这篇博客能帮助你深入理解 VAE 解码器!
后记
2025年3月3日20点41分于上海,在grok 3大模型辅助下完成。