一.简介

在人工智能领域内,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)的更多相关文章

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

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

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

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

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

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

  4. 生成对抗网络GAN介绍

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

  5. 生成对抗网络(GAN)

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

  6. 深度学习-生成对抗网络GAN笔记

    生成对抗网络(GAN)由2个重要的部分构成: 生成器G(Generator):通过机器生成数据(大部分情况下是图像),目的是“骗过”判别器 判别器D(Discriminator):判断这张图像是真实的 ...

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

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

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

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

  9. 利用tensorflow训练简单的生成对抗网络GAN

    对抗网络是14年Goodfellow Ian在论文Generative Adversarial Nets中提出来的. 原理方面,对抗网络可以简单归纳为一个生成器(generator)和一个判断器(di ...

随机推荐

  1. JS的数据类型你真的懂了吗

    一.JS数据类型分类 1.基本数据类型 (1)Number 数字 (2)String 字符串 (3)Boolean 布尔值 (4)null 空对象指针 (5)undefined 为定义 (6)symb ...

  2. scala 数据结构(四):列表 List

    1 列表 List-创建List 基本介绍 Scala中的List 和Java List 不一样,在Java中List是一个接口,真正存放数据是ArrayList,而Scala的List可以直接存放数 ...

  3. JavaScript之setinterval的具体使用

    关于setInterval在api文档中也有很详细的解释,比如下面那两个: setInterval() 方法可按照指定的周期(以毫秒计)来调用函数或计算表达式. setInterval() 方法会不停 ...

  4. Kafka 是如何管理消费位点的?

    Kafka 是一个高度可扩展的分布式消息系统,在实时事件流和流式处理为中心的架构越来越风靡的今天,它扮演了这个架构中核心存储的角色.从某种角度说,Kafka 可以看成实时版的 Hadoop 系统.Ha ...

  5. 这就是Java代码生成器的制作流程

    1. 前言 前几天写了篇关于Mybatis Plus代码生成器的文章,不少同学私下问我这个代码生成器是如何运作的,为什么要用到一些模板引擎,所以今天来说明下代码生成器的流程. 2. 代码生成器的使用场 ...

  6. 事件的event对象基本解释

    事件流: 描述的是在页面中接受事件的顺序主要分为两种: 事件冒泡.事件捕获 事件event对象:1. type 获取事件类型2. target获取事件目标3. stopPropagation() 阻止 ...

  7. 网上一些sql题目的解决(网上答案+自己答案)

    此篇博客内容引自“MySQL经典练习题及答案” 废话不不多说!!! 建表.插入数据. --建表 --学生表 CREATE TABLE Student( s_id VARCHAR(20), s_name ...

  8. InceptionV4

    目录 1. inception v4 2. Inception-resnet-v1 & Inception-resnet-v2 2.1 Inception-resnet-v1的组成模块 2.2 ...

  9. Newbe.Claptrap 框架入门,第二步 —— 简单业务,清空购物车

    接上一篇 Newbe.Claptrap 框架入门,第一步 —— 创建项目,实现简易购物车 ,我们继续要了解一下如何使用 Newbe.Claptrap 框架开发业务.通过本篇阅读,您便可以开始尝试使用 ...

  10. Vue.js +pdf.js 处理响应pdf文件流数据,前端转图片预览不可下载

    使用场景及原因 实际业务中,一些说明书或协议仅支持用户在线预览,为避免用户自行下载,并进行修改,引发纠纷,特将文件已文件流的形式,传给前端并转为图片显示,此时可能会有人问,为什么不直接在后端转图片,前 ...