一.简介

在人工智能领域内,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. day13 函数入门

    目录 一.什么是函数 二.为何要有函数 三.如何用函数 1.定义函数的三种形式: 形式一.无参函数(自身能干活) 形式二.有参函数(需要外部的材料来加工) 形式三.空函数(在写框架构思函数的时候) 2 ...

  2. java 面向对象(十六):Object类的使用

    1.java.lang.Object类的说明: * 1.Object类是所Java类的根父类 * 2.如果在类的声明中未使用extends关键字指明其父类,则默认父类为java.lang.Object ...

  3. Python | Python初学者的自我修养,找到自己的方向

    本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是Python专题的第21篇文章,我们继续多线程的话题. 上周的文章当中我们简单介绍了线程和进程的概念,以及在Python当中如何在主线 ...

  4. P4158 [SCOI2009]粉刷匠(洛谷)

    今天A了个紫(我膨胀了),他看起来像个贪心一样,老师说我写的是dp(dp理解不深的缘故QWQ) 直接放题目描述(我旁边有个家伙让我放链接,我还是说明出处吧(万一出处没有了)我讲的大多数题目都是出自洛谷 ...

  5. UVa 548 Tree(中序遍历+后序遍历)

    给一棵点带权(权值各不相同,都是小于10000的正整数)的二叉树的中序和后序遍历,找一个叶子使得它到根的路径上的权和最小.如果有多解,该叶子本身的权应尽量小.输入中每两行表示一棵树,其中第一行为中序遍 ...

  6. Cordova iPhone 刘海屏 和 安卓瀑布屏 等异形屏幕的适配处理

    1.  在cordova项目的config.xml中指定StatusBarOverlaysWebView(需要cordova-plugin-statusbar插件支持),表示应用界面是否覆盖状态栏(系 ...

  7. Go语言系列之手把手教你撸一个ORM(一)

    项目地址:https://github.com/yoyofxteam/yoyodata 欢迎星星,感谢 前言:最近在学习Go语言,就出于学习目的手撸个小架子,欢迎提出宝贵意见,项目使用Mysql数据库 ...

  8. 前端学习(十一):CSS性质

    进击のpython ***** 前端学习--CSS性质 那在CSS上还有一些很重要的性质:继承性,层叠性以及特殊性 那本小节就基于这三个性质进行展开... ... 继承性 在CSS的某些样式是具有继承 ...

  9. SpringBoot + Spring Cloud Eureka 服务注册与发现

    什么是Spring Cloud Eureka Eureka是Netflix公司开发的开源服务注册发现组件,服务发现可以说是微服务开发的核心功能了,微服务部署后一定要有服务注册和发现的能力,Eureka ...

  10. BuuCTF Web Writeup

    WarmUp index.php <html lang="en"> <head> <meta charset="UTF-8"> ...