生成对抗网络入门指南(内含资源和代码)
python进阶教程
机器学习
深度学习
长按二维码关注
进入正文
前言:春节假期结束了,在这个假期中,原本好好的计划终究没能跟上变化,发生了很多意想不到的事情,导致公众号有近十天没能更新,首先给长期关注的各位小伙伴说一声抱歉,从这两天开始,新一年的工作将逐渐步入正轨,公众号的工作将会一如既往更新,我会更加努力带给各位更好的文章,希望大家支持!
生成对抗网络入门指南(内含资源和代码)
生成对抗网络(GAN)是由两个相互竞争的网络组成的深度神经网络架构。
2014年,Lan Goodfellow和蒙特利尔大学包括Yoshua Bengio在内的其它研究人员在论文中介绍了生成对抗网络。Facebook的AI研究主管Yann LeCun称对抗训练是“近10年来最有趣的机器学习(ML)”
生成对抗网络具有很大的潜力,因为它们可以学习模拟任何数据的分布。换句话说,在任何领域,我们都可以教生成对抗网络创造出与我们类似的世界:图像,音乐,演说,散文。从某种意义上来说,它们是机器人艺术家,能够创造出令人印象深刻甚至是伤感的东西。
目录
一 生成算法和判别算法
二 生成对抗网络是如何运行的?
三 生成对抗网络:自动编码器和变分自编码器(VAE)
四 训练生成对抗网络的技巧
五 其他机器学习教程
01
生成算法和判别算法
例如:给定一封电子邮件的所有单词,判别算法能够预测该邮件是否为垃圾邮件。垃圾邮件是其中的一种标注,从邮件中收集到的单词则构成了输入数据的特征。用数学表达式表述这一问题,y表示标注,x表示特征,公式p(y|x)表示“给定x,y的概率”,则该事件可描述为“给定邮件中所包含的单词,邮件为垃圾邮件的概率”。因此,判别算法将特征映射到标注,只关注二者之间的相关性。
一种理解生成算法的方式是,生成算法做相反的事情。生成算法并不预测给定特征的标注,而是试图预测给定标注的特征。
生成算法试图解决的问题是:假设这封电子邮件为垃圾邮件,它的特征可能是什么?判别模型关注y和x之间的关系,而生成模型关注的是如何得到x。这允许你得到p(x|y),即给定y,x的概率或给定一个类,特征的概率。(也就是说,生成算法可用作分类器,只不过它不仅仅只是对输入数据进行分类)。
另一种区分判别模型和生成模型的理解方式是:判别模型学习类间的边界,而生成模型模拟各个类的分布。
02
生成对抗网络是如何运行的?
生成器,是一个用来生成新的数据实例的神经网络;判别器,则是用来评估其真实性的神经网络。即判别器决定它所检验的每个数据实例是否属于实际的训练数据集。
比方说,我们试图做一些比仿制蒙娜丽莎更平庸的工作。我们从现实世界中获取并生成那些类似在MINST数据集中发现的手写数字,当显示来自真实MINST数据集中的实例时,判别器将其识别为可信。
同时,生成器创建传送给判别器的新图像。即便这是假的,我们也视为将其视为真。生成器的目标是生成像样的手写数字,假装不会被发现。判别器的目标是识别生成器中的图像是假的。
生成对抗网络的运行步骤如下:
1.生成器输入一系列随机数字并返回一张图像。
2.将生成的图像和真实数据集中的图像流一起送入判别器。
3.判别器接受真实图像和假图像,并返回概率值,范围是0~1之间的数字,其中1表示真实性的预测,0表示假的预测。
因此,得到一个双反馈回路:判别器在包含图像真相的反馈回路中;发生器在在判别器的反馈回路中。
你可以将生成对抗网络想象成一个伪造者和一个警察在猫和老鼠游戏中的组合,在这里,伪造者正在学习虚假注释,警察正在学习检测他们。二者都是动态的,也就是说警察也在训练中,并且每一方都在不断升级中学习对方的方法。
判别器网络是一个可对输入图像进行分类的标准卷积网络——将图像标记为真或假的一个二值分类器。从某种意义上来说,生成器是一个反向卷积网络:标准卷积分类器获取一张图像,采样并输出概率,而生成器则获取随机噪声矢量并将其上采样到一张图像中。前者使用maxpooling这样的下采样技术扔掉数据,后者生成新的数据。
两个网络都试图在零和博奕中优化一个不同且对立的目标函数,或者是损失函数。它本质上就是一个演员-评论模型。随着判别器改变行为,生成器也随之改变,反之亦然。他们的损耗也相互抗衡。
03
生成对抗网络:自动编码器和变分自编码器(VAE)
自动编码器将输入数据编码为矢量,创建一个隐藏或压缩的原始数据representation,主要用于降维。也就是说,用作隐藏representation的矢量将原始数据压缩为一个较小的主要纬度。自动编码器可以和解码器配对,可根据其隐藏representation重建输入数据,这和受限玻尔兹曼机相同。
变分自编码器是生成算法,在对输入数据编码的过程中增加了额外约束,即将隐藏表示进行标准化。变分自编码器既可以像自动编码器一样压缩数据,又可以像生成对抗网络那样合成数据。然而当生成对抗网络生成细节数据时,变分自编码器生成的图像往往更加模糊。Deeplearning4j’s包中包括自动编码器和变分自编码器。
生成算法可分为以下三种类型:
1.给定一个标注,预测相关的特征(朴素贝叶斯)。
2.给定一个隐藏表示,预测相关特征(变分自编码器,生成对抗网络)。
3.给定一些特征,预测其余特征(图像修复,图像插补)。
04
训练生成对抗网络的技巧
训练判别器时,保持生成器的值不变;训练生成器时,则保持判别器不变。比如:这可以让生成器更好的读取它必须学习的梯度变化。同样的道理,在开始训练生成器前,对用于MINST数据集的判别器先进行预训练,可以建立一个更佳清晰的梯度。
生成对抗网络的每一方都可以压制另一方。若判别器太好,返回接近0或1的值,发生器将难以读取梯度;若生成器太好,它将不断利用判别器的弱点导致漏报。这可以通过各自的学习率来减轻这种压制。
注意: Maven 上的Deeplearning4j’s最新版本不包括生成对抗网络,但很快就可以通过自动分化和模型导入来构建和使用,目前这些都可以在Github上额主存储库中获得。
05
其他机器学习教程
神经网络介绍
循环神经网络和长短期记忆网络(LSTM)
Word2Vec:Java语言实现神经嵌入
受限玻尔兹曼机
特征向量,协方差,PCA和熵
神经网络与回归
卷积神经网络(CNN)
生成对抗网络(GAN)
推论:机器学习模型服务器
生成对抗网络应用案例
文本到图像的生成
图像到图像的转换
图像分辨率的提高
对视频下一帧的预测
高质量图像的生成
[采用深度卷积生成对抗网络的无监督表示学习][论文] [代码]
[生成对抗文本到图像合成][论文] [代码][代码]
[改进的生成对抗网络技术][论文] [代码]
[即插即用生成网络:潜在空间图像的条件迭代生成] [论文] [代码]
[StackGAN:采用生成对抗网络的文本到照片般真实的图像合成与叠加][论文] [代码]
[对Wasserstein 生成对抗网络的改进训练][论文] [代码]
[边界均衡生成对抗网络在Tensorflow中的实现][论文] [代码]
[生成对抗网络的质量、稳定性和变异性的稳步增长][论文] [代码]
聚类
[采用分类生成对抗网络的无监督和半监督学习] [论文]
图像混合
[GP-GAN:高分辨率图像混合的实现] [论文] [代码]
图像修复
[具有感知和上下文损失的语义图像修复] [论文] [代码]
[上下文编码:通过修复进行特征学习] [论文] [代码]
[采用上下文条件生成对抗网络的半监督学习] [论文]
[面部生成的实现][论文] [代码]
联合概率
[对抗学习推论] [论文] [代码]
超分辨率
[经过深度学习的超分辨率图像重建] [代码](仅适用于人脸数据集)
[使用生成对抗网络生成照片般真实的超分辨率图像] [论文] [代码]
[EnhanceGAN] [论文]
去除遮挡
[采用鲁棒性好的LSTM自动编码器在野外去除遮挡] [论文]
语义分割
[用于乳腺摄影质量分割的对抗深层架构网络] [论文] [编号]
[使用对抗网络进行语义分割] [论文]
对象检测
[用于小物体检测的感知生成对抗网络] [论文]
[A-Fast-RCNN:通过对抗进行对象检测的硬件生成] [论文] [代码]
RNN-GANs
[C-RNN-GAN:具有对抗训练的连续递归神经网络] [论文] [代码]
条件对抗网络
[条件生成对抗网络] [论文] [代码]
[InfoGAN:利用信息最大化生成对抗网络的可解释表示学习] [论文][代码][代码]
[辅助分类生成对抗网络的条件图像合成] [论文] [代码]
[像素级区域转移] [论文] [代码]
[用于图像编辑的可变条件生成对抗网络] [论文] [代码]
[即插即用生成网络:潜在空间图像的条件迭代生成] [论文] [代码]
[StackGAN:采用生成对抗网络的文本到照片般图像的合成与叠加][论文] [代码]
视频预测和生成
[ 基于均方误差的深度multi-scale视频预测] [论文] [代码]
[使用场景动态生成视频] [论文] [网页] [代码]
[MoCoGAN:使用分解动作及内容生成视频] [论文]
纹理合成 & 样式转换
[预计算实时纹理合成与马尔可夫生成对抗网络] [论文] [代码]
图像转译
[无监督的跨领域图像生成] [论文] [代码]
[基于条件对抗网络的图像转译] [论文] [代码] [代码]
[学习使用生成对抗网络探索跨域之间的关系][论文] [代码]
[使用循环一致对抗网络对不成对图像间的转译] [论文] [代码]
[CoGAN:耦合生成对抗网络] [论文] [代码]
[基于生成对抗网络的无监督图像间转译] [论文]
[无监督图像间转译网络] [论文]
[三角生成对抗网络] [论文]
生成对抗网络理论
[基于能量(Energy-based )的生成对抗网络] [论文] [代码]
[改进的训练生成对抗网络技术] [论文] [代码]
[模式正则化生成对抗网络] [论文]
[利用去噪特征匹配改进生成对抗网络[论文] [代码]
[采样生成网络] [论文] [代码]
[如何训练生成对抗网络][论文]
[训练生成对抗网络的原则性方法] [论文]
[生成对抗网络的展开论述] [论文] [代码]
[最小二乘生成对抗网络] [论文] [代码]
[Wasserstein生成对抗网络] [论文] [代码]
[Wasserstein生成对抗网络的改进训练] [论文] [代码]
[训练生成对抗网络的原则方法] [论文]
[生成对抗网络的泛化和均衡][论文]
三维生成对抗网络
[通过三维生成对抗建模学习对象形状的概率潜在空间] [论文] [网络] [代码]
[用于新型3D视图合成的Transformation-Grounded 图像生成网络] [Web]】
音乐
[MidiNet:一维和二维条件下音符生成的卷积生成对抗网络] [论文]
面部生成和编辑
[使用已学习的相似性度量对像素进行自动编码] [论文] [代码]
[耦合生成对抗网络] [论文] [Caffe代码] [Tensorflow代码]
[用于图像编辑的可变条件生成对抗网络] [论文] [代码]
[为面部属性操作学习残留图像] [论文] [代码]
[采用Introspective对抗网络的神经图像编辑] [论文] [代码]
[Neural Face Editing with Intrinsic Image Disentangling] [论文]
[GeneGAN:从不成对数据中学习对象变形和属性子空间] [论文][代码]
[脸部旋转:用于正面视图合成的全局及局部感知生成对抗网络] [论文]
离散分布
[最大似然扩张离散生成对抗网络] [论文]
[Boundary-Seeking生成对抗网络] [论文]
[采用Gumbel-softmax分布的离散生成对抗网络] [论文]
改进的分类器和识别器
[用于多类开放集合分类的生成OpenMax] [论文]
[对抗特征学习的可控不变性] [论文] [代码]
[生成对抗网络生成未标记样例改善行人重识别基线] [论文] [代码]
[通过对抗训练从模拟和非监督图像中学习] [论文] [代码]
项目
[对抗机器学习库cleverhans] [代码]
[重置-CPPN-GAN-Tensorflow] [代码](使用残余生成对抗网络和变分自动编码器技术生成高分辨率图像)
[HyperGAN] [代码](专注于规模和可用性的开源GAN)
以上为译文。
本文由阿里云云栖社区组织翻译。
文章原标题《generative adversarial network》,译者:Mags,审校:袁虎。
推 荐 阅 读
赶紧关注我们吧
您的点赞和分享是我们进步的动力!
↘↘↘
生成对抗网络入门指南(内含资源和代码)相关推荐
- 生成对抗网络入门详解及TensorFlow源码实现--深度学习笔记
生成对抗网络入门详解及TensorFlow源码实现–深度学习笔记 一.生成对抗网络(GANs) 生成对抗网络是一种生成模型(Generative Model),其背后最基本的思想就是从训练库里获取很多 ...
- 基于PyTorch的生成对抗网络入门(3)——利用PyTorch搭建生成对抗网络(GAN)生成彩色图像超详解
目录 一.案例描述 二.代码详解 2.1 获取数据 2.2 数据集类 2.3 构建判别器 2.3.1 构造函数 2.3.2 测试判别器 2.4 构建生成器 2.4.1 构造函数 2.4.2 测试生成器 ...
- 深度学习(五) 生成对抗网络入门与实践
一.生成对抗网络基本概念 1.发展背景 自然界中人类的特性可以概括两大特殊能力,分别是认识和创造.那么在深度学习-神经网络中,我们之前所学习的全连接神经网络.卷积神经网络等,它们都有一个共同的特点就是 ...
- 【通知】《生成对抗网络GAN原理与实践》代码开源,勘误汇总!
有三上个月出版了新书<生成对抗网络GAN:原理与实践>,Generative Adversarial Networks(中文名生成对抗网络,简称GAN)自从被提出来后,其发展就非常迅猛,几 ...
- [Python图像识别] 四十九.图像生成之什么是生成对抗网络GAN?基础原理和代码普及
该系列文章是讲解Python OpenCV图像处理知识,前期主要讲解图像入门.OpenCV基础用法,中期讲解图像处理的各种算法,包括图像锐化算子.图像增强技术.图像分割等,后期结合深度学习研究图像识别 ...
- [Python人工智能] 二十九.什么是生成对抗网络GAN?基础原理和代码普及(1)
从本专栏开始,作者正式研究Python深度学习.神经网络及人工智能相关知识.前一篇文章分享了Keras实现经典的深度学习文本分类算法,包括LSTM.BiLSTM.BiLSTM+Attention和CN ...
- GAN生成对抗网络入门篇
笔记整理:王小草 时间:2019年1月 一.GAN简介 1 背景 全称:generative adversarial network 生成式对抗网络(不一定是深度学习) 论文:https://arxi ...
- [生成对抗网络GAN入门指南](10)InfoGAN: Interpretable Representation Learning by Information Maximizing GAN
本篇blog的内容基于原始论文InfoGAN: Interpretable Representation Learning by Information Maximizing Generative A ...
- 深度学习生成对抗网络(GAN)
一.概述 生成对抗网络(Generative Adversarial Networks)是一种无监督深度学习模型,用来通过计算机生成数据,由Ian J. Goodfellow等人于2014年提出.模型 ...
最新文章
- Android之底部菜单TabHost的实现
- cmd写java程序_用cmd写一个最简单的Java程序
- Intent七在属性之一:ComponentName
- .net10个必备工具
- Keepalived+LVS
- 判斷指定資料庫存取權
- c语言内循环外循环怎么使用,开高速, 用内循环还是外循环? 教你正确使用内外循环!...
- 遥感技术在水利行业的应用
- Rayleigh-Ritz法和Galerkin法
- Norton AntiVirus (诺顿杀毒)v9.0 简体中文企业版
- Python 分词与词云图生成
- matlab 声纹识别,识别模型论文,关于基于MATLAB的声纹识别系统软件的设计相关参考文献资料-免费论文范文...
- 江苏事业单位计算机类考申论吗,笔试将近!2020年江苏事业单位统考你要注意!...
- Executors一篇就够
- 非API接口限制介绍
- c++模板函数的声明和定义该在什么文件里?
- UOS系统的Qt无法使用中文输入法
- 什么是PCB加工中树脂塞孔工艺?
- 成都学python哪个机构好_成都学python人工智能哪个机构好
- snownlp中文文本情感分析详细教程
热门文章
- 装个pi hole过滤垃圾广告
- Ninth season thirteenth episode,Monica sang without underwear??????
- 荧光光谱入门:荧光光谱基础(一)
- 数据分析之2013年广东省高速公路车流量预测
- Java编写复数类之——乘法和输出的陷阱
- mysql导入单个表和多个表的数据
- Altium Designer利用IPC封装向导创建PCB封装
- 【基础数学--埃氏筛】204. 计数质数
- 清华硕士的集体逃离!中科院科研人员自白:我为什么离开北京
- Minecraft Forge API 类帮助文档(1.12.2)