AE、VAE与GAN简明指南:三大生成模型对比
AE、VAE与GAN简明指南:三大生成模型对比
1. 核心概念一句话总结
2. 模型结构对比
2.1 AE结构(最简单)
输入图片 → [编码器] → 隐向量z → [解码器] → 还原图片
特点:
- 隐向量是确定的(无随机性)
- 训练目标:输入输出尽可能像
- 隐空间可能不连续
2.2 VAE结构(AE升级版)
输入图片 → [编码器] → μ+σ → [采样] → 隐向量z → [解码器] → 生成图片
特点:
- 隐向量是概率分布(有随机性)
- 训练目标:输入输出像 + 隐向量接近正态分布
- 隐空间连续,可插值
2.3 GAN结构(完全不同)
噪声z → [生成器] → 假图片 → [判别器] → 真/假真实图片 → [判别器] → 真/假
特点:
- 无编码器,直接从噪声生成
- 对抗训练,生成器vs判别器
- 生成质量最高,但训练不稳定
3. 训练与推理流程
3.1 AE训练流程
训练:
- 输入图片x
- 编码器得到隐向量z
- 解码器得到重构图片x̂
- 计算MSE损失:||x - x̂||²
- 反向传播
推理:
# 只能还原训练过的图片reconstructed = ae(original_image)# 无法生成新图片(隐空间不连续)
3.2 VAE训练流程
训练:
- 输入图片x
- 编码器输出μ和σ
- 从N(μ,σ)采样得到z
- 解码器得到生成图片x̂
- 计算损失:重构误差 + 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
- 生成假图片 → 输出0
- 训练生成器:
- 生成假图片 → 让判别器输出1
- 交替训练
推理:
# 直接生成新图片noise = torch.randn(1, 100)new_image = generator(noise)
4. 损失函数对比
5. 实际应用对比
5.1 AE应用场景
5.2 VAE应用场景
5.3 GAN应用场景
6. 选择建议
6.1 按需求选择
6.2 按经验选择
- 新手:先AE,再VAE,最后GAN
- 研究:VAE理论清晰,GAN效果好
- 工业:GAN质量优先,VAE稳定性优先
7. 一句话总结
- AE:最简单的压缩还原,像zip文件
- VAE:AE加随机性,可以生成新图片
- GAN:对抗训练,质量最高但最难调
参考:
1、Autoencoders
2、Generative Adversarial Networks