LSGAN (Least Squares Generative Adversarial Networks)

Paper: https://arxiv.org/pdf/1611.04076.pdf
Github:
https://github.com/Hansry/PyTorch-GAN

1.前言

传统GAN出现的问题: 传统GAN, 将Discriminator当作分类器,最后一层使用Sigmoid函数,使用交叉熵函数作为代价函数,容易出现梯度消失和collapse mode等问题,具体原因参考本博客Wasserstein GAN
LSGAN主要解决关键: 使用最小二乘损失代替交叉熵损失,解决了传统GAN生成的图片质量不高以及训练过程不稳定这俩个缺陷。

为什么使用最小二乘法能够改善传统GAN存在的问题?

1.避免梯度消失
文章指出,传统的GAN在使用生成的“fake”图片(已被Discriminator分类为正样本) 来更新Generator的参数的时候,会造成梯度消失,尽管该生成的"fake"图片数据离真实样本的数据还有一定的距离。当使用最小二乘来作为Discriminator的代价函数的时候,最小二乘会将生成的“fake”图片拉向决策边界,这里的决策边界穿过真实样本,可以使得LSGANs生成的图片更接近真实的数据。如文章中下图所示:
在这里插入图片描述
俩种不同损失函数的区别:(a)上图蓝色线代表交叉熵代价函数的Sigmoid决策边界,红色线代表最小二乘的决策边界。值得注意的是,对于成功的GANs学习过程,决策边界应该穿过真实样本分布,除非学习过程已经饱和了。(b)对于Sigmoid 交叉熵损失函数,当生成的“fake”图片被归类在决策边界正确的一边的时候(correct side),得到的误差非差小以至于不能更新Generator,尽管这些数据离决策边界很远,也即离真实样本很远。©最小二乘损失函数会惩罚离决策边界很远的数据,使之朝着决策边界迈进,避免了梯度消失。

2.使训练过程更加稳定

由于GANs学习过程不稳定导致GANs训练困难。特别的,对于传统的由于其存在梯度消失的问题,所以很难更新Generator,造成训练困难。而LSGANs基于离边界的距离而对生成的样本进行惩罚,一定程度上避免了梯度消失,减缓了训练困难的问题。

在这里插入图片描述
上图中,(a) 为Sigmoid交叉熵损失函数; (b)为最小二乘损失函数

文章的贡献:

  • 提出最小二乘损失函数,在最小化LSGAN目标函数的时候也在最小化皮尔森 χ 2 \chi ^ { 2 } χ2散度(Pearson χ 2 \chi ^ { 2 } χ2 散度)。
  • 设计了俩种LSGANs, 其中一个用于图片生成(112x112分别率),可生成高质量的图片。另一网络用于多类别任务,文章使用了中国字作为测试。

2. 传统的GAN

GAN的学习过程即同时训练Discriminator (D)和Generator (G)的过程,G从高斯分布的变量 z z z, 学习潜在变量 θ g \theta _ { g } θg,来产生分布 p g p_{g} pg,使得该分布与真实分布越接近越好。因此,G学习的是一个映射过程,通过 G ( z ; θ g ) G \left( \boldsymbol { z } ; \theta _ { g } \right) G(z;θg)变量映射空间来产生分布。另一方方面,D是一个分类器,来判断G产生的分布是否与真实样本接近,通过变量空间 D ( x ; θ d ) D \left( \boldsymbol { x } ; \theta _ { d } \right) D(x;θd)判断是否一样,同样的也是一个映射。传统GAN的代价函数如下:

min ⁡ G max ⁡ D V G A N ( D , G ) = E x ∼ p d a t a ( x ) [ log ⁡ D ( x ) ] + E z ∼ p z ( z ) [ log ⁡ ( 1 − D ( G ( z ) ) ) ] \min _ { G } \max _ { D } V _ { \mathrm { GAN } } ( D , G ) = \mathbb { E } _ { \boldsymbol { x } \sim p _ { data } ( \boldsymbol { x } ) } [ \log D ( \boldsymbol { x } ) ] + \mathbb { E } _ { \boldsymbol { z } \sim p _ { \boldsymbol { z } } ( \boldsymbol { z } ) } [ \log ( 1 - D ( G ( \boldsymbol { z } ) ) ) ] minGmaxDVGAN(D,G)=Expdata(x)[logD(x)]+Ezpz(z)[log(1D(G(z)))] (公式1)

这里稍微解释下:

  • 整个式子由两项构成。 x x x表示真实图片, z z z表示输入 G G G网络的噪声或者高斯分布数据,而 G ( z ) G(z) G(z)表示 G G G网络生成的图片。
  • D ( x ) D(x) D(x)表示 D D D网络判断真实图片是否真实的概率(因为 x x x就是真实的,所以对于 D D D来说,这个值越接近1越好)。而 D ( G ( z ) ) D(G(z)) D(G(z)) D D D网络判断 G G G生成的图片的是否真实的概率。
  • G G G的目的: D ( G ( z ) ) D(G(z)) D(G(z)) D D D网络判断 G G G生成的图片是否真实的概率, G G G应该希望自己生成的图片“越接近真实越好”。也就是说, G G G希望 D ( G ( z ) ) D(G(z)) D(G(z))尽可能得大,这时 V ( D , G ) V(D, G) V(D,G)会变小。因此我们看到式子的最前面的记号是 m i n G min_G minG
  • D D D的目的: D D D的能力越强, D ( x ) D(x) D(x)应该越大, D ( G ( x ) ) D(G(x)) D(G(x))应该越小。这时 V ( D , G ) V(D,G) V(D,G)会变大。因此式子对于 D D D来说是求最大(max_D)

3. Least Squares Generative Adversarial Networks

LSGANs在Discriminator上使用a-b编码策略,简单来说就是用a来代表“fake”数据,用b来代表“real”数据。LSGANs的目标函数为:

min ⁡ D V L S G A N ( D ) = 1 2 E x ∼ p d a t a ( x ) [ ( D ( x ) − b ) 2 ] + 1 2 E z ∼ p z ( z ) [ ( D ( G ( z ) ) − a ) 2 ] \min _ { D } V _ { \mathrm { LSGAN } } ( D ) = \frac { 1 } { 2 } \mathbb { E } _ { \boldsymbol { x } \sim p _ { \mathrm { data } } ( \boldsymbol { x } ) } \left[ ( D ( \boldsymbol { x } ) - b ) ^ { 2 } \right] + \frac { 1 } { 2 } \mathbb { E } _ { \boldsymbol { z } \sim p _ { \boldsymbol { z } } ( \boldsymbol { z } ) } \left[ ( D ( G ( \boldsymbol { z } ) ) - a ) ^ { 2 } \right] minDVLSGAN(D)=21Expdata(x)[(D(x)b)2]+21Ezpz(z)[(D(G(z))a)2]

min ⁡ G V L S G A N ( G ) = 1 2 E z ∼

  • 4
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值