中文版:https://zhuanlan.zhihu.com/p/27440393

原文版:https://www.oreilly.com/learning/generative-adversarial-networks-for-beginners

“熟练tensorflow后,需研读实践的文章”


自从两年前蒙特利尔大学的Ian Goodfellow等人提出生成式对抗网络(Generative Adversarial Networks,GAN)的概念以来,GAN呈现出井喷式发展。

// 竟然是Goodfellow搞的,看来又是封神之作

Abstract

We propose a new framework for estimating generative models via an adversar-
ial process, in which we simultaneously train two models: a generative model G
that captures the data distribution, and a discriminative model D that estimates
the probability that a sample came from the training data rather than G. The train-
ing procedure for G is to maximize the probability of D making a mistake. This
framework corresponds to a minimax two-player game. In the space of arbitrary
functions G and D, a unique solution exists, with G recovering the training data
distribution and D equal to 2 1 everywhere. In the case where G and D are defined
by multilayer perceptrons, the entire system can be trained with backpropagation.
There is no need for any Markov chains or unrolled approximate inference net-
works during either training or generation of samples. Experiments demonstrate
the potential of the framework through qualitative and quantitative evaluation of
the generated samples.

GAN是一种神经网络,它会学习创建一些类似已知输入数据的合成数据。目前,研究人员已经可以用GAN合成出从卧室到专辑封面等一系列照片,GAN也显示出反映高阶语义逻辑的非凡能力。

这些例子非常复杂,但构建可以生成简单图像的GAN真的不难。在这个教程里,我们将学习构建分析手写数字图像的GAN,并且从零开始学如何让它学会生成新图像。其实说白了,就是教会神经网络如何写字。

// 生成新图像,而不是处理原图像

该文章以mnist为测试数据:参见 [Keras] mnist with cnn

生成模型

生成模型(generative model),它在机器学习的历史上一直占有举足轻重的地位。当我们拥有大量的数据,例如图像、语音、文本等,如果生成模型可以帮助我们模拟这些高维数据的分布,那么对很多应用将大有裨益。

针对数据量缺乏的场景,生成模型则可以帮助生成数据,提高数据数量,从而利用半监督学习提升学习效率。

语言模型(language model)是生成模型被广泛使用的例子之一,通过合理建模,语言模型不仅可以帮助生成语言通顺的句子,还在机器翻译、聊天对话等研究领域有着广泛的辅助应用。

那么,如果有数据集S={x1,…xn},如何建立一个关于这个类型数据的生成模型呢?最简单的方法就是:假设这些数据的分布P{X}服从g(x;θ),在观测数据上通过最大化似然函数得到θ的值。

From: http://blog.csdn.net/solomon1558/article/details/52537114

机器学习方法可以分为:生成方法(generative approach)判别方法(discriminative approach),所学到的模型分别称为:生成式模型(generative model)判别式模型(discriminative model)[1 李航]。

生成方法通过观测数据学习样本与标签的联合概率分布P(X, Y),训练好的模型能够生成符合样本分布的新数据,它可以用于有监督学习无监督学习

  • 在有监督学习任务中,根据贝叶斯公式由联合概率分布P(X,Y)求出条件概率分布P(Y|X),从而得到预测的模型,典型的模型有朴素贝叶斯、混合高斯模型和隐马尔科夫模型等。
  • 无监督生成模型通过学习真实数据的本质特征,从而刻画出样本数据的分布特征,生成与训练样本相似的新数据。

生成模型的参数远远小于训练数据的量,因此模型能够发现并有效内化数据的本质,从而可以生成这些数据。

生成式模型在无监督深度学习方面占据主要位置,可以用于在没有目标类标签信息的情况下捕捉观测到或可见数据的高阶相关性。

深度生成模型可以通过从网络中采样来有效生成样本,例如:

  • 受限玻尔兹曼机(Restricted Boltzmann Machine, RBM)、
  • 深度信念网络(Deep Belief Network, DBN)、
  • 深度玻尔兹曼机(Deep Boltzmann Machine, DBM)和
  • 广义除噪自编码器(Generalized Denoising Autoencoders)。

近两年来流行的生成式模型主要分为三种方法[OpenAI 首批研究]:

  • 生成对抗网络(GAN:Generative Adversarial Networks) <---- 目前该系列文章关注的重点
  • GAN启发自博弈论中的二人零和博弈,由[Goodfellow et al, NIPS 2014]开创性地提出,包含一个生成模型(generative model G)和一个判别模型(discriminative model D)。
  • 生成模型捕捉样本数据的分布,判别模型是一个二分类器,判别输入是真实数据还是生成的样本。这个模型的优化过程是一个“二元极小极大博弈(minimax two-player game)”问题,
  • 训练时固定一方,更新另一个模型的参数,交替迭代,使得对方的错误最大化,最终,G 能估测出样本数据的分布。
  • 变分自编码器(VAE: Variational Autoencoders)  <---- 应该归纳在PGM类中
  • 在概率图形模型(probabilistic graphical models )的框架中对这一问题进行形式化——在概率图形模型中,我们在数据的对数似然上最大化下限(lower bound)。
  • 自回归模型(Autoregressive models)
  • PixelRNN 这样的自回归模型则通过给定的之前的像素(左侧或上部)对每个单个像素的条件分布建模来训练网络。这类似于将图像的像素插入 char-rnn 中,但该 RNN 在图像的水平和垂直方向上同时运行,而不只是字符的 1D 序列。

未来用途

另据2016 ScaledML会议IIya Sutskever的演讲报告“生成模型的近期进展”介绍,生成模型主要有以下功能:

  • Structured prediction,结构化预测(例如,输出文本);
  • Much more robust prediction,更鲁棒的预测
  • Anomaly detection,异常检测
  • Model-based RL,基于模型的增强学习

生成模型未来推测可以加以应用的领域:

  • Really good feature learning, 非常好的特征学习
  • Exploration in RL, 在强化学习中的探索
  • Inverse RL, 逆向增强学习
  • Good dialog that actually works, 真正使用的对话
  • “Understanding the world”, “理解世界”
  • Transfer learning, 迁移学习

http://www.cnblogs.com/Charles-Wan/p/6238033.html

三篇论文,最后一篇要实践。DCGAN

对该论文同样的介绍:http://www.sohu.com/a/139545215_133098


From: http://videolectures.net/deeplearning2017_goodfellow_generative_models/

Variational Autoencode 这是目前流行的。

变分贝叶斯自编码

[GAN] Generative networks的更多相关文章

  1. GAN Generative Adversarial Network 生成式对抗网络-相关内容

    参考: https://baijiahao.baidu.com/s?id=1568663805038898&wfr=spider&for=pc Generative Adversari ...

  2. GAN (Generative Adversarial Network)

    https://www.bilibili.com/video/av9770302/?p=15 前面说了auto-encoder,VAE可以用于生成 VAE的问题, AE的训练是让输入输出尽可能的接近, ...

  3. Generative Adversarial Networks overview(3)

    Libo1575899134@outlook.com Libo (原创文章,转发请注明作者) 本文章主要介绍Gan的应用篇,3,主要介绍图像应用,4, 主要介绍文本以及医药化学其他领域应用 原理篇请看 ...

  4. Generative Adversarial Networks overview(1)

    Libo1575899134@outlook.com Libo (原创文章,转发请注明作者) 本文章会先从Gan的简单应用示例讲起,从三个方面问题以及解决思路覆盖25篇GAN论文,第二个大部分会进一步 ...

  5. 一文读懂对抗生成学习(Generative Adversarial Nets)[GAN]

    一文读懂对抗生成学习(Generative Adversarial Nets)[GAN] 0x00 推荐论文 https://arxiv.org/pdf/1406.2661.pdf 0x01什么是ga ...

  6. (转) How to Train a GAN? Tips and tricks to make GANs work

    How to Train a GAN? Tips and tricks to make GANs work 转自:https://github.com/soumith/ganhacks While r ...

  7. 从一篇ICLR'2017被拒论文谈起:行走在GAN的Latent Space

    同步自我的知乎专栏文章:https://zhuanlan.zhihu.com/p/32135185 从Slerp说起 ICLR'2017的投稿里,有一篇很有意思但被拒掉的投稿<Sampling ...

  8. 生成式模型之 GAN

    生成对抗网络(Generative Adversarial Networks,GANs),由2014年还在蒙特利尔读博士的Ian Goodfellow引入深度学习领域.2016年,GANs热潮席卷AI ...

  9. 生成式对抗网络(GAN)学习笔记

    图像识别和自然语言处理是目前应用极为广泛的AI技术,这些技术不管是速度还是准确度都已经达到了相当的高度,具体应用例如智能手机的人脸解锁.内置的语音助手.这些技术的实现和发展都离不开神经网络,可是传统的 ...

随机推荐

  1. 将文件打包成apk

    Android Studio的打包成apk文件 https://blog.csdn.net/woaichimahua/article/details/54427528

  2. Nodejs后台管理员登录实例

    思路: 直接访问后台页面时如果无session则跳转到404 当在登录页的表单提交时对数据库进行匹配,匹配成功生成session,否则提示用户名或密码错误 准备页面 :后台首页.登录页.404页, 步 ...

  3. .NET 开源开发项目【翻译】

    原文地址 本文列出了 .NET 开源开发项目(open source developer projects).意在包括对开发过程的所有方面有所帮组的项目.对于消费项目(consumer project ...

  4. Centos7找不到ifconfig和netstat命令

    Centos7发布有一段时间了,最近使用中也发现一些问题,从Centos6换过来后感觉到不少细微的变化 例如默认没有ifconfig和netstat两个命令了,ifconfig其实使用ip addr命 ...

  5. Spark机器学习(8):LDA主题模型算法

    1. LDA基础知识 LDA(Latent Dirichlet Allocation)是一种主题模型.LDA一个三层贝叶斯概率模型,包含词.主题和文档三层结构. LDA是一个生成模型,可以用来生成一篇 ...

  6. SQL与MySQL基本

    一:概念辨析 数据库(database):是一种保存有组织的数据的容器. 数据库软件(DBMS):使用DBMS操作数据库.访问数据库. SQL:结构化查询语言,专门用来与数据库通信的语言.几乎所有DB ...

  7. Java 迭代器综述

    一.摘要 迭代器模式是与集合共生共死的.一般来说.我们仅仅要实现一个容器,就须要同一时候提供这个容器的迭代器.使用迭代器的优点是:封装容器的内部实现细节,对于不同的集合,能够提供统一的遍历方式,简化c ...

  8. 关于redis中SDS简单动态字符串

    1.SDS 定义 在C语言中,字符串是以’\0’字符结尾(NULL结束符)的字符数组来存储的,通常表达为字符指针的形式(char *).它不允许字节0出现在字符串中间,因此,它不能用来存储任意的二进制 ...

  9. 2017 33 款iOS开源库

    IGListKit https://github.com/Instagram/IGListKit 由 Instagram 开发人员制作,IGListKit 是用于构建快速灵活列表的数据驱动型的 UIC ...

  10. 基于CentOS 搭建 FTP 文件服务

    系统要求: CentOS 7.2 64 位操作系统 一. 安装 VSFTPD (vsftpd 是在 Linux 上被广泛使用的 FTP 服务器,根据其[官网介绍][https://security.a ...