Abstract: ICCV2017的一篇文章,介绍判别器的损失函数为least square loss的GAN。
paper: https://arxiv.org/abs/1611.04076
code : https://github.com/xudonmao/LSGAN
简介
传统的GAN的判别器(discriminator)使用sigmoid cross entropy loss,导致训练过程中容易出现梯度消失(vanishing gradients)的问题,故本文提出使用least square loss。上图左边是使用sigmoid cross entropy loss的分类结果,右边是使用least square loss的分类结果。左图下方粉红色的生成/伪造点被分类器分为正类且距离分类面较远,因此在该loss下容易出现梯度消失,从而导致生成器基本不更新。右图中尽管下方粉红色的生成/伪造点被分类器分为正类,但是由于使用least square loss,距离分类面越远对应的loss也会越大,从而克服梯度消失的问题。
文章主要贡献为:
- 对GAN的判别器使用least squares loss,有点在于生成的图片更加清晰,而且训练过程更加稳定。
- 提出两种LSGAN的网络结构,一个用于生成112x112分辨率的图片,另一个用于多类别的图像生成。
方法
LSGAN的目标函数为:
$$
\begin{align}
\mathop{\min}_{D}V_{LSGAN}(D) &=\frac{1}{2}\mathbb{E}_{x\sim p_{data}(x)}[(D(x)-b)^2]+\frac{1}{2}\mathbb{E}_{z\sim p_{z}(z)}[(D(G(z))-a)^2] \\
\mathop{\min}_{G}V_{LSGAN}(G) &=\frac{1}{2}\mathbb{E}_{z\sim p_{z}(z)}[(D(G(z))-c)^2]
\end{align}
$$
其中,c代表G想要使D将它生成的数据判定为什么标签。
随后作者说明了在什么条件下优化问题的目标函数等价为Pearson $X^2$ divergence。
实验中,作者取a=0, b=c=1。网络结构
(1) LSGAN(2) 多类别LSGAN:为避免使用one-hot表示的标签向量因为类别过多而占用存储等,因此使用一个fc进行线性映射,将汉字生成例子中的3740类one-hot标签映射为256维的向量。
实验
作者采用DCGAN的代码进行修改使用,在数据集LSUN和HWDB1.0上进行实验。此外,作者还进行了普通GAN与LSGAN、是否包含BN层、使用Adam或者RMSProp优化器的对比实验,说明了LSGAN训练的稳定性以及不容易发生mode collapse。