IT 论文精读 · PAPER 16
Ian Goodfellow 等 · Université de Montréal · NIPS 2014
2014 年,Ian Goodfellow 等人提出了 GAN(生成对抗网络)。今天你见过的 AI 换脸(deepfake)、以假乱真的「不存在的人脸」、把黑白老照片自动上色、把马变成斑马——这类「无中生有造出逼真图像」的技术,很多都从这篇的思路发端。它教会机器一件很难的事:不是认出一张图,而是自己画出一张以前从没存在、却像真的一样的图。
让机器认出「这是猫」不算太难——喂它一堆标好的猫图去学就行。可反过来让它「画一只从没见过、但一看就是真猫」的猫,难得多:怎么判断它画得像不像?「像不像真的」是个说不清、也写不出打分公式的东西。你没法给机器一把尺子说「照这个量,越接近满分越逼真」。这正是老办法卡住的地方。
GAN 不去硬写「像不像」的评分公式,而是再造一个网络专门当裁判。于是场上有两个网络:一个「造假者」(生成器),负责凭空造图;一个「验钞员」(判别器),负责分辨手里的图是真数据、还是造假者伪造的。两个互为对手:造假者拼命想骗过验钞员,验钞员拼命想识破它。
关键在这场「猫鼠游戏」会自己往上卷。一开始造假者画得很烂,验钞员一眼识破;但每被识破一次,造假者就知道「哪儿露馅了」、朝更逼真改一点点;验钞员为了不被骗,也被逼着练出更毒的眼力。你追我赶之下,造假者被逼得越来越真,直到验钞员再也分不清真假、只能靠掷硬币瞎猜——这时造假者造出的图,就和真的几乎一样了。最妙的地方是:从头到尾没有人写过「什么算逼真」,这把尺子是两个网络在对抗里自己长出来的。
这一下打开了「机器搞创作」的闸门。之后几年,GAN 造出的人脸逼真到能骗过人眼、能换脸、能把素描变照片、能给老电影上色,「生成」从一个冷门角落变成 AI 最热的方向之一。
一句诚实的代价:这场对抗很难调平——两边一旦失衡,造假者可能会偷懒、只反复画同一张「稳赢」的图,或者整个训练直接崩掉;这也是 GAN 出了名难伺候的地方。
让一个「造假网络」和一个「验假网络」互相对抗、彼此把对方逼着进步,不用人写「什么算逼真」的评分规则,机器就能自己造出以假乱真的图。
想看两个网络的结构图、那道博弈公式和它凭什么会收敛? → 切到精读版
GAN 用一个生成器 G 与一个判别器 D 互相对抗的博弈(minimax game)来学会造数据:G 把随机噪声变成假样本、力求骗过 D,D 力求分辨真样本与 G 造的假样本。两者交替训练、彼此把对方逼强,最终 G 造出的分布逼近真实数据分布、D 再也分不清真假。它第一次让「不写任何逼真度评分函数」的生成成为可能——评判标准由对抗过程自己涌现——开启了生成式建模(generative modeling)的一整个时代。
作者是 Ian Goodfellow 等(含深度学习先驱 Yoshua Bengio),出自蒙特利尔大学 Bengio 实验室,论文发在 NIPS 2014。它接续深度学习在判别任务(分类、识别)上的胜利,把矛头转向更难的生成;上承受限玻尔兹曼机、变分自编码器(VAE,同年)等生成路线,却另起炉灶——不去估计概率密度,而用一场对抗博弈。下启 DCGAN、pix2pix / CycleGAN、StyleGAN 等一整片工作,也与后来的扩散模型(diffusion)分庭抗礼。
到 2014 年,判别任务(给图贴标签)在深度学习里已经大获全胜,但生成——让机器自己造出逼真的新样本——一直很难。难在两处。
其一,多数生成模型要显式写出数据的概率密度并做最大似然,可对高维复杂数据(如自然图像),这个概率往往算不出来、只能靠昂贵的近似(如马尔可夫链蒙特卡洛采样),又慢又不稳。
其二,也更本质:「一张图像像不像真的」,根本没有一个简单、可导的打分公式。如果退而用像素级误差(把生成图和某张真图逐像素比差)当目标,模型会被逼着去画所有可能答案的「平均」,结果糊成一团。旧世界的痛就在这里——你想教模型「画得真」,却写不出「真」的数学定义,自然也没法顺着它做梯度下降。
GAN 的釜底抽薪之招是:既然写不出逼真度函数,那就训练另一个网络来充当这个函数。设两个神经网络:
z,输出一张假样本 G(z)。它想让假样本像真的。D(·)∈[0,1]。它想把真的判成 1、把 G 造的判成 0。两者目标正好相反,构成一场二人零和博弈。用一道式子概括这场博弈:min_G max_D E[log D(x)] + E[log(1 − D(G(z)))]——白话说:D 想把这个式子调大(把真样本 x 判高、把假样本 G(z) 判低),G 想把它调小(让 D 连 G(z) 也判高、被骗过去)。训练就是让两者交替走:固定一个、优化另一个。
打个比方(也是原论文的比喻):G 是造假钞的、D 是验钞的警察。造假者不断改进假钞去骗警察,警察不断练火眼金睛去识破;两边你追我赶,最后假钞逼真到警察只能靠掷硬币猜——这时造假者就「毕业」了。
这场博弈有个漂亮的理论落点。先固定 G,最优的判别器是 D*(x) = p_data(x) / (p_data(x) + p_g(x))——即某一点上「真实数据的密度」占「真 + 假密度之和」的比例;白话:某处真样本比假样本多,D 就该往「真」判。把这个最优 D 代回博弈,G 要最小化的东西,其实等价于在缩小真实分布 p_data 与生成分布 p_g 之间的一种距离(Jensen–Shannon 散度,一种衡量两个分布差多远的量)。这个距离当且仅当 p_g = p_data(生成分布完全等于真实分布)时取到最小,此时 D(x) 恒等于 1/2——判别器彻底分不清、只能瞎猜。这就从数学上说明:博弈的理想终点,正是「造出的分布和真实分布一模一样」。
理论式子里 G 要最小化 log(1 − D(G(z)))。但训练早期 G 画得太烂、D 轻松识破(D(G(z))≈0),这一项的梯度几乎为零——造假者刚上场就「学不动」。于是实践中改成让 G 最大化 log D(G(z))(称为非饱和目标,non-saturating loss):目标一致(都想骗过 D),但早期梯度足够强,造假者能顺利起步。这个小改动,是 GAN 能真正训起来的关键之一。
训练流程是交替进行:先更新 D(可走 k 步)把眼力练一练,再更新 G 一步去骗它;两者各自反向传播、你强我也强。值得一提的是,G 从头到尾没直接看过一张真图——它只透过「D 的反馈」间接地学习真实数据长什么样。
论文在 MNIST(手写数字)、TFD(多伦多人脸库)、CIFAR-10(小尺寸自然图)上训练并展示生成样本:视觉上清晰、可辨,且不是简单照抄训练集——作者展示了在噪声隐空间 z 里平滑插值时,生成图也平滑过渡,说明模型学到的是结构而非死记硬背。定量上,受限于当时缺乏好指标,作者只能用 Parzen 窗估计对数似然做对比,并坦承这个指标本身很弱。真正的说服力来自样本质量本身:在当时,这是少有的能直接采样、无需马尔可夫链、一次前向就出图的生成模型。诚实地说,2014 年的原始 GAN 图像还偏小、偏糊,惊艳的高清结果要等两年后的 DCGAN 及之后。
GAN 点燃了生成式建模的一整波浪潮。它证明了「用对抗、而非显式似然」这条全新路线可行,直接催生 DCGAN(稳定的卷积版)、条件生成、pix2pix / CycleGAN(图到图翻译,把马变斑马)、StyleGAN(以假乱真的高清人脸)、超分辨率、数据增广等大量工作,也把「deepfake」「AI 生成人脸」带进大众视野。Yann LeCun 曾称对抗训练是「近十年机器学习最酷的想法」。即便后来扩散模型在很多图像任务上超过了 GAN,「让两个网络对抗、把评价标准交给一个可学习的对手」这个思想,已沉淀为深度学习的通用武器(对抗鲁棒性、对抗训练等都由此延展)。
p_g=p_data」的证明假设模型容量无限、且能在概率密度空间里直接优化;真用有限的神经网络加梯度下降交替训练时,并不保证到达那个理想解。① 一句话:用生成器 G 与判别器 D 的对抗博弈来学造数据,不写任何逼真度函数、评价标准由对抗自己涌现。
② 痛点:显式概率密度的生成模型算不出/不稳;而「像不像真的」没有简单可导的打分公式。
③ 核心:G 造假骗 D、D 分辨真假,min_G max_D E[log D(x)] + E[log(1−D(G(z)))],交替训练互相逼强。
④ 比喻:造假者 vs 验钞警察,你追我赶到验钞员只能瞎猜。
⑤ 理论落点:最优 D*=p_data/(p_data+p_g);博弈最优在 p_g=p_data、D≡1/2,等价于最小化两分布的 JS 散度。
⑥ 关键修补:G 改为最大化 log D(G(z))(非饱和),避免早期梯度消失、让造假者学得动。
⑦ 结果:MNIST/TFD/CIFAR-10 生成清晰样本、隐空间平滑插值;无需马尔可夫链一次出图;定量指标(Parzen 窗)当时偏弱。
⑧ 影响:催生 DCGAN、CycleGAN、StyleGAN、deepfake 等一整片工作,对抗思想成为通用武器。
⑨ 局限:训练不稳、模式坍缩、难评价、理论假设理想化;后被扩散模型在许多任务上超越。