[论文笔记]:Least Squares Generative Adversarial Networks


论文地址:
https://arxiv.org/abs/1611.04076v3

代码地址:
https://github.com/Hansry/PyTorch-GAN
https://github.com/hwalsuklee/tensorflow-generative-model-collections
https://github.com/guojunq/lsgan

https://github.com/wiseodd/generative-models
补充材料:
https://www.cntofu.com/book/85/index.html


在这里插入图片描述


内容总结

1. 前言

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

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

  1. 避免梯度消失
    文章指出,GANs包含两个部分:判别器和生成器。传统的GAN在使用生成的“fake”图片(已被Discriminator分类为正样本) 来更新Generator的参数的时候,会造成梯度消失,尽管该生成的"fake"图片数据离真实样本的数据还有一定的距离。
    本文作者认为以交叉熵作为损失,会使得生成器不会再优化那些被判别器识别为真实图片的生成图片,即使这些生成图片距离判别器的决策边界仍然很远,也就是距真实数据比较远。这意味着生成器的生成图片质量并不高。为什么生成器不再优化优化生成图片呢?是因为生成器已经完成我们为它设定的目标——尽可能地混淆判别器,所以交叉熵损失已经很小了。
    当使用最小二乘来作为Discriminator的代价函数的时候,最小二乘会将生成的“fake”图片拉向决策边界,这里的决策边界穿过真实样本,可以使得LSGANs生成的图片更接近真实的数据。如文章中下图所示:
    在这里插入图片描述
    两种不同损失函数的区别:(a)上图蓝色线代表交叉熵代价函数的Sigmoid决策边界,红色线代表最小二乘的决策边界。值得注意的是,对于成功的GANs学习过程,决策边界应该穿过真实样本分布,除非学习过程已经饱和了。(b)对于Sigmoid 交叉熵损失函数,当生成的“fake”图片被归类在决策边界正确的一边的时候(correct side),得到的误差非常小以至于不能更新Generator,尽管这些数据离决策边界很远,也即离真实样本很远。最小二乘损失函数会惩罚离决策边界很远的数据,使之朝着决策边界迈进,避免了梯度消失。

补充:作者是把决策边界作为中介,认为生成图片和真实数据之间的距离可以由生成图片和决策边界之间的距离来反映。这是因为学到的决策边界必须穿过真实数据点,否则就是学习过程饱和了。在未来工作中作者也提到可以改进的一点就是直接把生成图片拉向真实数据,而不是拉向决策边界。

  1. 使训练过程更加稳定
    由于GANs学习过程不稳定导致GANs训练困难。特别的,对于传统的由于其存在梯度消失的问题,所以很难更新Generator,造成训练困难。而LSGANs基于离边界的距离而对生成的样本进行惩罚,一定程度上避免了梯度消失,减缓了训练困难的问题。sigmoid交叉熵损失很容易就达到饱和状态(饱和是指梯度为0),而最小二乘损失只在一点达到饱和。
    在这里插入图片描述
    上图中,(a) 为Sigmoid交叉熵损失函数; (b)为最小二乘损失函数。

文章的贡献:

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

2. 传统的GAN

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

min ⁡ G max ⁡ D V G A N ( D , G ) = E x ∼ p d a t a ( x ) [ l o g D ( x ) ] + E z ∼ p z ( z ) [ l o g ( 1 − D ( G ( z ) ) ) ] \min_G\max_D V_{GAN}(D,G)=E_{x\sim p_{data}(x)}[logD(x)]+E_{z\sim p_{z}(z)}[log(1-D(G(z)))] GminDmaxVGAN(D,G)=Expdata(x)[logD(x)]+Ezpz(z)[log(1D(G(z)))]

这里稍微解释下:

  • 整个式子由两项构成。 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)会变小。因此我们看到式子的最前面的记号是 min ⁡ 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 \max_D maxD

3. Least Squares Loss

LSGANs在Discriminator上使用a-b编码策略

  • a:代表 “fake” 数据;
  • b:代表 “real” 数据;
  • c:代表生成器为了让判断器认为生成的数据是真实分布数据而定的值。

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_{LSGAN}(D)=\frac{1}{2}E_{x\sim p_{data}(x)[(D(x)-b)^2]}+\frac{1}{2}E_{z\sim p_{z}(z)[(D(G(z))-a)^2]} DminVLSGAN(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 ∼ p z ( z ) [ ( D ( G ( z ) ) − c ) 2 ] \min_G V_{LSGAN}(G)=\frac{1}{2}E_{z\sim p_{z}(z)[(D(G(z))-c)^2]} GminVLSGAN(G)=21Ezpz(z)[(D(G(z))c)2]

作者证明了上述优化目标函数在 a − c = 1 a−c=1 ac=1 a − b = 2 a−b=2 ab=2的情况下等价于最小化 p r + p g p_r+p_g pr+pg 2 p g 2pg 2pg之间的Pearson卡方散度。在文章中作者设置 a = c = 1 , b = 0 a=c=1,b=0 a=c=1b=0

同时在文章中,作者列出了传统的GAN,其实在优化的是JS散度,具体参考Wasserstein GAN

C ( G ) = K L ( p d a t a ∥ p d a t a + p g 2 ) + K L ( p g ∥ p d a t a + p g 2 ) − l o g ( 4 ) C(G)=KL(p_{data}\parallel \frac{p_{data}+p_g}{2})+KL(p_g\parallel \frac{p_{data}+p_g}{2})-log(4) C(G)=KL(pdata2pdata+pg)+KL(pg2pdata+pg)log(4)

上式可以化为JS散度: C ( G ) = 2 J S ( P d a t a ∥ P g ) − 2 l o g 2 C(G)=2JS(P_{data}\parallel P_g)−2log2 C(G)=2JS(PdataPg)2log2。当两个分布没有重叠或者重叠部分可忽略的时候, J S ( P d a t a ∥ P g ) = 0 JS(P_{data}\parallel P_g)=0 JS(PdataPg)=0,此时的梯度就变为0了。

因此,对于作者提出的LSGANs, 研究了LSGANs损失函数和f散度 (f-divergence)之间的联系:

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_{LSGAN}(D)=\frac{1}{2}E_{x\sim p_{data}(x)[(D(x)-b)^2]}+\frac{1}{2}E_{z\sim p_{z}(z)[(D(G(z))-a)^2]} DminVLSGAN(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 x ∼ p d a t a ( x ) [ ( D ( x ) − c ) 2 ] + 1 2 E z ∼ p z ( z ) [ ( D ( G ( z ) ) − c ) 2 ] \min_G V_{LSGAN}(G)=\frac{1}{2}E_{x\sim p_{data}(x)[(D(x)-c)^2]}+\frac{1}{2}E_{z\sim p_{z}(z)[(D(G(z))-c)^2]} GminVLSGAN(G)=21Expdata(x)[(D(x)c)2]+21Ezpz(z)[(D(G(z))c)2]

V L S G A N ( G ) V_{LSGAN}(G) VLSGAN(G)中添加 E x ∼ p d a t a ( x ) [ ( D ( x ) − c ) 2 ] E_{x\sim p_{data}(x)[(D(x)-c)^2]} Expdata(x)[(D(x)c)2]并不会影响优化过程,因为添加的项中没有包含关于G的内容。

对D求导数,得到 D ∗ ( x ) = b p d a t a ( x ) + a p g ( x ) p d a t a ( x ) + p g ( x ) D^*(x)=\frac{bp_{data}(x)+ap_g(x)}{p_{data}(x)+p_g(x)} D(x)=pdata(x)+pg(x)bpdata(x)+apg(x)

因此,我们可以得到

2 C ( G ) = E x ∼ p d [ ( D ∗ ( x ) − c ) 2 ] + E x ∼ p g [ ( D ∗ ( x ) − c ) 2 ] = E x ∼ p d [ ( b p d ( x ) + a p g ( x ) p d ( x ) + p g ( x ) − c ) 2 ] + E x ∼ p g [ ( b p d ( x ) + a p g ( x ) p d ( x ) + p g ( x ) − c ) 2 ] = ∫ χ p d ( x ) ( ( b − c ) p d ( x ) + ( a − c ) p g ( x ) p d ( x ) + p g ( x ) ) 2 d x + ∫ χ p g ( x ) ( ( b − c ) p d ( x ) + ( a − c ) p g ( x ) p d ( x ) + p g ( x ) ) 2 d x = ∫ χ ( ( b − c ) p d ( x ) + ( a − c ) p g ( x ) ) 2 p d ( x ) + p g ( x ) d x = ∫ χ ( ( b − c ) ( p d ( x ) + p g ( x ) ) − ( b − a ) p g ( x ) ) 2 p d ( x ) + p g ( x ) d x \begin{aligned} 2C(G) & = E_{x\sim p_d[(D^*(x)-c)^2]}+E_{x\sim p_g[(D^*(x)-c)^2]} \\ & = E_{x\sim p_d}[(\frac{bp_{d}(x)+ap_g(x)}{p_{d}(x)+p_g(x)}-c)^2]+E_{x\sim p_g}[(\frac{bp_{d}(x)+ap_g(x)}{p_{d}(x)+p_g(x)}-c)^2] \\ & = \int_\chi p_d(x)(\frac{(b-c)p_{d}(x)+(a-c)p_g(x)}{p_{d}(x)+p_g(x)})^2 dx+\int_\chi p_g(x)(\frac{(b-c)p_{d}(x)+(a-c)p_g(x)}{p_{d}(x)+p_g(x)})^2 dx \\ & = \int_\chi \frac{((b-c)p_{d}(x)+(a-c)p_g(x))^2}{p_{d}(x)+p_g(x)}dx \\ & = \int_\chi \frac{((b-c)(p_{d}(x)+p_{g}(x))-(b-a)p_g(x))^2}{p_{d}(x)+p_g(x)}dx \end{aligned} 2C(G)=Expd[(D(x)c)2]+Expg[(D(x)c)2]=Expd[(pd(x)+pg(x)bpd(x)+apg(x)c)2]+Expg[(pd(x)+pg(x)bpd(x)+apg(x)c)2]=χpd(x)(pd(x)+pg(x)(bc)pd(x)+(ac)pg(x))2dx+χpg(x)(pd(x)+pg(x)(bc)pd(x)+(ac)pg(x))2dx=χpd(x)+pg(x)((bc)pd(x)+(ac)pg(x))2dx=χpd(x)+pg(x)((bc)(pd(x)+pg(x))(ba)pg(x))2dx

这是在Discriminator达到最优的时候,Generator的损失函数,如果设 b − c = 1 b−c=1 bc=1 b − a = 2 b−a=2 ba=2的话,有:

2 C ( G ) = ∫ χ ( 2 p g ( x ) − ( p d ( x ) + p g ( x ) ) ) 2 p d a t a ( x ) + p g ( x ) d x = χ P e a r s o n 2 ( p d + p g ∥ 2 p g ) \begin{aligned} 2C(G) & = \int_\chi \frac{(2p_g(x)-(p_d(x)+p_g(x)))^2}{p_{data}(x)+p_g(x)}dx \\ & = \chi^2_{Pearson}(p_d+p_g\parallel2p_g) \end{aligned} 2C(G)=χpdata(x)+pg(x)(2pg(x)(pd(x)+pg(x)))2dx=χPearson2(pd+pg2pg)

其中 χ P e a r s o n 2 \chi^2_{Pearson} χPearson2为Pearson χ 2 \chi^2 χ2 divergence(皮尔森散度),因此在最优化 D D 的情况下将优化变为了Pearson χ 2 \chi^2 χ2 divergence,避免了使用JS散度下造成的梯度为0,其中需要满足 b − c = 1 b-c=1 bc=1 b − a = 2 b-a=2 ba=2。最小化皮尔森 χ 2 \chi^2 χ2散度(Pearson χ 2 \chi^2 χ2 散度)。

4. 搭建的网络

在这里插入图片描述
在这里插入图片描述
两种参数选择:

a = − 1 , b = 1 , c = 0 a=-1,b=1,c=0 a=1b=1c=0
min ⁡ D V L S G A N ( D ) = 1 2 E x ∼ p d a t a ( x ) [ ( D ( x ) − 1 ) 2 ] + 1 2 E z ∼ p z ( z ) [ ( D ( G ( z ) ) + 1 ) 2 ] \min_D V_{LSGAN}(D)=\frac{1}{2}E_{x\sim p_{data}(x)[(D(x)-1)^2]}+\frac{1}{2}E_{z\sim p_{z}(z)[(D(G(z))+1)^2]} minDVLSGAN(D)=21Expdata(x)[(D(x)1)2]+21Ezpz(z)[(D(G(z))+1)2]
min ⁡ G V L S G A N ( G ) = 1 2 E z ∼ p z ( z ) [ ( D ( G ( z ) ) ) 2 ] \min_G V_{LSGAN}(G)=\frac{1}{2}E_{z\sim p_{z}(z)[(D(G(z)))^2]} minGVLSGAN(G)=21Ezpz(z)[(D(G(z)))2]

a = 0 , b = 1 , c = 1 a=0,b=1,c=1 a=0b=1c=1
min ⁡ D V L S G A N ( D ) = 1 2 E x ∼ p d a t a ( x ) [ ( D ( x ) − 1 ) 2 ] + 1 2 E z ∼ p z ( z ) [ ( D ( G ( z ) ) ) 2 ] \min_D V_{LSGAN}(D)=\frac{1}{2}E_{x\sim p_{data}(x)[(D(x)-1)^2]}+\frac{1}{2}E_{z\sim p_{z}(z)[(D(G(z)))^2]} minDVLSGAN(D)=21Expdata(x)[(D(x)1)2]+21Ezpz(z)[(D(G(z)))2]
min ⁡ G V L S G A N ( G ) = 1 2 E z ∼ p z ( z ) [ ( D ( G ( z ) ) − 1 ) 2 ] \min_G V_{LSGAN}(G)=\frac{1}{2}E_{z\sim p_{z}(z)[(D(G(z))-1)^2]} minGVLSGAN(G)=21Ezpz(z)[(D(G(z))1)2]


参考:

https://www.jianshu.com/p/62b9e0f00305

https://blog.csdn.net/zxcqlf/article/details/89313854

https://blog.csdn.net/Hansry/article/details/83862548

https://www.pianshen.com/article/3388296224/

https://blog.csdn.net/cuihuijun1hao/article/details/83114145

https://www.jiqizhixin.com/articles/2017-03-05

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值