GAN学习总结一GAN基本概念理解

​ GAN(Generative Adversarial Network)生成式对抗网络,由Ian Goodfellow 首先提出,是近两年来最热门的东西,仿佛什么都可以利用GAN来产生,最近在进行图像超解像相关工作,也看到了利用GAN进行超解析相关工作,看了一些资料和李弘毅老师的视频,做一些学习笔记,后续能温故而知新。

1.什么是GAN?

​ GAN启发自博弈论中的二人零和博弈(two-player game),GAN 模型中的两位博弈方分别由生成式模型(generative model)和判别式模型(discriminative model)充当。生成模型 G 捕捉样本数据的分布,用服从某一分布(均匀分布,高斯分布等)的噪声 z 生成一个类似真实训练数据的样本,追求效果是越像真实样本越好;判别模型 D 是一个二分类器,估计一个样本来自于训练数据(而非生成数据)的概率,如果样本来自于真实的训练数据,D 输出大概率,否则,D 输出小概率。

​ 如下图二次元人物生成过程,上图为Generator,给出一个向量,经过Generator产生出一个图像,给出不同的向量可以得到不同的图像,存在一个问题是产生的图像是否接近真实的图像,此时需要Discriminator来判定,如下图,真实的图像D网络给出较高的分数,而不真实的图像给出较低的分数,最终的目的是G网络产生的图像D网络也能给出很高的分数。



2.GAN网络训练?

以上面二次元图像生成为例说明,G(Generator)和D(Discriminator)

  • G作用是接收一个向量Z(随机噪声),通过G生成图像,记做G(Z);
  • D作用是判别一张图像是否是“真实的”。输入是X,X表示一张真实图像,则D(X)表示真实图像的概率,为1表示100%的真实的图像,而输出0,表示不是真实的图像。

训练过程中,固定一方,更新另一方的网络权重,交替迭代,在这个过程中,双方都极力的优化自己的网络,从而形成竞争对抗,直到双方达到一个动态的平衡。理想情况下,最后的结果是G生成的图像和真实的图像非常相似,D网络难以区分真实的图像和G生成的图像,此时D(G(Z)) = 0.5。

上述过程表示成如下公式:
min⁡Gmax⁡DV(D,G)=Ex∼pdata (x)[log⁡D(x)]+Ez∼pz(z)[log⁡(1−D(G(z)))]\min _ { G } \max _ { D } V ( D , G ) = \mathbb { E } _ { \boldsymbol { x } \sim p _ { \text { data } } ( \boldsymbol { x } ) } [ \log D ( \boldsymbol { x } ) ] + \mathbb { E } _ { \boldsymbol { z } \sim p _ { \boldsymbol { z } } ( \boldsymbol { z } ) } [ \log ( 1 - D ( G ( \boldsymbol { z } ) ) ) ]Gmin​Dmax​V(D,G)=Ex∼p data ​(x)​[logD(x)]+Ez∼pz​(z)​[log(1−D(G(z)))]

公式说明:

  • x表示真实的图像,z表示输入的G网络噪声,G(z)表示G网络生成的图像。
  • D(x)表示真实输入的概率,D(G(z))表示D网络判断G生成的图像是否真实的概率;
  • G的目的:D(G(z))是D网络判断G生成的图片是否真实的概率,G应该希望自己生成的图片“越接近真实越好”。也就是说,G希望D(G(z))尽可能得大,这时V(D, G)会变小。因此我们看到式子的最前面的记号是min_G。
  • D的目的:D的能力越强,D(x)应该越大,D(G(x))应该越小。这时V(D,G)会变大。因此式子对于D来说是求最大(max_D)。

论文中给出了利用随机梯度下降法如何训练网络D和G,如下图:

先训练D,利用梯度上升,使损失函数越大越好,再训练G,利用梯度下降算法,使损失函数越小越好。

3.Auto-encoder VAE 和GAN

auto-encoder(自编码器)

​ 结构如下,训练一个 encoder,把 input 转换成 code,然后训练一个 decoder,把 code 转换成一个 image,然后计算得到的 image 和 input 之间的 MSE(mean square error),训练完这个 model 之后,取出后半部分 NN Decoder,输入一个随机的 code,就能 generate 一个 image。

​ 将Auto-encoder的后一部分拿出来,随机输入向量,即上述描述的Generator,但输入向量怎么设定?没有什么标准。

​ 针对上述问题,提出了VAE,如下:

​ 上述的两个生成模型,其实有一个非常严重的弊端。比如 VAE,它生成的 image 是希望和 input 越相似越好,但是 model 是如何来衡量这个相似呢?model 会计算一个 loss,采用的大多是 MSE,即每一个像素上的均方差。loss 小真的表示相似嘛?

​ 如下图,上述一行只相差一个像素,得到的MSE最小,但结果并不是我们满意的。

​ 上述两种生成网络之所以对产生图像不能达到满意效果是由于网络只关注局部信息而未考虑全局的信息,若需要考虑全局信息需要更深的网络结构;

GAN网络的优缺点:

**Generator:**可以产生局部图像,但不能顾及图像的不同部分之间的关系;

**Disciminator:**考虑的是全局图像,但不能产生图像

4. 参考

http://www.sohu.com/a/121189842_465975

https://github.com/zhangqianhui/AdversarialNetsPapers

https://www.cnblogs.com/baiting/p/8314936.html

https://www.cnblogs.com/bonelee/p/9166084.html

GAN学习总结一 GAN基本概念理解相关推荐

  1. [GAN学习系列2] GAN的起源

    本文大约 5000 字,阅读大约需要 10 分钟 这是 GAN 学习系列的第二篇文章,这篇文章将开始介绍 GAN 的起源之作,鼻祖,也就是 Ian Goodfellow 在 2014 年发表在 ICL ...

  2. [GAN学习系列] 初识GAN

    本文大约 3800 字,阅读大约需要 8 分钟 要说最近几年在深度学习领域最火的莫过于生成对抗网络,即 Generative Adversarial Networks(GANs)了.它是 Ian Go ...

  3. [GAN学习系列] 初始GAN

    本文大约 3800 字,阅读大约需要 8 分钟 要说最近几年在深度学习领域最火的莫过于生成对抗网络,即 Generative Adversarial Networks(GANs)了.它是 Ian Go ...

  4. 迁移学习(Transfer Learning)-- 概念理解

    迁移学习(Transfer Learning) 迁移学习概述 背景 随着越来越多的机器学习应用场景的出现,而现有表现比较好的监督学习需要大量的标注数据,标注数据是一项枯燥无味且花费巨大的任务,所以迁移 ...

  5. [GAN学习笔记] 基础GAN(三)——WGAN

    本笔记基于 deeplearning.ai 的 Generative Adversarial Networks (GANs) 专项课程 1. 模式坍塌(Mode collapse) 模式(mode)是 ...

  6. char强制类型转换为int_C语言学习第5篇---类型转换概念理解

    类型之间的转换 1.C语言中的数据可以进行转换 ---强制类型转换 ---隐式类型转换 强制类型转换 1.强制类型转换的语法 ---(Type)var_name; ---(Type)value; 2. ...

  7. [GAN学习系列3]采用深度学习和 TensorFlow 实现图片修复(上)

    在之前的两篇 GAN 系列文章–[GAN学习系列1]初识GAN以及[GAN学习系列2] GAN的起源中简单介绍了 GAN 的基本思想和原理,这次就介绍利用 GAN 来做一个图片修复的应用,主要采用的也 ...

  8. [GAN学习系列3]采用深度学习和 TensorFlow 实现图片修复(下)

    这是本文的最后一部分内容了,前两部分内容的文章: [GAN学习系列3]采用深度学习和 TensorFlow 实现图片修复(上) [GAN学习系列3]采用深度学习和 TensorFlow 实现图片修复( ...

  9. [GAN学习系列3]采用深度学习和 TensorFlow 实现图片修复(中)

    上一篇文章–[GAN学习系列3]采用深度学习和 TensorFlow 实现图片修复(上)中,我们先介绍了对于图像修复的背景,需要利用什么信息来对缺失的区域进行修复,以及将图像当做概率分布采样的样本来看 ...

最新文章

  1. 345 所开设人工智能本科专业高校名单大全
  2. Ubuntu中update-alternatives命令(版本切换)
  3. 64位Linux下安装mysql-5.7.13-linux-glibc2.5-x86_64 || 转载:http://www.cnblogs.com/gaojupeng/p/5727069.html
  4. CSS3 2D和3D转换 Transform
  5. F1 score,micro F1score,macro F1score 的定义
  6. Sublime删除所有包含特定值的行
  7. 前端多图片上传怎么控制顺序_Web前端经典面试题有哪些 如何能走向高薪之路...
  8. jquery实现的视差滚动教程(视差大背景效果)
  9. 12-贝叶斯算法(知识准备)
  10. input标签中使输入文本向右偏移像素解决方案(亲测有效)
  11. Hyper-v下安装网络流量监测图形分析工具 Cacti
  12. 【Hoxton.SR1版本】Spring Cloud Gateway之GlobalFilter全局过滤器
  13. python简单代码示例-python3简单代码示例
  14. 软件实习项目4——校园一卡通管理系统(代码实现)
  15. vlc播放g711 rtp流媒体sdp文件及其参数介绍
  16. TeamViewer由商业用途改为个人用途
  17. MySQL math函数
  18. springboot上传下载文件(4)--上传下载工具类(已封装)
  19. mysql基础操作(详细版)--增删改查
  20. 计算机系统:程序Hello

热门文章

  1. ADO数据库连接中的Integrated Security和Persist Security Info参数的作用
  2. python数据分析案例2-1:Python练习-Python爬虫框架Scrapy入门与实践
  3. python3.6实现随机森林算法(可视化)机器学习算法(赵志勇)学习笔记
  4. qq浏览器打开word 技术原理_无需安装阅读器,PDF还可以这样打开,涨姿势了
  5. 每日分享 《一生如寄 人来人往》
  6. 气体压力测试与泄露量测试
  7. 2022-2028全球及中国NTC热敏电阻电缆行业研究及十四五规划分析报告
  8. 借用女性形象营销,微众银行为获客搞“擦边”,背后有何猫腻?
  9. ThoughtWorks全球CEO郭晓谈软件人才的招聘与培养
  10. 饿了么技术往事(下)