生成对抗网络(GAN)由2个重要的部分构成:

生成器G(Generator):通过机器生成数据(大部分情况下是图像),目的是“骗过”判别器

判别器D(Discriminator):判断这张图像是真实的还是机器生成的,目的是找出生成器做的“假数据”

生成对抗网络的工作过程:

第一阶段:固定判别器D,训练生成器G

初始化判别器D,让一个生成器G不断生成“假数据”,然后给这个判别器D去判断。

一开始,生成器G还很弱,所以很容易被判断出是假的。

但是随着不断的训练,生成器G技能不断提升,最终骗过了判别器D。

此时,判别器D基本属于瞎猜的状态,判断是否为假数据的概率为50%。

第二阶段:固定生成器G,训练判别器D

当通过了第一阶段,继续训练生成器G就没有意义了。这个时候需要固定生成器G,然后开始训练判别器D。

判别器D通过不断训练,提高了自己的鉴别能力,最终他可以准确的判断出所有的假图片。

到了这个时候,生成器G已经无法骗过判别器D。

循环阶段一和阶段二

通过不断的循环,生成器G和判别器D的能力都越来越强。

最终我们得到了一个效果非常好的生成器G,我们就可以用它来生成我们想要的图片了。

通过图与公式说明GAN的工作原理

图中,黑色点线是真实数据,绿色点线是生成数据,生成器G的作用,蓝色点线是判别公式,判别器D的作用:

  

其中pdata(x)的值可看作是1(真实数据分布),pg(x)-->(绿色点线)看作是生成数据分布,它在循环中即将接近1,所以当判别器无法判断生成器的时候上面的公式D*(x)的值就为0.5。

x与z的关系就是真实数据与生成数据的映射关系。

Generative Adversarial Nets原文中作者给出了损失函数公式:

可以这样理解这个公式:

  判别器要以最大可能判别出是生成数据,生成器生成的数据与真实数据的差距尽可能的小。也就是在循环的过程中同时增强判别器判别能力与提高生成器的生成更接近真实数据的能力。

判别器模型D:

生成器模型G:

  D1(x)为真实数据判别值,它的期望为1,取对数的话值就变为0了,D2(G(z))为生成数据判别值,判别器期望判断出它是生成数据,所以期望它为0。而对生成器模型来说,是期望判别器判别不出来它是生成的数据,所以对于生成器来说它期望D2(G(z))的值为1。

生成对抗网络的优缺点

优点:

  1. 不需要大量label数据loss来源于D判定
  2. 产生大量生成数据用于训练,接近无监督学习
  3. 可以和深度神经网络结合

缺点:

  1. 数据直接生成,没有推导过程
  2. 生成器,判别器需要配合共同训练难度较大
  3. 容易出现训练失败

下面摘自一篇博文http://xiaoqiang.me/?p=4592,希望自己在以后的工作中能够方便自己查阅

如果你对 GANs 算法感兴趣,可以在 「GANs动物园」里查看几乎所有的算法。我们为大家从众多算法中挑选了10个比较有代表性的算法,

算法

论文

代码

GAN

论文地址

代码地址

DCGAN

论文地址

代码地址

CGAN

论文地址

代码地址

CycleGAN

论文地址

代码地址

CoGAN

论文地址

代码地址

ProGAN

论文地址

代码地址

WGAN

论文地址

代码地址

SAGAN

论文地址

代码地址

BigGAN

论文地址

代码地址

深度学习-生成对抗网络GAN笔记的更多相关文章

  1. 人工智能中小样本问题相关的系列模型演变及学习笔记(二):生成对抗网络 GAN

    [说在前面]本人博客新手一枚,象牙塔的老白,职业场的小白.以下内容仅为个人见解,欢迎批评指正,不喜勿喷![握手][握手] [再啰嗦一下]本文衔接上一个随笔:人工智能中小样本问题相关的系列模型演变及学习 ...

  2. GAN实战笔记——第四章深度卷积生成对抗网络(DCGAN)

    深度卷积生成对抗网络(DCGAN) 我们在第3章实现了一个GAN,其生成器和判别器是具有单个隐藏层的简单前馈神经网络.尽管很简单,但GAN的生成器充分训练后得到的手写数字图像的真实性有些还是很具说服力 ...

  3. 用MXNet实现mnist的生成对抗网络(GAN)

    用MXNet实现mnist的生成对抗网络(GAN) 生成式对抗网络(Generative Adversarial Network,简称GAN)由一个生成网络与一个判别网络组成.生成网络从潜在空间(la ...

  4. TensorFlow从1到2(十二)生成对抗网络GAN和图片自动生成

    生成对抗网络的概念 上一篇中介绍的VAE自动编码器具备了一定程度的创造特征,能够"无中生有"的由一组随机数向量生成手写字符的图片. 这个"创造能力"我们在模型中 ...

  5. 生成对抗网络GAN介绍

    GAN原理 生成对抗网络GAN由生成器和判别器两部分组成: 判别器是常规的神经网络分类器,一半时间判别器接收来自训练数据中的真实图像,另一半时间收到来自生成器中的虚假图像.训练判别器使得对于真实图像, ...

  6. 深度学习框架PyTorch一书的学习-第七章-生成对抗网络(GAN)

    参考:https://github.com/chenyuntc/pytorch-book/tree/v1.0/chapter7-GAN生成动漫头像 GAN解决了非监督学习中的著名问题:给定一批样本,训 ...

  7. 科普 | ​生成对抗网络(GAN)的发展史

    来源:https://en.wikipedia.org/wiki/Edmond_de_Belamy 五年前,Generative Adversarial Networks(GANs)在深度学习领域掀起 ...

  8. 生成对抗网络(GAN)

    基本思想 GAN全称生成对抗网络,是生成模型的一种,而他的训练则是处于一种对抗博弈状态中的. 譬如:我要升职加薪,你领导力还不行,我现在领导力有了要升职加薪,你执行力还不行,我现在执行力有了要升职加薪 ...

  9. 原始的生成对抗网络GAN

    论文地址:https://arxiv.org/pdf/1406.2661.pdf 1.简介: GAN的两个模型 判别模型:就是图中右半部分的网络,直观来看就是一个简单的神经网络结构,输入就是一副图像, ...

随机推荐

  1. There is insufficient memory for the Java Runtime Environment to continue.

    There is insufficient memory for the Java Runtime Environment to continue.

  2. 关于kmp算法

    字符串匹配算法简称kmp 日常安利大佬博客(真的是一篇很好的文章) 觉得百度百科讲的也挺好 就是给出两个字符串a, b 求b在a中的所有位置 next数组:代表当前字符之前的字符串中,有多大长度的相同 ...

  3. SpringCloud:学习Gateway网关拦截器的ServerWebExchange

    1.Gateway的拦截器 我们要在项目中实现一个拦截器,需要继承两个类:GlobalFilter, Ordered GlobalFilter:全局过滤拦截器,在gateway中已经有部分实现,具体参 ...

  4. linux 挂载windows ntfs 分区 -- centos 安装ntfs-3g

    安装fuse 下载: wget http://nchc.dl.sourceforge.net/project/fuse/fuse-2.X/2.9.2/fuse-2.9.2.tar.gz 安装: tar ...

  5. Element + Vue I18n动态import加载国际化语言包翻译文件

    需求 项目为多页应用,包含产品a.b.c.d.e,每个产品都有自己的翻译文件.一次加载所有翻译文件是极度不合理的.于是考虑动态加载. 实现 参考官方文档:延迟加载翻译 项目结构 │ ├── dist ...

  6. Systemd笔记

    Systemd管理的启动脚本位于 /usr/lib/systemd/system/ 下 Systemd启动顺序约定为: 当前服务满足启动条件, 则立即创建进程进行并行启动, 启动条件指服务的依赖关系( ...

  7. cesium地形瓦片(HeightMap)格式

    目录 1.瓦片切分规则 2..terrain瓦片格式分析 参考资料: heightmap 1.0 Tile Map Service Specification 国内主要地图瓦片坐标系定义及计算原理 H ...

  8. Web打印的解决方案之证件套打

    由于以前未接触过套打,一直觉得套打是一个比较神秘和麻烦的事情,因为打印机的位置总是需要调整的,你总不能硬编码吧?但是如果位置可调,有需要直观一些来处理,那就比较麻烦了. 在前面介绍过<Web打印 ...

  9. await 只能在 async 中使用吗? 并不是

    for await (let a of [1,2,3]) { console.log(a) } ​

  10. xpath库学习

    xpath解析是我们在爬虫中最常用也是最通用的一种数据解析方式. 环境安装 pip install lxml 解析原理 使用通用爬虫爬取网页数据 实例化etree对象,且将页面数据加载到该对象中 使用 ...