深度学习-生成对抗网络GAN笔记
生成对抗网络(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。
生成对抗网络的优缺点
优点:
- 不需要大量label数据loss来源于D判定
- 产生大量生成数据用于训练,接近无监督学习
- 可以和深度神经网络结合
缺点:
- 数据直接生成,没有推导过程
- 生成器,判别器需要配合共同训练难度较大
- 容易出现训练失败
下面摘自一篇博文http://xiaoqiang.me/?p=4592,希望自己在以后的工作中能够方便自己查阅
如果你对 GANs 算法感兴趣,可以在 「GANs动物园」里查看几乎所有的算法。我们为大家从众多算法中挑选了10个比较有代表性的算法,
算法 |
论文 |
代码 |
GAN |
||
DCGAN |
||
CGAN |
||
CycleGAN |
||
CoGAN |
||
ProGAN |
||
WGAN |
||
SAGAN |
||
BigGAN |
深度学习-生成对抗网络GAN笔记的更多相关文章
- 人工智能中小样本问题相关的系列模型演变及学习笔记(二):生成对抗网络 GAN
[说在前面]本人博客新手一枚,象牙塔的老白,职业场的小白.以下内容仅为个人见解,欢迎批评指正,不喜勿喷![握手][握手] [再啰嗦一下]本文衔接上一个随笔:人工智能中小样本问题相关的系列模型演变及学习 ...
- GAN实战笔记——第四章深度卷积生成对抗网络(DCGAN)
深度卷积生成对抗网络(DCGAN) 我们在第3章实现了一个GAN,其生成器和判别器是具有单个隐藏层的简单前馈神经网络.尽管很简单,但GAN的生成器充分训练后得到的手写数字图像的真实性有些还是很具说服力 ...
- 用MXNet实现mnist的生成对抗网络(GAN)
用MXNet实现mnist的生成对抗网络(GAN) 生成式对抗网络(Generative Adversarial Network,简称GAN)由一个生成网络与一个判别网络组成.生成网络从潜在空间(la ...
- TensorFlow从1到2(十二)生成对抗网络GAN和图片自动生成
生成对抗网络的概念 上一篇中介绍的VAE自动编码器具备了一定程度的创造特征,能够"无中生有"的由一组随机数向量生成手写字符的图片. 这个"创造能力"我们在模型中 ...
- 生成对抗网络GAN介绍
GAN原理 生成对抗网络GAN由生成器和判别器两部分组成: 判别器是常规的神经网络分类器,一半时间判别器接收来自训练数据中的真实图像,另一半时间收到来自生成器中的虚假图像.训练判别器使得对于真实图像, ...
- 深度学习框架PyTorch一书的学习-第七章-生成对抗网络(GAN)
参考:https://github.com/chenyuntc/pytorch-book/tree/v1.0/chapter7-GAN生成动漫头像 GAN解决了非监督学习中的著名问题:给定一批样本,训 ...
- 科普 | 生成对抗网络(GAN)的发展史
来源:https://en.wikipedia.org/wiki/Edmond_de_Belamy 五年前,Generative Adversarial Networks(GANs)在深度学习领域掀起 ...
- 生成对抗网络(GAN)
基本思想 GAN全称生成对抗网络,是生成模型的一种,而他的训练则是处于一种对抗博弈状态中的. 譬如:我要升职加薪,你领导力还不行,我现在领导力有了要升职加薪,你执行力还不行,我现在执行力有了要升职加薪 ...
- 原始的生成对抗网络GAN
论文地址:https://arxiv.org/pdf/1406.2661.pdf 1.简介: GAN的两个模型 判别模型:就是图中右半部分的网络,直观来看就是一个简单的神经网络结构,输入就是一副图像, ...
随机推荐
- Android ImageView属性
ImageView 继承自View组件,主要功能是用于显示图片,实际上它不仅仅可以用来显示图片,任何Drawable对象都可以使用ImageView来显示.ImageView可以适用于任何布局中,并且 ...
- android ------ 高版本的 Tablayout 下划线宽度
前面呢,有写过TabLayout的博客,最近开发用到了高本版遇到一些问题,来总结一下 Android--------TabLayout实现新闻客户端顶部导航栏 Android中Tablayout设置下 ...
- mysql原生sql处理,按逗号拆分列为多行
举例: id value 1 1,2,3,4 2 2,3,4,5,6 拆分成: id value 1 1 2 2 3 3 4 4 5 5 6 6 ),) ) distinct:去重复操作 a.valu ...
- layui中的table中toolbar自定义过程
自己挖过的坑需要自己来填. layui的table默认表头工具栏右边有3个操作,分别是过滤字段.导出excel.打印功能. 在js中代码添加toolbar即可实现上面的效果: table.render ...
- Spring使用多个 <context:property-placeholder/>
Spring中报"Could not resolve placeholder"的解决方案(引入多个properties文件) 解决方案: (1) 在Spring 3.0中,可以写: ...
- linux安装redis时报collect2: fatal error: cannot find 'ld'和In file included from adlist.c:34:0:
如题,看了下该ld命令所在文件: [root@centos redis-]# whereis ld ld: /usr/bin/ld.gold /usr/bin/ld /usr/bin/ld.bfd / ...
- MongoDB开发深入之三:复制
复制是基于操作日志oplog,相当于MySQL中的二进制日志,只记录发生改变的记录,复制是将主节点的oplog日志同步并应用到其他从节点的过程. 首先要理解两个概念:1.复制:提供冗余和高可用性:2. ...
- 转 oracle 正则表达式和查询最大文件号 SQL
###sample 1 https://www.cnblogs.com/lxl57610/p/8227599.html Oracle使用正则表达式离不开这4个函数: 1.regexp_like 2.r ...
- Nginx打印json日志
1.修改配置,在http{}中添加 log_format access_json '{"@timestamp":"$time_iso8601",' '" ...
- xpath库学习
xpath解析是我们在爬虫中最常用也是最通用的一种数据解析方式. 环境安装 pip install lxml 解析原理 使用通用爬虫爬取网页数据 实例化etree对象,且将页面数据加载到该对象中 使用 ...