- Ian J.Goodfellow
中文翻译:https://blog.csdn.net/wspba/article/details/54577236
代码实现:https://github.com/devnag/pytorch-generative-adversarial-networks/blob/master/gan_pytorch.py
Abstract
G:恢复训练样本的分布
D:在任何分布下产生错误的概率都是1/2
1. Introduction
深度学习的目标是用丰富的层次模型(rich, hierarchical models),表达人工智能领域任意种类数据的分布(distribution)。
当前深度学习领域最为成功的,是判别模型(discriminative models),主要成功基于反向传播(backpropagation)和丢弃(dropout)算法。
生成模型(generative models)的成就较少,原因在于计算极大似然估计(maximum likelihood estimation)和相关策略的概率计算困难,以及在生成的上下文中(generative context)很难使用分段线性单元的好处。本文提出了一个新的生成模型来解决这些问题。
这篇文章的生成模型(Generator)和判别模型(Discriminator)都是用多层感知机(multiplayer perceptron, 即全连接层)实现的,用简单有效的反向传播算法和dropout算法就可以训练。不需要近似推理和马尔可夫链。
2. Related work
数学基础不够,看不懂。
3. Adversarial nets
G(z; θg):多层感知机,可微函数,输入噪音,通过多层感知机参数θg生成。
D(x; θd):多层感知机,输出一个单独的标量。
训练D:最大化分配正确标签的概率(输入是真实图像和生成图像, training examples and samples from G)。
训练G:最小化 log(1 - D(G(z)))
上述方程无法为G提供足够的梯度来学习,训练初期,G生成的图像很差,D会以高置信度来拒绝生成的样本,因为他们和训练数据明显不同。这个时候,log(1 - D(G(z))) 就会饱和。
因此在训练G的时候,我们选择最大化 log(D(G(z))) 而不是最小化 log(1 - D(G(z))) 。
这样就能在训练初期为G提供较大的梯度。
这里可能不是说的很清楚,原文:This objective function results in the same fixed point of the dynamics of G and D but provides much stronger gradients early in learning.