GAN训练时判别器真假样本损失均为0.25不变,判别器过强还是过弱?
判别器损失收敛到0.25的原因分析
这一现象是判别器过强导致的对抗分支失效,本质是用MSELoss作为GAN对抗损失时的典型纳什均衡收敛结果。
- 首先明确
MSELoss作为GANLoss的计算逻辑:在你给真实样本打标签1、生成样本打标签0的前提下,判别器的优化目标是对真实样本输出趋近1,对生成样本输出趋近0;生成器的优化目标是让判别器对生成样本的输出趋近1。 - 当判别器能力远超过生成器时,判别器会进入最优不动点:对所有输入(无论真假)都输出0.5,此时计算真实样本的MSE为
(1-0.5)²=0.25,生成样本的MSE为(0-0.5)²=0.25,和你观测到的收敛值完全匹配。这种状态下判别器的损失已经达到局部最小值,继续训练也不会更新参数,所以真假损失不再变动。 - 此时
SmoothL1Loss仍有变动的原因是你大概率在训练条件类GAN任务,SmoothL1Loss是独立于对抗损失的像素级回归损失,不受判别器停止更新的影响,会继续驱动生成器优化像素层面的拟合效果,但对抗分支已经完全失去作用。
修复方案参考:
- 降低判别器的学习率,或调整训练频次(比如每训练2次生成器再训练1次判别器),平衡生成器和判别器的优化速度
- 给判别器加入标签平滑、Dropout层或权重衰减正则项,削弱判别器的拟合能力
- 替换
MSELoss为标准交叉熵GAN损失或WGAN-GP损失,避免MSELoss容易出现的梯度消失、过早收敛问题
内容的提问来源于stack exchange,提问作者Antonaaa
相关产品推荐
相关产品推荐

