本文授权转自赵喧典公众号 ▌1. 论文: Generative Adversarial Nets 本文是 GAN 的开山之作. GAN 由两个神经网络组成, 一为生成器 Generator, 一为判别器 Discriminator. 生成器用于捕捉(真实)数据的分布; 判别器用于估计(输入它的)样本是真实数据的概率, 从而能够指导生成器的训练. GAN 存在唯一的解, 即生成器能恢复真实的数据分布, 判别器的输出处处为 1/2
GAN 是深度生成模型的一个变种. 但后者存在以下两个难点, GAN 避免了这两个难点.
深度玻尔兹曼机 DBM 广泛地使用似然函数, 因此需要对似然梯度的大量估计. 这些困难推动了generative machine的发展, 这些模型不需要显式地表示似然, 能够从期望的分布中生成样本. 其中的一个例子是Generative stochastic networks GSN, 它可以通过 BP 训练 而不需要大量的近似. 而 GAN 通过剔除 GSN 中使用的马尔可夫链拓展了 generative machine. Variational AutoEncoders VAEs 同样给可微的生成器网络配了另一个神经网络, 该网络作为识别模型, 用于近似推断. VANs 与 GANs 的不同之处在于, GANs 需要通过可见单元进行微分, 因此不能对离散数据建模; VAEs 需要通过隐藏单元进行建模, 因此不能有离散 Predictability minimization PM 也使用了两个神经网络相互竞争的思想. 其第一个网络的每个隐藏单元都训练为和第二个网络的输出不同, 而第二个网络预测每个隐藏单元在给定所有其他隐藏单元的值时的值. GAN 与 PM 的不同在于:
另一个与 GAN 的思想相似的是Noise-contrastive estimation NCE, 它通过训练一个生成模型来学习能帮助区分判定性数据与固定噪声分布的模型权重. NCE 的限制是, 它的”判别器”定义为噪声分布与模型分布的概率密度比, 因此需要对两个概率密度都进行评估与 BP. 对抗样例是对分类网络的输入直接应用基于梯度的优化方法找到的样例, 目的是找到与数据相似但会被误分类的样例. 因此对抗样例主要是一种分析工具. 但是对抗样例的存在, 意味着 GAN 的训练可能是低效的, 因为它使得判别器能够自信地识别一个类, 但缺少对人类对于物类的感知的模拟. GAN 的架构如上图所示. 生成器的输入为噪声, 通过训练其参数, 以恢复真实数据分布. 深度学习作为一种表示学习方法, 一般的深度神经网络对数据处理过程可以视为一个编码过程, 而此处的生成器可以视为一个解码过程. 判别器则接受来自真实数据集或生成器生成的样本, 输出一个标量, 用以表示样本来自真实数据集的概率. GAN 的 minmax 博弈的值函数表示如下: 在 GAN 训练的早期, G (以下均用 G 表示生成器, D 表示判别器) 非常差劲, 其输出结果明显不同于真实数据, 因此 D 能以绝对的自信判定真假, 输出接近 1 或 0 的概率, 导致 G 的梯度消失 (饱和), 从而难以训练 G. 此时使用最大化而不是最小化会有所帮助. 因为该观测值使得 G 与 D 的动态具有相同的定点, 因此能在训练早期提供更强的梯度. (此处, 我不明白) 本文后面的内容从理论上证明了以下两项, 具体证明过程在此略去:
实际应用中, GAN 通过函数来表示的一个受限族, 并且优化的是而不是. 因此 GAN 实际缺乏理论保障.
GAN 的缺点:
GAN 的优点
▌2.论文: Generative Adversarial Networks: An Overview 这是近期新出的 GAN 的综述. GAN 要求 G 与 D 必须是可微的, 但不要求它们是直接可逆的
LAPGAN 通过多次放缩, 对生成过程进行分解解决了(使用(相同容量)和(与监督学习的表示能力相同的 CNN)来训练 G 和 D 很困难)的问题, 并使用条件卷积 GAN来生成每一层的图像. [此处的圆括号用于辅助断句] DCGAN 利用了 strided 和 fractionally-strided 卷积来分别支持降采样与上采样操作. 这些操作能处理采样速率与采样位置的变化, 而这正是将图片空间映射到可能的低维潜变量空间及将图片空间映射到 D 的一个关键. Conditional GAN 提供了对多模式数据生成的更好的表示. InfoGAN 将噪声源分解为不可再分解的源与一个潜代码 latent code, 并试图通过最大化潜代码与 G 输出之间的交互信息来发现变量的潜在因子. 实验表明 InfoGAN 习得的表示在语义上是有意义的. Adversarially Learned Inference, ALI 与 Bidirectional GAN 是带推理模型的 GAN, 引入了推断网络, 能在 D 检测 (data, latent) 对时提供帮助. 而此时, G 由两部分组成, 除了常规的解码器, 还有一个额外的推断网络作为编码器. Adversarial Autoencoders, AAE 将对抗的思想引入自编码器. 在潜变量空间与其期望先验分布间引入对抗训练, 从而得到一个组合损失函数, 它反映了重构误差以及由候选编码网络产生的先验分布有多不同的一种度量. Adversarial Variational Bayes, AVB 试图优化与 VAE 相同的标准, 但使用对抗训练的观测而非 KL 散度.
理想情况下, 针对当前 G, D 会训练到最优; 然后训练 G. 但实际中, D 可能不会训练到最优状态, 只会进行有限的几次迭代训练, 并且 D 与 G 同时训练更新. GAN 实际是要找到一个鞍点, 因此梯度下降算法对于 GAN 的训练并不合适. 真实数据只是高维空间中的一个低维流形, 因此训练 G 来恢复真实数据分布, 在空间中也只是很小的一块区域. 由于与很可能是不重叠的, 因此 D 可能总会以极高的自信判别真假 当 D 最优时, 训练 G 等价于最小化与 间的 JS 散度 (如上所述); 但 D 不是最优时, 对 G 的更新可能是无意义, 或者不准确的
Nowozin et al. 指出, GAN 的训练可能可以被泛化为不仅仅最小化 JS 散度, 而且最小化 f-散度的估计, 并提出了 f-GANs. f-GANs 在训练之初, G 的梯度不太容易消失. 这是因为, 训练 D 时, 估计了真假数据分布的 f-散度的偏差,而在训练 G 时, 仅最小化 f-散度的估计. f-GANs 后又得到扩展, 训练 D 时, 预测真假数据分布的比例; 训练 G 时, 直接最小化 f-散度. WGAN 使用了 Wasserstein 距离的近似作为成本函数, 这能为 G 提供更有用的梯度. 最近的研究表明, 权重剪切 weight clip 较小了 D 的容量, 强迫它学习更简单的函数. BiGAN 和 ALI 提供了图片到潜变量空间的映射, 但重建的品质并不高
一些 GANs 变种提供了从图片到潜变量映射的网络, 因此能够探索和利用结构化的潜变量空间. 通过编码器, 带标签的数据集可以映射到潜变量空间, 从而发现能表示高层属性的”概念向量”. Gurumurthy et al. 对混合高斯分布的潜变量空间进行建模.
▌3.论文: Conditional Generative Adversarial Nets 这是一篇比较短小的论文. 就提出了一个概念: 同时向 G 和 D 输入相同的额外信息, 引导生成过程. 这些额外信息也称为条件, 可以是类标签, 或者是其他任何辅助信息. 这个方法很实用. GANs 原来是漫无目的的生成样本的, 加入条件之后, cGAN (我喜欢称条件 GAN 为 cGAN) 就真正实现了指哪打哪, 可以定向生成样本, 比如 MNIST 的数字 5 (Give me 5!) cGAN 的值函数见下, 架构见上. 博弈的值函数表示如下: 本文经授权转载自赵喧典:kissg_mp,点击“阅读原文”可查阅原文。 |
|