登峰造极__边界均衡生成对抗网络(BEGAN)(七)

简介
先看一张图,下图左右两端的两栏是真实的图像,其余的是计算机生成的:
在这里插入图片描述
这是谷歌在 arXiv 发表的论文《BEGAN:边界均衡生成对抗网络》得到的结果。这项工作针对 GAN 训练难、控制生成样本多样性难、平衡鉴别器和生成器收敛难等问题,提出了改善。尤其值得注意的,是作者使用了很简单的结构,经过常规训练,取得了优异的视觉效果。
原论文地址:https://arxiv.org/pdf/1703.10717.pdf

一、BEGAN主要贡献

  1. 提出了一种新的简单强大GAN网络结构,使用标准的训练方式不加训练trick也能很快且稳定的收敛。
  2. 对于GAN中G,D的能力的平衡提出了一种均衡的概念(GAN的理论基础就是goodfellow理论上证明了GAN均衡点的存在,但是一直没有一个准确的衡量指标说明GAN的均衡程度)。
  3. 提供了一个超参数,这个超参数可以在图像的多样性和生成质量之间做均衡。
  4. 提出了一种收敛程度的估计,这个机制只在WGAN中出现过。作者在论文中也提到,他们的灵感来自于WGAN。

二、BEGAN原理
判别器:借鉴EBGAN
在介绍 BEGAN 之前,有必要回顾一下 GAN 和 EBGAN(Engry-Based GAN,基于能量的 GAN)。它们是 BEGAN 的基础。

其中,“EBGAN 是 Yann LeCun 课题组提交到 ICLR2017的一个工作,从能量模型的角度对 GAN 进行了扩展。EBGAN 将判别器看做是一个能量函数,这个能量函数在真实数据域附近的区域中能量值会比较小,而在其他区域(即非真实数据域区域)都拥有较高能量值。因此,EBGAN 中给予 GAN 一种能量模型的解释,即生成器是以产生能量最小的样本为目的,而判别器则以对这些产生的样本赋予较高的能量为目的。

“从能量模型的角度来看待判别器和 GAN 的好处是,我们可以用更多更宽泛的结构和损失函数来训练 GAN 结构,比如文中就用自编码器(AE)的结构来作为判别器实现整体的GAN 框架,如下图所示:
在这里插入图片描述

生成器:借鉴 WGAN
之前说到,BEGAN也将 AE 作为判别器,在架构上与 EBGAN 十分类似。但在生成器方面,BEGAN 则借鉴了 Wasserstein GAN 定义 loss 的思路。传统的GAN会尝试直接匹配数据分布,作者提出的方法是使用从Wasserstein距离衍生而来的损失去匹配自编码器的损失分布。这是通过传统的GAN目标加上一个用来平衡鉴别器和生成器的平衡项实现的。

平衡:
在深度神经网络中,生成器的函数G和鉴别器的函数D的表示能力是一个必须要考虑的因素。它们由模型实现函数的方法以及参数的数量共同决定。传统情况下,G和D往往不能达到平衡,判别器D往往在训练早期就能竞争过生成器G。为了解决这一问题,作者引入了平衡的概念。
作者提出了一个衡量生成样本多样性的超参数 γ : 生成样本损失的期望与真实样本损失的期望值之比。在作者的模型中,判别器有两个目标:对真实图像自编码,并且将生成图像与真实图像区分开。这个超参数能够平衡这两个目标。γ 值比较低会导致图像多样性较差,因为判别器太过于关注对真实图像自编码。

网络结构:
在这里插入图片描述
作者使用带有指数线性单元(ELUs)的3x3卷积。每一层都重复2次。每次下采样卷积滤波都线性增加。下采样操作通过子采样完成,采样步长为2,上采样通过最近邻方法实现。在编码器和解码器的边界处,处理过的数据块通过全卷积层,不需要任何非线性操作映射到嵌入态。
作者表示他们的方法训练过程更简单,并且与传统的GAN相比,网络结构也更简单:不需要批归一化(batch normalization)、dropout、反卷积、或者卷积滤波的指数增长(exponential growth for convolution filters)。

以往的GAN以及其变种都是希望生成器生成的数据分布尽可能的接近真实数据的分布,当生成数据分布等同于真实数据分布时,我们就确定生成器G经过训练可以生成和真实数据分布相同的样本,即获得了生成足以以假乱真数据的能力,所以从这一点出发,研究者们设计了各种损失函数去令G的生成数据分布尽可能接近真实数据分布。
BEGAN代替了这种估计概率分布方法,它不直接去估计生成分布Pg与真实分布Px的差距,进而设计合理的损失函数拉近他们之间的距离,而是估计分布的误差之间的距离,作者认为只要分布的的误差分布相近的话,也可以认为这些分布是相近的。即如果我们认为两个人非常相似,又发现这两人中的第二个人和第三个人很相似,那么我们就完全可以说第一个人和第三个人长的很像。
在BEGAN中,第一个人相当于训练的数据x,第二个人相当于D对x编码解码后的图像D(x),第三个人相当于D以G的生成为输入的结果D(g(z)),所以,如果||D(x)-x|| - || D(x)- D(g(z)) || 不断趋近于0,那么随着训练,D(x)会不断接近x,那么D(g(z)) 接近于D(x),岂不是就意味着 g(z) 的数据分布和x分布几乎一样了,那么就说明G学到了生成数据的能力。

哪么重点来了,那么多GAN改进版,到底哪一个效果更好呢,最新的Google一项研究表明,GAN、WGAN、WGAN-GP、LS GAN、DRAGAN、BEGAN啥的,都差不多。大部分情况来说,还是WGAN-GP用的更多一些。生成高清图像BEGAN最简单合适。

猜你喜欢

转载自blog.csdn.net/qq_42823043/article/details/89430012