资讯动态

GAN十年演进实录:从对抗博弈到扩散模型时代的再定位

发布时间:2026/10/18 21:53:38 来源:尧图企业网站定制
这些年经常被同行问一个很扎心的问题你还在搞GAN这玩意儿不是早被扩散模型干趴下了吗问出这种话的人多半没经历过2016到2021年那段天天和模式坍塌搏斗的日子也没见过StyleGAN刚出来时那种让人起鸡皮疙瘩的高清人脸。作为一个从2016年底开始折腾生成模型的从业者我想认真掰扯一下生成对抗网络GAN从2015年正式提出到现在这十年到底经历了什么踩过哪些坑哪些技术是真进步哪些只是换了个马甲以及2025年这个时间点它到底还行不行。这篇文章不打算写成年鉴式的流水账而是想带着我个人的踩坑记忆把GAN十年演进这条主线拆开来讲从原始论文那个优雅却脆弱的博弈公式讲起到训练不稳定的根源再到架构和应用的版图最后聊聊扩散模型冲击下GAN的定位。不管你是刚入门的本科生还是已经用PyTorch复现过几个模型的开发者应该都能从里面找到对你有用的东西。1. 从酒吧辩论到一篇改写生成模型格局的论文GAN的前史1.1 为什么让两个网络互相拉扯在当时如此反直觉在GAN出现之前生成模型领域的主流思路几乎是两个方向。一个是显式建模概率密度典型代表是自回归模型和受限玻尔兹曼机这类方法理论上很干净但一旦面对高分辨率图像计算复杂度就会让你怀疑人生另一个是隐变量模型以VAE为代表通过最大化变分下界来学习训练稳定但生成的图像总是发糊因为它在用高斯分布强行拟合复杂分布时天然倾向于平均化。GAN的想法之所以在当时显得离经叛道是因为它彻底回避了如何显式定义分布这个问题。它的核心思路是既然我写不出真实图像的分布函数那就训练一个判别网络来告诉我这是真的还是假的用这个判别器的判断结果反过来指导生成器改进。换句话说把损失函数本身也变成学习的一部分。这个思路放到今天看依然非常超前——你不需要知道目标长什么样只需要有一个能区分真假的标准就能逼着生成器慢慢摸到目标的形状。我当时第一次看完原始论文的反应其实是这也行因为整个训练框架看起来就像一个零和博弈两个网络各怀鬼胎谁都不想让对方好过。但恰恰是这个以敌为师的思路让GAN在图像清晰度上迅速甩开了VAE。后来我也慢慢理解GAN本质上不是在学一个概率密度函数而是在学一个如何从噪声映射到真实数据流形的函数这个函数的好坏完全由判别器来衡量。1.2 原始GAN的数学内核一个简洁却脆弱的纳什均衡原始GAN的目标函数写成博弈形式就是生成器G试图最小化判别器D能分辨出假样本的概率而D试图最大化这个分辨能力。用公式表示大约是D要最大化真实样本的判断概率加上假样本被识破的概率G则要最小化后者。这个min-max的博弈在理想情况下会收敛到一个纳什均衡当且仅当生成分布完全等于真实分布时判别器对任何样本的判断概率都等于0.5也就是说它彻底懵了再也分不清真假。从理论上看非常优雅但实际训练中这个均衡点极其脆弱。论文里也证明了一个关键性质当判别器被训练到最优时生成器的损失实际上等价于在最小化真实分布和生成分布之间的JS散度。问题就出在这个JS散度上——如果两个分布的支撑集几乎没有重叠这在图像这种高维空间里几乎是常态JS散度会退化为一个常数梯度直接消失生成器收不到任何有用的信号。这就是为什么原始GAN一上来就训练判别器容易翻车的原因。另一个著名的问题是模式坍塌。生成器发现只要生成某一类能够稳定骗过判别器的样本就能获得很低的损失于是它就不想再去探索其他模式了。当年网上流传的一个MNIST数字反复生成同一个的经典翻车案例就是模式坍塌的最好注脚。关于这两个问题的深挖我后面单独用一个章节来展开因为它们几乎贯穿了GAN发展史的前半段。2. 训练不稳定的十年拉锯模式坍塌、梯度消失与损失函数救火队2.1 判别器太强和太弱都会翻车理解对抗动态的失衡很多人第一次训练GAN都会陷入一个困惑为什么我的判别器损失一路降到接近零生成器却什么都没有学会这就是典型的判别器太强。判别器一旦完美区分真假它给出的梯度信息就会趋近于零生成器如同在伸手不见五指的隧道里开车没有任何方向感。反之如果判别器太弱它给出的判断信号噪声太大生成器学到的是随机噪音而不是真实结构图像会一直处于混沌状态。更麻烦的是这两个网络在训练中并不是同步进化的。判别器通常是那个学得快的学生因为它只需要做二分类任务更简单生成器则要在一个高维空间中从零摸索出数据的流形任务难得多。于是经典的训练过程就呈现出一个非常不健康的节奏判别器迅速领先生成器努力追赶等生成器好不容易追上一点判别器又开始下一轮领先。这种打摆子式的动态让超参数调优变得极其痛苦哪怕你在某个随机种子下跑通了换个种子可能就完全崩溃。我个人的经验是理解这种失衡是调GAN的第一步比换任何新损失函数都重要。训练过程中你要像一个裁判一样时刻盯着双方的战力差而不是只看全局的总loss。判别器太强就降低它的学习率或者减少更新频率生成器太弱就反过来。这种朴素的干预手段直到今天依然是工程上最常用的兜底方案。2.2 WGAN与WGAN-GP用距离度量替代散度的一次成功手术2017年出现的WGAN是我个人觉得GAN史上最重要的一个转折点因为它直接从数学层面动刀子解决了梯度消失这个病根。WGAN的核心改动是不再用JS散度来衡量两个分布的差异而是用Wasserstein距离也叫推土机距离。直观理解Wasserstein距离描述的是把一堆土从位置A搬到位置B最少要花多少力气即使两个分布完全不重叠这个距离依然能给出一个有意义的、连续的数值。这个改动带来的直接好处是哪怕判别器训练得非常好生成器依然能接收到稳定且非零的梯度。为了让这个距离能够被神经网络逼近WGAN要求判别器此时改叫Critic必须是1-Lipschitz连续的也就是函数的变化率有上限。原文采用的方法是权重裁剪简单粗暴但副作用巨大裁剪会让权重集中在边界值附近白白浪费了神经网络的表达能力训练依然不稳定。紧跟着出现的WGAN-GP则把权重裁剪换成了梯度惩罚在损失函数中直接限制Critic输出的梯度范数接近1。这个改进让训练过程一下子稳定了很多也成为后来两年里大量工作的默认配置。我自己在2018年复现WGAN-GP的时候最直观的感受是终于可以不用每几百步就提心吊胆地去看生成图了训练过程的loss曲线开始变得像一个正常神经网络该有的样子。当然它也有自己的毛病比如梯度惩罚会显著增加计算开销并且对超参数依然敏感但相比原始GAN已经是一次质的飞跃。2.3 谱归一化、hinge loss与TTUR工程派救火的三板斧除了换距离度量工程派还贡献了另外三样东西如今已经成了GAN训练事实上的标配。第一个是谱归一化它通过对判别器每一层的权重矩阵做谱范数归一化把整个网络的Lipschitz常数限制住。相比梯度惩罚需要在训练时额外算一遍梯度谱归一化是在前向计算时完成的几乎没有额外开销而且对batch size不敏感用起来省心得多。第二个是hinge loss这是一种更简单的损失函数设计判别器对真实样本的输出要大于1对假样本的输出要小于-1超出这个范围就不再给予梯度奖励。这种赢麻了就不管了的设计能防止判别器过于自信客观上缓解了梯度失衡的问题。第三个是TTUR即两时间尺度更新规则简单说就是让生成器和判别器用不同的学习率通常判别器用更小的学习率拉低它的学习速度让两个网络保持一个相对平衡的同步进化节奏。这四样东西WGAN-GP或谱归一化、hinge loss、TTUR的组合基本构成了我后来做生成任务的默认配方。我经常对那些问GAN为什么难调的人说先别急着创新网络结构先把这个组合跑通跑不通一定是某个环节的失衡而不是模型设计的问题。工具本身不神奇神奇的是理解工具之后能稳定复现的能力。3. 架构演进主线从DCGAN到StyleGAN再到条件大模型3.1 DCGAN定下的经验法则至今仍在生效在原始GAN提出后的那一年里很多复现工作都在全连接网络上挣扎生成效果一言难尽。直到DCGAN的出现人们才意识到卷积神经网络才是图像生成该用的骨架。DCGAN把生成器和判别器都换成了带批归一化的卷积网络并且总结出了一整套至今仍被广泛使用的架构经验生成器里用转置卷积上采样判别器里用带步长的卷积下采样去掉全连接层生成器最后一层用Tanh激活其他层用ReLU判别器全部用LeakyReLU。这些规则在今天看起来像常识但在当时是从无数次翻车实验中总结出来的血泪经验。批归一化在GAN里尤其关键它防止了每一层输出的分布发生剧烈漂移让对抗训练那脆弱的平衡稍微稳定了一点。还有一个小细节是DCGAN验证了在潜变量z上做简单的算术操作可以对应图像语义的变化比如戴眼镜的男人减去不戴眼镜的男人能迁移出眼镜这个属性。这个发现后来成为潜空间语义操控研究的重要起点。3.2 StyleGAN各版本潜空间解耦带来的可控性革命如果说DCGAN解决了用CNN生成图像的问题那么StyleGAN系列则解决了生成过程能不能被人类理解和控制的问题。StyleGAN最早版本的核心设计有三个映射网络、风格注入和噪声注入。映射网络先把输入的随机潜变量映射到一个中间潜空间再通过自适应实例归一化层层注入风格信息噪声注入则给生成过程提供了微观细节的随机性比如毛孔、头发丝这种难以用风格向量表达的层次。这套设计的效果是惊人的。生成的人脸不仅清晰度达到了前所未有的水平而且潜空间的语义解耦性极强你可以连续地改变年龄、姿态、眼镜、肤色而其他属性保持不动。这一点对产品化的价值是颠覆性的因为它让生成从抽奖变成了可控的操作。StyleGAN后续版本进一步改进了图像质量和训练稳定性尤其是把渐进式生成换成残差结构之后训练速度和质量都有了明显提升还引入了路径长度正则化来让潜空间插值更平滑。我和很多同行交流时都有一个共识StyleGAN系列是GAN架构演进的巅峰它证明了对抗训练在图像生成上能做到什么程度。即便今天用扩散模型实现类似效果很多时候也需要额外的控制网络和采样技巧而StyleGAN原生就具备这些属性。这也是为什么直到今天人脸生成、风格迁移等任务里StyleGAN系列依然是工业界的首选。3.3 BigGAN与条件生成把类别信息焊进生成过程在StyleGAN引领无条件生成的同时另一条线也在快速推进条件生成。BigGAN可以说是这条线上的巅峰之作它把类别信息通过类别嵌入注入生成器的多个层同时大规模增加批大小和网络宽度借助大量算力刷新了当时ImageNet生成任务的最好效果。BigGAN在工程上有几个很值得学的地方。一是它用共享的类别嵌入并在判别器中也注入类别信息让生成器必须学会按需生成而不是笼统地模仿所有类别。二是它公开了截断技巧训练时从标准正态分布采样采样时把潜变量的值截断在一定范围内这个技巧在质量和多样性之间提供了一个连续可调的旋钮。调低截断阈值图像质量上升但多样性下降调高阈值则相反。这个简单的技巧后来被广泛移植到各种生成模型上包括扩散模型的采样阶段。条件生成的意义在于它把GAN从会画画的模型变成了能按指令画画的模型这一步对产业落地至关重要。今天大家习以为常的输入文本生成图像其实在GAN时代就有过初步尝试只不过文本到图像的语义对齐在纯GAN框架下难度太高直到扩散模型时代才真正全面爆发。但如果没有BigGAN这批工作在类别条件注入上的经验积累后来的条件生成架构也不会走得这么顺。4. 落地版图回顾那些真正走进生产环境的GAN应用4.1 图像翻译pix2pix与CycleGAN的双向奔赴如果要盘点GAN真正大规模落地的领域图像翻译绝对排第一。pix2pix提出的思路非常直观用成对的训练数据比如语义分割图和真实街景图训练一个条件GAN生成器根据输入条件生成图像判别器判断生成结果是否既真实又匹配条件。这种有监督的翻译效果好得惊人一张简单的线稿就能生成细节丰富的实物图卫星图能变成地图草图能变成照片。但现实世界里成对数据太稀缺了于是CycleGAN应运而生。它用两个生成器和两个判别器组成一个循环结构A域的图翻译到B域再翻译回A域靠循环一致性损失来约束翻译过程不偏离原图内容。这样一来不需要任何成对标注就能实现马变斑马、照片变油画、夏天变冬天这类趣味又实用的转换。CycleGAN的设计思路后来被广泛借鉴甚至影响到了语音转换、风格迁移等更广阔的领域。我在实际项目中最常用的其实是一个容易被忽略的组合用pix2pix做像素级对齐任务用CycleGAN做风格级迁移任务。两者的适用边界很清晰如果任务要求几何结构严格不变比如超分、去噪、上色就选pix2pix这类有配对监督的如果任务只要求风格域的转换结构允许一定程度的变形那就用CycleGAN。很多人把这两者混为一谈结果往往在错误的任务上用了错误的模型效果自然不理想。4.2 超分与修复从SRGAN到Real-ESRGAN的工程化之路超分辨率是GAN另一个非常成功的落地场景。早期的超分模型大多用L2损失训练结果出来的图像虽然PSNR高但看起来又糊又平滑因为L2损失倾向于均值化丢掉了高频细节。SRGAN第一次把对抗损失引入超分任务让生成器在追求像素准确的同时也要让判别器觉得这图是真的。效果一下子就不一样了图像的纹理细节明显更锐利视觉上更接近真实拍摄的照片。Real-ESRGAN进一步把这件事推向实用化。它针对真实场景中的退化过程做了专门建模不再假设降采样是理想的双三次插值而是引入模糊、噪声、压缩伪影等多种退化用更符合实际的仿真数据训练。同时它加入了对放大倍数、人脸修复等细分需求的专项支持让老照片修复、动漫图像放大这些项目真正进入了可产品化的阶段。4.3 被低估的王牌场景数据增强与异常样本合成和图像翻译、超分这些看得见摸得着的应用相比GAN在数据增强上的价值被严重低估了。在很多工业场景里真正的问题不是模型结构选什么而是数据不够。比如工业质检里缺陷样本可能只占总样本的千分之一深度学习模型面对这种极度不平衡的数据集很容易陷入全都预测正常的懒惰状态。GAN在这里的价值不是凭空造数据而是能够从一个类别的少量样本中学习分布规律合成出逼真的新样本再与真实样本混合训练。我在一个模拟项目里试过用GAN做医学影像的数据增强效果让我印象很深把生成样本加进训练集后模型在稀有病变类别上的召回率提升显著。后来我发现很多资深的同行也在这么做但学术圈和论文里很少讨论因为它听起来不够性感。如果你手里有一个样本量稀缺的分类或检测任务别急着上最新的扩散模型先用一个训练稳定的GAN把少数类样本扩起来性价比非常高。4.4 人脸合成繁荣背后的伦理与监管红线GAN在技术上的成功也带来了非常现实的伦理问题其中最突出的就是人脸合成和深度伪造。从技术中立的角度看能够生成超高逼真人脸的能力是一把双刃剑它在影视特效、虚拟助手、隐私保护合成替身等领域有巨大价值但也可能被用来制造虚假视频、伪造身份。对抗训练本身只是工具问题在于使用场景和监管机制是否跟得上。做技术的人在这一块有一个共识合成痕迹的检测和对抗本身也是一场军备竞赛。利用GAN生成数据的模型可以反过来训练检测器现在很多平台也都建立了针对合成内容的标准和规范。我自己在涉及人脸数据的项目里有一条红线绝不生成或传播可能误导公众的伪造身份内容生成的数据必须带有清晰的合成标识。这既是对用户负责也是对这个技术方向长期发展的保护。5. 2023–2025扩散模型冲击下GAN的再定位与融合5.1 扩散模型凭什么在质量赛道上反超必须承认从2022年开始扩散模型在文本生成图像这个赛道上全面反超了GAN。扩散模型的训练过程不吃对抗博弈那种脆弱的平衡它的损失函数是相对平稳的L2类去噪目标训练稳定得多。更重要的是扩散模型对训练分布的覆盖更好很少出现模式坍塌生成结果的多样性有明显优势。再加上扩散模型天然适合条件生成不管是文本、草图还是深度图都能通过调整输入条件实现很强的控制这让它在文本到图像这个当时最火的任务上一骑绝尘。我身边很多人从GAN转向扩散模型最大的感受就是训练终于不玄学了——你不用再凌晨三点盯着判别器和生成器的loss打架跑完一个标准的去噪训练流程结果基本是可预期的。5.2 速度、可控性与小数据GAN依然不可替代的三个理由但这并不意味着GAN就退出了历史舞台。相反在三个非常明确的场景里GAN依然有不可替代的优势。第一个是推理速度。扩散模型生成一张图通常需要几十步迭代去噪哪怕用了加速采样也要几十次模型前向计算而GAN本质上是单次前向生成在实时交互、视频生成、移动端推理这些对延迟极度敏感的场景里优势是碾压级的。第二个是潜空间的可控性。StyleGAN的潜空间插值、语义操控能力是经过多年验证的扩散模型的潜空间更加复杂语义操控的稳定性和直观性目前还比不上成熟的GAN潜空间。第三个是小数据场景。对抗训练本质上是在一个判别器的引导下学习数据分布在数据量有限时GAN往往能更快收敛到可用的效果而扩散模型对数据量的需求通常更高。所以我的判断是如果你的任务是追求极致的多样性和文本控制扩散模型是首选如果任务要求实时、要求精细的潜空间操控、或者数据稀缺GAN依然是更务实的方案。5.3 对抗训练与扩散蒸馏的合流下一个十年的伏笔最近两年最值得关注的趋势其实是GAN和扩散模型的合流而不是谁取代谁。一方面研究者们开始把对抗损失嫁接到扩散模型的训练中让扩散模型在不牺牲质量的前提下减少采样步数另一方面也有工作把扩散模型蒸馏成单步生成的模型而扰动学习、对抗校准这些训练技巧本质上处处都有GAN的影子。我个人觉得这是最健康的演进方向GAN的对抗思想并没有死它只是从一个单独的模型变成了工具箱里的一种训练范式。就像十年前没人会想到概率论和博弈论能在一篇论文里合作得这么深今天的对抗训练和去噪扩散也有很大的融合空间。对于做研究的同行与其花时间争论谁更强不如关注对抗范式还能在哪些新任务里发挥价值。6. 十年踩坑经验总结给新入局者的判别标准与实操建议6.1 判断模型是否健康的四个信号而不是只看loss曲线新手最容易犯的错误是把训练日志里的loss当成唯一的健康指标。在GAN里loss曲线会骗人生成器和判别器的loss此消彼长单独看任何一个都没有绝对意义甚至两个loss都正常但生成图像全是垃圾的情况我也见过。我建议你同时盯四个信号第一个是判别器对真实样本和假样本的判别输出均值如果这个均值长期拉不开差距说明判别器没有在认真学如果拉开得太快说明生成器跟不上了。第二个是生成器输出的多样性固定一个batch的潜变量每隔一段时间保存一次生成图重点看同一个类别的样本是否长得都差不多——如果趋向一致说明模式坍塌正在发生。第三个是潜空间插值的连续性取两个潜变量的中间点生成图像如果中间点看起来像平滑过渡说明潜空间是良构的如果中间点完全是乱码说明潜空间没有学到连续语义。第四个才是标准的图像质量指标比如FID但FID对小数据集的波动很大建议看趋势而不是单点值。6.2 调参心得学习率、批大小与判别器更新频率的联动关于调参我的核心心法只有一句话先找到失衡的方向再动对应的旋钮而不是盲目网格搜索。学习率是第一个要调的旋钮常规建议是生成器和判别器分别设学习率判别器的学习率通常要小一些配合TTUR的思路能显著降低震荡。批大小的影响也经常被忽视批大小太小梯度噪声大对抗博弈容易晃来晃去批大小太大判别器对真实分布的估计过于精确生成器就可能被压死。我在实践中一般从64起步显存允许就往上加同时观察训练稳定性。判别器的更新频率是一个你几乎在每个像样项目里都要碰的问题经典做法是每更新一次生成器就更新一到两次判别器但这个比例不是固定的。我的经验是当生成图像出现明显模糊或色彩混乱时优先增大判别器的更新频率让它给生成器更严格的反馈当生成图像多样性明显不足时反而要降低判别器的更新频率给生成器更多喘息空间去探索。训练过程中动态调整这些比例比固定配置要有效得多。6.3 想在2025年入局GAN往哪个方向做更划算最后聊聊入局方向。如果你是一个刚接触生成模型的学生或开发者我的建议是不要把GAN和扩散模型对立起来而是把它们当两种互补的工具来学习。GAN教会你认识什么是对抗博弈中的失衡、如何通过损失函数和归一化手段控制训练过程这些基本功在扩散模型里同样适用尤其是在蒸馏和采样加速的研究里。如果你打算在GAN方向做深入的原创工作我会更推荐这几个方向通用域的单步生成框架、GAN与扩散蒸馏的混合架构、以及把对抗训练用到更广的表示学习任务中比如表征解耦、域自适应。至于单纯地堆一个更高清的GAN生成器说实话边际效益已经很低了不如把精力放在解决工程落地中的具体问题——可控性、稳定性和跨域泛化这些才是工业界真正愿意付费的地方。回头看看这十年我对GAN最深的感受不是哪篇论文多惊艳而是对抗这个看似简单粗暴的博弈思想居然能在如此长的时间里持续驱动一代又一代研究者往前走。训练稳定性的问题到今天我也不敢说彻底解决了但正是这种永远有坑可踩的特性让这个领域保持了旺盛的生命力。如果你正准备开始学生成模型我希望你能沉下心来把传统GAN的经典论文和代码吃透一遍哪怕只是为了以后更好地理解扩散模型这段功夫都不会白费。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑