论文精读《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》论文精读的更多相关文章

  1. 论文笔记之:Conditional Generative Adversarial Nets

    Conditional Generative Adversarial Nets arXiv 2014   本文是 GANs 的拓展,在产生 和 判别时,考虑到额外的条件 y,以进行更加"激烈 ...

  2. 论文笔记之:Generative Adversarial Nets

    Generative Adversarial Nets NIPS 2014  摘要:本文通过对抗过程,提出了一种新的框架来预测产生式模型,我们同时训练两个模型:一个产生式模型 G,该模型可以抓住数据分 ...

  3. 论文笔记之:SeqGAN: Sequence generative adversarial nets with policy gradient

    SeqGAN: Sequence generative adversarial nets with policy gradient  AAAI-2017 Introduction :  产生序列模拟数 ...

  4. Generative Adversarial Nets[content]

    0. Introduction 基于纳什平衡,零和游戏,最大最小策略等角度来作为GAN的引言 1. GAN GAN开山之作 图1.1 GAN的判别器和生成器的结构图及loss 2. Condition ...

  5. Generative Adversarial Nets[Wasserstein GAN]

    本文来自<Wasserstein GAN>,时间线为2017年1月,本文可以算得上是GAN发展的一个里程碑文献了,其解决了以往GAN训练困难,结果不稳定等问题. 1 引言 本文主要思考的是 ...

  6. Generative Adversarial Nets[Pre-WGAN]

    本文来自<towards principled methods for training generative adversarial networks>,时间线为2017年1月,第一作者 ...

  7. Generative Adversarial Nets(原生GAN学习)

    学习总结于国立台湾大学 :李宏毅老师 Author: Ian Goodfellow • Paper: https://arxiv.org/abs/1701.00160 • Video: https:/ ...

  8. GAN(Generative Adversarial Nets)的发展

    GAN(Generative Adversarial Nets),产生式对抗网络 存在问题: 1.无法表示数据分布 2.速度慢 3.resolution太小,大了无语义信息 4.无reference ...

  9. Generative Adversarial Nets(GAN Tensorflow)

    Generative Adversarial Nets(简称GAN)是一种非常流行的神经网络. 它最初是由Ian Goodfellow等人在NIPS 2014论文中介绍的. 这篇论文引发了很多关于神经 ...

  10. 一文读懂对抗生成学习(Generative Adversarial Nets)[GAN]

    一文读懂对抗生成学习(Generative Adversarial Nets)[GAN] 0x00 推荐论文 https://arxiv.org/pdf/1406.2661.pdf 0x01什么是ga ...

随机推荐

  1. BeautifulSoup模块的使用方法

    本篇文章主要讲bs4模块(BeautifulSoup),这个模块能做么呢?用一句话来概括的话:beautifulsoup4 从HTML或XML文件中提取数据的Python库,用它来解析爬取回来的xml ...

  2. spark中的持久化机制以及lineage和checkpoint(简含源码解析)

    spark相比MapReduce最大的优势是,spark是基于内存的计算模型,有的spark应用比较复杂,如果中间出错了,那么只能根据lineage从头开始计算,所以为了避免这种情况,spark提供了 ...

  3. CTFSHOW-Reverse-刷题记录

    re2 打开初步分析为32位程序,无壳,拖入IDA32分析 找到关键行47-50,分析得出各函数内部的基本作用如图所示 首先进入分析输入后的处理 可以很明显看出,是对输入的字符串进行处理后再操作,因此 ...

  4. # SpringBoot使用Validation校验参数 ##

    SpringBoot使用Validation校验参数 一.简介 参考 (14条消息) 1. 不吹不擂,第一篇就能提升你对Bean Validation数据校验的认知_@decimalmax和@max_ ...

  5. 升级二进制kubernetes集群

    升级二进制kubernetes集群 背景介绍 最近由于时间不足,暂时无法对小版本更新第一时间出新的文档.若需要升级集群版本,可以参考此文档进行操作,每个节点一个一个地更新.大版本更新请各位持续关注我的 ...

  6. Spring 源码阅读之标签解析

    全局目录.md 引子 1.容器最基本使用.md 系列1 - bean 标签解析: 2.XmlBeanFactory 的类图介绍.md 3.XmlBeanFactory 对xml文件读取.md 4.xm ...

  7. pandas之画图

    Pandas 在数据分析.数据可视化方面有着较为广泛的应用,Pandas 对 Matplotlib 绘图软件包的基础上单独封装了一个plot()接口,通过调用该接口可以实现常用的绘图操作.本节我们深入 ...

  8. 从k8s 的声明式API 到 GPT的 提示语

    命令式 命令式有时也称为指令式,命令式的场景下,计算机只会机械的完成指定的命令操作,执行的结果就取决于执行的命令是否正确.GPT 之前的人工智能就是这种典型的命令式,通过不断的炼丹,告诉计算机要怎么做 ...

  9. JUC(五)Callable

    Callable接口 创建线程的几种方式 继承Thread类 实现Runnable接口 通过Callable接口 线程池 使用Runnable接口无法获取到线程返回的结果,因此在jdk1.5后java ...

  10. token验证

    token验证 什么是token?我相信很多开发者都或多或少听过基于 token 的用户鉴权和基于 session 的用户鉴权,而今天说的 token 验证就是第一种了.token 的意思是" ...