在训练 DC-GAN 时,可以调整哪些参数以避免生成器或判别器损失为零?

人工智能 机器学习 深度学习 卷积神经网络 生成对抗网络 生成模型
2021-11-13 20:16:37

有时,当我在图像数据集上训练 DC-GAN 时,类似于 DC-GAN PyTorch 示例 ( https://pytorch.org/tutorials/beginner/dcgan_faces_tutorial.html ),生成器或判别器都会卡在大值,而另一个变为零。在下面显示的示例损失函数图像中,我应该如何解释迭代 1500 之后发生的事情DC-GAN 训练损失这是模式崩溃的一个例子吗?关于如何使训练更稳定的任何建议?我尝试降低 Adam 优化器的学习率,并取得了不同程度的成功。谢谢!

1个回答

GAN 尤其难以训练,而且损失较大的情况并不少见。学习率是一个好的开始,但不稳定性可能来自多种原因。我假设您的代码或数据中没有错误。

一方面,梯度下降不太适合我们正在玩的 2 人游戏。我个人发现 ExtraAdam 可以产生更稳定的训练(代码论文)。

它也可能来自损失,并且已经开发了许多技巧,其中最受欢迎的技巧之一是在梯度中强制平滑(参见 W-GAN、W-GAN-GP 等)。SpectralNorm(代码 论文)是一种非常流行且最近的判别器归一化技术。

有许多额外的技巧可以使 GAN 工作,例如标签平滑和翻转、鉴别器和生成器的不同更新率(例如在 BigGAN 中)。我建议你看看这个(有些老练的)技巧的好回购:ganhacks