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

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大模型辅助下完成。

相关推荐
AngelPP11 小时前
OpenClaw 架构深度解析:如何把 AI 助手搬到你的个人设备上
人工智能
宅小年11 小时前
Claude Code 换成了Kimi K2.5后,我再也回不去了
人工智能·ai编程·claude
九狼11 小时前
Flutter URL Scheme 跨平台跳转
人工智能·flutter·github
ZFSS11 小时前
Kimi Chat Completion API 申请及使用
前端·人工智能
天翼云开发者社区12 小时前
春节复工福利就位!天翼云息壤2500万Tokens免费送,全品类大模型一键畅玩!
人工智能·算力服务·息壤
知识浅谈12 小时前
教你如何用 Gemini 将课本图片一键转为精美 PPT
人工智能
Ray Liang13 小时前
被低估的量化版模型,小身材也能干大事
人工智能·ai·ai助手·mindx
颜酱14 小时前
单调栈:从模板到实战
javascript·后端·算法
shengjk114 小时前
NanoClaw 深度剖析:一个"AI 原生"架构的个人助手是如何运转的?
人工智能