GAN开山之作--Generative Adversarial Nets

GAN开山之作–Generative Adversarial Nets

最近对GAN比较有兴趣,所以开个坑记录一下读论文学习的知识。这是本专栏的第一篇论文,所以笔者认为解析GAN的开山之作——Generative Adversarial Nets [1] 是非常有必要的。有关数学推导部分本文借鉴了深度之眼的b站发布的视频 [2]。本文并不是逐字翻译,主要是写笔者对这篇论文的见解思考,其中难免会有错的地方,欢迎讨论指正。

**注:**读本文之前最好先读一遍论文或者对GAN网络有基础的了解。

Abstract

作者提出了一个通过对抗的生成式模型,由生成器G和判别器D组成。D的作用是判别输入的样本分布是来自生成器的样本还是真实的样本分布,G的作用是学习真实的样本分布并且生成尽量真实的样本,使D无法判别。对于任意的G和D来说都存在一个唯一解使G和D到达最优(下文会进行证明)。并且G和D都是有多层感知机组成(现在已经有卷积、LSTM等组成的了),所以整个模型可以通过反向传播进行训练,并且在训练的过程中不需要任何马尔科夫链和近似推理网络(直接用数据进行训练就完事了,不用考虑太多)。通过对生成样本的定性和定量评价,证明了整个模型的潜力。(之后GAN网络的发展,也确实印证了GAN的潜力是非常巨大的。)

1. Introduce

作者认为深度学习的前景是发现数据的分布,(这个分布可能是非常复杂的)例如图像处理、自然语言处理等都是通过某个模型学习数据的分布,然后才能进行预测。(也就说深度学习训练的过程,其实是学习数据分布的过程,其实这句话笔者是笔者的理解,不确定是否是正确的)当前深度学习的成功主要是因为反向传播、dropout和激活函数。但是深度生成式模型取得的成果很少,因为使用生成式模型是很多情况下我们无法计算或很难计算。

  • 注:生成式模型和判别式模型 [2]: 生成式模型使用联合概率计算,判别式模型使用条件概率计算。那么什么是联合概率和条件概率呢?举个例子,现有一组样本

    Sample 1 Sample 2 Sample 3 Sample4
    X 0 0 1 1
    Y 0 0 0 1

    计算条件概率 P ( Y = 0 ∣ X = 0 ) = 2 / 2 = 1 P(Y=0|X=0)=2/2=1 P(Y=0X=0)=2/2=1, 计算联合概率 P ( X = 0 , Y = 0 ) = 1 2 P(X=0,Y=0)=\dfrac{1}{2} P(X=0,Y=0)=21, 也就是计算条件概率时分母是只有X=0时的样本个数(Sample 1和Sample 2)。计算联合概率时分母是所有的样本个数。

    判别式模型学习的就是条件概率分布P(Y|X),直观上就是模型只学习特征的分布情况判断样本的标签。而生成式模型是学习联合概率,直观上理解就是学习特征和标签的联合概率。

    然后继续回到上面这个例子,把上4个样本视为训练集,然后再加一个测试集(X=1,Y=0)。然后我们分别使用判别式模型和生成式模型进行预测,判别式模型预测正确的概率则为 1/2,因为通过训练集可以得到条件概率 P ( Y = 0 ∣ X = 1 ) = 1 2 P(Y=0|X=1)=\dfrac{1}{2} P(Y=0X=1)=21。使用生成式模型预测正确的概率则为1/4,因为通过训练集得到的联合概率 P ( X = 1 , Y = 0 ) = 1 4 P(X=1, Y=0)=\dfrac{1}{4} P(X=1,Y=0)=41

    这样看是不是觉得判别式模型要比生成式模型好的,但实际却不是这样。如果把测试集改为(X=0, Y=1),那么使用判别式模型预测正确的概率就为0,但是使用联合概率则有一定的概率算对,例如我们可以通过训练集计算 P ( X = 0 , Y = 0 ) = 1 2 P(X=0,Y=0)=\dfrac{1}{2} P(X=0,Y=0)=21, P ( X = 1 , Y = 1 ) = 1 4 P(X=1,Y=1)=\dfrac14 P(X=1,Y=1)=41,则 P ( X = 0 , Y = 1 ) = 1 − ( P ( X = 0 , Y = 0 ) + P ( X = 1 , Y = 1 ) ) = 1 − ( 1 2 + 1 4 ) = 1 4 P(X=0,Y=1)=1-(P(X=0,Y=0)+P(X=1,Y=1))=1-(\dfrac12+\dfrac14)=\dfrac14 P(X=0,Y=1)=1(P(X=0,Y=0)+P(X=1,Y=1))=1(21+41)=41。(这只是例子,实际可能并不是这样计算的)。这个例子告诉我们假如测试集中出现了训练集中没有的概率分布,那么使用判别式模型则很有可能永远也无法预测正确。而使用生成式模型则有一定的概率预测正确。这也是生成式模型强大的地方,但是实际中我们预测一件事往往有许多特征和标签,很多情况下我们是不能穷尽所有特征和标签的联合分布的。这也是生成式模型的难点所在。

所以作者提出了生成对抗网络。

2. Methodology

对抗生成式网络分为两部分,生成器 G G G和判别器 D D D G G G的作用是为了学习的真实数据 x x x 的分布,学习到分布为 p g p_g pg。在生成器学习(训练)之前会给它一个噪声 z z z D D D的作用是判别输入的数据是来自 G G G 还是来自真实的数据分布。它们的结构都是多层感知机。 D D D 需要尽可能分辨出输入的样本是真实的样本还是生成的样本,而 G G G 生成的样本需要和真是样本尽可能地相似,以尽可能的骗过 D D D

这就涉及到了博弈论中零和博弈的概念:参与博弈的双方,在严格竞争下,一方的收益必然意味着另一方的损失,博弈各方的收益和损失相加的总和永远为“零”,双方不存在合作的可能 [ 3 ] [3] [3]。在零和博弈中,为了使己方的收益最大化,所以要把目标设为让对方的最大收益最小化。论文根据这一思想给出了 G , D G, D G,D 的价值函数(有人也称目标函数):
KaTeX parse error: No such environment: equation at position 8: \begin{̲e̲q̲u̲a̲t̲i̲o̲n̲}̲ \min _{G} \max…
其中 p d a t a p_{data} pdata 表示真实的数据分布, p z p_z pz表示输入噪声的分布。针对 min ⁡ G max ⁡ D V ( D , G ) \min _{G} \max _{D} V(D, G) minGmaxDV(D,G) 可以分开来看,先看 m a x D V ( D , G ) max_D V(D, G) maxDV(D,G) 表示D希望 V ( D , G ) V(D, G) V(D,G) 尽可能的大,因为 D D D 需要尽可能的分辨出样本是真实样本还是生成器生成的样本,所以 D ( x ) D(x) D(x) 需要尽可能的大, D ( G z ( z ) ) D(G_z(z)) D(Gz(z))尽可能的小,这就会使 V ( D , G ) ) V(D,G)) V(D,G))尽可能的大。同理 m i n G V ( D , G ) min_G V(D, G) minGV(D,G)表示 G G G希望 V ( D , G ) V(D,G) V(D,G)尽可能的小,因为 G G G 希望生成的数据骗过 D D D, 即使 D ( G ( z ) ) D(G(z)) D(G(z))尽可能的大,这就使 V ( D , G ) V(D,G) V(D,G) 尽可能的小。 G , D G,D G,D相互对抗最后使 V ( D , G ) ) V(D,G)) V(D,G)) 达到最优。

image-20211031093506263

上图展示了GAN训练的过程,蓝色虚线表示D的判别结果,绿色实线表示 p g p_{g} pg生成样本的分布,黑色虚线表示真实的样本分布 p d a t a p_{data} pdata x , z x, z x,z 和箭头表示,从噪声映射到真实数据的过程。刚开始 p g p_{g} pg p d a t a p_{data} pdata差异非常大,所以 D D D 可以很好的分辨它们,随着训练的进行, p g , p d a t a p_{g}, p_{data} pg,pdata 逐渐趋于一致, D D D的判别结果也趋于 1 2 \dfrac{1}{2} 21

image-20211031100606389

A l g o r i t h m 1 Algorithm 1 Algorithm1 展示了作者训练GAN的步骤。 k k k 是一个超参,表示训练一次 G G G, 需要训练

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值