Improved Techniques for Training GANs

  训练GANs 其实是一个找纳什均衡的问题。但是找高维连续非凸问题的纳什均衡点是很困难的。而且,在GAN的训练中我们通常是通过梯度下降法来最小化代价函数的,而不是去找纳什均衡点,所以我们经常会碰到无法收敛的情况。

  所以我们提出了几个有助于收敛的技术:

1.Feature matching(更好的分类效果)

   生成器弃用了之前最大化判别器输出的目标函数。具体化了生成器的目标函数,克服了之前的损失函数存在的过度训练判别器后产生的问题。

  生成器把判别器的中间层输出作为目标,尽量使生成样本的中间输出和真实样本的中间输出相似。目标函数如下:

    

2.Minibatch discrimination(更好的视觉上的生成结果)

   GAN的一个常见的失败就是收敛到同一个点。这是因为判别器是对每一个样本单独处理的,他们之间没有联系,判别器也无法告诉生成器它生成的样本是不是相似的。生成器所有输出都是朝着一个目标走的:让判别器认为它是真的 。

 这里我们引入了side information,让D能够看到更多的信息,从而可以指导G它生成的样本是否相似。

在判别器中加入如下结构:

  

  xi是输入向量(第i个样本的特征向量)。

  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。

 

 

分类预测结果:

 

 

 

 

 

 

 

posted on 2017-10-27 17:14  J_K_Guo  阅读(1025)  评论(0编辑  收藏  举报