【深度学习】18. 生成模型:Variational Auto-Encoder(VAE)详解

news2025/6/5 0:20:22

Variational Auto-Encoder(VAE)详解

本节内容完整介绍 VAE 的模型结构、优化目标、重参数化技巧及其生成机制。

回顾:Autoencoder(自编码器)

Autoencoders and Visual Similarity

Autoencoder 是一种无监督学习模型,旨在从未标注的数据中学习压缩表示。其结构包括:

  • Encoder:将输入 x x x 映射为潜在空间的表示 z z z
  • Decoder:将 z z z 重构为 x ^ \hat{x} x^,使其尽可能接近原始输入 x x x

通常设置潜在变量 z z z 的维度低于 x x x,实现降维和特征提取。

Autoencoder 的训练目标

目标是最小化重构误差:

L ( x , x ^ ) = ∥ x − x ^ ∥ 2 L(x, \hat{x}) = \| x - \hat{x} \|^2 L(x,x^)=xx^2

模型通过优化参数使得 x ^ = f ( g ( x ) ) \hat{x} = f(g(x)) x^=f(g(x)) 尽可能接近 x x x,其中 g g g 是 Encoder, f f f 是 Decoder。

Encoder 的用途

自动编码器可以重构数据,并且可以学习特征来初始化监督模型。特征捕获训练数据中的变化因素

训练完成后,Encoder 可以作为特征提取器用于其他下游任务。通常在分类等监督任务中:

  • 预训练阶段训练 Autoencoder
  • 丢弃 Decoder,仅保留 Encoder
  • 添加分类器,进行微调训练

这种方式可利用无标签数据提升有标签任务效果。

Variational Auto-Encoder(VAE)的提出

An Introduction to Variational Autoencoders (VAEs) | by Francesco Franco |  T3CH | Apr, 2025 | Medium

注意图中写的Variance or standard deviation有误,应该是log_var!

Autoencoder 能学习数据表示,但无法从潜在空间采样生成新样本。为此,VAE 将其扩展为生成模型:

  • 假设存在潜变量 z z z,从先验分布 p ( z ) p(z) p(z)(通常是 N ( 0 , I ) \mathcal{N}(0, I) N(0,I),高斯分布)中采样
  • 使用生成网络从 p θ ( x ∣ z ) p_\theta(x|z) pθ(xz) 中生成 x x x

完整生成过程为:

  1. p ( z ) p(z) p(z) 中采样 z z z
  2. p θ ( x ∣ z ) p_\theta(x|z) pθ(xz) 生成样本 x x x

p ( z ∣ x ) p(z|x) p(zx) 往往难以直接推导,因此采用变分推断,引入近似后验分布 q ϕ ( z ∣ x ) q_\phi(z|x) qϕ(zx)

1. 输入与编码(Encoder)

输入样本 x x x 被送入编码器(Encoder),输出两个变量:

  • z mean = μ z_{\text{mean}} = \mu zmean=μ
  • z log_var = log ⁡ σ 2 z_{\text{log\_var}} = \log \sigma^2 zlog_var=logσ2

这些构成了潜在变量 z z z 的高斯分布参数。

2. KL 散度项(先验正则化)

使用高斯分布的 KL 散度公式计算 q ϕ ( z ∣ x ) ∼ N ( μ , σ 2 ) q_\phi(z|x) \sim \mathcal{N}(\mu, \sigma^2) qϕ(zx)N(μ,σ2) p ( z ) ∼ N ( 0 , 1 ) p(z) \sim \mathcal{N}(0,1) p(z)N(0,1) 之间的距离:

D K L ( N ( μ , σ 2 ) ∥ N ( 0 , 1 ) ) = − 1 2 ( 1 + log ⁡ σ 2 − μ 2 − σ 2 ) D_{KL}(\mathcal{N}(\mu, \sigma^2) \| \mathcal{N}(0,1)) = -\frac{1}{2} \left( 1 + \log \sigma^2 - \mu^2 - \sigma^2 \right) DKL(N(μ,σ2)N(0,1))=21(1+logσ2μ2σ2)

这项鼓励 q ( z ∣ x ) q(z|x) q(zx) 与标准高斯分布接近,使得从 p ( z ) p(z) p(z) 中采样具有可行性。

3. 重参数化技巧(Reparameterization Trick)

为了使得 z z z 可导,引入噪声变量 ϵ ∼ N ( 0 , 1 ) \epsilon \sim \mathcal{N}(0, 1) ϵN(0,1),用如下方式采样 z z z

z = μ + σ ⋅ ϵ z = \mu + \sigma \cdot \epsilon z=μ+σϵ

这样,整个采样过程对网络参数 μ , σ \mu, \sigma μ,σ 可导,允许使用反向传播训练网络。

我们知道在神经网络中,如果某个操作是“不可导的”或者“不确定的(stochastic)”,我们就无法对它的参数进行梯度传播

而在 VAE 中,如果我们直接从 z ∼ N ( μ , σ 2 ) z \sim \mathcal{N}(\mu, \sigma^2) zN(μ,σ2) 中采样,那么这个采样过程本身是随机的、不可导的,无法对 μ \mu μ σ \sigma σ 求导!

所以怎么解决?

我们使用重参数化技巧,将随机性“从参数中移除”,变成一个确定性的函数:

z = μ + σ ⋅ ϵ , ϵ ∼ N ( 0 , 1 ) z = \mu + \sigma \cdot \epsilon,\quad \epsilon \sim \mathcal{N}(0,1) z=μ+σϵ,ϵN(0,1)

这个时候:

  • ϵ \epsilon ϵ 是一个常量样本(在每次前向传播时采一次)
  • z z z μ \mu μ σ \sigma σ 的一个确定函数(因为 ϵ \epsilon ϵ 视为已知)
为什么 ϵ \epsilon ϵ 不影响反向传播?

因为反向传播的目标是对损失函数 L L L 关于参数 μ \mu μ σ \sigma σ 求导,比如:

$ ∂μ∂L=∂z∂L⋅∂μ∂z,∂μ∂z=1$

∂ L ∂ σ = ∂ L ∂ z ⋅ ∂ z ∂ σ , ∂ z ∂ σ = ϵ ∂L∂σ=∂L∂z⋅∂z∂σ,∂z∂σ=ϵ Lσ=Lzzσ,zσ=ϵ

  • 虽然 ϵ \epsilon ϵ 是随机变量,但在一次前向过程中是常数(采样好了)
  • 所以我们仍然可以对 μ \mu μ σ \sigma σ 使用链式法则求导,反向传播不需要对 ϵ \epsilon ϵ 求导
每次前向传播时, ϵ \epsilon ϵ 都要重新采样一次!
为什么?

在 VAE 中,我们采样的目的是从一个 随机潜在变量 z z z 中生成样本。为了能让 z z z 具有“随机性”,我们必须在每次前向传播时, ϵ ∼ N ( 0 , 1 ) \epsilon \sim \mathcal{N}(0,1) ϵN(0,1) 中重新采样,否则模型生成的 z z z 就是确定的了,完全失去生成模型的意义。

4. 解码与重建误差

z z z 输入 Decoder 得到重建样本 x ^ \hat{x} x^。再与原始输入 x x x 比较,计算重建误差:

  • 若像素值为 [ 0 , 1 ] [0, 1] [0,1],常使用 二值交叉熵损失(Binary Cross Entropy)

L recon = ∑ i = 1 n [ − x i log ⁡ x ^ i − ( 1 − x i ) log ⁡ ( 1 − x ^ i ) ] L_{\text{recon}} = \sum_{i=1}^n \left[ -x_i \log \hat{x}_i - (1 - x_i) \log(1 - \hat{x}_i) \right] Lrecon=i=1n[xilogx^i(1xi)log(1x^i)]

  • 若为连续实值向量(如图像灰度),可使用 均方误差(MSE)

L recon = ∑ i = 1 n ( x i − x ^ i ) 2 L_{\text{recon}} = \sum_{i=1}^n (x_i - \hat{x}_i)^2 Lrecon=i=1n(xix^i)2

VAE 的完整损失函数

VAE 的最终损失函数由两个部分组成:

L VAE = L recon + D K L ( q ϕ ( z ∣ x ) ∥ p ( z ) ) \mathcal{L}_{\text{VAE}} = L_{\text{recon}} + D_{KL}(q_\phi(z|x) \| p(z)) LVAE=Lrecon+DKL(qϕ(zx)p(z))

其中:

  • L recon L_{\text{recon}} Lrecon:重建误差(衡量生成的 x ^ \hat{x} x^ x x x 的差距)
  • D K L D_{KL} DKL:先验正则化项(限制潜变量空间服从 N ( 0 , 1 ) \mathcal{N}(0, 1) N(0,1)

最终优化目标:

min ⁡ θ , ϕ E q ϕ ( z ∣ x ) [ − log ⁡ p θ ( x ∣ z ) ] + D K L ( q ϕ ( z ∣ x ) ∥ p ( z ) ) \min_{\theta, \phi} \mathbb{E}_{q_\phi(z|x)}[-\log p_\theta(x|z)] + D_{KL}(q_\phi(z|x) \| p(z)) θ,ϕminEqϕ(zx)[logpθ(xz)]+DKL(qϕ(zx)p(z))

VAE + GAN:Variational Autoencoder 与 GAN 的结合

本图展示了由 Makhzani 等人于 2015 年提出的 Adversarial Autoencoders (AAE) 架构,它结合了 Variational Autoencoder (VAE) 的编码思想与 Generative Adversarial Network (GAN) 的对抗训练机制。

在这里插入图片描述

模型结构解析

1. 编码器(Encoder)
  • 输入图像 x x x(如 MNIST 的手写数字图像)

  • 编码器输出两个向量: z mean z_{\text{mean}} zmean z log_var z_{\text{log\_var}} zlog_var

  • 通过重参数技巧采样得到 z z z

    z = μ + σ ⋅ ϵ , ϵ ∼ N ( 0 , 1 ) z = \mu + \sigma \cdot \epsilon, \quad \epsilon \sim \mathcal{N}(0, 1) z=μ+σϵ,ϵN(0,1)

2. 解码器(Decoder)
  • 接收采样的隐变量 z z z,重建图像 x ^ \hat{x} x^
  • 使用重建误差(如 CrossEntropy 或 MSE)作为训练信号
3. 判别器(Discriminator)
  • 判别器用于判断隐变量 z z z 是否来自:

    • 编码器生成的 q ( z ) q(z) q(z),即编码器输出的 z z z
    • 还是先验分布 p ( z ) p(z) p(z),如 N ( 0 , I ) \mathcal{N}(0, I) N(0,I)
  • 编码器的目标是欺骗判别器,使 q ( z ) q(z) q(z) p ( z ) p(z) p(z) 的样本无法区分,从而用 GAN 的方式逼近先验分布。

数学公式说明

图中展示了边缘分布 q ( z ) q(z) q(z) 的定义:

q ( z ) = ∫ x q ( z ∣ x )   p data ( x )   d x q(z) = \int_x q(z|x) \, p_{\text{data}}(x) \, dx q(z)=xq(zx)pdata(x)dx

即:将所有数据 x x x 编码后的隐变量 z z z 分布汇总起来形成 q ( z ) q(z) q(z)。我们希望 q ( z ) q(z) q(z) 与先验 p ( z ) p(z) p(z) 尽可能接近。

而对抗目标则是:

最小化判别器无法区分 q ( z ) q(z) q(z) p ( z ) p(z) p(z) 的能力
用 GAN 代替 KL 散度进行对齐。

总结

  • 传统 VAE 使用 KL 散度来匹配 q ( z ) q(z) q(z) p ( z ) p(z) p(z),容易不稳定
  • VAE + GAN (或 AAE) 使用判别器对抗训练,让隐空间更贴合先验分布
  • 优势:
    • 更高质量生成样本
    • 更结构化的 latent space
    • 支持复杂先验(如高斯混合)

这种结构为生成建模提供了更加稳定与表达力强的框架。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2396547.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

解决Window10上IP映射重启失效的问题

问题 在实际网络搭建过程中,大家有可能会遇到在局域网范围内,在自己本机上搭建一个网站或者应用时,其他设备通过本机的IP地址无法访问的问题,这个问题可以通过设置IP映射来解决,但是通过netsh interface命令设置的IP映射&#xf…

python h5py 读取mat文件的<HDF5 object reference> 问题

我用python加载matlab的mat文件 mat文件: 加载方式: mat_file h5py.File(base_dir str(N) _nodes_dataset_snr- str(snr) _M_ str(M) .mat, r) Signals mat_file["Signals"][()] Tp mat_file["Tp"][()] Tp_list mat_fil…

linux命令 systemctl 和 supervisord 区别及用法解读

目录 基础与背景服务管理范围配置文件和管理方式监控与日志依赖管理适用场景常用命令对照表实际应用场景举例优缺点对比小结参考链接 1. 基础与背景 systemctl 和 supervisord 都是用于管理和控制服务(进程)的工具,但它们在设计、使用场景和…

Spring Boot + MyBatis 实现的简单用户管理项目的完整目录结构示例

📁 示例项目结构(基于 Maven) user-management/ ├── src/ │ ├── main/ │ │ ├── java/ │ │ │ └── com/example/usermanagement/ │ │ │ ├── controller/ │ │ │ │ └── UserC…

stm32 + ads1292心率检测报警设置上下限

这个项目是在做心率检测的时候一个小伙伴提出来的,今年五一的时候提出来的想法,五一假期的时候没时间,也没心情做这个,就把这个事情搁置了,在月中做工作计划的时候,就把这个小项目排进来了,五一…

项目练习:element ui 的icon放在button的右侧

文章目录 一、需求描述二、左侧实现三、右侧实现 一、需求描述 我们知道&#xff0c;element ui的button一般都会配置一个icon 这个icon默认是放在左侧的。 如何让它放在右侧了&#xff1f; 二、左侧实现 <el-buttontype"primary"plainicon"el-icon-d-arr…

性能诊断工具AWR配置策略与报告内容解析

AWR&#xff08;Automatic Workload Repository&#xff09;是 Oracle 数据库中的一个重要性能诊断工具。AWR 会按照固定的时间间隔自动收集数据库系统的性能统计信息。这些信息涵盖了数据库运行状态的方方面面&#xff0c;像SQL 执行情况、系统资源利用率、等待事件等。AWR抓取…

Tailwind CSS 实战,基于 Kooboo 构建 AI 对话框页面(三):实现暗黑模式主题切换

基于前两篇的内容&#xff0c;为页面添加主题切换功能&#xff0c;实现网站页面的暗黑模式&#xff1a; Tailwind css实战&#xff0c;基于Kooboo构建AI对话框页面&#xff08;一&#xff09;-CSDN博客 Tailwind css实战&#xff0c;基于Kooboo构建AI对话框页面&#xff08;…

MySQL 8.0 OCP 英文题库解析(十一)

Oracle 为庆祝 MySQL 30 周年&#xff0c;截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始&#xff0c;将英文题库免费公布出来&#xff0c;并进行解析&#xff0c;帮助大家在一个月之内轻松通过OCP认证。 本期公布试题91~100 试题91…

ADQ36-2通道2.5G,4通道5G采样PXIE

ADQ36是一款高端12位四通道灵活数据采集板&#xff0c;针对高通道数科学应用进行了优化。ADQ36具有以下特性: 4 / 2模拟输入通道每通道2.5 / 5 GSPS7gb/秒的持续数据传输速率两个外部触发器通用输入/输出&#xff08;GPIO&#xff09;ADQ36数字化仪包括固件FWDAQ ADQ36简介 特…

数字创新智慧园区建设及运维方案

该文档是 “数字创新智慧园区” 建设及运维方案,指出传统产业园区存在管理粗放等问题,“数字创新园区” 通过大数据、AI、物联网、云计算等数字化技术,旨在提升园区产业服务、运营管理水平,增强竞争力,实现绿色节能、高效管理等目标。建设内容包括智能设施、核心支撑平台、…

【科研绘图系列】R语言绘制森林图(forest plot)

禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍加载R包数据下载导入数据数据预处理画图系统信息介绍 本文介绍使用R语言绘制森林图(forest plot)的方法。首先加载必要的R包(grid、forestploter、openxlsx、stringr),导入并预处…

SpringAI+DeepSeek大模型应用开发实战

内容来自黑马程序员 这里写目录标题 认识AI和大模型大模型应用开发模型部署方案对比模型部署-云服务模型部署-本地部署调用大模型什么是大模型应用传统应用和大模型应用大模型应用 大模型应用开发技术架构 SpringAI对话机器人快速入门会话日志会话记忆 认识AI和大模型 AI的发…

如何以 9 种方式将照片从 iPhone 传输到笔记本电脑

您的 iPhone 可能充满了以照片和视频形式捕捉的珍贵回忆。无论您是想备份它们、在更大的屏幕上编辑它们&#xff0c;还是只是释放设备上的空间&#xff0c;您都需要将照片从 iPhone 传输到笔记本电脑。幸运的是&#xff0c;有 9 种方便的方法可供使用&#xff0c;同时满足 Wind…

根据jvm源码剖析类加载机制

根据jvm源码剖析类加载机制 java Test.class之后的大致流程 java Test.class ----> 对于windows操作系统 ----> java.exe调用jvm.dll文件创建JVM&#xff0c; ----> 在创建JVM中先由C的代码创建Boostarp&#xff08;引导&#xff09;类加载器&#xff0c; ----&g…

DDS通信中间件——DDS-TSN规范

DDS通信中间件——DDS-TSN规范 做了十年DDS通信中间件产品的程序员和大家分享一下对DDS这套规范的个人理解。预期本系列文章将包括以下内容陆续更新&#xff1a; DDS规范概述DCPS规范解读 & QoS策略XTypes规范解读RTPS规范解读DDS安全规范解读DDS-RPC规范解读&#xff08…

JWT安全:弱签名测试.【实现越权绕过.】

JWT安全&#xff1a;假密钥【签名随便写实现越权绕过.】 JSON Web 令牌 (JWT)是一种在系统之间发送加密签名 JSON 数据的标准化格式。理论上&#xff0c;它们可以包含任何类型的数据&#xff0c;但最常用于在身份验证、会话处理和访问控制机制中发送有关用户的信息(“声明”)。…

Baklib知识中台加速企业服务智能化实践

知识中台架构体系构建 Baklib 通过构建多层级架构体系实现知识中台的底层支撑&#xff0c;其核心包含数据采集层、知识加工层、服务输出层及智能应用层。在数据采集端&#xff0c;系统支持对接CRM、ERP等业务系统&#xff0c;结合NLP技术实现非结构化数据的自动抽取&#xff1…

VMware Tools 手动编译安装版

OWASPBWA安装VMware tools 安装时&#xff0c;显示如下提示 官方安装手册参考&#xff1a;https://knowledge.broadcom.com/external/article?legacyId1014294 按照提示&#xff0c;下载linux.iso文件&#xff0c;并连接到虚拟机的CDROM里&#xff0c;状态勾选已连接&#x…

android平台驱动开发(六)--Makefile和Kconfig简介

Makefile&#xff1a; 1.编译进内核&#xff0c;还是以模块方式加载 模块方式编译成ko,通常是自己添加脚本方式insmod ,android 平台通常默认有modprobe加载&#xff0c;不需要额外添加insmod脚本 lsmod |grep test 可以查看是否安装成功 rmmod test-m.ko 可以删除ko 2.多…