美文网首页
GAN模型初步总结

GAN模型初步总结

作者: 妖皇裂天 | 来源:发表于2019-01-26 23:13 被阅读0次

对之前学习的TFGAN库中的各种GAN做一个理论上的总结。

GAN

  论文地址是Generative Adversarial Nets,提出了GAN模型的基本结构和优化目标。基本结构包括两个网络结构——生成模型Generator和判别模型Discriminator。G网络尽可能生成满足正样本分布的假样本,而D网络则尽可能辨别出真假样本,在这个博弈过程中2种网络的性能都越来越好。GAN模型结构如下:

GAN.jpg 网络要优化的目标是 CGAN.png
InfoGAN

  论文地址是InfoGAN: Interpretable Representation Learning by Information Maximizing Generative Adversarial Nets,论文出发点和CGAN相似,InfoGAN也提出了加入新信息c(论文中称为latent code)来控制G网络的具体输出。不过在训练方式上InfoGAN和CGAN不一样,CGAN只是将条件信息直接拼接在输入噪音信息和真实信息上,而InfoGAN则是额外创建了一个网络用来保证G网络的输出和真实样本之间的互信息最大化。InfoGAN的优化目标是\min_G \max_D V(D,G)=E_{x \sim p_{data}(x)}[\log D(x)]+E_{z \sim p_z(z)}[\log(1-D(G(z)))]+\lambda I(c;G(z,c))其中,I(c;G(z,c))就是G网络输出和相应类别之间的互信息损失(代码)I(c;G(z,c))=H(c)-H(c|G(z,c))难以优化,因为我们不知道后验概率P(c|x)(x是G网络的输出,我们是没法知道训练过程中G网络输出与c之间的概率关系),所以InfoGAN采用变分推断的思想,用一个可调的已知分布去尽可能靠近未知的后验概率分布P(c|x)。简单的说就是保证新加入的模型的输出向量和c对应的向量的交叉熵尽可能小。

LSGAN

  论文地址是Least Squares Generative Adversarial Networks,LSGAN指出初代GAN模型的损失函数很可能导致梯度消失问题,所以LSGAN提出将GAN模型的损失函数由sigmoid cross entropy loss改为least square loss。LSGAN中D网络(代码)和G网络(代码)的优化目标是\begin{align} \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] \\ \min_G V_{LSGAN}(G) &= \frac{1}{2}E_{z \sim p_z(z)}[(D(G(z))-c)^2] \end{align}其中,a是G网络输出对应的label,b是真实样本对应的label,c是G网络希望D网络对虚假样本的判别值。比如我们可以按照原始GAN中那样将a设置为0,b设置为1,c设置为1。论文指出,least square loss有2个优势,一是对于那些被判定为真实样本,但是距离分界线较远的虚假样本依然会贡献损失,二是训练过程更加稳定,loss出现NaN的概率比较少。同时论文还指出当满足b-c=1,b-a=2时,LSGAN的优化目标其实就相当于皮尔逊卡方检验,从而在理论上证明了least square loss对于拉近p_gp_{data}的有效性。一般的LSGAN模型结构如下:

一般的LSGAN结构.png (a)图是G网络,(b)图是D网络,LSGAN网络的设计遵循了DCGAN提出的各种改进。但是对于类别很多的任务,LSGAN结合CGAN设计了一个新的LSGAN结构,此时模型的优化目标是 带有condition的LSGAN.png
WGAN(WGAN-GP)

  WGAN论文地址是Wasserstein GAN,WGAN-GP论文地址是Improved Training of Wasserstein GANs。WGAN的主要工作是从理论上证明了传统GAN模型的loss给训练带来的弊端,并提出新的基于wasserstein distance(也称为推土机距离)的loss函数,而WGAN-GP则是对WGAN提出的一点改进再次进行了改进。具体如下:

  1. WGAN提出了4点改进:
    1. 判别器最后一层去掉sigmoid
    2. 生成器和判别器的loss不取log
    3. 每次更新判别器的参数之后把它们的绝对值截断到不超过一个固定常数c
    4. 不要用基于动量的优化算法(包括momentum和Adam),推荐RMSProp,SGD也行
  2. WGAN-GP则是对上面的第3点提出改进,提出用梯度惩罚来代替梯度裁剪

WAGN中D网络(代码)和G网络(代码)的优化目标是\begin{align} \min_D V_{WGAN}(D) &= -E_{x \sim p_{data}(x)}[D(x)]+E_{z \sim p_z(z)}[D(G(z))] \\ \min_G V_{WGAN}(G) &= -E_{z \sim p_z(z)}[D(G(z))] \\ \end{align}而WGAN-GP的优化目标是\begin{align} \min_D V_{WGAN}(D) &= -E_{x \sim p_{data}(x)}[D(x)]+E_{z \sim p_z(z)}[D(G(z))]+\lambda E_{x \sim p_{\hat{x}}}[||\nabla_xD(x)||_p-1]^2 \\ \min_G V_{WGAN}(G) &= -E_{z \sim p_z(z)}[D(G(z))] \end{align}其中Gradient penalty的实现可看代码。如果想更加详细的了解WGAN和WGAN-GP,可以看下面这两篇博客:

  1. 令人拍案叫绝的Wasserstein GAN
  2. Wasserstein GAN最新进展:从weight clipping到gradient penalty,更加先进的Lipschitz限制手法
ACGAN

  论文地址是Conditional Image Synthesis with Auxiliary Classifier GANs,从模型结构上看,ACGAN做的工作就是将CGAN和InfoGAN结合起来。ACGAN中G网络的输入是将噪音和label拼接起来(CGAN),有X_{fake}=G(c,z),同时设计了一个辅助分类网络对真假样本进行分类(InfoGAN),可见ACGAN是将辅助信息使用到了极致。ACGAN模型的优化目标如下:\begin{align} L_S &= E[\log P(S=real|X_{real})]+E[\log P(S=fake|X_{fake})] \\ L_C &= E[\log P(C=c|X_{real})]+E[\log P(C=c|X_{fake})] \end{align}其中,通过最大化L_C+L_S来训练D网络,最大化L_C-L_S来训练G网络。ACGAN的实现可看代码。ACGAN并没有多少理论上的创新性改进,但是它在ImageNet上做了大量的实验,如下:

  1. 合成不同分辨率的图像并计算其可判别性,发现当合成图像分辨率越高时质量也越高(将合成图像传入到Inception网络中,高分辨率合成图像其对应的准确率越高,从而反映了图片质量越高)。
  2. 使用MS-SSIM来衡量生成图像的多样性。结构相似性(structure similarity)原本是衡量两张图片相似性的指标,这里作者将其用来衡量生成图像的多样性,MS-SSIM值越低说明生成的图像多样性越高。
  3. 对合成图片的Inception模型输出准确性和相应的MS-SSIM值进行了分析,发现如果GAN模型输出的合成图片多样性越高,那么这些图片的Inception模型的准确率也要高一些。
  4. 探索了模型是否过拟合(是学会了相关图片的分布还是只是“记住了”训练图片)。最简单的方法就是从训练集中找到“距离”合成图片最近的真实图片,发现这些真实图片并不能代表合成图片,说明了模型不是只是“记住了”真实图片的分布。作者还提出了其他验证方法,一种是对模型的潜在空间进行线性插值,看是否会出现discrete transition(个人理解就是插值后的图片很不连贯),另外一种就是保持输入的额外信息z不变,看合成图片对应的Inception模型输出的类别(大部分类别都不一样说明模型没有过拟合)。
  5. 探索了类别数量对模型性能的影响,如果训练集中真实图片所属类别越多,那么最后模型的MS-SSIM值也相对越高,也就是合成图片更加单调,但是论文中指出增加模型参数可以改善这个影响。(个人意见)我认为这说明了要想合成更多不同种类且多样化的图片,还是需要更大的模型才行。
CycleGAN

  论文地址是Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks,CycleGAN在结构上做了很大的改进,CycleGAN是将两个普通GAN模型结合起来进行训练,两个GAN模型的G网络输入都是真实图片(不再是噪音)。CycleGAN所做的工作就是对两类真实图片进行图像风格迁移,将G网络输入的真实图片的风格转换成另外一种图片的风格。此时模型优化目标是L(G,F,D_X,D_Y) = L_{GAN1}(G,D_Y,X,Y)+L_{GAN2}(F,D_X,Y,X)+\lambda L_{cyc}(G,F)其中,XY是两类不同风格的图片,模型GAN1是将输入图片X的风格转换成图片Y的风格,模型GAN2是将输入图片Y转换成图片X的风格。上式中一、二项都是GAN模型的损失,而第三项是论文的关键——循环一致性损失。首先看下该损失对应的公式:L_{cyc}(G,F)=E_{x \sim p_{data}(x)}[||F(G(x))-x||_1]+E_{y \sim p_{data}(y)}[||G(F(y))-y||_1]单看第一项,数据x输入到GAN1的生成网络中,并将输出结果输入到GAN2的生成网络中,最后计算输出结果与原始数据x的距离。第二项做的工作也是一样的。对这一项进行优化就是要保证图片经过两次转换后发生的变化尽可能小,其实就是为了保证生成网络能更好的拟合风格X到风格Y之间和风格Y到风格X之间的映射关系,防止GAN模型的合成图片太单调(mode collapse)。Cycle loss的实现可见代码 。CycleGAN的模型表示如下:

CycleGAN模型结构.png
StarGAN

  论文地址是StarGAN: Unified Generative Adversarial Networks for Multi-Domain Image-to-Image Translation,从论文名就可以看出,StarGAN的任务是多领域的图到图的翻译(multi-domain image-to-image translation),改进是将多个GAN模型统一为一个(unified generative adversarial networks)。具体改进如下图:

传统cross-domain models和StarGAN的对比.png (a)图中,假设base model选择是CycleGAN,那么共需要 StarGAN模型结构训练图.png 我的理解:StarGAN模型就是带有condition的CycleGAN,模型中G网络的输入不再是 x ,而是带有condition的 (x,c) 。模型中D网络输出向量组成和目标检测one-stage模型的输出组成很像,都有置信度和类别信息,不同点在于目标检测中置信度用于判断box中是否含有object,而这里置信度判断输入图片是real还是fake。同时为了保证图到图的转换过程中保留了输入图片的content,StarGAN的loss中也加入了CycleGAN的cycle loss。StarGAN模型的优化目标如下: \begin{align} L_D &=-L_{adv}+\lambda_{cls}L_{cls}^r \\ L_G &=L_{adv}+\lambda_{cls} L_{cls}^f+\lambda_{rec}L_{rec} \end{align} 其中有, \begin{align} L_{adv} &= E_x[\log D_{src}(x)]+E_{x,c}[\log (1-D_{src}(G(x,c)))] \\ L_{cls}^r &= E_{x,c^{'}}[-\log D_{cls}(c^{'}|x)] \\ L_{cls}^f &= E_{x,c}[-\log D_{cls}(c|G(x,c))] \\ L_{rec} &= E_{x,c,c^{'}}[||x-G(G(x,c),c^{'})||_1] \end{align} 但是在实际实现中StarGAN将原始GAN的loss改为WGAN-GP的loss,也就是: L_{adv} = E_x[D_{src}(x)]-E_{x,c}[D_{src}(G(x,c))]-\lambda_{gp}E_{\hat{x}}[(||\nabla_{\hat{x}}D_{src}(\hat{x})||_2-1)^2] 不过有一点我有点疑惑,那就是StarGAN中是怎么将c和输入图片拼接起来的?CGAN中输入的是一维噪音向量,所以科技直接将 c 拼接在噪音向量后面,但是StarGAN的输入是图片,那么如何将 c 拼接到3维图片信息中呢?待解决。。。

相关文章

  • GAN模型初步总结

    对之前学习的TFGAN库中的各种GAN做一个理论上的总结。 GAN   论文地址是Generative Adver...

  • WGAN的介绍

    GAN的介绍 GAN的思想 GAN模型由生成式模型(generative model)和判别式模型(discrim...

  • GAN和WGAN

    1. GAN GAN有两个模型,分别是生成模型和判别模型。这两个模型进行博弈,先保持生成模型不变,优化判别模型(判...

  • GAN网络的通俗理解

    本文浅显理解通俗的GAN模型 核心思想 GAN的核心思想在于博弈,GAN有两部分模型构成,一个是生成模型(G),一...

  • CycleGAN原理及实验(TensorFlow)

    生成对抗网络(GAN)是一个十分有效的深度学习模型,由此衍生了CycleGAN。 先简单介绍一下GAN。 GAN—...

  • 【技术博客】生成式对抗网络模型综述

    34-生成式对抗网络模型综述 作者:张真源 GAN GAN简介 生成式对抗网络(Generative advers...

  • Gan网络

    本文所有图片来自北京睿邦科技有限公司Gan网络教学课程教师王昊然。 判别模型与生成模型 在说Gan网络之前有必要先...

  • GAN——UNIT简单梳理

    自从2014年Goodfellow提出GAN(Generative adversarial networks)模型...

  • Conditional Generative Adversari

    条件对抗生成网络 顾名思义,这篇论文讲得就是带条件的GAN。 文章分成下面三部分: 构建条件GAN模型 解释该模型...

  • 扩散模型

    常见的生成模型(Generative Models)如 GAN、VAE 和基于流( Flow-based )的模型...

网友评论

      本文标题:GAN模型初步总结

      本文链接:https://www.haomeiwen.com/subject/laycjqtx.html