《Generative Adversarial Nets》论文精读
论文精读《Generative Adversarial Nets》
导言:生成模型是目前爆火的一个研究方向,据Microsoft对于ChatGPT-4的研究称“ChatGPT-4可以看成是通用型人工智能(AGI)的早期版本;其独特的推理能力和理解语义能力迅速在全球掀起了大模型研究的一股热潮。不仅仅是NLP领域,CV领域也有相应的工作,例如meta研究发布的《Segment Anything》这篇论文,也是图像分割领域的里程碑,可以做到不经过训练就能够对未知的样本达到非常好的语义分割的效果。日后的博客将会更新一些生成方向的论文和前沿的科技。”
《Generative Adversarial Nets》。这是一篇由Ian Goodfellow等人于2014年提出的重要论文,提出了一种新颖的生成模型,称为生成对抗网络(GAN)。
在这篇论文中,作者提出了一种通过对抗过程估计生成模型的框架,其中包含两个模型:一个生成模型G和一个判别模型D。生成模型G用来生成伪造数据,而判别模型D用来评估一个数据样本是真实数据还是伪造数据。这两个模型通过对抗过程相互训练,最终得到一个能够生成类似于真实数据的生成模型。
GAN是一种非常有效的生成模型,已经在图像生成、语音合成、自然语言处理等领域取得了广泛应用。这篇论文对于深度学习和生成模型的发展具有重要意义,并且一直受到广泛的研究和引用。
在此前的生成模型领域,一般都用的是基于概率的生成模型,例如自回归模型等;GAN的诞生开创了生成模型的一个全新的世界。其主要利用了博弈论的原理:训练两个神经网络分别是D和G,分别是判别网络D和生成模型G,生成模型是学习给定样本的数据分布,并尽可能的生成出符合给定样本数据分布的全新数据;判别器的作用是判断给定的样本是生成器生成出来的还是原始数据。我们期望于判别模型尽可能的能够分清给定数据到底是生成器生成的,还是原始数据分布;并且期望于生成器能够尽可能的逼近原始数据,做到以假乱真的效果。
最终我们可以达到纳什平衡:判别器对于给定的数据有50%的概率认为是原始数据,有50%的概率认为是生成器生成的数据。这样就达到了我们GAN的收敛效果。事实上,可以用验钞机和罪犯的例子来理解:印假钞的罪犯期望于能够做出以假乱真的假币,在外人眼里与真钞毫无区别;而我们的验钞机则想要区分出一张钞票的真伪。通过这个小例子,对于GAN的基本原理就能了解的差不多了。
说完了我们模型的最终效果,我们来考虑一些更加细节的东西,包括我们该如何训练这两个神经网络?他们的损失函数是什么样子的?

上面的给出的公式就是我们GAN的损失函数,其中p_data是指x服从与给定的数据分布,D(x)指的是判别器将给定数据判定为真实数据的概率;与之类似的是,z~pz(z)是指随机噪声,G(z)是指生成器生成出的数据,D(G(z))意为判别器判定生成器生成出的数据为真实数据的概率即犯错的概率。事实上,我们的生成网络和判别网络共享一个损失函数即上面所提到的这个,我们在训练时,首先更新判别网络D的参数:我们考虑,最终的目的是想要让模型对于给定样本的判别能力尽可能的强,同时对于生成器生成的数据,我们期望犯错的概率尽可能的小,所以在更新D的参数时,我们首先需要最大化D(x),同时最最大化1-D(G(z)),值得注意的是,对于后面的1-D(G(z)),代表的是判别器成功将生成数据判定为生成数据的概率。同理,在更新生成器时,我们需要最小化1-D(G(z)),也就是说最大化D(G((z)),这与我们上面所讨论的原理是相一致的。
接下来我们考虑一些更加细节的东西:事实上,对抗网络和生成网络的纳什平衡是50%时,也就是我们上面所讨论的情况,知晓这些,GAN的相关内容就没什么问题了。
后面将更新的论文是《Auto-Encoding Variational Bayes》敬请期待!
《Generative Adversarial Nets》论文精读的更多相关文章
- 论文笔记之:Conditional Generative Adversarial Nets
Conditional Generative Adversarial Nets arXiv 2014 本文是 GANs 的拓展,在产生 和 判别时,考虑到额外的条件 y,以进行更加"激烈 ...
- 论文笔记之:Generative Adversarial Nets
Generative Adversarial Nets NIPS 2014 摘要:本文通过对抗过程,提出了一种新的框架来预测产生式模型,我们同时训练两个模型:一个产生式模型 G,该模型可以抓住数据分 ...
- 论文笔记之:SeqGAN: Sequence generative adversarial nets with policy gradient
SeqGAN: Sequence generative adversarial nets with policy gradient AAAI-2017 Introduction : 产生序列模拟数 ...
- Generative Adversarial Nets[content]
0. Introduction 基于纳什平衡,零和游戏,最大最小策略等角度来作为GAN的引言 1. GAN GAN开山之作 图1.1 GAN的判别器和生成器的结构图及loss 2. Condition ...
- Generative Adversarial Nets[Wasserstein GAN]
本文来自<Wasserstein GAN>,时间线为2017年1月,本文可以算得上是GAN发展的一个里程碑文献了,其解决了以往GAN训练困难,结果不稳定等问题. 1 引言 本文主要思考的是 ...
- Generative Adversarial Nets[Pre-WGAN]
本文来自<towards principled methods for training generative adversarial networks>,时间线为2017年1月,第一作者 ...
- Generative Adversarial Nets(原生GAN学习)
学习总结于国立台湾大学 :李宏毅老师 Author: Ian Goodfellow • Paper: https://arxiv.org/abs/1701.00160 • Video: https:/ ...
- GAN(Generative Adversarial Nets)的发展
GAN(Generative Adversarial Nets),产生式对抗网络 存在问题: 1.无法表示数据分布 2.速度慢 3.resolution太小,大了无语义信息 4.无reference ...
- Generative Adversarial Nets(GAN Tensorflow)
Generative Adversarial Nets(简称GAN)是一种非常流行的神经网络. 它最初是由Ian Goodfellow等人在NIPS 2014论文中介绍的. 这篇论文引发了很多关于神经 ...
- 一文读懂对抗生成学习(Generative Adversarial Nets)[GAN]
一文读懂对抗生成学习(Generative Adversarial Nets)[GAN] 0x00 推荐论文 https://arxiv.org/pdf/1406.2661.pdf 0x01什么是ga ...
随机推荐
- python安装robotframework的一些常见的错误
python安装robotframework的一些常见的错误 首先的电脑环境是x86的,然后下载的python版本起初是3.10.1的 在cmd 中出入pip install robotframwor ...
- dart基础---->单例singleton
At least, there are three ways to create the singleton object with dart. 1. factory constructor clas ...
- ACM-CodeForces-#685(Div.2)
好久没见过CF有这么水的contest了,蒟蒻赶紧找找自信 A. Subtract or Divide #include<iostream> using namespace std; in ...
- Thread 线程中的 Synchronized block and lock
Thread Definition of Synchronized Synchronized block in java are marked with the synchronized keywor ...
- [Windows/CMD]不重启设置/刷新环境变量
1 文由 当我已经通过如下路径设置了Maven的环境(maven-3.5.4). "我的电脑"->"属性"->"高级"-> ...
- [Oracle]创建数据库表【待完善】
1 前期准备 -- 参考文献 https://www.it1352.com/597381.html -- step1 创建用户<JOHNY>, 来创建对应的(默认)数据库模式(SCHEMA ...
- Atcoder Regular Contest 093 C - Bichrome Spanning Tree
给定一张图,对图上边黑白染色,使得同时选择了两种颜色边的最小生成树边权和为X,求染色方案数. 先求出图的\(mst\)大小,然后分三类讨论: 1.\(X<mst\) 无解 2.\(X==mst\ ...
- CentOS 6.8 安装 node 后报错,显示 gcc 版本过低
因为测试服务器要部署一个 vue 的环境,安装了 node 和 npm 后,却由于 gcc 动态库版本过低,导致报错如下 node: /usr/lib64/libstdc++.so.6: versio ...
- C盘爆满的解决方法,不用删除文件,使用分区助手无损增加内存
一.分区助手傲梅科技 对于我们C盘内存不足的来说,老师推荐的yyds. 我的内存C盘历史最低是900多M,1.5G还是多的,经过我不断的删除文件,发现没什么用,电脑用久了C盘文件占内存自然就多了!!改 ...
- 如何通过Java应用程序在PPT中创建SmartArt图形
SmartArt其实就是一个文字的可视化工具,用户可在PowerPoint,Word,Excel中使用该特性创建各种图形图表.SmartArt 图形是信息和观点的视觉表示形式.可以通过从多种不同布局中 ...