当前位置: 首页 > article >正文

变分自编码器(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θ(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大模型辅助下完成。


http://www.kler.cn/a/571055.html

相关文章:

  • 简述Spark的宽窄依赖以及Stage是怎么划分的以及每个stage又是怎么划分task任务数
  • 2020最新Java面试题
  • 开源链动2+1模式AI智能名片S2B2C商城小程序中的互动节奏调整策略
  • k8s面试题总结(八)
  • 量子计算 + 大数据:数据分析的终极加速器
  • 在 Ubuntu 系统 22.04 上安装 Docker
  • leetcode0016 最接近的三数之和 - medium
  • 机器学习(五)
  • 一、Redis 基础入门:概述与应用场景
  • 依赖注入与控制反转什么关系
  • Rust Async 并发编程:任务、消息传递与 `join`
  • Linux:程序翻译
  • 嵌入式软件测试工具的“安全与效率悖论”破局之道
  • C++ STL <memory>
  • Metal学习笔记十:光照基础
  • KVM虚拟机磁盘创建探究-2
  • 基于大数据的北京二手房房价信息预测可视化分析系统
  • 如何停止Oracle expdp/impdp job
  • 智能家居:DeepSeek在家庭自动化中的创新应用
  • 基于普通嵌入式交叉编译QT5.12.x系列