变分自编码器(Variational Autoencoder, VAE)中的解码器(Decoder)详解

发布于:2025-03-07 ⋅ 阅读:(25) ⋅ 点赞:(0)

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θ(xz) ),表示给定潜变量 ( z z z ) 后,数据 ( x x x ) 的生成分布。我们通常假设 ( p θ ( x ∣ z ) p_θ(x|z) pθ(xz) ) 为高斯分布,形式为:

p θ ( x ∣ z ) = N ( x ∣ f θ ( z ) , σ dec 2 I ) p_θ(x|z) = \mathcal{N}(x | f_θ(z), σ^2_{\text{dec}} I) pθ(xz)=N(xfθ(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θ(xz) ) 中采样生成图像 ( 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θ(xz) ) 的期望。让我们推导 ( log ⁡ p θ ( x ∣ z ) \log p_θ(x|z) logpθ(xz)):

p θ ( x ∣ z ) = N ( x ∣ f θ ( z ) , σ dec 2 I ) p_θ(x|z) = \mathcal{N}(x | f_θ(z), σ^2_{\text{dec}} I) pθ(xz)=N(xfθ(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σ2xμ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θ(xz)=log[(2πσdec2)d/21exp(2σdec2xfθ(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σdec2xfθ(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σdec2xfθ(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θ(xz)2σdec2xfθ(z)2

如图 1.6 所示,这一形式表明对数似然度与重构误差 ( ∥ x − f θ ( z ) ∥ 2 \|x - f_θ(z)\|^2 xfθ(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φ(zx)[logpθ(xz)] ),其形式为:

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φ(zx)[logpθ(xz)]=logpθ(xz)qφ(zx)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θ(xz)2σdec2xfθ(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σdec2xfθ(z)2qφ(zx)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φ(zx)[logpθ(xz)]M1m=1M2σdec2xfθ(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}}} M1m=1M2σdec2xfθ(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φ(zx)[logpθ(xz)] ),等价于最小化负 ( ℓ 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θ(xz) ) 为高斯分布。其对数似然度简化为 ( ℓ 2 \ell_2 2 ) 范数形式,在 ELBO 中通过蒙特卡洛近似计算重构项。解码器的设计不仅体现了生成过程的概率特性,还与传统图像重建损失自然衔接,是 VAE 训练的关键部分。

希望这篇博客能帮助你深入理解 VAE 解码器!

后记

2025年3月3日20点41分于上海,在grok 3大模型辅助下完成。


网站公告

今日签到

点亮在社区的每一天
去签到