深度学习(四十四)——GAN的评估指标, DCGAN, WGAN-GP, CGAN, BEGAN & EBGAN

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 ) p(y\mid x) p(yx)的熵应该很小。

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

IS的计算方法:

I S ( G ) = exp ⁡ ( E x ∼ p g D K L ( p ( y ∣ x ) ∥ p ( y ) ) ) IS(G)=\exp(\mathbb{E}_{x\sim p_g}D_{KL}(p(y \mid x)\|p(y))) IS(G)=exp(ExpgDKL(p(yx)p(y)))

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

p ^ ( y ) = 1 N ∑ i = 1 N p ( y ∣ x ( i ) ) \hat{p}(y)=\frac{1}{N}\sum_{i=1}^N p(y\mid x^{(i)}) p^(y)=N1i=1Np(yx(i))

I S ( G ) ≈ exp ⁡ ( 1 N ∑ i = 1 N D K L ( p ( y ∣ x ( i ) ) ∥ p ^ ( y ) ) ) IS(G)\approx \exp(\frac{1}{N}\sum_{i=1}^ND_{KL}(p(y \mid x^{(i)})\|\hat{p}(y))) IS(G)exp(N1i=1NDKL(p(yx(i))p^(y)))

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

IS是早期的评估指标,它也有很多问题。例如:均匀分布 U ( − 100 , 100 ) U(-100,100) U(100,100),正态分布 N ( 0 , 20 ) N(0, 20) N(0,20),因为它们都可以得到 H ( y ) = log ⁡ 2 H(y)=\log 2 H(y)=log2(关于坐标原点对称,所以生成两类的概率相同),同时得到一个很小的 H ( y ∣ x ) = 0 H(y\mid x)=0 H(yx)=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

FID

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

F I D = ∥ μ r − μ g ∥ 2 + T r ( Σ r + Σ g − 2 ( Σ r Σ g ) 1 / 2 ) FID=\|\mu_r-\mu_g\|^2+Tr\left(\Sigma_r+\Sigma_g-2(\Sigma_r\Sigma_g)^{1/2}\right) FID=μrμg2+Tr(Σr+Σg2(ΣrΣg)1/2)

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

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

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

Σ g \Sigma_g Σ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现状提出质疑

CGAN


论文:

《Conditional Generative Adversarial Nets》

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

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

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

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

从数学角度看,GAN拟合的是 p ( d a t a ) p(data) p(data),而CGAN拟合的是条件概率 p ( d a t a ∣ c ) p(data \mid c) p(datac)

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

在这里插入图片描述

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

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

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

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

参考:

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

CGAN

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。

AutoEncoder:Encoder->Decoder

GAN:Decoder->Encoder

对于生成模型来说,细节是很重要的,然而原始的GAN,通常只能生成模糊的图片。如何提高图片的分辨率呢?

EBGAN将D网络的结构由Encoder改为了Encoder->Decoder(也就是一个AE),即输入和输出都是图片。将Loss由KL散度改为了MSE。

这样的做法可以类比CV中的分类网络和语义分割网络。由于Loss和图片的每个像素都直接相关,因此更利于生成细节信息。

类似的,这里的AE,也可以换成其他Encoder->Decoder网络,例如U-NET。

EBGAN的最大特点就是判别器一开始就非常强(因为有pretrain),因此生成器在一开始就能获得比较大的“能量驱动”(energy based),使得在一开始生成器就进步非常快。所以如果我们比较看中训练效率,希望在短期内获得一个比较不错的生成器的话,就可以考虑EBGAN。

BEGAN则借鉴了EBGAN和WGAN各自的一些优点。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值
>