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

AE、VAE与GAN简明指南:三大生成模型对比

AE、VAE与GAN简明指南:三大生成模型对比

1. 核心概念一句话总结

模型核心思想一句话理解
AE压缩-还原把图片压成向量,再还原,像zip压缩
VAE压缩+随机性AE加噪声,让向量有概率意义
GAN造假-识别两个网络打架,越打越真

2. 模型结构对比

2.1 AE结构(最简单)

输入图片 → [编码器] → 隐向量z → [解码器] → 还原图片

在这里插入图片描述

特点

  • 隐向量是确定的(无随机性)
  • 训练目标:输入输出尽可能像
  • 隐空间可能不连续

2.2 VAE结构(AE升级版)

输入图片 → [编码器] → μ+σ → [采样] → 隐向量z → [解码器] → 生成图片

在这里插入图片描述

特点

  • 隐向量是概率分布(有随机性)
  • 训练目标:输入输出像 + 隐向量接近正态分布
  • 隐空间连续,可插值

2.3 GAN结构(完全不同)

噪声z → [生成器] → 假图片 → [判别器] → 真/假
真实图片 → [判别器] → 真/假

在这里插入图片描述

特点

  • 无编码器,直接从噪声生成
  • 对抗训练,生成器vs判别器
  • 生成质量最高,但训练不稳定

3. 训练与推理流程

3.1 AE训练流程

训练

  1. 输入图片x
  2. 编码器得到隐向量z
  3. 解码器得到重构图片x̂
  4. 计算MSE损失:||x - x̂||²
  5. 反向传播

推理

# 只能还原训练过的图片
reconstructed = ae(original_image)# 无法生成新图片(隐空间不连续)

3.2 VAE训练流程

训练

  1. 输入图片x
  2. 编码器输出μ和σ
  3. 从N(μ,σ)采样得到z
  4. 解码器得到生成图片x̂
  5. 计算损失:重构误差 + KL散度

推理

# 生成新图片(采样隐向量)
z = torch.randn(1, 100)
new_image = vae.decode(z)# 插值生成(隐空间连续)
z1 = vae.encode(image1)
z2 = vae.encode(image2)
interp_image = vae.decode(0.5*z1 + 0.5*z2)

3.3 GAN训练流程

训练

  1. 训练判别器
    • 真实图片 → 输出1
    • 生成假图片 → 输出0
  2. 训练生成器
    • 生成假图片 → 让判别器输出1
  3. 交替训练

推理

# 直接生成新图片
noise = torch.randn(1, 100)
new_image = generator(noise)

4. 损失函数对比

模型损失函数优化目标
AEMSE损失输入输出尽可能像
VAEMSE + KL散度输入输出像 + 隐向量正态分布
GAN对抗损失生成器骗过判别器

5. 实际应用对比

5.1 AE应用场景

应用实现方式局限性
图像压缩隐向量就是压缩码压缩率有限
特征提取用隐向量做下游任务特征可能不够好
去噪训练有噪声→无噪声只能去训练过的噪声

5.2 VAE应用场景

应用实现方式优势
人脸生成在隐空间插值平滑过渡
数据增强采样生成新样本多样性高
异常检测重构误差大的为异常无需异常样本

5.3 GAN应用场景

应用实现方式优势
艺术创作StyleGAN等质量最高
图像修复条件GAN逼真细节
风格迁移CycleGAN无需配对数据

6. 选择建议

6.1 按需求选择

需求推荐模型理由
快速原型AE最简单,易实现
稳定生成VAE训练稳定,可解释
最高质量GAN生成效果最佳
特征提取AE/VAE有编码器
数据增强VAE隐空间连续

6.2 按经验选择

  • 新手:先AE,再VAE,最后GAN
  • 研究:VAE理论清晰,GAN效果好
  • 工业:GAN质量优先,VAE稳定性优先

7. 一句话总结

  • AE:最简单的压缩还原,像zip文件
  • VAE:AE加随机性,可以生成新图片
  • GAN:对抗训练,质量最高但最难调

参考:
1、Autoencoders
2、Generative Adversarial Networks

http://www.dtcms.com/a/305317.html

相关文章:

  • 二维经验模态分解(BEMD)算法详解与MATLAB实现
  • 地图可视化实践录:开篇需求计划
  • SZU大学物理实验报告|基于应变片的电子秤的设计
  • Python爬虫分析B站番剧播放量趋势:从数据采集到可视化分析
  • 纯血鸿蒙 AudioRenderer+AudioCapturer+RingBuffer 实现麦克风采集+发声
  • 选用Java开发商城的优势
  • 功率场效应晶体管MOSFET关键指标
  • 岩石图文分析系统
  • Gartner发布2025年数据安全技术成熟度曲线:29项最新数据安全相关技术发展和应用趋势
  • 【SQL】Windows MySQL 服务查询启动停止自启动(保姆级)
  • 学习日志21 python
  • Sub-GHz射频技术,智能安防系统的“长续航、深覆盖”密码
  • 集成开发环境(IDE)
  • 卸油作业安全设施识别准确率↑32%:陌讯多模态融合算法实战解析
  • Layui表格备注编辑功能代码详解
  • NAT:网络地址转换
  • 开发避坑短篇(8):Java Cookie值非法字符异常分析与解决方案:IllegalArgumentException[32]
  • 前端css 的固定布局,流式布局,弹性布局,自适应布局,响应式布局
  • redis得到shell的几种方法
  • Python包架构设计与模式应用:构建可扩展的企业级组件
  • 本土化DevOps实践:Gitee为核心的协作工具链与高效落地指南
  • Java 11 新特性详解与代码示例
  • 《C++》STL--vector容器超详细解析
  • CSS 在单页应用(SPA)中的适用性解析与实践
  • QWebEngineProfile setCachePath无效
  • aar, aab,apk三种应用格式的区别
  • Linux网络编程——IP地址与端口、通信协议、Socket套接字基础概念解析
  • 【C语言】指针深度剖析(一)
  • Router 动态路由
  • FPGA数码管驱动模块