3

GAN(三)——GAN的评估指标, DCGAN, WGAN-GP, CGAN, BEGAN & EBGAN

 2 years ago
source link: http://antkillerfarm.github.io/gan%20&%20vae/2019/04/18/GAN_3.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

GAN进阶

GAN的理论解释

顾险峰教授对GAN提出了自己的理论解释。

顾险峰,1989年考入清华大学计算机科学与技术系。1992年获得清华大学特等奖学金。后于美国哈佛大学获得计算机博士学位,师从国际著名微分几何大师丘成桐先生。目前为美国纽约州立大学石溪分校计算机系终身教授。

https://mp.weixin.qq.com/s/7O0AKIUVYK7HRyvdRbUVkg

虚构的对抗,GAN with the wind

https://mp.weixin.qq.com/s/trvMOTXNs7L6fSmTkZXwsA

看穿机器学习(W-GAN模型)的黑箱

https://mp.weixin.qq.com/s/thcxsBVttSIEzVNLQlAVCA

看穿机器学习的黑箱(II)

https://mp.weixin.qq.com/s/Jx0o17CwlIVcRV22PXk4wQ

看穿机器学习的黑箱(III)

https://mp.weixin.qq.com/s/ecqPzcSa75U9n4BcvnNJ_Q

GAN模式崩溃的理论解释

GAN的评估指标

尽管可用的GAN模型非常多,但对它们的评估仍然主要是定性评估,通常需要借助人工检验生成图像的视觉保真度来进行。此类评估非常耗时,且主观性较强、具备一定误导性。鉴于定性评估的内在缺陷,恰当的定量评估指标对于GAN的发展和更好模型的设计至关重要。

《An empirical study on evaluation metrics of generative adversarial networks》

这篇论文是GAN评估指标方面的综述文章。

上图是该文给出的各种常见评估指标的体系结构图。

Inception Score

《Improved Techniques for Training GANs》

Inception来源于Google的Inception Net,因为计算这个score需要用到Inception Net-V3。

评价一个生成模型,我们需要考验它两方面性能:

1.生成的图片是否清晰;

2.生成的图片是否多样。

生成的图片不够清晰,显然说明生成模型表现欠佳;生成的图片够清晰了,我们还要看是不是能生成足够多样的图片,有些生成模型只能生成有限的几种清晰图片,陷入了所谓mode collapse,也不是好的模型。


mode collapse(模式坍塌),即生成高度相似的样本。

假设某个data distribution有两个模式(如上图所示),generator可能就只学到一个mode,另一个mode则完全没学到。

https://mp.weixin.qq.com/s/A7NBKV6puxqI2xCghktA9Q

什么是模式崩溃,以及如何从优化目标上解决这个问题

https://mp.weixin.qq.com/s/QFCJ7BxNvfj2L9Wlr6aq9A

解决模式崩溃的两条思路:改进优化和网络架构


针对这两方面,IS的思路如下:

1.清晰度:把生成的图片x输入Inception V3中,将输出1000维的向量y,向量的每个维度的值对应图片属于某类的概率。对于一个清晰的图片,它属于某一类的概率应该非常大,而属于其它类的概率应该很小。即p(y∣x)的熵应该很小。

2.多样性:如果一个模型能生成足够多样的图片,那么它生成的图片在各个类别中的分布应该是平均的,假设生成了10000张图片,那么最理想的情况是,1000 类中每类生成了10张。即p(y)的熵很大(熵代表混乱度,均匀分布的混乱度最大)。

IS的计算方法:

IS(G)=exp⁡(Ex∼pgDKL(p(y∣x)‖p(y)))

由于生成器的分布并不能精确得到,这里将用采样来近似分布。因此,IS的最终计算方法为:

p^(y)=1N∑i=1Np(y∣x(i))IS(G)≈exp⁡(1N∑i=1NDKL(p(y∣x(i))‖p^(y)))

这里的N表示生成图片的数量。

IS是早期的评估指标,它也有很多问题。例如:均匀分布U(−100,100),正态分布N(0,20),因为它们都可以得到H(y)=log⁡2(关于坐标原点对称,所以生成两类的概率相同),同时得到一个很小的H(y∣x)=0(最优判别器下,大于0的数对应的概率都很大,小于0的数,概率都很小)。反而真正的分布,左右两个正态分布对应的Inception Score小于前面这些分布。

除了这些特例之外,IS本身的假设也有站不住脚的地方:

1.是否越真实的图片,分类网络输出的概率分布函数越尖锐?显然是不见得的,如果某一个物体所属的类别在分类网络中并不存在,那么它的分布函数依然尖锐吗?

2.是否输出图片均匀地覆盖每个类别,就意味着生成模型不存在mode collapse?Inception net输出1000类,假设生成模型在每类上都生成了50个图片,那么生成的图片的类别边缘分布是严格均匀分布的,按照Inception Score的假设,这种模型不存在mode collapse,但是,如果各类中的50个图片,都是一模一样的,仍然是mode collapse。Inception Score无法检测这种情况。

本质上来说,计算IS时只考虑了生成样本,没有考虑真实数据,即IS无法反映真实数据和样本之间的距离,IS判断数据真实性的依据,源于Inception V3的训练集:ImageNet,在Inception V3的“世界观”下,凡是不像ImageNet的数据,都是不真实的,不能保证输出一个sharp的predition distribution。

相关代码:

https://github.com/sbarratt/inception-score-pytorch

Fréchet Inception Distance(FID)计算了真实图片和假图片在feature层面的距离,其公式如下:

FID=‖μr−μg‖2+Tr(Σr+Σg−2(ΣrΣg)1/2)

μr:真实图片的特征的均值。

μg:生成的图片的特征的均值。

Σr:真实图片的特征的协方差矩阵。

Σg:生成图片的特征的协方差矩阵。

https://mp.weixin.qq.com/s/EPwsQ_005CYNlCK_82SYWQ

六种GAN评估指标的综合评估实验,迈向定量评估GAN的重要一步

https://mp.weixin.qq.com/s/WTvJjiF8fkXWKW7rI9Uvug

全面解析Inception Score原理及其局限性

https://zhuanlan.zhihu.com/p/54213305

Fréchet Inception Distance(FID)

https://mp.weixin.qq.com/s/jGSqB6UpCeQo8FC219TWbQ

学习GAN模型量化评价,先从掌握FID开始吧

https://mp.weixin.qq.com/s/tV3ymNXo6xmXFu3K1AJYJQ

最早被用于评价GAN模型的定量指标Inception Score是什么

https://mp.weixin.qq.com/s/kHBPGq2z1IaKUFQe4WKd3Q

长文综述解读如何定量评价生成对抗网络(GAN)

DCGAN

《Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks》

DCGAN的改进主要是:

1.使用步长卷积代替上采样层,卷积在提取图像特征上具有很好的作用,并且使用卷积代替全连接层。

2.不使用pooling层。

3.上图是G网络的结构图,而D网络和G网络的结构基本是对称的。

4.在判别器中使用leakrelu激活函数,而不是RELU,防止梯度稀疏,生成器中仍然采用relu,但是输出层采用tanh。

https://mp.weixin.qq.com/s/Dz5c32SnM8-Pdjb9oWxZ_Q

想实现DCGAN?从制作一张门票谈起!

https://mp.weixin.qq.com/s/ouLWl623r_YaZdIdpqSWcw

深度卷积对抗生成网络(DCGAN)实战

https://mp.weixin.qq.com/s/qvNT_QjQh0NkDl6bgsnfwg

DCGAN

WGAN-GP

《Improved Training of Wasserstein GANs》

在某些情况下,weight clipping会导致weight集中在两端,这样整个网络就退化成二值网络了。为了改善这一点,WGAN-GP提出了一种叫做gradient penalty的办法,来取代weight clipping。

weight clipping对于超出limit的值,采用了简单粗暴clipping方式。而gradient penalty则偏于软性的“惩罚”,也就是说:对于超出limit的值,允许其存在,但要惩罚一下,使之靠近limit。距离越远,惩罚力度越大。

Lipschitz约束只关心所有的梯度都小于C,但C的值是多少,其实并不care。gradient penalty虽然并不能把所有值都约束在limit之内,但是梯度总归不会是无穷大,因此还是满足Lipschitz约束的。

WGAN-GP只是对于梯度的模大于1的区域的x作出了惩罚,它并没有保证每一个x的梯度的模都小于或等于1,也就是说它并没有从根本上解决判别器的1-Lipschitz限制问题。针对这个问题,后来又有了Spectral Normalization GAN。

https://mp.weixin.qq.com/s/aSQ2-QxbToGF0ROyjxw2yw

萌物生成器:如何使用四种GAN制造猫图

https://mp.weixin.qq.com/s/h7lrJYQ_RqJDako8UoYK-A

六种改进均未超越原版:谷歌新研究对GAN现状提出质疑

《Conditional Generative Adversarial Nets》

GAN不仅可用于无监督学习,也可用于有监督学习。Conditional GAN中的Condition实际上就是监督学习中的类别信息。

GAN首先是个生成模型,类别信息对于GAN的意义在于:我不仅可以生成和数据集中样本类似的fake data,而且还可以指定它的类别。

以MNIST数据集为例,GAN能生成数字,但生成之前,无法知道是哪个数字,而CGAN则可以按需生成。

类别信息和随机噪声的融合,可以采用组合编码(combined embedding)的方式,也可以采用hadamard product之类的互相关操作。

从数学角度看,GAN拟合的是p(data),而CGAN拟合的是条件概率p(data∣c)。

CGAN的D网络,除了预测数据的真假之外,还要预测数据的类别。

上图展示了监督学习(图左二)、GAN(图左三)和CGAN(图左四)的效果:

1.监督学习一般采用MSE loss,它学习到的往往是若干训练图片的平均值,所以生成的图片比较模糊。

2.GAN生成的图片细节较多,但是只保留了训练数据的语义信息,而忽略了具体内容。这里的语义信息,指的是高层级的抽象,比如都是狗图片(语义相同),内容却可以千差万别。

3.CGAN较好的解决了监督学习和GAN的结合问题,即保留了语义,也保留了内容。

https://mp.weixin.qq.com/s/0fr6H5xGxmFoNuSxs7z7bQ

ACGAN

https://mp.weixin.qq.com/s/oQpDW1oHIVZlvjTZm_AuYg

ACGAN

EBGAN & BEGAN

《Energy-based Generative Adversarial Network》

《BEGAN: Boundary Equilibrium GenerativeAdversarial Networks》

这两篇论文的思路(包括名字)都差不多,都是从AutoEncoder中获取的灵感,这里就放在一起讲了。

AutoEncoder包含两个部分:

1.Encoder。将图片编码为tensor。

2.Decoder。将tensor解码为图片。

对于原始的GAN来说,G网络和Decoder的结构类似,而D网络和Encoder的结构类似。所以整个网络D(G(z))就像是一个反着接的AutoEncoder。


Recommend

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK