01核心问题
会认一张图片,怎样才能学会生成图片?
想象两位练习画画的搭档:一位不断画出新的手写数字,另一位把这些画和真实的手写数字放在一起,判断每一张来自哪里。画得太生硬,会被轻易识别;辨别得更细,又能给画画的人提供新的改进方向。
这是理解 GAN 的一个比喻。实际训练中,两位搭档都是神经网络:生成器 G 把随机噪声变成样本,判别器 D 估计样本来自真实数据的概率。它们优化不同的目标,学习信号通过数值计算与梯度传递。
没有一张唯一的“标准答案”
输入一份随机噪声,并不存在一张必须逐像素照着画的目标图片。生成器要学习的是数据分布:既让单个结果像真的,也能覆盖数据中不同的样子,而不是记住一张最容易过关的图。
把“怎样才像真实数据”这件事,交给一个也在学习的判别器来提供反馈。
依据:原论文 §1:对抗训练的动机。
02对抗图解
轮流进步:这一步,到底在更新谁?
切换三个阶段,观察生成器、判别器与学习信号的关系。深色边框表示这一阶段正在更新的网络。
先让判别器学会分辨来源
真实样本和生成样本一起交给 D。训练时知道它们的来源:真实样本应判为真,生成样本应判为假。这一步只更新判别器的参数。
固定参数,不等于切断反馈
训练 G 时,D 像一把暂时固定的尺子。它自己的参数不变,但仍参与计算,让我们知道 G 往哪个方向调整,能够提高 D 对生成样本的判断。这不是把“真 / 假”两个字直接传给 G,而是反向传播可用于更新参数的梯度。
算法交替进行若干次 D 更新与一次 G 更新,论文实验采用每轮一次 D 更新。两者共同演进,评价标准也随着训练变化。
依据:原论文 §3 与图 1、算法 1。
03学习目标
同一个判断,对应两个相反的目标
D:把来源分对
对真实样本输出更高的概率,对生成样本输出更低的概率。
最大化 E[log D(x)]
+ E[log(1 − D(G(z)))]G:让样本更像真的
调整生成方式,让 D 更倾向于把生成样本判断为真实数据。
原始目标:最小化
E[log(1 − D(G(z)))]这里的 E 表示对样本取期望,训练时用一批样本估计;x 来自真实数据,z 来自噪声分布。上面的两项目标组成论文的极小极大博弈。
一开始太容易被识破,怎么办?
早期生成样本很差,原始 G 目标可能提供很弱的梯度。论文提出改为最大化 log D(G(z)),在训练早期提供更强的学习信号,同时保留相同的理想平衡点。
为什么经常听到“最后是 50%”?
在论文的理想理论条件下,如果生成分布与真实分布完全相同,最优判别器对来源就无法区分,输出为 1/2。但反过来并不成立:一个没有学好的 D 也可能到处输出 50%。单看判别概率,不能证明生成质量已经足够好。有限容量的神经网络训练也不受这一理论结果直接保证。
依据:原论文 §3:训练目标、§4:理论分析。
04结果与边界
能生成新样本之后,还要追问什么?
论文在这些图像数据集上展示生成样本,并进行定量评估,为这种训练框架提供了初步证据。生成阶段只需对 G 做一次前向计算,无需运行马尔可夫链。
像真的,也要足够丰富
假设生成器总画同一种很好看的“8”,单张图片可能过关,却漏掉其他数字与笔迹。这是理解多样性问题的一个例子。论文已讨论多个噪声输入映射到相同输出的风险,以及 G 与 D 训练配合的重要性。
早期证据,不是终点
论文也指出其基于 Parzen 窗口的似然估计存在局限,不能简单用一个估计分数决定生成模型的全部优劣。原始方法依赖可微的生成过程,文中的图像实验也不能直接证明它适用于离散文本生成。
产品启发:评价生成系统,要同时看单个结果的质量、整体结果的多样性,以及训练是否稳定。一个评分器的认可,只是证据的一部分。
依据:原论文 §5–6:实验、优势与局限。上面的画数字场景与产品启发为辅助理解的原创说明。