生成对抗网络的工作原理

21 人参与

在网上刷到一张几乎骗不出真人的头像时,很多人会好奇:背后到底有什么“隐形手”在操作?答案常常指向生成对抗网络(GAN),它把两套神经网络当成棋手,互相逼迫,最终把噪声变成逼真的图像。

生成对抗网络的工作原理

基本构成:生成器与判别器

生成器(Generator)接受一个随机向量z∈ℝⁿ,通过一系列反卷积层“绘制”出一幅图片;判别器(Discriminator)则像警探,输入真实图片或生成器的产物,输出一个介于0到1之间的概率,表明这张图是真实的还是伪造的。两者的参数分别记为θG和θD,在训练时相互更新。

对抗训练的循环

  • 判别器先拿到一批真实样本,计算‑log D(x)的交叉熵损失。

  • 再把生成器的输出喂进去,计算‑log (1‑D(G(z))),这一步让判别器学会辨别伪造。

  • 接下来冻结判别器,更新生成器,使其最小化‑log D(G(z)),也就是让判别器误判。

  • 循环往复,直至两者的损失趋于平衡,生成器的输出以假乱真。

Goodfellow等人在2014年的论文里把这套流程描述为“零和游戏”,两方的目标正好相反。实际训练中,常见的技巧包括使用批归一化(BatchNorm)防止梯度消失、加入噪声平滑判别器标签、或改用Wasserstein距离来缓解模式崩溃(Mode Collapse)。以CelebA人脸数据集为例,经过约200万次迭代后,生成器能够在几秒钟内输出一张细节丰富、光影自然的肖像。

关键技术点

除了基本的对抗损失,实践中还有两大“加速器”。一是梯度惩罚(Gradient Penalty),它约束判别器的梯度范数,保持训练过程的平滑;二是谱归一化(Spectral Normalization),直接限制判别器权重的谱范数,防止梯度爆炸。正是这些细节,让从最初的手写数字到如今的3D模型,GAN的生成能力跨越了数个数量级。

如果把GAN比作一场“画家 vs 鉴赏家”的较量,真正的惊喜往往出现在两者不经意的配合里——生成器学会了怎样在噪声中捕捉纹理,判别器则发现了哪些细节是人眼最敏感的。只要继续调教,这场对弈永远不会真正结束。

参与讨论

21 条评论