1.生成对抗网络的(GAN)的原理

GAN的思想:一种二人零和博弈思想(two-player game),博弈双方的利益之和是一个常数。
就像电影《猫鼠游戏》,生成网络G可以被看做是假支票的制造者,他们试图制造假支票并且在不被发现的情况下使用,而辨别网络类似于警察,他们试图检测假支票。这个游戏中的竞争促使两个团队改进他们的方法,直到假冒品和真品都无法区分为止。

生成对抗网路(GAN)分为两个部分:生成网络G(Generator)和判别网络D(Disciminator)
(1)生成网络G:生成器,负责生成假数据
(2)辨别网络D:辨别器,负责输入的数据真假性

网络框架:

更细一点的原理图:

在最理想的状态下:
生成网络生成的是“以假乱真”的假样本G(z)
对抗网络难以判断G(z)生成的样本是否是真实的,因此D(G(z)) = 0.5。最终得到的生成模型G来生成假样本。

2.GAN的训练思路

GAN的训练要同时训练来个网络,训练的方法是:单独交替迭代训练即在训练生成网络的时候,固定住对抗网络,然后再去训练生成网络;在训练对抗网络的时候,固定住生成网络,然后再去训练对抗网络。这样做的目的是防止其中一个网络比另一个网络强大太多,因为如果某一个网络太强大,另一个会因能力太差而导致两个网络性能都弱化。这两者就像哲学中的矛盾一样,虽然看似是对立的,但是这两者共同作用的结果是导致事物向前发展的。
因此,两个网络并不是完全意义上的斗争,而是亦敌亦友的关系,他们不得不协同合作以达到共同的目标。在整个训练过程中,辨别器不得不教导生成器如何在生成数据上进行调整,自己同时也在学习如何做一个更好的老师。他们在对抗学习中不断变强,在理想状态下达到一个平衡----D(G(z)) = 0.5 (纳什平衡)

2.1辨别器的训练

理想状态下:给它输入一个训练集中的样本和生成器生成的样本,如果输入的是生成的假样本,辨别器就输出0,如果是真实的样本就输出1
step1:搭建用于训练辨别器的网络模型并编译模型。
step2:为真实的样本和生成器得到的假样本打上不同的标签,该标签用于辨别器区分该样本是真实的样本还是假样本。valid为全0的(Bach_Size,1)的矩阵;fake为全1的(Bach_Size,1)的矩阵。
step3:真实样本的输入辨别器,将其输出与fake对比得到损失值
step4:生成器生成的假样本输入辨别器,将其输出与vaild对比得到损失值,最后将两者相加得到辨别器的总损失值。通过不断的训练使其总损失降低。

2.2 生成器训练

理想状态下:生成器必须努力让辨别器认为它生成的假样本,即辨别器得到假样本后输入1。
训练生成器的时候,固定辨别器的参数,首先搭建用于训练生成器的网络模型并编译模型combined。在训练生成的网络G的时候,辨别网络D的参数不发生变化,即只是把loss一直回传,传到生成网络G后更新生成网络的参数即可。

为了训练生成器,辨别器需要告诉生成器如何调整从而使它生成的样本更接近真实的。
辨别器通过反向传播辨别器输出的梯度来调整生成的样本,告诉生成器如何每个特征应调整多少来使整个样本更接近真实。同时,进一步反向传播这些样本梯度成为组成生成器的权重。

2.3 目标函数

原论文中的目标函数:
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) = E_{x \sim Pdata(x)}[\log(D(x))]+E_{z \sim P_z(z)}[\log(1-D(G(z)))] Gmin​Dmax​V(D,G)=Ex∼Pdata(x)​[log(D(x))]+Ez∼Pz​(z)​[log(1−D(G(z)))]
这个式子包含了两个网络的训练过程,即先优化辨别网络D,然后再来优化生成网络G。
想要辨别网络的性能尽可能大,即 log⁡(D(x))\log(D(x))log(D(x)) 最大,当辨别网络输入的是真实的样本时,理想情况为 log⁡(D(x))=0\log(D(x)) = 0log(D(x))=0 ,log⁡(1−D(G(z)))=0\log(1-D(G(z)))=0log(1−D(G(z)))=0
同时也要使生成网络的性能尽可能大,让遍布网络无法区别生成的样本和真实的样本,即 log⁡(1−D(G(z)))\log(1-D(G(z)))log(1−D(G(z))) 最小,理想情况为 log⁡(1−D(G(z)))≈−∞\log(1-D(G(z))) \approx -\inftylog(1−D(G(z)))≈−∞
在目标函数中,当辨别器DDD和生成器GGG都无法再进步的时候,就达到了一个平衡,纳什平衡。
想了解 纳什 的推荐电影《美丽心灵》

论文中GAN网络训练的算法:

参考:
1.https://blog.csdn.net/qq_40784418/article/details/105777608

2.https://blog.csdn.net/on2way/article/details/72773771?utm_source=app&app_version=5.0.0&code=app_1562916241&uLinkId=usr1mkqgl919blen

3.https://blog.csdn.net/u014038273/article/details/78783419

4.GAN初始论文解读

《深度学习》------生成对抗网络(GAN)学习笔记相关推荐

  1. 「杂谈」如何系统性地学习生成对抗网络GAN

    文/编辑 | 言有三 作为被誉为"下一代深度学习技术",同时已经在工业界能够真正成熟稳定应用的GAN,有三AI公众号很早之前就开始关注相关内容,从理论到实践都做出了一些总结,并且在 ...

  2. 【GAN优化】长文综述解读如何定量评价生成对抗网络(GAN)

    欢迎大家来到<GAN优化>专栏,这里将讨论GAN优化相关的内容,本次将和大家一起讨论GAN的评价指标. 作者&编辑 | 小米粥 编辑 | 言有三 在判别模型中,训练完成的模型要在测 ...

  3. [人工智能-深度学习-59]:生成对抗网络GAN - 基本原理(图解、详解、通俗易懂)

    作者主页(文火冰糖的硅基工坊):文火冰糖(王文兵)的博客_文火冰糖的硅基工坊_CSDN博客 本文网址:https://blog.csdn.net/HiWangWenBing/article/detai ...

  4. [人工智能-深度学习-63]:生成对抗网络GAN - 图片创作:普通GAN, pix2pix, CycleGAN和pix2pixHD的演变过程

    作者主页(文火冰糖的硅基工坊):文火冰糖(王文兵)的博客_文火冰糖的硅基工坊_CSDN博客 本文网址:https://blog.csdn.net/HiWangWenBing/article/detai ...

  5. 是时候学习生成对抗网络了,李宏毅老师GAN视频教程下载

    点击我爱计算机视觉标星,更快获取CVML新技术 要说过去的一年哪一项技术最火,非生成对抗网络(GAN)莫属! 52CV曾经报道过: ACM MM2018 Best Paper 被华人包揽 两篇最佳论文 ...

  6. 『一起学AI』生成对抗网络(GAN)原理学习及实战开发

     参考并翻译教程:https://d2l.ai/chapter_generative-adversarial-networks/gan.html,加入笔者的理解和心得 1.生成对抗网络原理 在Col ...

  7. 理解与学习深度卷积生成对抗网络

    一.GAN 引言:生成对抗网络GAN,是当今的一大热门研究方向.在2014年,被Goodfellow大神提出来,当时的G神还是蒙特利尔大学的博士生.据有关媒体统计:CVPR2018的论文里,有三分之一 ...

  8. 【步态识别】MvGGAN 基于多视角步态生成对抗网络 算法学习《Multi-View Gait Image Generation for Cross-View Gait Recognition》

    目录 1. 论文&代码源 2. 论文亮点 3. 多视角的生成对抗网络 3.1 网络生成历程 3.2 网络结构 3.3 损失函数 3.3.1 判别器损失(Discriminator Loss) ...

  9. 【论文笔记】—生成对抗网络—GAN—2014-NIPS

    论文介绍 生成对抗神经网络GAN开山之作论文. 论文作者为"生成对抗网络之父"Ian Goodfellow和图灵奖得主Youshua Bengio. GAN近年来成为人工智能和深度 ...

  10. 对抗生成网络_深度卷积生成对抗网络

    本教程演示了如何使用深度卷积生成对抗网络(DCGAN)生成手写数字图片.该代码是使用 Keras Sequential API 与 tf.GradientTape 训练循环编写的. 什么是生成对抗网络 ...

最新文章

  1. 中文版证书_CIA考试多久后才可以领取证书?领取的方式是什么?
  2. spring中那些让你爱不释手的代码技巧
  3. 设计模式之Adapter(适配器)(转)
  4. 【Android 热修复】热修复原理 ( 修复包 Dex 文件准备 | Dex 优化为 Odex | Dex 文件拷贝 | 源码资源 )
  5. 中国楼市场的真相————写在厦门楼市崩盘之后
  6. 【机器学习基础】获取机器学习和深度学习的练习数据
  7. 网络虚拟化技术(一): linux网络虚拟化,网络虚拟化技术(一): Linux网络虚拟化...
  8. Spring Mobile 1.1.0.RC1 和 1.0.2 发布
  9. 分组,采样和批处理– Java 8中的自定义收集器
  10. 【Siddhi】Siddhi的语法关键字
  11. 小学计算机知识题,小学信息技术基础知识试题
  12. Kotlin:比 Java 做得更好
  13. java linux和windows下文件路径间隔符的写法——解决linux下程序在windows下运行时的上传文件出错问题...
  14. 区块链 什么是RLP编码
  15. Windows Phone笔记(5)加速计和位置服务(转)
  16. 卡尔曼滤波器原理简介
  17. 戒指的戴法,终于收齐了!
  18. (P24)进程间通信介绍二:死锁 ,信号量与PV原语 ,用PV原语解决司机与售票员问题 ,用PV原语解决民航售票问题 ,用PV原语解决汽车租赁问题
  19. 四则运算之结对作业报告
  20. 比 Navicat 还要好用,功能还很强大的数据库管理工具!

热门文章

  1. 教育类自媒体如何运营?自媒体营销的优势主要有哪些方面?
  2. WIN10环境下深度学习中使用torch时无法启用GPU的一些坑
  3. PCM跟ADPCM的一些笔记
  4. 金钱不能买什么读后感_《金钱不能买什么》读后感
  5. 淘宝低价,品牌方如何平台投诉
  6. 【USB接口电涌是什么故障】
  7. 自学python1-3章
  8. PhotoShop选区
  9. 12306火车票抢票Python代码最新完整版发布,五一抢票就靠它了!
  10. Ipad冬天无法充电