生成式对抗网络( GAN, Generative Adversarial Networks )是一种 深度学习模型,是近年来复杂分布上 无监督学习最具前景的方法之一。模型通过框架中(至少)两个模块:生成模型(Generative Model)和判别模型(Discriminative Model)的互相 博弈学习产生相当好的输出。原始 GAN 理论中,并不要求 G 和 D 都是神经网络,只需要是能拟合相应生成和判别的函数即可。但实用中一般均使用深度神经网络作为 G 和 D 。一个优秀的GAN应用需要有良好的训练方法,否则可能由于神经网络模型的自由性而导致输出不理想。
中文名
生成式对抗网络
外文名
Generative Adversarial Networks
简    称
GAN
领    域
机器学习 /  计算机视觉

目录

  1. 1 发展历史
  2. 2 方法
  3. 3 应用
  4. ▪ 图像生成
  5. ▪ 数据增强

发展历史

编辑

Ian J. Goodfellow等人于2014年10月在 Generative Adversarial Networks中提出了一个通过对抗过程估计生成模型的新框架。框架中同时训练两个模型:捕获数据分布的生成模型G,和估计样本来自训练数据的 概率的判别模型D。G的训练程序是将D错误的概率最大化。这个框架对应一个最大值集下限的双方对抗游戏。可以证明在任意函数G和D的空间中,存在唯一的解决方案,使得G重现训练数据分布,而D=0.5。在G和D由多层感知器定义的情况下,整个系统可以用反向传播进行训练。在训练或生成样本期间,不需要任何 马尔科夫链或展开的近似推理网络。实验通过对生成的样品的定性和定量评估证明了本框架的潜力  [1] 。

方法

编辑

机器学习的模型可大体分为两类,生成模型(Generative Model)和判别模型(Discriminative Model)。判别模型需要输入变量 ,通过某种模型来预测 。生成模型是给定某种隐含信息,来随机产生观测数据。举个简单的例子,
  • 判别模型:给定一张图,判断这张图里的动物是猫还是狗
  • 生成模型:给一系列猫的图片,生成一张新的猫咪(不在数据集里)
对于判别模型,损失函数是容易定义的,因为输出的目标相对简单。但对于生成模型,损失函数的定义就不是那么容易。我们对于生成结果的期望,往往是一个暧昧不清,难以数学公理化定义的范式。所以不妨把生成模型的回馈部分,交给判别模型处理。这就是Goodfellow他将机器学习中的两大类模型, Generative和 Discrimitive给紧密地联合在了一起  [2] 。
GAN的基本原理其实非常简单,这里以生成图片为例进行说明。假设我们有两个网络,G(Generator)和D(Discriminator)。正如它的名字所暗示的那样,它们的功能分别是:
  • G是一个生成图片的网络,它接收一个随机的噪声z,通过这个噪声生成图片,记做G(z)。
  • D是一个判别网络,判别一张图片是不是“真实的”。它的输入参数是x,x代表一张图片,输出D(x)代表x为真实图片的概率,如果为1,就代表100%是真实的图片,而输出为0,就代表不可能是真实的图片。
在训练过程中,生成网络G的目标就是尽量生成真实的图片去欺骗判别网络D。而D的目标就是尽量把G生成的图片和真实的图片分别开来。这样,G和D构成了一个动态的“博弈过程”。
最后博弈的结果是什么?在最理想的状态下,G可以生成足以“以假乱真”的图片G(z)。对于D来说,它难以判定G生成的图片究竟是不是真实的,因此D(G(z)) = 0.5。
这样我们的目的就达成了:我们得到了一个生成式的模型G,它可以用来生成图片。  [3]
Goodfellow从理论上证明了该算法的收敛性  [1] ,以及在模型收敛时,生成数据具有和真实数据相同的分布(保证了模型效果)。
GAN公式
公式中x表示真实图片,z表示输入G网络的噪声,G(z)表示G网络生成的图片,D(·)表示D网络判断图片是否真实的概率。

应用

编辑

图像生成

目前GAN最常使用的地方就是图像生成,如超分辨率任务,语义分割等等。

数据增强

用GAN生成的图像来做数据增强,如图。主要解决的问题是
  1. 对于小数据集,数据量不足, 如果能生成一些就好了。
  2. 如果GAN生成了图片?怎么给这些数据label呢?因为他们相比原始数据也不属于预定义的类别。

在  [4] 中,都做了一些尝试。实验想法也特别简单,先用原始数据(即使只有2000张图)训练一个GAN,然后生成图片,加入到训练集中。 总结一下就是:

  1. GAN 生成数据是可以用在实际的图像问题上的(不仅仅是像mnist 这种toy dataset上work)作者在两个行人重识别数据集 和 一个细粒度识别 鸟识别数据集上都有提升。
  2. GAN 数据有三种给pseudo label的方式, 假设我们做五分类
  • 把生成的数据都当成新的一类, 六分类,那么生成图像的 label 就可以是 (0, 0, 0, 0, 0, 1) 这样给。
  • 按照置信度最高的 动态去分配,那个概率高就给谁 比如第三类概率高(0, 0, 1, 0, 0)
  • 既然所有类都不是,那么可以参考inceptionv3,搞label smooth,每一类置信度相同(0.2, 0.2, 0.2, 0.2, 0.2) 注:作者16年12月写的代码,当时GAN效果没有辣么好,用这个效果好也是可能的, 因为生成样本都不是很“真”,所以起到了正则作用。

Gan(生成式对抗网络)相关推荐

  1. DeepLearing:GAN生成式对抗网络

    GAN 生成对抗网络 文章目录 GAN 生成对抗网络 一.介绍 Q&A 二.GAN模型 GAN结构 生成器("假钞厂") 判别器("验钞机") 生成器与 ...

  2. GANs系列:GAN生成式对抗网络原理以及数学表达式解剖

    一.GAN介绍 生成式对抗网络(GAN, Generative Adversarial Networks )是一种深度学习模型,是近年来复杂分布上无监督学习最具前景的方法之一.模型通过框架中(至少)两 ...

  3. PyTorch 实现 GAN 生成式对抗网络 含代码

    GAN 网络结构 GAN 公式的理解 简单线性 GAN 代码如下 卷积 GAN 代码如下 Ref 网络结构 GAN 公式的理解 minGmaxDV(D,G)=Ex∼Pdata(x)[logD(x)]+ ...

  4. GAN生成式对抗网络

    阅读Antonio Gulli<Deep Learning with Tensorflow 2 and keras>Second Edition 第六章GAN笔记 GAN生成对抗网络是无监 ...

  5. GAN生成式对抗网络总结

    [1.介绍] GAN网络可以看成是两个网络模型对抗,一个是生成网络模型G,一个是识别网络模型.生成式网络模型G是一个用来生图片的网络,该模型的输入为一个随机的噪声z,通过这个噪声来生成相应的图片,该图 ...

  6. 不要怂,就是GAN (生成式对抗网络) (六):Wasserstein GAN(WGAN) TensorFlow 代码

    先来梳理一下我们之前所写的代码,原始的生成对抗网络,所要优化的目标函数为: 此目标函数可以分为两部分来看: ①固定生成器 G,优化判别器 D, 则上式可以写成如下形式: 可以转化为最小化形式: 我们编 ...

  7. 不要怂,就是GAN (生成式对抗网络) (五):无约束条件的 GAN 代码与网络的 Graph...

    GAN 这个领域发展太快,日新月异,各种 GAN 层出不穷,前几天看到一篇关于 Wasserstein GAN 的文章,讲的很好,在此把它分享出来一起学习:https://zhuanlan.zhihu ...

  8. Github | 深度神经网络(DNN)与生成式对抗网络(GAN)模型总览

    点上方蓝字计算机视觉联盟获取更多干货 在右上方 ··· 设为星标 ★,与你不见不散 编辑:Sophia 计算机视觉联盟  报道  | 公众号 CVLianMeng 转载于 :https://githu ...

  9. 【Pytorch项目实战】之生成式网络:编码器-解码器、自编码器AE、变分自编码器VAE、生成式对抗网络GAN

    文章目录 博主精品专栏导航 生成式网络 - 生成合成图像 算法一:编码器-解码器 算法二:自编码器(Auto-Encoder,AE) 算法三:变分自编码器(Variational Auto Encod ...

  10. 【学习笔记】李宏毅2021春机器学习课程第6.1节:生成式对抗网络 GAN(一)

    文章目录 1 能够作为生成器的神经网络 GAN 2 动漫人物头像生成 3 判别器(Discriminator) 4 从自然选择看GAN的基本思想 5 GAN 的具体实现过程 步骤一: 固定 gener ...

最新文章

  1. (链表)反转链表Reverse List
  2. [CF]Round514
  3. linux进程之间传递句柄
  4. 绝对素数(信息学奥赛一本通-T1153)
  5. 菜鸟的成长记录--linux 通配符和特殊字符集合的使用
  6. C语言除法浮点型和整形,浅谈C语言整型与浮点型转换
  7. 假如正则从来没来过,我们该如何去匹配一个字符串?
  8. 爬虫python 英文,python爬虫—爬取英文名以及正则表达式的介绍
  9. 用数字电路和模拟电路搭建出循迹小车(一)
  10. 422串口线互连的接法
  11. 【ICCV2019论文阅读】PU-GAN:点云上采样对抗网络
  12. 速卖通奇门+聚石塔流程
  13. 输入年份 计算 生肖 C语言实现
  14. cscd期刊计算机排名,计算机CSCD核心期刊.pdf
  15. 本地缓存之LIFO、LRU、FIFO、LFU实现
  16. 永恒之蓝攻击处置方法
  17. 苹果iPad2充不上电的问题
  18. 给OkHttp Client添加socks代理
  19. windows android 对比度,色彩对比度饱和度基本测试
  20. 【学习打卡】CAM可解释性分析-算法讲解

热门文章

  1. 赛门铁克Symantec通配型SSL证书(Symantec Secure Site Wildcard SSL Certificates)
  2. FOB指定货操作标准流程及相关经验
  3. Improving the Sensitivity of Online Controlled Experiments by Utilizing Pre-Experiment Data
  4. HNUST 计算机组成原理课设
  5. 游戏开发中的数学和物理算法10-18
  6. RxSwift使用教程
  7. vscode配置并运行swift
  8. 北京高校毕业生就业突击讲座
  9. 30天自制操作系统 导读
  10. 学画画软件app推荐_最好用的绘画软件APP,学画画必备