热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

手把手教你理解和实现生成式对抗神经网络(GAN)

一、总结一句话总结:GAN的全称是GenerativeAdversarialNetworks,中文名称是生成对抗网络。原始的GAN是一种无监督学习方法,巧妙的利用“博弈”的思想来学

一、总结

一句话总结:

GAN的全称是 Generative Adversarial Networks,中文名称是生成对抗网络。原始的GAN是一种无监督学习方法,巧妙的利用“博弈”的思想来学习生成式模型。

 

 

1、gan的目标函数?

$$\min _ { G } \max _ { D } V ( D , G ) = E _ { x \sim p _ { \text { data } } ( x ) } [ \log D ( x ) ] + E _ { z \sim p _ { z } ( z ) } [ \log ( 1 - D ( G ( z ) ) ) ]$$

 

 

2、gan对抗神经网络的讲解思路?

(由简来讲一些看起来比较复杂的问题)gan对抗神经网络的讲解思路可以没必要直接从生成图片着手,可以从生成普通函数开始,比如一个普通的二次函数

 

 

 

二、手把手教你理解和实现生成式对抗神经网络(GAN)

转自或参考:手把手教你理解和实现生成式对抗神经网络(GAN)
https://zhuanlan.zhihu.com/p/43047326

 

生成式对抗神经网络(GAN)是目前深度学习研究中最活跃的领域之一,原因正是其能够生成非常逼真的合成结果。在本文,我们会学习 GAN 的工作原理,然后用 TensorFlow 实现一个简单的 GAN。文章结构如下

  • GAN 的基本理念和工作原理
  • 实现一个 GAN 模型,能从一个简单分布中生成数据
  • 可视化和分析 GAN 的各个方面,更好地理解其背后原理

 

本文代码地址见文末。

 

GAN 工作原理

GAN 的基本理念其实非常简单,其核心由两个目标互相冲突的神经网络组成,这两个网络会以越来越复杂的方法来“蒙骗”对方。这种情况可以理解为博弈论中的极大极小博弈树

 

我们以一个伪造货币的例子形象地解释 GAN 的工作原理。

手把手教你理解和实现生成式对抗神经网络(GAN)

手把手教你理解和实现生成式对抗神经网络(GAN)

手把手教你理解和实现生成式对抗神经网络(GAN)

手把手教你理解和实现生成式对抗神经网络(GAN)

手把手教你理解和实现生成式对抗神经网络(GAN)

手把手教你理解和实现生成式对抗神经网络(GAN)

手把手教你理解和实现生成式对抗神经网络(GAN)

 

结语

本文我们用 TensorFlow 实现了一种概念验证 GAN 模型,能从非常简单的数据分布中生成数据。在你自己练习时,建议将文中代码进行如下调整:

 

  • 对鉴别器更新之前和之后的情况进行可视化
  • 改变各个层级的激活函数,看看训练和生成样本的区别
  • 添加更多层以及不同类型的层,看看对训练时间和训练稳定性的影响
  • 调整代码以生成数据,包含来自两个不同曲线的数据
  • 调整以上代码,能够处理更复杂的数据,比如 MNIST,CIFAR-10,等等。

 

 

 

 

推荐阅读
author-avatar
缘来是你2502855331
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有