【深度学习】生成对抗网络Generative Adversarial Nets
来源:互联网 发布:csol由于网络设定问题 编辑:程序博客网 时间:2024/05/24 05:24
Goodfellow, Ian, et al. “Generative adversarial nets.” Advances in Neural Information Processing Systems. 2014.
理念
本文是Ian Goodfellow在2014年的经典之作,在许多tutorial中作为非监督深度学习的代表作给予推广。
本文解决了非监督学习中的著名问题:给定一批样本,训练一个系统,能够生成(generate)类似的新样本。
作者给出了基于Pylearn21的源码(戳这里)。不过本文的结果稍显平凡,以理解思想为主,代码仅做参考。
忆苦思甜
在本文之前,大家是怎样做非监督学习的呢?
直白的想法是,根据训练集估计样本分布
对于低维样本,可以使用简单的,只有少量参数的概率模型(例如高斯)拟合
一个经典方法是使用RBM(Restricted Boltzmann Machine)构造一个无向图,图的能量和节点取值的概率有指数关系。利用训练集设定图中节点和边的系数,用来表述
还有一种方法是DBN(Deep Belief Networks),用单个RBM和若干有向层构成网络。一样存在计算复杂的问题。
这两种方法在本次DL热潮早期(2010年之前),曾经和CNN并驾齐驱,但如今在图像领域已经鲜有应用。CNN虽然在分类、分割等监督学习方面立竿见影,但如何进行非监督学习一直是个难题。
对抗网络
本文采取的方法如下,使用两个网络互相竞争,称之为对抗式(adversarial)结构。
生成器(Generator)和鉴别器(Discriminator)都是常见的卷积+全连网络。前者从随机向量生成一个样本,后者鉴别生成的样本以及训练集样本究竟谁真谁假。
两者同时训练。在训练鉴别器时,最小化鉴别误差;在训练生成器时,最大化鉴别误差。两个目的均可以通过反向传播方法实现。
训练好的生成网络,能把任意一个噪声向量转化成和训练集类似的样本。该噪声可以看做该样本在低维空间的编码。
训练
针对不同数据集,作者设计了不同复杂程度的网络。
MNIST
生成网络
鉴别网络
CIFA-10全连
生成网络。隐结点维度增大,但编码(输入噪声)仍然是100维。
鉴别网络
CIFA-10卷积
生成网络。在最后一级,用解卷积网获得图像。
鉴别网络
轮流迭代
在训练时,每更新一次生成网络,要更新
后续发展
FaceBook AI Reasearch提供了一个在线页面,可以看到实时生成的模拟图像。
2015年的DCGAN把类似的理念应用到人脸图像上。通过对编码(输入的随机向量)进行代数运算,控制生成人脸图像的属性。
Yan LeCun在Quora的这个回答中,给出了更多扩展阅读。
- Pylearn2是蒙特利尔大学LISA实验室基于Theano开发的一个机器学习库。 ↩
- 不服的看这儿。 ↩
- 【深度学习】生成对抗网络Generative Adversarial Nets
- 生成对抗网络学习笔记1----论文Generative Adversarial Nets
- Generative Adversarial Nets 生成式对抗网络
- 生成对抗网络Generative Adversarial Nets资料
- 生成式对抗网络generative adversarial nets
- 深度学习笔记一:生成对抗网络(Generative Adversarial Nets)
- 与判别网络对抗的生成网络 (Generative Adversarial Nets)
- 生成式对抗网络(Generative Adversarial Nets)
- 生成对抗网络Generative Adversarial Nets(译)
- 生成对抗网络学习笔记2----GANs(Generative Adversarial Nets)总结
- 学习笔记:生成对抗网络(Generative Adversarial Nets)(附代码)
- 生成对抗网络学习笔记4----GAN(Generative Adversarial Nets)的实现
- 生成对抗网络学习笔记4----GAN(Generative Adversarial Nets)的实现
- 浅析生成对抗网络(GAN)—— Generative Adversarial Nets
- [生成对抗网络] 论文研读-SeqGAN: Sequence Generative Adversarial Nets with Policy Gradient
- 生成对抗网络(GAN,Generative Adversarial Networks) 学习笔记
- 对抗生成网络(Generative Adversarial Net)
- 对抗生成网络(Generative Adversarial Net)
- 让eclipse CDT支持C++11
- Java Web学习(36):Filter学习(三)
- SQL万能密码:' or 1='1
- 处理工行b2c上海机构问题反思
- linux内存理解和整理
- 【深度学习】生成对抗网络Generative Adversarial Nets
- PNG,JPEG,BMP,JIF图片格式详解及其对比
- Nodejs基于mongoose模块的增删改查
- LeetCode--No.36--Valid Sudoku
- 异步加载图片
- 加强版Apktool堪称逆向神器
- 我的第一篇博客
- IMX6Q LTIB 安装编译错误的解决办法
- Gson搭配TypeToken实现复杂数据的解析