中文版: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. Asp.Net Mvc 自定义扩展

    目录: 自定义模型IModelBinder 自定义模型验证 自定义视图引擎 自定义Html辅助方法 自定义Razor辅助方法 自定义Ajax辅助方法 自定义控制器扩展 自定义过滤器 自定义Action ...

  2. 中文分词组件:thulac及jieba试用手记

    一.THULAC THULAC由<清华大学自然语言处理与社会人文计算实验室>研制推出的一套中文词法分析工具包.官网地址:http://thulac.thunlp.org,该项目提供了多种语 ...

  3. class-dump 使用

    转:class-dump 使用 class-dump 官网地址:这里 我这里下载的是 class-dump-3.5.dmg 版本的.双击.dmg 文件,将  拉倒 /usr / local / bin ...

  4. .hashCode方法的作用

    对于包含容器类型的程序设计语言来说,基本上都会涉及到hashCode.在Java中也一样,hashCode方法的主要作用是为了配合基于散列的集合一起正常运行,这样的散列集合包括HashSet.Hash ...

  5. 关于#progma comment 中库文件相对路径问题

    最近做一个验证程序的对话框编程,因为里面要要用到静态链接库,所以就稍微的学习了下静态链接库知识,学习的过程中感觉到了自己所了解的东西实在是少的可怜,更加坚定了自己要更加上进的决心,要把以前所丢掉的都给 ...

  6. OS面试题(转载)

    转载自:http://placement.freshersworld.com/power-preparation/technical-interview-preparation/os-intervie ...

  7. linux下安装python dlib依赖

    dlib是主要用于机器学习的库,封装了机器学习算法,可以非常方便的实现比如人脸识别,车辆识别,物体检测以其他很多功能,dlib默认使用C++进行开发,另外图像识别有一部分支持python接口开发,上手 ...

  8. Android Studio下加入百度地图的使用 (一)——环境搭建

    最近有学生要做毕业设计,会使用到定位及地图信息的功能,特此研究了一下,供大家参考,百度定位SDK已经更新到了5.0,地图SDK已经更新到了3.5,但是在AndroidStudio中使用还是存在一些不稳 ...

  9. CSS全局居中

    可见区域 垂直居中 top:$(document).scrollTop() + ($(document).height() - $(document).scrollTop())/2,

  10. CSS 布局整理

    1.css垂直水平居中 效果: HTML代码: <div id="container"> <div id="center-div">&l ...