训练GANs 实际上是一个找纳什均衡的问题。可是找高维连续非凸问题的纳什均衡点是很困难的。并且,在GAN的训练中咱们一般是经过梯度降低法来最小化代价函数的,而不是去找纳什均衡点,因此咱们常常会碰到没法收敛的状况。网络
因此咱们提出了几个有助于收敛的技术:ide
1.Feature matching(更好的分类效果)函数
生成器弃用了以前最大化判别器输出的目标函数。具体化了生成器的目标函数,克服了以前的损失函数存在的过分训练判别器后产生的问题。学习
生成器把判别器的中间层输出做为目标,尽可能使生成样本的中间输出和真实样本的中间输出类似。目标函数以下:优化
2.Minibatch discrimination(更好的视觉上的生成结果)spa
GAN的一个常见的失败就是收敛到同一个点。这是由于判别器是对每个样本单独处理的,他们之间没有联系,判别器也没法告诉生成器它生成的样本是否是类似的。生成器全部输出都是朝着一个目标走的:让判别器认为它是真的 。3d
这里咱们引入了side information,让D可以看到更多的信息,从而能够指导G它生成的样本是否类似。orm
在判别器中加入以下结构:blog
xi是输入向量(第i个样本的特征向量)。it
f(xi)是判别器中间层的输出向量。
每一个样本通过T以后都能获得各自的矩阵Mi,计算当前样本矩阵Mi中每行同其它各个样本的Mj之间对应行的L1距离,并通过一个负指数获得一系列的值,把每行对应的值加起来,最终获得一个输出向量。
把o(xi)和f(xi)连起来构成side information做为下一层的输入(这里的o(xi)至关于CGAN中的conditional)。随后的D仍旧是对单个样本进行判别,可是用到了包含其余样本的信息。
3.Historical averaging
添加了一个正则化项:
:参数theta和它们过去时候的值有关。
有了这个正则化项,梯度不容易进入稳定轨道,可以继续向均衡点更新。
对低维连续非凸问题处理的比较好。
4.One-sided label smoothing
判别器的目标函数中正负样本的系数再也不是0-1,而是α和β。这样最优判别器就变成了:
当Pdata接近0,Pmodel很大的时候,D(x)很小,优化时梯度信息太弱,所以负样本beta取0;
5.Virtual batch normalization
BN存在的问题:输入样本x在神经网络上的输出会受到minibatch上其它样本的影响。
文中提出了一种virtual batch normalization(VBN),会在训练前提取一个batch,之后就根据这个batch作normalize,固然这样计算开销会稍微大点。
Semi-supervised learning
对于标准分类网络,咱们的输出是k个类别对应的几率。在这里咱们借助分类网络进行无监督学习。咱们把生成样本当成第K+1类,用x属于k+1类的几率当作x为假的几率。
loss function for training the classifier:
这里的无监督过程至关于训练一个GAN。
实验结果
左边feature matching,右边minibatch discrimination。
分类预测结果:
、