一文入门人工智能的明珠:生成对抗网络(GAN)
一.简介
在人工智能领域内,GAN是目前最为潮流的技术之一,GAN能够让人工智能具备和人类一样的想象能力。只需要给定计算机一定的数据,它就可以自动联想出相似的数据。我们学习和使用GAN的原因如下:
1.能够用GAN进行无监督学习:深度学习需要大量数据的标注才能够进行监督学习,而使用GAN则不需要使用大量标注的数据,可以直接生成数据进行无监督学习,比如使用GAN进行图像的语义分割,我们甚至根本不需要标注图像,计算机就可以自动对图像进行语义分割,目标检测等等。
2.使用GAN可以进行图像的风格迁移:我们可以将一段马的视频变成斑马,将一段真实世界里的视频变成动漫世界
3.使用GAN可以输入文字就输出图像:我们只需要随便对计算机说一句话,计算机就可以根据这段话想象出所对应的场景。
4.GAN:使用Gan可以恢复图像的分辨率,让图像变得更加清晰,或者去掉马赛克。比如前几个月的老北京项目,将100年前的一段北京街头的黑白视频变成了高清的彩色视频。
二.GAN的发展历史
GAN实际上从2014年才提出来,目前也只走过了6年的时间,当时Yun Lecun(LeNet-5的发明者)在Twitter上评论说GAN是人工智能领域最有顶尖的技术,但是因为在今年他所提出的去马赛克技术,因技术还不够成熟,将奥巴马(黑人)的打马赛克之后的图像去掉马赛克变成了白人,刺激了美国的种族主义者,因此把他骂退了Twitter的账号,Gan的发展历程如下:
从DCGANs开始人们第一次在生成对抗网络当中引入了深度神经网络的思想,从而让GAN的效果得到极大的提升。那么GAN的基本结构是怎么的呢?
三.生成式对抗网络的结构
生成对抗网络GAN的结构如下:
整个结构具有两个神经网络,一个是Generator神经网络,另一个则是Discriminator神经网络。Generator接受一个随机噪声(随机的一个向量的值)用于生成假的图片,Discriminator通过判定生成的图片和真实图片之间的差异来形成loss,同时在判定的时候更新自己的参数,直到能够完全分辨出假的图片和真实的图片,让loss变到最大为止。如下图所示就是一个用于生成二次元妹子头像的生成式对抗网络:
那么我们整个训练的步骤是怎样的呢?
第一步:
首先生成Fake image,然后固定住Generator,让其不更新参数,通过更新Discriminator的参数来让loss更小,这里的loss衡量的是什么呢??假设真是的图像的label为1,生成的fake image为0,loss就是衡量的Discriminator是否将真实的图片label为1以及将假的图片衡量为0的准确度,loss因此越小越好。从而使Discriminator能够区分真的图片和假的图片。
第二步:
我们直接固定住Discriminator和Trainnig Set,更新Generator的参数,使Discriminator的loss越来越大,让Discriminator根本无法分辨。这个时候参数更新又重复之间的第一步,固定住Generator,不断地迭代。最终就可以让生成的图片完全让人类的肉眼无法分辨其真假。
四.GAN的缺点
第一点是:根据实验可得,生成式对抗网络不容易梯度下降达到全局最优点,如下所示:
第二点则是容易出现模式坍塌,也就是训练出来的结果很可能让计算机丧失生成视频或者图片的多样性。比如说我们使用GAN生成的妹子图片和真实图片几乎像克隆人一般一模一样,从而丧失了GAN的想象力。
五.常见的对抗生成网络(GAN)
1.DCGAN是一种十分常见的对抗生成网络,如下图所示:
和原始GAN不同的是:
1.原始gan全都使用了全连接神经网络进行训练,而DCGAN将全连接网络层都替换成了卷积神经网络。
2.并在每一层之后添加了Batch Normilization,从而加速了训练,提升了训练的稳定性。
3.Generator的Hidden Layer都使用了Relu作为激活函数,Generator的最后一层使用了Tanh,Discriminator则使用了leakrelu作为了激活函数,可以防止梯度稀疏。
2.Multi agent diverse GAN(MAD-GAN)
通过增加多个生成器,从而让GAN生成的对象更加丰富:
一文入门人工智能的明珠:生成对抗网络(GAN)的更多相关文章
- 人工智能中小样本问题相关的系列模型演变及学习笔记(二):生成对抗网络 GAN
[说在前面]本人博客新手一枚,象牙塔的老白,职业场的小白.以下内容仅为个人见解,欢迎批评指正,不喜勿喷![握手][握手] [再啰嗦一下]本文衔接上一个随笔:人工智能中小样本问题相关的系列模型演变及学习 ...
- 用MXNet实现mnist的生成对抗网络(GAN)
用MXNet实现mnist的生成对抗网络(GAN) 生成式对抗网络(Generative Adversarial Network,简称GAN)由一个生成网络与一个判别网络组成.生成网络从潜在空间(la ...
- TensorFlow从1到2(十二)生成对抗网络GAN和图片自动生成
生成对抗网络的概念 上一篇中介绍的VAE自动编码器具备了一定程度的创造特征,能够"无中生有"的由一组随机数向量生成手写字符的图片. 这个"创造能力"我们在模型中 ...
- 生成对抗网络GAN介绍
GAN原理 生成对抗网络GAN由生成器和判别器两部分组成: 判别器是常规的神经网络分类器,一半时间判别器接收来自训练数据中的真实图像,另一半时间收到来自生成器中的虚假图像.训练判别器使得对于真实图像, ...
- 生成对抗网络(GAN)
基本思想 GAN全称生成对抗网络,是生成模型的一种,而他的训练则是处于一种对抗博弈状态中的. 譬如:我要升职加薪,你领导力还不行,我现在领导力有了要升职加薪,你执行力还不行,我现在执行力有了要升职加薪 ...
- 深度学习-生成对抗网络GAN笔记
生成对抗网络(GAN)由2个重要的部分构成: 生成器G(Generator):通过机器生成数据(大部分情况下是图像),目的是“骗过”判别器 判别器D(Discriminator):判断这张图像是真实的 ...
- 深度学习框架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)在深度学习领域掀起 ...
- 利用tensorflow训练简单的生成对抗网络GAN
对抗网络是14年Goodfellow Ian在论文Generative Adversarial Nets中提出来的. 原理方面,对抗网络可以简单归纳为一个生成器(generator)和一个判断器(di ...
随机推荐
- Tomcat更改错误页面指向,改变404,500错误页面
在公司工作了一段时间,也被安排做了一个App,而且后台也是我来写和布置的,由于一次安全检查,需要我把tomcat默认页(管理页面)关闭,于是我只能进行默认指向变更,但是后面我又想到要是用户输入不存在的 ...
- linux常用命令(自己感觉常用的)
常用命令 常用指令 ls 显示文件或目录 -l 列出文件详细信息l(list) -a 列出当前目录下所有文件及目录,包括隐藏的a(all) shutdown -r 重启 -h 关机 reboot 重启 ...
- Scala 基础(四):Scala变量 (一) 基础
1.概念 变量相当于内存中一个数据存储空间的表示,你可以把变量看做是一个房间的门 牌号,通过门牌号我们可以找到房间,而通过变量名可以访问到变量(值). 2 变量使用的基本步骤 1) 声明/定义变量 ( ...
- web 部署专题(八):Nginx 反向代理中cookie相关问题
问题3:认证问题 Domino服务器中,通过写了一些接口代码,提供RESTful的服务,来对手机端进行提供服务.但是由于原来的环境,没有SSO,而且不通过认证,没法访问到Domino里面的接口代码. ...
- 数据分析,numpy pandas常用api记录
1. np.percentile(train_list["wnum1"], [10, 90, 95, 99]) 计算一个多维数组的任意百分比分位数,此处的百分位是从小到大排列 2 ...
- Alexnet网络结构
最近试一下kaggle的文字检测的题目,目前方向有两个ssd和cptn.直接看看不太懂,看到Alexnet是基础,今天手写一下网络,记录一下啊. 先理解下Alexnet中使用的原件和作用: 激活函数使 ...
- 关于springboot中过滤器和拦截器
在解决跨域问题中,发现拦截器和过滤器用得不是熟练.就参考了下一下两个作者的文档.希望大家也可以汲取精华 文档1 https://blog.csdn.net/moonpure/article/det ...
- 【Nginx】如何按日期分割Nginx日志?看这一篇就够了!!
写在前面 Nginx是没有以日期格式作为文件名来存储的,也就是说,Nginx不像Tomcat,每天自动生成一个日志文件,所有的日志都是以一个名字来存储,时间久了日志文件会变得很大.这样非常不利于分析. ...
- [日常摘要] -- zookeeper篇
概览 设计目标 是将那些复杂且容易出错的分布式一致性服务封装起来,构成一个高效可靠的原语集,并以一系列简单易用的接口提供给用户使用 简介 是一个典型的分布式数据一致性解决方案,分布式应用程序可以基于Z ...
- 网络流(EK算法)
poj1273 #include <iostream> #include <cstdio> #include <cstring> #include <queu ...