从“左右互搏”到“字斟句酌”:AI 图像生成的进化之路 (GAN 到 Diffusion 全面解析)
引言:如果你在两年前关注过 AI 绘画,你可能会惊叹于 GAN(生成对抗网络)创造的逼真人脸;而今天,当你看到 Midjourney、Stable Diffusion 或是 DALL-E 3 仅凭几句简短的提示词就能生成大师级别的艺术作品时,你是否想过,这背后究竟发生了什么?
从 GAN 的“左右互搏”,到 VAE 的“意念压缩”,再到 Diffusion Model 的“字斟句酌”(去噪),AI 图像生成经历了一场范式级的革命。本文将带你深入浅出地剖析这条进化之路背后的核心逻辑、数学原理以及代码实现。
一、 开天辟地:生成对抗网络 (GAN)
在 2014 年之前,AI 生成图像的效果往往模糊不清,缺乏细节。直到 Ian Goodfellow 提出了 生成对抗网络,这一切才被彻底改变。
1. 核心思想:伪造者与鉴定师的猫鼠游戏
GAN 的核心思想非常直观:零和博弈。模型内部包含两个神经网络:
- 生成器:相当于“伪造者”,负责从随机噪声中生成逼真的图像,试图骗过鉴定师。
- 判别器:相当于“鉴定师”,负责判断输入的图像是真实的(来自训练集)还是伪造的(来自生成器)。
两者在训练过程中不断博弈:生成器越来越擅长造假,判别器越来越火眼金睛。最终,生成器生成的图像达到了“以假乱真”的境界。
2. 数学原理与目标函数
GAN 的训练是一个极小极大博弈问题,其目标函数如下:
3. 代码示例:PyTorch 极简 GAN
为了直观感受,我们用一段极简的 PyTorch 代码展示 GAN 的训练循环:
1 | import torch |
4. GAN 的痛点:为什么它不是最终答案?
尽管 GAN 创造了辉煌,但它存在几个致命的结构性缺陷:
- 模式崩塌:生成器可能发现只要生成某几种特定的图像就能骗过判别器,于是丧失了多样性(例如,让它生成动物,它只生成狗,不生成猫)。
- 训练极度不稳定:由于两个网络需要完美同步,一旦判别器太强,生成器的梯度就会消失,导致根本学不到东西。超参数调优宛如“炼丹”。
- 缺乏多样性控制:GAN 将一个随机噪声直接映射为图像,这个隐空间往往是不连续的,导致我们很难对生成结果进行精细编辑。
二、 承上启下:变分自编码器 (VAE)
为了解决 GAN 隐空间不连续、难以控制的问题,研究者们将目光投向了变分自编码器。
核心思想:规范化隐空间
传统的自编码器将图像压缩为一段代码,再从代码还原图像。但这种代码往往是毫无规律的离散点。
VAE 的巧妙之处在于,它不再将图像压缩为固定的向量,而是压缩为一个概率分布(通常用均值 和方差 表示的高斯分布)。在生成时,我们从该分布中采样,并引入了 KL 散度 来约束这个分布,使其尽量贴近标准正态分布。
VAE 的贡献:它为 AI 图像生成提供了一个连续、平滑且结构化的隐空间。你可以在这个空间里做向量运算(例如:)。
局限性:VAE 由于使用均方误差(MSE)或类似的重构损失,往往倾向于生成模糊的图像。它过于追求整体的像素级正确,而丢失了高频细节。
三、 异军突起:扩散模型
2020 年,Jonathan Ho 等人发表了奠基性论文 Denoising Diffusion Probabilistic Models (DDPM),标志着 Diffusion 时代的到来。Stable Diffusion、DALL-E、Midjourney 背后的底层技术,统统属于扩散模型。
1. 核心思想:破坏与重建
如果说 GAN 是造假者,那么 Diffusion 就是雕刻家。
扩散模型分为两个阶段:
- 前向过程(加噪):类似于墨水滴入水中。我们逐步向一张清晰的原始图片中加入高斯噪声,经过 步之后,这张图片变成了一张完全看不出原图的纯噪声图。
- 逆向过程(去噪):这是 Diffusion 的核心。我们训练一个神经网络(通常是 U-Net),让它学习如何把第 步的噪声图,还原为第 步的稍微干净一点的图。经过 步的“字斟句酌”,纯噪声被一步步雕刻成了清晰的图像。
2. 数学原理简述
在前向过程中,由于马尔可夫链的性质,我们可以直接通过重参数化技巧,从原图 直接得到第 步的加噪图 :
其中 是纯高斯噪声。
在逆向过程中,模型并不直接预测图像,而是预测当前步骤中加入的噪声 。其简化的损失函数非常优雅:
(即:让模型预测的噪声,与实际加入的真实噪声越接近越好。)
3. 为什么 Diffusion 能打败 GAN?
- 训练极其稳定:不需要两个网络对抗,只需要一个网络拟合噪声(单纯的回归问题)。
- 极高的多样性:由于是基于概率模型生成,它不容易发生模式崩塌,生成的图像覆盖面更广。
- 完美契合文本控制:这为后来的文本生成图像(Text-to-Image,即 CLIP + Diffusion)奠定了基础。
4. 代码示例:PyTorch 极简 Diffusion 训练步骤
以下代码展示了 Diffusion 模型训练的核心逻辑,你会发现它比 GAN 简单得多:
1 | import torch |
四、 终极进化:潜在扩散模型
虽然基础的 Diffusion Model 效果很好,但它有一个致命的缺点:太慢了,太吃显存了。
因为在像素级别上做长链路的去噪计算量极大(比如一张 的图片有近 78 万个像素点)。
2021 年底,慕尼黑大学的研究人员提出了 潜在扩散模型 (LDM),这也就是后来引爆全球的开源项目 Stable Diffusion 的底层架构。
1. LDM 的三剑客
LDM 的核心思想是:不要在像素空间里做扩散,在潜空间里做!
- VAE (变分自编码器):
- Encoder(编码器):将 的高清图片压缩为 的隐空间特征图。维度缩小了 48 倍!
- Decoder(解码器):将生成好的 的特征图还原为 的高清图片。
- U-Net (扩散模型本体):
- 在 的低维潜空间中进行我们前面提到的加噪和去噪操作,极大降低了计算量。
- CLIP (文本编码器):
- 由 OpenAI 提出的多模态模型。它可以将人类输入的文本(如“一只戴墨镜的猫”)转化为一段连续的语义向量。
- 通过 交叉注意力机制 注入到 U-Net 中,指导 U-Net 在去噪时不要乱画,要朝着“猫”和“墨镜”的方向去噪。
2. 实战代码:使用 Hugging Face diffusers 生成图像
如今,我们可以用几行代码就调用强大的 Stable Diffusion 模型:
1 | # 需要安装: pip install diffusers transformers accelerate torch |
3. 进阶优化:ControlNet 与 LoRA
纯粹通过文本控制图像仍然不够精准,于是生态圈衍生出了强大的控制插件:
- ControlNet:在原始 U-Net 旁并联一个网络。它可以让用户通过线稿、人体姿态骨架、深度图、边缘图来严格控制 Diffusion 模型生成的图像结构,彻底解决了 AI 绘画“抽卡靠运气”、“不可控”的难题。
- LoRA (Low-Rank Adaptation):一种微调技术。你可以用几十张特定风格(比如水彩风)或特定人物的照片,训练出几十 MB 的 LoRA 权重,然后随时插拔到庞大的 SD 基础模型中,实现风格的完美复刻。
五、 总结与展望
从 GAN 到 VAE,再到如今大放异彩的 Diffusion Model,AI 图像生成经历了一次次范式跃迁。
| 模型架构 | 核心机制 | 优点 | 缺点 | 代表应用 |
|---|---|---|---|---|
| GAN | 对抗博弈 (生成器 vs 判别器) | 生成速度快,图像清晰 | 训练难,多样性差,不可控 | StyleGAN |
| VAE | 编码重构 + 概率分布映射 | 隐空间连续,易于插值 | 图像往往模糊 | VQ-VAE |
| Diffusion | 迭代去噪 (破坏与重建) | 训练稳定,质量极高,多样性极强 | 生成步骤多,速度较慢 | DDPM |
| LDM | 潜空间扩散 + 文本对齐 | 兼顾高质量与计算资源效率 | 架构复杂,依赖庞大的数据集 | Stable Diffusion, Midjourney |
未来的趋势是什么?
目前,生成式 AI 正在从单纯的 Diffusion 向更多元化的方向发展。例如,OpenAI 的 Sora 将 Diffusion 与 Transformer 架构相结合(DiT - Diffusion Transformer),打破了视频生成的壁垒;而诸如 Consistency Models (一致性模型) 等新兴研究,正试图将 Diffusion 的去噪步骤从几十步压缩到一两步。
我们正处在一个视觉创作被彻底重塑的时代。理解这些底层技术,不仅能让我们更好地使用这些工具,更能让我们洞悉 AI 走向通用人工智能(AGI)的坚实步伐。无论技术如何更迭,“从无到有,化腐朽为神奇” 始终是 AI 最令人着迷的魔力。