高级 #dl#generative#gan#diffusion

生成模型(GAN, VAE, 扩散模型)

生成模型学习数据分布并生成新样本——GAN 用生成器和判别器对抗训练,VAE 用编码器-解码器学习隐空间,扩散模型逐步去噪生成图像

🎨 让 AI 学会”凭空创造”

你给 AI 看 100 万张猫的照片——然后说”生成一张新猫的照片”。

AI 不是”记住”了哪一张照片,而是学会了猫的”规律”——有耳朵、有眼睛、毛茸茸的……然后按这个规律生成了一张以前不存在的照片。

这就是 生成模型(Generative Model)——学习训练数据的分布,生成新的、合理的样本。


⚔️ GAN——生成器和判别器的”猫鼠游戏”

GAN(Generative Adversarial Network)由两个网络组成:

生成器 G:从随机噪声 → 生成假图像("造假者")
判别器 D:区分真实图像和假图像("鉴定专家")

对抗训练:
G 想让 D 认为假图像是真的("骗过鉴定者")
D 想识破 G 的假图像("不被骗")
→ 双方互相"竞争",共同进步
# GAN 的训练循环
for epoch in range(epochs):
    # 训练判别器 D
    fake = G(noise)                          # 生成器造假
    d_loss = -log(D(real)) - log(1 - D(fake)) # D 要区分真假
    d_loss.backward()
    
    # 训练生成器 G
    fake = G(noise)                          # 再生成一次
    g_loss = -log(D(fake))                   # G 想骗过 D
    g_loss.backward()

🌫️ 扩散模型——从噪声中”去噪”出图像

Stable Diffusion、DALL·E、Midjourney 都使用扩散模型。

前向过程(训练时):
清晰的猫图片 → 逐步加噪声 → 完全随机的噪声

               学习"去噪"——每一步预测怎么去掉噪声

反向过程(生成时):
随机噪声 → 逐步去噪 → 生成清晰的猫图片
# 扩散模型的生成过程(概念简化)
def generate(denoise_model, steps=50):
    x = torch.randn(3, 256, 256)  # 纯噪声
    
    for t in reversed(range(steps)):
        noise_pred = denoise_model(x, t)  # 预测噪声
        x = x - noise_pred                 # 去一步噪声
    
    return x  # 生成的图像

为什么扩散模型火了?

  • GAN 训练不稳定(生成器和判别器难平衡)
  • 扩散模型训练稳定,生成质量极好
  • 支持”条件生成”——输入文字描述,生成对应图像

📝 小结

模型核心思想优点缺点
GAN生成器 vs 判别器对抗生成快训练不稳定
VAE编码→隐空间→解码隐空间有数学性质生成偏模糊
扩散模型逐步去噪质量最高、稳定生成慢(逐步去噪)

为什么先学这个? 生成模型关注”生成”。另一个方向是”决策”——强化学习(Q-Learning, DQN)