走进生成对抗式网络(GAN)摘记

自从OpenAI的Ian J.Goodfellow大神发的开创性文章GAN以后,GAN的发展是膨胀式的,工业界的各个大牛也随之加入GAN蓬勃发展的大军中。除了OpenAI之外,工业界好多公司都参与到了GAN的研究中,包括了Facebook、Google、Apple等公司。其中一个发表比较的多的就是Facebook的Soumith Chintala,他参与发表了DCGANLPGANWGAN以及SSGAN,其中WGAN也是得到了大量的关注,该文详细的对GAN的缺陷进行了深入解析,然后提出了具有里程碑式的改进,个人认为这对后续GAN的发展起到了很关键的作用;另外Google也是在GAN相关方向上发表了4篇以上的论文,G家的工程能力再一次凸显出来,一上来就结合adboostunrolledautoencoder等方向发表了几篇文章;除此之外就连Apple也将自己对外发表的第一篇AI论文SUGAN献给了GAN领域,该SUGAN文章讲述如何利用合成图像而不是随机向量作为输入结合GAN对合成图像的质量进行无监督的改善提升然后用于训练。

随着GAN在目标优化上的不断持续改进,目前应用方向也得到了一些扩展,涉及的方向包括但不限于如下:图像生成文本生成图像根据场景生成视频骨架图检索图像超分辨率通讯保护等。由于GAN的生成对抗特性,它特别适用于不同域上的特征映射,这个想象空间就会非常大,结合之前DL的一些常见应用可以展望如下结合域上的一些应用:图像文本结合,图像语音结合,图像视频结合等。另外它可以天然的去做无监督学习、半监督学习等。

在观察了工业界以及应用上的一些动向后,需要来看下到底GAN的目标函数是怎样的?在调研中发现,生成对抗式网络的目标函数也是经过了很多轮的改进。首先GAN文章提出了生成对抗式网络,其基本公式如下:

其中D函数代表判别网络,G代表生成网络,整个优化目标需要最大化判别网络D判别正确的概率(公式第一项)同时需要最小化G生成的样本被判别出来的概率(公式第二项)。在实际的训练过程中:1)早期G网络很弱,D网络总是能判别出来G生成的样本,这时候公式第二项的梯度会很弱,所以早期的时候会采用最大化log D(G(z))的方式来获取更强的梯度;2)训练过程中会训练k步D网络,然后再训练一步G网络,总是让D网络足够强。论文中提到的实际训练中的第一个技巧也预示着在后续的训练中只要D网络特别强,那么论文公式一中的第二项会让G网络的梯度变很弱,这时候训练过程就进行不下去了,所以在训练GAN的时候别把D网络训练得太强。WGAN文章提出在训练集样本概率密度函数与生成样本概率密度函数两者分布的可重叠部分很少时,GAN中优化公式一的损失函数就会变为一个常数,从而梯度就会消失,网络也就训练不下去了。除此之外,WGAN基于GAN文章中的内容将目标函数转化了下,从拉进生成样本的概率密度分布与训练集样本的概率密度分布为目标提出了如下损失函数用来度量两个概率密度分布的距离(WGAN公式一):

接着文章将其转化成了WGAN公式二:

再接着转化成WGAN公式三:

由于公式三中的f函数必须满足论文中提出的K-Lipschitz条件,所以在实际训练WGAN网络的时候,可以通过限制网络参数在某一固定取值空间内即,然后每次更新完网络参数w,都将其裁剪到上述的固定取值空间。在WGAN解决了原始GAN的梯度消失问题后,接着在实践中,大家又发现了其他的问题那就是LSGAN文章中提出的modecollapse现象,在WGAN的公式三中,可能会出现生成的样本和一部分真实样本已经非常相近,但该公式三还会一直在这部分真实样本上持续不断的产生梯度,当这部分样本占很大多数时,网络就会一直陷入这批真实样本上的持续优化中,另一部分少数真实样本的概率分布可能就会学不到。基于上述观察LSGAN提出了LSGAN公式六:

在实际训练中文章显示LSGAN方法在生成网络梯度方面具有更加鲁棒的特性,另外

部分采用像素级别的L1距离。MRGAN论文观察到之前GAN的方法大多采用将随机向量z映射到一个样本空间,这样可能会增加GANs网络的学习难度,文中提出让 z 从一个样本空间先映射过来,也就是有一个 z = encoder(X) 的过程,从而再,G(encoder(X))。这样可以让生成样本尽可能靠谱点,也就是让G生成网络能力尽可能强些,这样整个训练也会更加平稳,并且这里也同时可以更好的解决mode collapse问题,因为通过让z = encoder(X),该方法RGAN已经显示的让生成网络能覆盖所有的样本空间。MRGAN的目标函数如下:

在实际训练中,会迭代地去训练MRGAN公式二与RGAN公式一。

时间: 2024-10-26 05:14:10

走进生成对抗式网络(GAN)摘记的相关文章

生成对抗式网络

本报告总结了 NIPS 上 Ian Goodfellow 的 生成式对抗网络课程.其内容有:(1)为何生成式建模是值得学习的话题:(2)生成式模型如何工作,GAN 与其他生成式模型的比较:(3)GAN 工作原理:(4)GAN 的研究前沿:(5)将 GAN 和其他方法组合的当前最优的图像模型.最后给出帮助读者学习的三个练习和相应的解答. 引言 本报告总结了 NIPS2016 上的生成对抗网络的课程.回答了很多之前的听众提出来的大多数问题,并尽可能地确保它对大家有用.当然,它不能算是 GAN 这个领

gan对抗式网络

感觉好厉害,由上图噪声,生成左图噪声生成右图以假乱真的图片,原理后面继续补充

《生成对抗网络GAN的原理与应用专题》笔记

视频教程的链接:http://campus.swarma.org/gpac=8 一.什么是GAN 框架简述 GAN全称是Generative Adversarial Nets,中文叫做"生成对抗网络". 在GAN中有2个网络,一个网络用于生成数据,叫做"生成器".另一个网络用于判别生成数据是否接近于真实,叫做"判别器". 下图展示了最简单的GAN的结构以及工作原理. 模型中最左侧的随机向量是为了让生成器产生不同的输出,而增加的扰动项.这些扰动决定

在浏览器中进行深度学习:TensorFlow.js (八)生成对抗网络 (GAN

Generative Adversarial Network 是深度学习中非常有趣的一种方法.GAN最早源自Ian Goodfellow的这篇论文.LeCun对GAN给出了极高的评价: "There are many interesting recent development in deep learning-The most important one, in my opinion, is adversarial training (also called GAN for Generativ

生成对抗网络GAN

详解一:GAN完整理论推导和实现 详解二:详解生成对抗网络(GAN)原理 原文地址:https://www.cnblogs.com/yunkaiL/p/10952881.html

使用生成对抗网络(GAN)生成手写字

先放结果 这是通过GAN迭代训练30W次,耗时3小时生成的手写字图片效果,大部分的还是能看出来是数字的. 实现原理 简单说下原理,生成对抗网络需要训练两个任务,一个叫生成器,一个叫判别器,如字面意思,一个负责生成图片,一个负责判别图片,生成器不断生成新的图片,然后判别器去判断哪儿哪儿不行,生成器再不断去改进,不断的像真实的图片靠近. 这就如同一个造假团伙一样,A负责生产,B负责就鉴定,刚开始的时候,两个人都是菜鸟,A随便画了一幅画拿给B看,B说你这不行,然后A再改进,当然需要改进的不止A,随着A

PyTorch实现简单的生成对抗网络GAN

生成对抗网络(Generative Adversarial Network, GAN)包括生成网络和对抗网络两部分.生成网络像自动编码器的解码器,能够生成数据,比如生成一张图片.对抗网络用来判断数据的真假,比如是真图片还是假图片,真图片是拍摄得到的,假图片是生成网络生成的. 生成对抗网络就是让生成网络和对抗网络相互竞争,通过生成网络来生成假的数据,对抗网络判别该数据是真是假,最后希望生成网络生成的数据以假乱真骗过判别器. 以下程序主要来自廖星宇的<深度学习之PyTorch>的第六章,本文对原代

生成对抗网络浅析(GAN)

生成对抗网络 ? 顾名思义,生成对抗网络由两个部分构成, 生成器(Generator)和判别器(Discriminator), 两个部件相互博弈,最终达到平衡状态. 基本原理 下面以生成图片为例. G: 生成器 接受一个随机的噪声 z,通过噪声产生目标G(z) D:判别器 判别目标是否是"真实的".输入参数是 x,输出为D(x), 表示是否为真实的概率. ? 训练的过程中, G的目的就是尽量生成真实的图片欺骗 D.而 D的目标就是尽量将 G 生成的图片和真实的图片分离开.这样就是一个博

生成对抗网络 Generative Adversarial Networks

转自:https://zhuanlan.zhihu.com/p/26499443 生成对抗网络GAN是由蒙特利尔大学Ian Goodfellow教授和他的学生在2014年提出的机器学习架构. 要全面理解生成对抗网络,首先要理解的概念是监督式学习和非监督式学习.监督式学习是指基于大量带有标签的训练集与测试集的机器学习过程,比如监督式图片分类器需要一系列图片和对应的标签("猫","狗"-),而非监督式学习则不需要这么多额外的工作,它们可以自己从错误中进行学习,并降低未来