从“左右互搏”到“精雕细琢”:AI 图像生成的进化之路——GAN 到 Diffusion Model 的全面解析

导读:在过去的一年里,从轰动一时的 AI 绘画大赛,到随时可用的 Midjourney、Stable Diffusion,AI 生成图像的质量和速度已经达到了令人叹为观止的地步。然而,你是否想过,支撑这些神奇魔法背后的底层技术究竟是什么?

事实上,AI 图像生成并非一蹴而就。它经历了一场漫长而精彩的范式演进。今天,我们将拨开迷雾,深入浅出地探讨这场技术革命的两大绝对主角:GAN(生成对抗网络)Diffusion Model(扩散模型),看看 AI 是如何从“左右互搏”走向“精雕细琢”的。


一、 引言:人工智能的“造梦”之旅

计算机视觉领域长期以来一直致力于解决“理解”图像的问题(如分类、目标检测)。而图像生成 则是反向操作:让机器从无到有地“创造”出逼真的像素矩阵。

在深度学习爆发之前,我们依赖复杂的物理规则或简单的统计模型(如 Procedural Generation),生成的图像往往缺乏真实感。直到 2014 年,一道分水岭出现了——GAN 的诞生,让 AI 第一次具备了“以假乱真”的创造力。

然而,仅仅八年之后,2022 年 Diffusion Model 的异军突起,直接将 GAN 拉下了神坛。从 GAN 到 Diffusion,这不仅仅是算法的更迭,更是数学思想和工程实践的全面升维。


二、 曾经的王者:GAN (生成对抗网络)

1. 核心思想:“左右互搏”的零和博弈

GAN(Generative Adversarial Network)由 Ian Goodfellow 在 2014 年提出。它的核心思想非常优雅,借用了一个“造假者”与“鉴别师”博弈的比喻:

  • 生成器 (Generator, GG):相当于造假者。它从随机噪声(Latent Noise)出发,试图生成逼真的图像来骗过鉴别师。
  • 判别器 (Discriminator, DD):相当于鉴别师。它接收输入的图像(可能是真实数据集中的真图,也可能是 GG 生成的假图),并判断它是“真”还是“假”。

两者在训练过程中相互博弈:GG 努力提高造假技术让 DD 看不出破绽,而 DD 努力提高鉴别能力来识破 GG。这就是一个经典的极小极大博弈 过程。最终,当 DD 无法区分真假(输出概率为 0.5)时,模型达到了纳什均衡,此时 GG 就是一个完美的图像生成器。

其目标函数可以表示为:

minGmaxDV(D,G)=Expdata(x)[logD(x)]+Ezpz(z)[log(1D(G(z)))]\min_G \max_D V(D, G) = \mathbb{E}_{x \sim p_{data}(x)}[\log D(x)] + \mathbb{E}_{z \sim p_z(z)}[\log(1 - D(G(z)))]

2. GAN 的辉煌成就

在 2014 到 2022 年间,GAN 统治了图像生成领域。从早期的模糊人脸,到后来的 StyleGAN 系列实现极度逼真、甚至可以控制面部特征的 1024p 高清人像生成,GAN 展现出了强大的能力。并且在实时图像转换超分辨率 任务中,GAN 至今仍凭借其极快的推理速度占据优势。

3. GAN 的阿喀琉斯之踵

尽管 GAN 创造了辉煌,但它在理论和工程上存在致命缺陷:

  • 训练极度不稳定:由于 GGDD 需要动态平衡,很容易出现“模式崩溃”。即 GG 发现只要生成某一种能骗过 DD 的图(比如全是同一张人脸),loss 就会下降,于是它就不再生成其他样式的图像了,导致多样性极差。
  • 缺乏多样性:GAN 本质上是在寻找一种能骗过 DD 的捷径,很难覆盖到数据分布的所有角落。
  • 没有显式的概率密度函数:GAN 只能生成数据,无法告诉我们它生成这张图的概率是多少,这限制了它在某些需要概率推断场景下的应用。

三、 破局者:Diffusion Model (扩散模型)

为了解决 GAN 的问题,学术界开始将目光转向基于似然的生成模型。2020 年,OpenAI 的 Jonathan Ho 等人发表了著名的 DDPM (Denoising Diffusion Probabilistic Models) 论文,正式吹响了 Diffusion Model 反攻的号角。

1. 核心思想:“破坏”与“重建”

如果说 GAN 是一场快速的对抗赛,那么 Diffusion Model 就是一场精雕细琢的修复工程。它的灵感来自于非平衡热力学,整个过程分为两个阶段:

(1) 前向过程:破坏图像

想象你有一张清晰的照片。前向过程就是不断地往照片上撒高斯噪声(雪花点)。
这是一个马尔可夫链过程,随着时间步 tt 的增加,图像越来越模糊,最终在第 TT 步时,变成了一张完全看不出原貌的纯高斯噪声图。
这个过程是确定且不可学习的。其数学表达非常优美,我们可以通过重参数化技巧直接从原始图像 x0x_0 采样得到 tt 时刻的噪声图 xtx_t

xt=αˉtx0+1αˉtϵx_t = \sqrt{\bar{\alpha}_t}x_0 + \sqrt{1 - \bar{\alpha}_t}\epsilon

(其中 αˉt\bar{\alpha}_t 是预设的方差表,ϵ\epsilon 是标准高斯噪声)

(2) 反向过程:精雕细琢去噪

这就是生成图像的关键。Diffusion Model 训练了一个神经网络(通常是 U-Net)。它的任务是:给定带噪声的图像 xtx_t 和时间步 tt,预测出此时混入的噪声 ϵ\epsilon 是什么。

在生成(推理)阶段,我们从一张纯随机噪声 xTx_T 开始,利用训练好的模型,一步步地预测并减去噪声:

xt1=去噪一步(xt)x_{t-1} = \text{去噪一步}(x_t)

经过数百上千次的循环去噪,纯噪声奇迹般地逐渐显现出了一张清晰、高质量的图像!

2. 为什么是 U-Net?

在 Diffusion 模型中,最常用的骨干网络是 U-Net。这是因为 U-Net 具有出色的跳跃连接 结构。在下采样提取特征后,又能将高分辨率的细节特征传递给上采样层。这对于需要像素级别精准预测噪声的任务来说,简直是量身定制。

3. 代码实践:构建一个极简的 Diffusion 前向与反向过程

为了更直观地理解,我们用 PyTorch 写一个极其简化的 Diffusion 核心逻辑片段。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
import torch
import torch.nn as nn

# 1. 定义超参数和 Beta 表 (控制噪声添加的速度)
T = 1000 # 总的时间步
beta = torch.linspace(0.0001, 0.02, T).to('cuda')
alpha = 1. - beta
alpha_cumprod = torch.cumprod(alpha, dim=0)

# 2. 前向过程:给干净图像 x_0 添加噪声得到 x_t
def forward_diffusion_sample(x_0, t):
"""
x_0: 干净图像 [batch, C, H, W]
t: 时间步 [batch]
"""
noise = torch.randn_like(x_0)

# 根据公式 x_t = sqrt(alpha_cumprod) * x_0 + sqrt(1 - alpha_cumprod) * noise
sqrt_alpha_cumprod_t = alpha_cumprod[t].view(-1, 1, 1, 1).sqrt()
sqrt_one_minus_alpha_cumprod_t = (1 - alpha_cumprod[t]).view(-1, 1, 1, 1).sqrt()

x_t = sqrt_alpha_cumprod_t * x_0 + sqrt_one_minus_alpha_cumprod_t * noise
return x_t, noise

# 3. 定义简单的 U-Net 骨干网络 (实际应用中非常复杂)
class SimpleUNet(nn.Module):
def __init__(self):
super().__init__()
# 这里省略复杂的下采样、上采样和注意力机制层
# 假设它就是一个能接收图像和时间嵌入,输出与图像同尺寸张量的网络
self.conv = nn.Conv2d(3, 3, kernel_size=3, padding=1)

def forward(self, x, t):
# 实际网络需要将时间步 t 转化为 Time Embedding 注入到网络中
return self.conv(x)

model = SimpleUNet().to('cuda')

# 4. 反向去噪过程 (推理阶段)
@torch.no_grad()
def reverse_diffusion_sample(model, shape):
# 从纯高斯噪声 x_T 开始
current_x = torch.randn(shape).to('cuda')

# 逐步去噪,从 T-1 退回到 0
for t in reversed(range(T)):
t_batch = torch.full((shape[0],), t, dtype=torch.long).to('cuda')

# 模型预测当前的噪声
predicted_noise = model(current_x, t_batch)

# 这里简化了实际的数学方差计算步骤,仅作示意
# 实际上需要利用 predicted_noise 计算出均值和方差,进行重采样
# 近似表示为:减去预测的噪声 (实际推导比这复杂得多)
current_x = current_x - predicted_noise * (1 - alpha[t]).sqrt()

return current_x

四、 终极对决:为什么 Diffusion 彻底击败了 GAN?

读到这里,你可能会问:既然 Diffusion 要循环去噪 1000 步,而 GAN 只需要跑一次前向传播,为什么 Diffusion 能成为现今的主流?

答案在于**“质量的上限”与“训练的稳定性”**。

1. 训练稳定性:线性回归 vs 双人游戏

  • GAN:训练如走钢丝。你需要小心翼翼地平衡 DDGG 的学习率,一旦判别器太强,生成器的梯度就会消失;一旦判别器太弱,生成器就会原地踏步。
  • Diffusion:本质上是在做一个回归问题(让模型预测的噪声和真实添加的噪声之间的 MSE Loss 最小化)。它不需要对抗,训练极其稳定,基本上只要loss能降下来,生成的图像就不会差。

2. 生成多样性与分布覆盖率

  • GAN:容易出现 Mode Collapse(模式崩溃),可能只生成几种有限的人脸姿势。
  • Diffusion:因为它是基于概率模型去拟合整个训练数据集的数据分布,它有着极强的覆盖率。这使得 Diffusion 能够生成 GAN 难以企及的复杂场景和概念组合。

3. 与大语言模型 (LLM) 的完美结合

这或许是最致命的一击。GAN 很难通过一段复杂的自然语言文本(如“一只戴着墨镜在火星上弹吉他的橘猫,赛博朋克风格”)来精准控制生成内容。
而 Diffusion Model 极其容易引入条件机制。通过 Classifier-Free Guidance (CFG) 和强大的文本编码器(如 CLIP 或 T5),文本特征可以直接作为 Cross-Attention 注入到 U-Net 的每一层去指导去噪过程。这是 DALL-E 2、Midjourney 和 Stable Diffusion 能够听懂人类指令的根本原因。

4. GAN 在速度上的最后倔强

当然,Diffusion 并非完美无缺。它最大的缺点就是。生成一张图片需要让 U-Net 跑几百上千次,这在实时应用中是不可接受的。
因此,在实时视频处理、高帧率风格化等对延迟要求极高的领域,GAN 依然是目前的霸主

为了弥补这一缺陷,目前学界提出了 LCM (Latent Consistency Models)SDXL Turbo 等技术,试图将去噪步骤从 1000 步压缩到 1 步到 4 步,这可以看作是 Diffusion 向 GAN 速度的一次致敬与反击。


五、 降维打击:LDM (Latent Diffusion) 与工程奇迹

纯粹的 Diffusion Model 在像素空间直接进行去噪,计算量极其恐怖(比如一张 1024x1024 的图有上百万个像素)。如果每次 U-Net 都要在这么大的矩阵上运算,普通玩家根本玩不起。

这就是 Stable Diffusion (稳定扩散) 为什么被称为划时代作品的原因。它引入了 LDM (Latent Diffusion Model) 的概念。

Stable Diffusion 巧妙地使用了一个预训练的 VAE (变分自编码器)

  1. 编码:先用 VAE 的 Encoder 将 1024x1024 的像素图像“压缩”到一个 128x128 的低维潜空间 中。
  2. 扩散:在这个小得多的潜空间里进行加噪和去噪的前向/反向过程。计算量瞬间缩小了几十倍!
  3. 解码:去噪完成后,再用 VAE 的 Decoder 将潜空间的特征“解压”还原成像素图像。

这种**“空间转换”的工程思想**,结合上 OpenAI 提出的 CLIP 模型的文本对齐能力,最终催生了 AIGC 界的核武器——Stable Diffusion。


六、 未来已来:AIGC 的技术展望

从 GAN 到 Diffusion,我们见证了 AI 图像生成从“小众实验室玩具”走向“全民生产力工具”的完整历程。目前,这项技术仍在以惊人的速度进化:

  1. DiT (Diffusion Transformers) 的崛起:Sora 的爆火证明了,传统的 U-Net 骨干网络并非唯一解。将大语言模型中大获成功的 Transformer 架构引入扩散模型,处理潜在的时空 Patch,能够展现出极强的 Scaling Law(缩放定律)。模型越大、数据越多,画质越逼真、物理规律越严谨。
  2. 极致的控制力:从 ControlNet 到 IP-Adapter,我们现在不仅能用文字控制 Diffusion,还能用线稿、深度图、人体姿态甚至另一张参考图的脸部特征来精准约束生成过程。
  3. 3D 与视频生成:基于 Diffusion 的先验,诸如 NeRF、3D Gaussian Splatting 等技术的融合,让 AI 直接生成三维资产和高质量视频成为了现实。

七、 总结

AI 图像生成的发展史,是一部充满灵感与突破的技术史诗:

  • GAN 扮演了拓荒者的角色,用对抗博弈的智慧,打破了 AI 无法生成逼真图像的坚冰,但在多样性和可控性上留下了遗憾。
  • Diffusion Model 则是用极其优雅的物理热力学思想,通过“破坏再重建”的回归范式,实现了对数据分布的完美拟合,带来了令人惊叹的多样性和文本理解力。

作为开发者和技术的见证者,我们有理由相信,今天的 Diffusion 绝不是终点,而是通往通用人工智能(AGI)路上的一座璀璨丰碑。未来,AI 生成技术将继续突破我们的想象力边界,让我们拭目以待!