文献阅读(70)NIPS2014-Generative Adversarial Nets

本文是对《Generative Adversarial Nets》一文的总结,如有侵权即刻删除。

更多相关文章,请移步:
文献阅读总结:计算机视觉

Title

《Generative Adversarial Nets》

——NIPS2014

Author: Ian J. Goodfellow

总结

李沐讲解视频:https://www.bilibili.com/video/BV1rb4y187vD/?spm_id_from=pageDriver

文章指出,尽管深度学习在判别模型上取得了很大进展,但在生成模型上效果较差,难点主要在于当最大化似然函数时,要对概率分布做很多近似,这种近似带来了很大的计算困难。为解决该问题,文章不再尝试求得数据的真实分布,而是通过拟合一个尽可能真实的分布来表示数据。在此,提出了生成对抗网络GAN,即设置一个生成器G和一个判别器D进行对抗,G尽可能生成使D混淆的假样本,而D则尽可能将真假样本区分开。通过G和D的不断迭代更新,最终的理想结果是G生成的假样本完全不能由D判别出来,D对任意真假样本的判别概率都来到1/2,此时就可视为GAN拟合到了无限近似于真实分布的概率分布。

1 模型

在GAN中,生成器G将从数据x上学习一个P_g的分布,因此先根据输入的随机变量z得到一个初始分布P_z(z),而后把z映射成x,就避免了去研究x的真实构造。

判别器D用于判断输入的数据到底是从真实数据而来还是从生成器而来,本质上是一个两类的分类器,判断数据为真实数据时结果为1,生成数据则结果为0。

文章的损失函数是一个最大最小的构造,如下所示:

在这里插入图片描述

该损失函数分为两面,一面是针对D的最大化损失,一面是针对G的最小化损失,其算法的优化流程如下:

在这里插入图片描述

注意到在该算法中,首先对判别器进行k次优化,再对生成器进行一次优化,从而完成一次迭代过程,其中k是超参数。

对D优化时,保留的是损失函数的所有部分,在D完美判别的情况下,前后两项均为0,而当D不完美时,损失函数会变成负数,因此训练D的过程即最大化损失函数。

对G优化时,只保留了损失函数与G相关的后一项。当D能够正确区分数据时,D(G(z))=0,即损失函数整体为0,当D不能正确区分时,极端情况下D(G(z))=1,则损失函数为负无穷大。由于G的目标是让D不能正确区分,因此训练G的过程即最小化损失函数。

应当注意,在算法更新时,对D的更新既不能太好也不能太差。更新G时,如果D效果太差,那么对G的更新就起不到好的效果,仅需简单的伪造就能骗过判别器。如果D效果太好,那么G就得不到最够的梯度用于更新来提升效果。因此k作为一个超参数,即要控制D和G的更新进度差不多。

此外,在训练早期,G是比较弱的,生成的数据会和真实数据相差很远,D就很容易训练得很好,从而导致没有足够的梯度来优化G。因此文章建议在早期更新G时,将目标函数从min log(1-D(G(z)))改为max log(D(G(z))),此时即便D能够区分开真假数据,但由于是最大化,仍然能够有梯度对G完成有效更新。

整体来看,GAN的收敛是不够稳定且难以判别的。

下图给出了GAN的实际训练流程示意图:

在这里插入图片描述

其中黑线是真实分布,绿线是生成分布,蓝线是判别器,从z指向x的过程即将z映射为x的过程。该图分为四个流程,在初期判别器D和生成器G的效果都不太好,如(a)所示。下一步对D进行更新,使得其曲线在生成分布附近的概率尽可能低,如(b)所示。而后更新G,使得G的生成分布尽可能拟合真实分布,如©所示。最终实现的理想效果是D曲线完全停留在1/2,即无法判别真假,而此时G的曲线则无限接近于真实分布,如(d)所示。

2 理论证明

文章针对部分性质给出了理论证明,主要指出两部分内容,即目标函数有全局最优解,且算法一能求解目标函数。

在这里插入图片描述
在这里插入图片描述

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值