gan判别器的loss接近零_训练GAN,你应该知道的二三事

本文深入探讨了GANs训练过程中判别器loss趋近于零的问题,分析了导致训练不稳定、模式单一和泛化能力差的原因。作者分享了训练GANs的常用策略,包括模型选择、输入和输出层处理、归一化方法、损失函数优化等,旨在帮助改善GANs的训练效果和多样性。
摘要由CSDN通过智能技术生成

作者:追一科技 AI Lab 研究员 Miracle

写在前面的话

笔者接触 GAN 也有一段时间了,从一开始的小白,到现在被 GANs 虐了千百遍但依然深爱着 GANs 的小白,被 GANs 的对抗思维所折服,被 GANs 能够生成万物的能力所惊叹。我觉得 GANs 在某种程度上有点类似于中国太极,『太极生两仪,两仪生四象』,太极阐明了宇宙从无极而太极,以至万物化生的过程,太极也是讲究阴阳调和。(哈哈,这么说来 GANs 其实在中国古代就已经有了发展雏形了。)

众所周知,GANs 的训练尤其困难,笔者自从跳入了 GANs 这个领域(坑),就一直在跟如何训练 GANs 做「对抗训练」,受启发于 ganhacks,并结合自己的经验记录总结了一些常用的训练 GANs 的方法,以备后用。

(⚠️本篇不是 GANs 的入门扫盲篇,初学者慎入。)

什么是 GANs?

GANs(Generative Adversarial Networks)可以说是一种强大的「万能」数据分布拟合器,主要由一个生成器(generator)和判别器(discriminator)组成。生成器主要从一个低维度的数据分布中不断拟合真实的高维数据分布,而判别器主要是为了区分数据是来源于真实数据还是生成器生成的数据,他们之间相互对抗,不断学习,最终达到Nash均衡,即任何一方的改进都不会导致总体的收益增加,这个时候判别器再也无法区分是生成器生成的数据还是真实数据。

GANs 最初由 Ian Goodfellow [1] 于 2014 年提出,目前已经在图像、语音、文字等方面得到广泛研究和应用,特别是在图像生成方面,可谓是遍地开花,例如图像风格迁移(style transfer)、图像修复(image inpainting)、超分辨率(super resolution)等。

GANs 出了什么问题?

GANs 通常被定义为一个 minimax 的过程:

562e7103912ef25bfae06d514185e7bf.png

其中 P_r 是真实数据分布,P_z 是随机噪声分布。乍一看这个目标函数,感觉有点相互矛盾,其实这就是 GANs 的精髓所在—— 对抗训练。

在原始的 GANs 中,判别器要不断的提高判别是非的能力,即尽可能的将真实样本分类为正例,将生成样本分类为负例,所以判别器需要优化如下损失函数:

d9ef73b88a2c16cfcb6b8e79a996d65f.png

作为对抗训练,生成器需要不断将生成数据分布拉到真实数据分布,Ian Goodfellow 首先提出了如下式的生成器损失函数:

9aac5b04503f29e8bcdfd89cea061ff5.png

由于在训练初期阶段,生成器的能力比较弱,判别器这时候也比较弱,但仍然可以足够精准的区分生成样本和真实样本,这样 D(x) 就非常接近1,导致 log(1-D(x)) 达到饱和,后续网络就很难再调整过来。为了解决训练初期阶段饱和问题,作者提出了另外一个损失函数,即:

3fb9f872470fcde0ea44e94a71fd4d1c.png

以上面这个两个生成器目标函数为例,简单地分析一下GAN模型存在的几个问题:

Ian Goodfellow 论文里面已经给出,固定 G 的参数,我们得到最优的 D^*:

ed6ddb0154b159817f8d03704ca96fb6.png

也就是说,只有当 P_r=P_g 时候,不管是真实样本和生成样本,判别器给出的概率都是 0.5,这个时候就无法区分样本到底是来自于真实样本还是来自于生成样本,这是最理想的情况。

1. 对于第一种目标函数

在最优判别器下 D^* 下,我们给损失函数加上一个与 G 无关的项,(3) 式变成:

  • 35
    点赞
  • 72
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
GAN训练时,判别loss一直保持不变可能出现以下几种情况: 1.训练不足:GAN中的生成判别是通过对抗训练来相互学习的。如果训练的迭代次数过少,判别可能还没有能力有效地区分真实样本和生成样本,导致判别loss不变。 2.不平衡的生成判别:在GAN训练过程中,生成判别的学习速度可能不均衡,导致判别loss一直保持不变。这种情况可能是因为生成在一开始还没有学到有效的生成技巧,而判别已经过拟合了。 3.数据集问题:当训练数据集中存在缺乏多样性或不平衡的情况时,判别可能很快学会分辨出真实样本和生成样本的差异,从而导致判别loss一直保持不变。这时候需要考虑重新调整数据集,注重样本的多样性和平衡性。 针对以上情况,可以采取以下对策: 1.增加训练次数:通过增加训练迭代次数,判别有更多机会去学习真实样本和生成样本之间的差异,从而可能改变判别loss。 2.平衡生成判别:通过调整学习率、正则化等方式,平衡生成判别的学习速度,使两者能够相互促进。 3.改变训练数据集:根据实际情况重新选择或增加训练数据集,提高多样性和平衡性,以便训练判别更好地判断真实样本和生成样本的差异。 总结起来,判别loss一直保持不变可能是由于训练不足、不平衡的生成判别以及数据集问题所致。采取相应的对策可以帮助改善这一问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值