《GANs实战》学习笔记(五)第五章 训练与普遍挑战:为成功而GAN

GAN(生成对抗网络)出版了一本实战书,了解下?

第五章:训练与普遍挑战:为成功而GAN

GAN在所有生成模式中的位置。

上图中两个关键要点:

(1)所有这些生成模型最终都源自最大似然(Maximum likelihood)

(2)变分自编码器VAE位于显示部分。

从图中可以看出,技术发展,正在从显示和易驾驭的方法转向隐式的方法。这样就会出现一个问题:如果没有显示的损失的函数,如何去评估GAN的效果?

一、评估

如何评估有一个生成方法是好是坏?如何量化生成的质量是好还是坏?

1、评估框架

书中拿仿造达·芬奇画作类比例子。

(1)首先解决方案:是拥有达芬奇用他的风格画出的所有可能的作品,然后看GAN生成图像是否在这个收藏集中。这个过程其实是一个最大化最大似然的非近似版本。意思是穷举,罗列所有。这不现实。

(2)次优解决方案:评估图像并指出对应要检查的地方,然后合计所有错误或伪造的画的数量(比例)。这样做的问题:始终需要人类评论家来审查作品。比如鉴别真假钞票时,需要检查的几个防伪标识。但因为需要鉴别专家,仍然不是一个可以大规模使用的。

(3)因此:要用一种统计方法来评估生成样本的质量,来扩大评估规模并可在实验中使用。如果没有一个易于计算的度量标准,也就无法监控进展。毕竟GAN对超参数非常敏感,因为GAN本身就难以训练又难以评估。

问题?为何不能直接使用已经了解的方法(如上文提到的:最大似然)作为指标呢?

答案:最大似然是统计的方法,可以度量一些模糊的期望,而且不管怎么样都能从中得到隐式的结果。

1、但是最大似然的使用,要对基础分布及其可能性进行正确的估计。(第二章中,我们讲过最大似然估计的缺陷:如果没有事先正确指定模型,估计偏差会非常大。而且很多数据分布会有比想象中更多的模式。最终要的是:有时候维度太高,无法估计。)

2、最大似然估计容易过度泛化,因此导致生成的样本由于太过多样化而显得不真实。(本质是约束条件不足,自由度太高。)。使用最大似然可能会生成现实世界中永远不会出现的样本。

所以需要使用损失函数和评估方法,来淘汰“过于泛化”的样本。

KL散度和JS散度也是基于最大似然的。

用于统计评估生成样本质量的两个最常用且公认的度量标准Inception Score(IS)Fréchet Inception Distance(FID)

2、IS:Inception score

统计评估的要求:

(1)生成的样本要看起来像真实可分辨的东西。不仅要看起来逼真,而且是数据集中的物品分类器确信它看到的就是它识别成的物品,能够将图像分类为某个特定(目标类中)的类别。(分类器就是依据Inception网络命名的。)

(2)生成的样本是多种多样的,并且理想情况下应该包含原始数据集中表示的所有类别。否则就是类间模式崩溃(interclass mode collapse)

计算IS的过程:

(1)采用真实分布和生成分布之间的Kullback-Leibler(KL)差异。

(2)对第1步的结果求指数。

3、FID:Fréchet Inception Distance

评估系统除了解决上面两个问题:逼真和全类别以外,还要解决的第三个问题:生成的样本缺乏多样性。通常,GAN只能学习到每个类别中的一小部分图像。Fréchet Inception Distance(FID)通过提高对噪声的鲁棒性并检测类内(interclass)样本遗漏来改进IS。

IS基准完成的是:能生成此类别的要求

FID基准完成的是:生成样本的类内多样性

但有时,我们希望GAN可以从不同的角度输出代表猫的样本,并且明显不同的图像。同时,我们也不希望GAN只是简单的记住图像(记忆,就可能导致没有泛化。)。

FID的技术实现很复杂:但背后的高级想法是:我们正在寻找一个样本的生成分布,为了确保生成分布与真实分布相似而必须进行的修改最小化。

We are looking for a generated distribution of samples that minimizes the number of modifications we have to make to ensure that the generated distribution looks like the distribution of the true data.

FID是通过Inception网络运行图像来计算的。实际中,比较的是中间表示(特征图或者Layer)而不是最终输出(比较的是插入值,而不是最终值。)。计算插入值的均值、方差和两个分布(真实图和生成图)的协方差。

FID是一种从人类评估者那里抽象出来的方法,他可以根据分布进行统计推理,甚至可以用于评估图像的真实度这样难以量化的事情。

二、训练中的挑战

GAN训练中主要问题:(速度和质量)

(1)模式崩溃。生成的样本中缺少某一类。比如生成MNIST中,没有生成数字8。

(2)收敛速度慢。监督学习中,可用标记数据是首要障碍;在GANs和无监督学习中,收敛速度和可用计算力是主要限制。

(3)过度泛化。生成现实生活中,并不存在的情况。当GAN过度泛化并学习到基于真实数据不应该存在的事物时,这种情况就会发生。

模式崩溃和过度泛化有时可以通过重新初始化算法简单地解决,但是这样的算法是脆弱的、不稳定的。

很多训练最终都专注于更快消除真实分布和生成分布之间的差距

改进GAN训练过程的几种方法:

(1)增加网络深度

(2)更改网络设置

  • 原始论文(开山之作:Generative Adversarial Networks论文)提出的最小-最大(min-max)设计和停止判则。

  • 原始论文(开山之作:Generative Adversarial Networks论文)提出的非饱和(Non-Saturating)设计和停止判则。

  • 最近的改进——沃瑟斯坦生成对抗网络(Wasserstein GAN)。

(3)其他一些训练技巧

  • 归一化输入。

  • 梯度惩罚。

  • 多训练鉴别器。

  • 避免稀疏梯度。

  • 使用平滑和带噪声的标签。

1、增加网络深度

最简单的使学习更稳定的方法是:降低复杂度。如果可以从最简单的算法开始逐步地增加复杂性,则训练过程可以更稳定,收敛更快。并且增加深度还有其他潜在的好处。

正在论文《Progressive Growing of GANs for Improved Quality, Stability, and Variation》NVIDIA的研究者:在每个训练周期结束时将生成器的输出大小加倍,将鉴别器的输入也加倍。。

GAN生成的全高清图像

2、游戏(博弈)设置

GAN博弈的设置,模仿围棋规则:策略网络和价值网络(policy and value network)。既要规则,也需要距离(胜利)指标。

GAN的胜利指标:距离或散度。

GAN的研究内容:分别研究每个损失函数(胜利指标)和玩家动态(博弈设置)。

3、Min-Max GAN

Min-Max这个理论需要补充学习一下:

(1)在数据处理领域有一个:Min-Max标准化(归一化)

在这里插入图片描述

Min-Max标准化是指对原始数据进行线性变换,将值映射到[0,1]之间。

(2)max-min准则(注意顺序相反哈。)

又称最大-最小准则、小中取大准则悲观准则,为不确定型决策的决策准则之一,这种方法的基本态度是悲观与保守。它表明决策者应在各个方案中选择最坏的可能结果,然后择取提供最坏可能结果中的最佳者。

(3)两害相权取其轻,两利相权取其重。

GAN鉴别器的损失函数:二元分类问题的损失函数。

J^{D}= E_{x\sim p_{r}}log[D(x)]+E_{z\sim p_{g}}log[1-D(G(z))]

D代表鉴别器的函数(将图像映射到概率),G代表生成器的函数(将潜在向量映射到图像)。

上述方程简化写法:

J^{D} = D(x)-D(G(z)), for D(x), D(G(z))\in [0, 1]

因为只有两方起作用且彼此竞争:所以有理由认为生成器的损失对鉴别器来说是负损失。

J^{G}= -J^{D}

有两个损失函数,一个是另一个的负值,对抗很明显。

 前面几篇文章中提到因为维度太高,没法事先去评估数据分布情况,通常不用最大似然。为了理解真实分布与生成分布之间的差异:KL散度、JS散度、Earth Mover's distance(EM距离,也称为Wasserstein距离)。

JS散度度量了两个概率分布的相似度,它是基于KL散度的变体,解决了KL散度非对称的问题。一般认为JS散度时对称的。

 KL散度和JS散度通常被视为GAN最终在试图最小化的东西。这两种东西都是距离指标,有助于理解高维度空间中两种分布的差异。

最小-最大GAN(MM-GAN)用于给出良好的理论解释,除此之外通常不再实际中使用。它是理解GAN的一个简洁的理论框架:既是一个博弈论的概念,又是一个信息论的概念。除此之外,MM-GAN通常没有任何优势,Next two setups更常用。

4、非饱和GAN(NS-GAN)

MM-GAN的问题:鉴别器收敛缓慢。梯度很容易饱和到接近0。反向传播的权重更新为0或很小,从而导致收敛缓慢。

替代方案:非饱和GAN(Non-Saturtating GAN, NS-GAN):没有让两个损失函数成为彼此的直接竞争对手,而是使两个损失函数相互独立。

这两个损失函数不再直接相互抵消。

NS-GAN的损失函数:

生成器:J^{G}=E_{z\sim p_{g}}log[D(G(z))]

鉴别器:J^{D}= E_{x\sim p_{r}}log[D(x)]+E_{z\sim p_{g}}log[1-D(G(z))]

 NS-GAN初始训练速度更快,而且由于生成器学习得更快,鉴别器也学习得更快。

5、何时停止训练

GAN的两个原始公式没有给出实际中完成训练的明确条件。原则上一旦达到纳什均衡训练就完成了,但实践中这很难验证。因为高维度使得均衡难以证明。

6、WGAN

Wasserstein GAN(WGAN):

(1)显著改进了损失函数,使得损失函数现在可以解释并提供了更清晰的停止标准。

(2)WGAN效果更好。

(3)WGAN理论支撑:表明了试图估计KL散度在理论上和实践上最终都是不合理的。在此基础上提出了一种更好的损失函数来解决这一问题。

WGAN使用推土机距离(Earth Mover's distance)作为损失函数,该函数与生成样本的视觉质量明显相关。

WGAN的鉴别器Wasserstein损失函数

maxE_{x\sim p_{r}}[f_{w}(x)]-E_{z\sim p(z)}[f_{w}(g_{\theta }(z))]

函数f_{w}鉴别器。该鉴别器试图估计推土机距离(EM距离),上式中f_{w}的两个不同参数是为寻求真实分布(第一项)与生成分布(第二项)之间的最大差异。

鉴别器试图让生成器的初见变得最困难——通过查看在共享空间中使用f_{w}的不同投影,来最大化生成器必须移动的概率量。

生成器必须包括推土机距离(EM距离):

minE_{x\sim p_{r}}[f_{w}(x)]-E_{z\sim p(z)}[f_{w}(g_{\theta }(z))]

生成器试图最小化真实分布和生成分布的期望的距离。

一个最大化差异,一个最小化差异。差异:推土机距离。

 生成器试图解决的问题:

(1)从真实分布(x\sim P_{r})或生成分布[x^{\ast }(g_{\theta }(z)),其中z\sim P(z)]中提取x;

(2)生成样本是从z(潜在空间)中采样,通过g_{\theta }进行变换以在同一空间中获得样本(x^{*}),然后使用f_{w}进行评估;

(3)试图最小化损失函数或距离函数(推土机距离)。

WGAN中必须设置一个裁剪常数(clipping constant),其作用类似与学习率。

WGAN的实际意义:

(1)WGAN有更清晰的停止标准

(2)可以训练WGAN直至收敛

三、总结游戏设置

上面介绍了GAN结构的3个核心版本:MM-GAN、NS-GAN、WGAN。

Name

Value function

Notes

NS-GANLDNS = E[log(D(x))] + E[log(1 – D(G(z)))] LGNS = E[log(D(G(z)))]This is one of the original formulations. Typically not used in practice anymore, except as a foundational block or comparison. This is an equivalent formulation to the NS-GAN you have seen, just without the constants. But these are effectively equivalent.[b]
WGANLDWGAN = E[D(x)] – E[D(G(z))] LGWGAN = E[D(G(z))]This is the WGAN with somewhat simplified loss. This seems to be creating a new paradigm for GANs. We explained this equation previously as equation 5.5 in greater detail.
WGAN-GP[c] (gradient penalties)LDW – GP = E[D(x)] – E[D(G(z))] + GPterm LGW – GP = E[D(G(z))]This is an example of a GAN with a gradient penalty (GP). WGAN-GP typically shows the best results. We have not discussed the WGAN-GP in this chapter in great detail; we include it here for completeness.WGAN-GP效果最好。

四、训练技巧

How to Train a GAN: Tips and Tricks to Make GANs Workgithub资源以上传,可以免费下载

使用Adam优化器而不是SGD。

1、输入的归一化

几乎所有的机器学习资源,都将图像归一化在-1到1之间通常情况下是一个好主意。因为计算更容易处理。为此最好使用tanh激活函数来限制生成器的最终输出。

2、批归一化

3、梯度惩罚

4、对鉴别器进行更多的训练

(1)在生成器有机会生成任何样本之前对鉴别器进行预训练。

(2)每个训练周期更多次地更新鉴别器。鉴别器权重更新五次,生成器更新一次。

5、避免稀疏梯度

稀疏梯度会增加训练难度原因如下:

(1)如果使用最大池化:那么将会丢失卷积的感受视野中的最大值以外的所有值。这使得在DCGAN中使用转置卷积来恢复信息变得更加困难。使用平均池化至少可以知道平均值是多少,但仍在丢失信息,至少比最大池化要少。因为平均值比最大值更具有代表性。转置卷积(经典好文)

(2)使用ReLU激活函数时——信息损失。

解决方案:使用LeakyReLU激活函数。

6、平滑和带噪声的标签

给标签添加噪声或使其平滑。增加噪声、裁剪。而非典型的二分类标签。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值