赞
踩
Generative Adversarial Nets,生成对抗网络,也就是大家经常听到的 GAN,由Ian Goodfellow于2014年首先提出,之后迅速风靡学术圈。就连深度学习先驱之一的Yann LeCun也给予了高度评价,认为"GAN及其变种是数十年来机器学习领域最有趣的点子"。有关GAN的研究层出不穷,仿佛没有什么是“GAN”不出来的。
根据GAN的发展情况,梳理相关内容:
名称 | 发表时间 | 解决问题 | 中文名称 | 论文链接 |
---|---|---|---|---|
GAN | 10 Jun 2014 | GAN系列的开山之作 | 生成对抗网络 | https://arxiv.org/pdf/1406.2661.pdf |
CGAN | 6 Nov 2014 | 原始GANs通过输入随机噪声来生成数据,但是无法指定生成内容。CGAN通过将一个one-hot向量连接到输入的随机噪声以告诉生成器生成特定类别的图像,从而解决输出不可控的问题。 | 条件生成对抗网络 | https://arxiv.org/pdf/1411.1784.pdf |
DCGAN | 19 Nov 2015 | 原始GANs不一定使用基于卷积的操作,而是依赖于标准的多层感知器架构。DCGAN通过巧妙的设计卷积网络和采用策略改进原始GANs。 | 深度卷积生成对抗网络 | https://arxiv.org/pdf/1511.06434.pdf |
CoGAN | 24 Jun 2016 | 比一个GAN更好的是什么?两个GAN!CoGAN所训练的就是两个GAN而不是一个。 | 耦合生成对抗网络 | https://arxiv.org/pdf/1606.07536v2.pdf |
CycleGAN | 30 Mar 2017 | CycleGAN 致力于解决图像到图像映射的问题,主要用于风格迁移。可以进行未配对的图像到图像的转换。 | Cycle生成对抗网络 | https://arxiv.org/pdf/1703.10593.pdf |
WGAN | 26 Jan 2017 | WGAN提出了一种新的损失函数,有着非常好的性质。 | Wasserstein 生成对抗网络 | https://arxiv.org/pdf/1701.07875.pdf |
ProGAN | 27 Oct 2017 | ProGAN通过增加生成图像的分辨率来帮助稳定 GAN的训练。 | 生成对抗网络的渐进式增长 | https://arxiv.org/pdf/1710.10196.pdf |
SAGAN | 21 May 2018 | SAGAN 使用了自注意力机制。 | 自注意力生成对抗网络 | https://arxiv.org/pdf/1805.08318.pdf |
BigGAN | 28 Sep 2018 | 大Batch Size,采用先验分布 z 的“截断技巧”,对模型稳定性的控制。 | 大生成对抗性网络 | https://arxiv.org/pdf/1809.11096.pdf |
StyleGAN | 12 Dec 2018 | StyleGAN 不专注于架构和损失函数,而是改进了GANs对生成的图像进行精细控制的能力 。它可以与任何GAN一起使用。 | 基于风格的生成对抗网络 | https://arxiv.org/pdf/1812.04948.pdf |
··· | ··· | ··· | ··· | ··· |
百度百科:生成式对抗网络(GAN, Generative Adversarial Networks )是一种深度学习模型,是近年来复杂分布上无监督学习最具前景的方法之一。模型通过框架中(至少)两个模块:生成模型(Generative Model)和判别模型(Discriminative Model)的互相博弈学习产生相当好的输出。原始 GAN 理论中,并不要求 G 和 D 都是神经网络,只需要是能拟合相应生成和判别的函数即可。但实用中一般均使用深度神经网络作为 G 和 D 。一个优秀的GAN应用需要有良好的训练方法,否则可能由于神经网络模型的自由性而导致输出不理想。
百科中大致说明了GAN的结构、核心思想和问题。
GAN由两个部分组成:
核心思想:
零和博弈,通过让生成器 Generator和判别器 Discriminator相互对抗,Generator试图生成接近真实的数据,Discriminator试图区分真实的数据和由Generator生成的数据。最终达到一个“平衡”,即Generator生成的数据足够真实,Discriminator只是是随机猜测,无法再区分真实数据与生成数据的区别。
存在的问题:
真实数据集的分布为
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(1−D(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)=Ex∼Pdata(x)[logD(x)]+Ez∼Pz(z)[log(1−D(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
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。