当前位置:   article > 正文

GAN就对了:Generative Adversarial Nets_generative adversarial nets 2014

generative adversarial nets 2014

前言

Generative Adversarial Nets,生成对抗网络,也就是大家经常听到的 GAN,由Ian Goodfellow于2014年首先提出,之后迅速风靡学术圈。就连深度学习先驱之一的Yann LeCun也给予了高度评价,认为"GAN及其变种是数十年来机器学习领域最有趣的点子"。有关GAN的研究层出不穷,仿佛没有什么是“GAN”不出来的。

发展现状

根据GAN的发展情况,梳理相关内容:

名称发表时间解决问题中文名称论文链接
GAN10 Jun 2014GAN系列的开山之作生成对抗网络https://arxiv.org/pdf/1406.2661.pdf
CGAN6 Nov 2014原始GANs通过输入随机噪声来生成数据,但是无法指定生成内容。CGAN通过将一个one-hot向量连接到输入的随机噪声以告诉生成器生成特定类别的图像,从而解决输出不可控的问题。条件生成对抗网络https://arxiv.org/pdf/1411.1784.pdf
DCGAN19 Nov 2015原始GANs不一定使用基于卷积的操作,而是依赖于标准的多层感知器架构。DCGAN通过巧妙的设计卷积网络和采用策略改进原始GANs。深度卷积生成对抗网络https://arxiv.org/pdf/1511.06434.pdf
CoGAN24 Jun 2016比一个GAN更好的是什么?两个GAN!CoGAN所训练的就是两个GAN而不是一个。耦合生成对抗网络https://arxiv.org/pdf/1606.07536v2.pdf
CycleGAN30 Mar 2017CycleGAN 致力于解决图像到图像映射的问题,主要用于风格迁移。可以进行未配对的图像到图像的转换。Cycle生成对抗网络https://arxiv.org/pdf/1703.10593.pdf
WGAN26 Jan 2017WGAN提出了一种新的损失函数,有着非常好的性质。Wasserstein 生成对抗网络https://arxiv.org/pdf/1701.07875.pdf
ProGAN27 Oct 2017ProGAN通过增加生成图像的分辨率来帮助稳定 GAN的训练。生成对抗网络的渐进式增长https://arxiv.org/pdf/1710.10196.pdf
SAGAN21 May 2018SAGAN 使用了自注意力机制。自注意力生成对抗网络https://arxiv.org/pdf/1805.08318.pdf
BigGAN28 Sep 2018大Batch Size,采用先验分布 z 的“截断技巧”,对模型稳定性的控制。大生成对抗性网络https://arxiv.org/pdf/1809.11096.pdf
StyleGAN12 Dec 2018StyleGAN 不专注于架构和损失函数,而是改进了GANs对生成的图像进行精细控制的能力 。它可以与任何GAN一起使用。基于风格的生成对抗网络https://arxiv.org/pdf/1812.04948.pdf
···············

论文《Generative Adversarial Nets》探秘

一、什么是GAN?

百度百科:生成式对抗网络(GAN, Generative Adversarial Networks )是一种深度学习模型,是近年来复杂分布上无监督学习最具前景的方法之一。模型通过框架中(至少)两个模块:生成模型(Generative Model)和判别模型(Discriminative Model)的互相博弈学习产生相当好的输出。原始 GAN 理论中,并不要求 G 和 D 都是神经网络,只需要是能拟合相应生成和判别的函数即可。但实用中一般均使用深度神经网络作为 G 和 D 。一个优秀的GAN应用需要有良好的训练方法,否则可能由于神经网络模型的自由性而导致输出不理想。

百科中大致说明了GAN的结构、核心思想和问题。
GAN由两个部分组成:

  • 生成器 Generator,例如生成一张新的猫咪图片(不在数据集里)
  • 判别器 Discriminator,例如给定一张图,判断这张图里的动物是猫还是狗
    在这里插入图片描述

核心思想:
零和博弈,通过让生成器 Generator和判别器 Discriminator相互对抗,Generator试图生成接近真实的数据,Discriminator试图区分真实的数据和由Generator生成的数据。最终达到一个“平衡”,即Generator生成的数据足够真实,Discriminator只是是随机猜测,无法再区分真实数据与生成数据的区别。

存在的问题:

  • 难训练
  • 有模式崩溃(Model Collapse)的可能

二、能GAN什么?

在这里插入图片描述

  • 图像生成
    GAN最常使用的地方就是图像生成,如超分辨率任务,语义分割等等。
  • 数据增广
    对于小数据集,数据量不足,可以通过使用GAN生成的图像来做数据增广。

三、GAN的原理

真实数据集的分布为 P d a t a ( x ) P_{data}(x) Pdata(x),对于生成器Generator而言,它的目标是希望能够学习到真实样本的分布,这样就可以随机生成以假乱真的样本。
在这里插入图片描述
给定输入噪声 P z ( z ) P_z(z) Pz(z),现有的 Generator 生成的数据分布假设为 P G ( z ; θ g ) P_G(z;θ_g) PG(z;θg),这是一个由 θ g θ_g θg控制的分布, θ θ θ是这个分布的参数(如果是高斯混合模型,那么 θ θ θ就是每个高斯分布的平均值和方差)。然后定义判别器 D ( x ; θ d ) D(x; θ_d) D(x;θd),其中 D ( x ) D(x) D(x)表示 x x x来自 P d a t a P_{data} Pdata而非 P g P_g Pg的概率。
我们的目标是训练判断器D以使其能最大可能地区分来自 P d a t a P_{data} Pdata P g P_g Pg的样本,同时训练生成器G以最小化 l o g ( 1 − D ( G ( z ) ) ) log(1-D(G(z))) log(1D(G(z))),从而生成D难辨真假的数据。D和G的博弈的价值函数 V ( G , D ) V(G, D) V(G,D):
min ⁡ G max ⁡ D V ( D , G ) = E x ∼ P d a t a ( x ) [ l o g D ( x ) ] + E z ∼ P z ( z ) [ l o g ( 1 − D ( G ( z ) ) ) ] {\min_G}{\max_D} V(D, G) = \mathbb {E}_{x∼P_{data}(x)}[log D(x)] +\mathbb {E}_{z∼P_z(z)}[log(1-D(G(z)))] GminDmaxV(D,G)=ExPdata(x)[logD(x)]+EzPz(z)[log(1D(G(z)))]
其中, D ( x ) D(x) D(x)表示D判断真实数据是否是真实的概率, D ( G ( z ) ) D(G(z)) D(G(z))表示D判断G生成的数据是否是真实的概率。
G希望 D ( G ( z ) ) D(G(z)) D(G(z))尽可能大,此时 V ( G , D ) V(G, D) V(G,D)会变小,即 min ⁡ G \min_G minG
D希望 D ( x ) D(x) D(x)尽可能大, D ( G ( z ) ) D(G(z)) D(G(z))尽可能小,此时 V ( G , D ) V(G, D) V(G,D)会变大,即 max ⁡ D \max_D maxD
交替训练最终达到纳什平衡状态。
在这里插入图片描述
论文中给出的网络训练算法如下,详解后续再做补充:
在这里插入图片描述
论文链接:
https://arxiv.org/pdf/1406.2661.pdf
代码链接:
http://www.github.com/goodfeli/adversarial

在这里插入图片描述

参考资料:

[1] 深度学习最强资源推荐:一文看尽 GAN 的前世今生,https://www.sohu.com/a/325882199_114877
[2] GAN(生成式对抗网络)百度百科,https://baike.baidu.com/item/Gan/22181905?fr=aladdin
[3] GAN笔记——理论与实现,https://www.cnblogs.com/fydeblog/p/9439024.html
[4] GAN原理学习笔记,https://zhuanlan.zhihu.com/p/27295635
[5] AdversarialNetsPapers, https://github.com/zhangqianhui/AdversarialNetsPapers

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/712393
推荐阅读
相关标签
  

闽ICP备14008679号