gan神经网络(gan神经网络数据集制作)

本篇文章给大家谈谈gan神经网络,以及gan神经网络数据集制作对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

GAN的基本介绍和变种

GAN,全称为Generative Adversarial Nets,直译为“生成式对抗网络”。GAN作为生成模型的代表,自2014年被Ian Goodfellow提出后引起了业界的广泛关注并不断涌现出新的改进模型,深度学习泰斗之一的Yann LeCun高度评价GAN是机器学习界近十年来最有意思的想法。

GAN始终存在训练难、稳定性差以及颂羡稿模型崩塌(Model Collapse)等问题。产生这种不匹配的根本原因其实还是对GAN背后产生作用的理论机制没有探索清楚。

在推动GAN应用方面,2017年有两项技术是非常值得关注的。其中一个是CycleGAN,其本质是利用对偶学习并结合GAN机制来优化生成图派梁片的效果的,采取类似思想的包括DualGAN以及DiscoGAN等,包括后续的很多改进模型例如StarGAN等。CycleGAN的重要性主要在于使得GAN系列的模型不再局限于监督学习,它引入了无监督学习的方式,只要准备两个不同领域的图片集合即可,不需要训练模型所需的两个领域的图片一一对应,这样极大扩展了它的使用范围并降低了应用的普及难度。

另外一项值得关注的技术是英伟达采取“渐进式生成”技术路线的GAN方案,这项方案的引人之处在于使得计算机可以生成1024*1024大小的高清图片,它是目前无论图像清晰度还是图片生成质量都达到最好效果的技术,其生成的明星图片几乎可以达到以假乱真的效果(参考图3)。英伟达这项由粗到细,首先生成图像的模糊轮廓,再逐步添加细节的思想其实并非特别新颖的思路,在之前的StackGAN等很多方案都采用了类似思想,它的独特之处在于这种由粗到细的网络结构是动态生成的而非事先固定的静态网络,更关键的是产生的图片效果特别好

首先,有一个一代的 generator,它能生成一些很差的图片,然后有一个一代的 discriminator,它能准确的把生成的图片,和真实的图片分类,简而言之,这个 discriminator 就是一个二分类器,对生成的图片输出 0,对真实的图片输出 1。

接着,开始训练出二代的 generator,它能生成稍好一点的图片,能够让一代的 discriminator 认为这些生成的图片是真实的图片。然后会训练出一个二代的 discriminator,它能准确的识别出真实的图片,和二代 generator 生成的图片。以此类推,会有三代,四代。。。n 代的 generator 和 discriminator,最后 discriminator 无法分辨生成的图片和真实图片,这个网络就拟合了。

对抗样本(adversarial examples)是机器学习模型的输入,攻击者故意设计它们以引起模型出错;它们就像是机器的视觉错觉。

对抗样本指的是一个经过微小调整就可以让机器学习算法输出错误结果的输入样本。在图像识别中,可以理解为原来被一个卷积神经网络(CNN)分类为一个类(比如“熊猫”)的图片,经过非常细微甚至人眼无法察觉的改动后,突然被误分成另一个类(比如“长臂猿”)。

对抗训练

对抗训练是防御对抗样本攻击的一种方法。将对抗样本和正常样本一起训练是一种有效的正则化,可以提高模型的准确度,同时也能有效降低对抗样本的攻击成功率。不过这种防御也只是针对同样用来产生训练集中的对抗样本的方法。

确实在下图中可以看到,训练集是正常样本和对抗样本,测试集是正常样本的野孝红线比训练集和测试集都是正常样本的错误率要降低,说明对抗训练是有正则化的功能。

Figure 9

在训练的时候直接生成对抗样本是比较低效的,之前提到的FGSM是一个高效的对抗训练方法。只需要改变目标函数就能在训练每个正常样本的同时也考虑了对抗样本。模型训练去给对抗样本赋予和正常样本原分类同样的类别。

用经过FGSM训练的网络,可以有效的防御用FGSM产生的对抗样本攻击,但是如果换其他对抗攻击方法,也会被攻破。

对抗样本的工作思路,可以有以下两个方面的意义:

结论

要为集成模型创建对抗样本,因为梯度方法的问题,难度会加大。但是生成的算法更为可行有效。

单个模型出现盲点可以由其他模型弥补,采用的会是输出结果最好的模型数据。

我们发现当我们用动态创建的对抗模型来训练算法时,能够解决这些对抗样本的问题。这是因为当模型面对这些可能出现问题的对抗低概率区域时,可以产生更高的“免疫力”。这同时也支持了低概率区域的论点,在这些区域的对抗样本更难处理。

DCGAN是继GAN之后比较好的改进,其主要的改进主要是在网络结构上,到目前为止,DCGAN的网络结构还是被广泛的使用,DCGAN极大的提升了GAN训练的稳定性以及生成结果质量。

论文的主要贡献是:

◆ 为GAN的训练提供了一个很好的网络拓扑结构。

◆ 表明生成的特征具有向量的计算特性。

D(x)表示D网络判断真实图片是否真实的概率(因为x是真实的,所以对于D来说,这个值越接近1越好)。而D(G(z))D(G(z))是为了D判断G生成的图片是否真实的概率。

G的目的:G应该希望自己生成的图片“越接近真实越好”。也就是说,G希望D(G(z))D(G(z))尽可能得大,这是V(D,G)V(D,G)会变小。

D的目的:D的能力越强,D(x)D(x)应该越大,D(G(x))D(G(x))应该越小。因此D的目的和G不同,D希望V(D,G)V(D,G)越大越好。

DCGAN对卷积神经网络的结构做了一些改变,以提高样本的质量和收敛的速度,这些改变有:

取消所有pooling层。G网络中使用转置卷积(transposed convolutional layer)进行上采样,D网络中用加入stride的卷积代替pooling。

在D和G中均使用batch normalization

去掉FC层,使网络变为全卷积网络

G网络中使用ReLU作为激活函数,最后一层使用tanh

D网络中使用LeakyReLU作为激活函数

DCGAN中的G网络示意:

DCGAN的生成器网络结构如上图所示,相较原始的GAN,DCGAN几乎完全使用了卷积层代替全链接层,判别器几乎是和生成器对称的,从上图中我们可以看到,整个网络没有pooling层和上采样层的存在,实际上是使用了带步长(fractional-strided)的卷积代替了上采样,以增加训练的稳定性。

DCGAN能改进GAN训练稳定的原因主要有:

◆ 使用步长卷积代替上采样层,卷积在提取图像特征上具有很好的作用,并且使用卷积代替全连接层。

◆ 生成器G和判别器D中几乎每一层都使用batchnorm层,将特征层的输出归一化到一起,加速了训练,提升了训练的稳定性。(生成器的最后一层和判别器的第一层不加batchnorm)

◆ 在判别器中使用leakrelu激活函数,而不是RELU,防止梯度稀疏,生成器中仍然采用relu,但是输出层采用tanh

◆ 使用adam优化器训练,并且学习率最好是0.0002,(我也试过其他学习率,不得不说0.0002是表现最好的了)

BigGAN在训练中 Batch 采用了很大的 Batch,已经达到了 2048(我们平常训练 Batch 正常都是 64 居多),在卷积的通道上也是变大了,还有就是网络的参数变多了,在 2048 的 Batch 下整个网络的参数达到了接近 16 亿

深度学习什么是对抗式神经网络?

对抗式闹带旁神经网络 GAN

让机器学会“左右互搏”

GAN网络的原理本质上就是这两篇小说中主人公练功的液橡人工智能或机器学习版本。

一个网络中有两个角色,修炼的过程中左手扮演攻方,即生成器(generator),试图生成和自然世界中拟完成任务足够相似的目标;右手扮演守方,即判别器(discriminator),试图把这个假的、生成的目标和真实目标区分开来。经过反复多次双手互搏,左手右手的功力都会倍增,从而达到“舍行穗我其谁”的目标。

[img]

GAN的基本概念

1. 组成

1) 判别算法discriminative algorithms

判别算法根据输入数据的feature进行分类label; 比如这封邮件是不是垃圾邮件

2) 生成算法 generative algorithms

生成算法根据特定的label预测feature

一个卷积神经网络

生成新数据

4) 判别器 discriminator

一个卷积神经网络

评估生成数据的真实性

2. 工作过程

1) 简述

生成模型生成一些图片-判别模型学习区分生成的图片和真实图片-生成模型根据判别模型改进自己,生成新的图片-····

2) 过程

a) 在以下两个Minibatch应用梯度下降等优化算法

训练样本

生成样本

b) 优化

3) 结果

生成模型与判别模型无法提高自己——即判别模型无法判断一张图片是生成出来的还是真实的而结束

二、 数学描述

1. 生成模型 g(z)

1) 概念

输入z是一个随机噪声

g的输出就是一张图片

2. 判别模型  D(x)

1) 概念

输入X是从模型中的抽取的样本

D(x)的输出是0-1范围内的一个实数,用来判断这个图片是一个真实图片的概率是多大

2) 公式

解释:     D=1(真实图片),则P_data=1, P_model=0

                D=0(假的图片),则 P_data=0

3. 优化方法

o 交互迭代

     固定g,优化D,一段时间后,固定D再优化g,直到过程收敛。

4. 代价函数

1) 判别器的代价函数J(D)

迄今为止,所有的判别其代价函数都一样,不一样的是生成器的代价函数。

这是一个标准的cross-entropy cost

真实数据的label=1,生成器生成的数据的label=0

目标是最小化判别器的代森渣者价函数

2) Minimax 博弈/零和博弈

3) Non-saturating heuristic启发式,非饱和博弈

启发式驱动是说按照实际操作改变策略,而不是遵循理论。

为了防止生成器的梯度消失梁判,把生成器的cost变成:

4) Maximum likelihood最大似然博弈

5) Divergence的选择

6) Generator 的Cost function的比较

结论:使用non-saturating

三、 DCGAN

1. 引入——CNN

1) 概念

(convolutional neural network,卷积神经网络)。深度神经网络的一种,可以通过卷积层(convolutional layer)提取不同层级的信息

2) 输入

图片

3) 输出

图片

抽象表达(纹理/形状etc)

2. 简介

o 人们为图像生成设计了一种类似反卷积的结构:Deep convolutional NN for GAN(DCGAN)

o 是GAN的使用场景——在图片中的生成模型DCGAN。

3. 输入

o 随机噪声向量(高斯噪声etc)

4. 处理流程

o 输入通过与CNN类似但是相反的结构,将输入放大成二维数据。

o 通过生成模型+判别模型

o 生成图片

四、 训练GAN的tips

1. 用label训练

2. One-sided label smoothing

防止判别器的极端的可信分类(某一类的可能性为1)

帮助判别器抵抗生成器的攻击

3. 注意Batch norm的使用

1) Feature norm的定义

subtract mean, divide by standard deviation

2) 注意

会导致batch之间相互影响,应该使用virtual batch norm

4. 平衡G和D

D应该获胜,应此薯该多锻炼D,D应该更加复杂

1. discriminator 与generator,固定一个,训练另一个

2. 开始训练generator之前预先训练discriminator

3. GAN训练很费时间,建议用GPU不要用CPU

五、 GAN与其他神经网络的比较

1. Auto encoder/decoder

可以压缩原始数据

2. VAE(Variational变化的 auto encoder)

增加了额外的限制

可以压缩原始数据

可以生成数据(生成效果没有GAN好)

六、 GAN的有趣应用

七、 评估

1. inception scores

It's particularly interesting because it seems to be a very reliable way to "quantify realism" in GANs,

八、 前沿研究

1. 解决Non-convergence

2. 如何评估生成模型

3. 离散的输出

4. 半监督化学习

5. 。。。

卷积神经网络之GAN(附完整代码)

不管何种模型,其损失函数(Loss Function)选择,将影响到训练结果质量,是机器学习模型设计的重要部分。对于判别模型,损失函数是容易定义的,因为输出的目标相对简单。但对于生成模型,损失函数却是不容易定义的。

GAN算法原理:

1)G是一个生成图片的网络,它接收一个随机的噪声z,通过这个噪声生成图片,记做G(z)。

3)在最理想的状态下,G可以生成足以“以假乱真”的图片G(z)。对于D来说,它难以判定G生成的图片究竟是不是真实的,因此D(G(z)) = 0.5。

4)这样目的就达成了:得到了一个生成式的模型G,它可以用来生成图片。

在训练过程中,生成网络G的目标就是尽量生成真实的图片去欺骗判别网络D。而判别网络D的目标就是尽量把G生成的图片和真实的图片分别开来。这样,G和D构成了一个动态的“博弈过程”。

2.再以理论抽象进行说明:

GAN是一种通过对抗过程估计生成模型的新框架。框架中同时训练两个模型:捕获数据分布的生成模型G,和估计样本来自训练数稿春据的概率的判别模型D。G的训练程序是将D错误的概率最大化。可以证明在任意函数G和D的空间中,存在唯一的解决方案,使得G重现训练数据分布,而D=0.5(D判断不出真假,50%概率,跟抛硬币决定一样)。在G和D由多层感知器定义的情况下,整个系统可以用反向传播进行训练。在训练或生成样本期间,不需要任何马尔科夫链或展开的近似推理网络。实验通过对生成的样品的定性和定量评估,证明了GAN框架的潜在优势。

Goodfellow从理论上证明了该算法的收敛性。在模型收敛时,生成数据和真实数据具有相同分布,从而保证了模型效果。

GAN公式形式如下:

1)公式中x表示真实图片,z表示输入G网络的噪声,G(z)表示G网络生成的图片;

2)D(x)表示D网络判断图片是否真实的概率,因为x就是真实的,所以对于D来说,这个值越接近1越好。

3)G的目的:D(G(z))是D网络判断G生成的图片的是否真实的概率。G应该希望自己生成的图片“越接近真实越好”。也就是说,G希望D(G(z))尽可能得大,这时V(D, G)会变小。因此公式的最前面并枣记号是min_G。

4)D的目的:D的能力越强,D(x)应该越大,D(G(x))应该越小。这时V(D,G)会变大。因此式子对于D来说是求最大max_D。

GAN训练过程:

GAN通过随机梯度下降法来训练D和G。

1)首先训练D,D希望V(G, D)越大越好,所以是绝敬拆加上梯度(ascending)

2)然后训练G时,G希望V(G, D)越小越好,所以是减去梯度(descending);

GAN训练具体过程如下:

GAN算法优点:

1)使用了latent code,用以表达latent dimension、控制数据隐含关系等;

2)数据会逐渐统一;

3)不需要马尔可夫链;

4)被认为可以生成最好的样本(不过没法鉴定“好”与“不好”);

5)只有反向传播被用来获得梯度,学习期间不需要推理;

6)各种各样的功能可以被纳入到模型中;

7)可以表示非常尖锐,甚至退化的分布。

GAN算法缺点:

1)Pg(x)没有显式表示;

2)D在训练过程中必须与G同步良好;

3)G不能被训练太多;

4)波兹曼机必须在学习步骤之间保持最新。

GAN的应用范围较广,扩展性也强,可应用于图像生成、数据增强和图像处理等领域。

1)图像生成:

目前GAN最常使用的地方就是图像生成,如超分辨率任务,语义分割等。

2)数据增强:

用GAN生成的图像来做数据增强。主要解决的问题是a)对于小数据集,数据量不足,可以生成一些数据;b)用原始数据训练一个GAN,GAN生成的数据label不同类别。

GAN生成式对抗网络是一种深度学习模型,是近年来复杂分布上无监督学习最具有前景的方法之一,值得深入研究。GAN生成式对抗网络的模型至少包括两个模块:G模型-生成模型和D模型-判别模型。两者互相博弈学习产生相当好的输出结果。GAN算法应用范围较广,扩展性也强,可应用于图像生成、数据增强和图像处理等领域。

GAN(1) GAN介绍: 基本概念及逻辑

GAN由Ian Goodfellow于2014年提出,并迅速成为了非常火热的研究话题,GAN的变种更是有上千种,深度学习先驱之一的Yann LeCun就曾说, "GAN及其变种是数十年来机器学习领域最有趣的 idea" 。

听起来很厉害的样子,那么什么是GAN呢?

生成式对抗网络(GAN, Generative Adversarial Networks )是一种 深度学习 模型,是近年来复杂分布上 无监督茄碧慧学习 最具前景的方法之一。模型通过(至少)两个模块:生成模型(Generative Model)和判别模型(Discriminative Model)的零和博弈进行学习,即通过两个网络的互相对抗来达到最好的生成效果。

这一段看完了,所以,什么是GAN?看懂了吗?感觉充满了问号。。。接下来跟着李宏毅老师的节奏好好梳理一下。

概念里说,模型通过框架中(至少)两个模块:生成模型G(Generative Model)和判别模型D(Discriminative Model),那么什么是生成模型?什么是判别模型?

生成模型G 是指能够随机生成观测数据的模型,尤其是在给定某些隐含参数的条件下。在GAN中,可以理解为输入一个vector,生成一个图片、语音、文本等有结构的输出。

判别模型D 是一种对未知数据与已知数据之间关系进行建模的方法,在GAN中,可以理解为判别器建立了训练数据与生成器输出的数据的关系,按训练数据的标准为生成的数据打分。

以图像的生成为例:

知道了生成器和判别器是什么,那么他们是怎么配合工作来推动GAN的学习的呢?

以学习画二次元人物头像为例:

就这样一步一步,老师觉得我们画的头像和真正的二次元美图一样美的时候,就不再抽我们大嘴巴子,我们终于出师了,是一个合格的生成器了!(这里的老师就是判别器,判别器也是需要学习的,虽然老师水平高,但他不学习也不一定知道什么是美丽的二次元头像)

生成器和判别器通过零和博弈来学习,什么是零和博弈呢?

零和博弈(zero-sum game) ,又称零和游戏,是博弈论的一个概念,属非合作博弈。

它是指参与博弈的各方,在严格竞争下,一方的收益必然意味着另一方的损失,博弈各方的收益和损失相加总和永远为“零”,可以说自己的幸福是建立在他人的痛苦之上的,二者的大小完全相等,因而双方都想尽一切办法以实现“损人利己”。

在上面的例子中,老师(判别器)抽我们(生成器)大嘴巴颤答子,抽的越多他的快乐越多,我们的快乐越少,我们通过和老师博弈改变双方的快乐,但快乐数值的总和一直都是零,这就是判别器和生成器的零和博弈,这种博弈的关系也是GAN中“Adversarial”的由来。

了解了GAN中的几个关键词的含义后,我们慧缺来看看GAN是怎样运行的:

过程听起来不是很复杂,不过问题是生成器和判别器两个NN网络是用什么结构组合在一起的呢?

其实, generator和discriminator是同一个大的网络 ,像上图,整个大的网络的 前半部分是generator,后半部分是discriminator ,所以其输入是vector,输出就是得分,而图片就在中间hidden层,即两个网络的衔接处。所谓的生成是指:网络中间的一层hidden-layer的输出是一个图片,判别是指:对这个生成的图片,网络的后半部分会训练出一个得分(或者说概率)。

用稍微数学化一些的语言来表示上述过程:

什么是结构化学习?

在机器学习过程中,对数据的拟合其实就是在找一个拟合函数:

对于回归问题(Regression)来说,这个函数输出一个标量(scalar)

对于分类问题(Classification)来说,这个函数输出一个类别(one-hot 向量)

如果输出的是一个序列,一个矩阵,一个图,一颗树...

其输出由具有依赖关系的组件组成的,这就叫做结构化学习。

首先,对于一般的分类问题,每个类别会对应多个样本,而结构化学习如果把每一个output当做一个类别来看的话,输出空间就非常大,因为其输出是多种多样的,很可能是One-shot learning甚至Zero-shot learning。

One-shot learning: 对某一/某些类别只提供一个或者少量的训练样本;

Zero-shot learning: 对某一/某些类别完全不提供训练样本。

以文本为例,输入“吃了吗?”,输出“吃过了”、“吃了”、“吃啦”等等都可以看做不同的类,所以用普通的分类是难以解决的。

再者,结构化学习的输出是由具有依赖关系的组件组成的,需要考虑整体。

GAN的生成器可以生成各种输出,判别器可以判断输出的好坏,似乎这两个模块都有很强的学习能力,那么他们能独立工作吗?为什么一定要进行博弈呢?

首先来看看生成器能不能自己学习。

生成器当然可以自己学习,在GAN之前就有自编码器AE、变分自编码器VAE。

自编码器是一个如下图所示结构的神经网络,其输入和输出的维度相同,中间的隐含层维度最小,作为编码的结果,其前半部分encoder会尽可能的保留原始输入的信息,以便在后半部分decoder还原输入。

其实自编码器AE得到的decoder就是一个生成器,不过AE的缺点是无法处理没有训练过的数据,当给code加上噪声后,就不知道会输出什么了,可能是一个完全的乱码或者是噪声,我们希望的是“生成模型”能够对任意的输入编码产生有相关意义的数据,这就是我们后面的“变分自编码器VAE”所要做的事情。

变分自编码器直接编码成高斯分布,可以对各种随机输入产生有意义的输出。

编码器的目标是让输出与输入尽可能的相似,怎么评价相似呢?实际上是计算输入向量与输出向量的距离,拿图片来说,向量距离表示两个图片有多少像素不同,但没法表达更多的东西,比如位置等。

如下图所示,编码器会认为上面只差1个像素的图更好,但实际上上面两个在奇怪的地方多/少一个像素点,更容易看出不是人的手写数字,而下面两个虽然像素差的多,但其实只是笔画长一点而已,更像是手写的数字。

组间之间的关系非常重要,在编码器中,尽管两个组间高度相关,但却无法相互影响,我们需要structure 来约束这个事情。就是在后面在加几个隐藏层,就可以调整第L层的神经元输出。也就是说理论上,VAE要想获得GAN的效果,它的网络要比GAN要深才行。

而且由于VAE算法采用的分布采样,因此做一些离得比较散的目标效果不好:

下图中绿色是目标,蓝色是VAE学习的结果

总结一下,不依靠判别器,生成器独立去学习是可以的,不过生成器是一个一个component来生成,每个component之间的关系不好控制,存在一定的缺点,不能从全局把握结果的好坏。

那么,判别器能不能独立学习来生成好的结果呢?

判别器也是可以独立学习的。

判别器也就是Evaluation function, Potential Function, Energy Function …其特点是top-down evaluation,所以很容易控制component之间的关系,能更好的判断一个结果的好坏,以手写数字为例,判别器能轻松的捕捉到元素之间的相关性,这可是生成器很难解决的问题啊。

例如上面提到的问题,图中所示的CNN Filter就可以轻松识别是不是有孤立的的像素点。

那么应该怎么做才能让判别器得到好的输出呢?

只需要穷举所有可能的x,再挑一个使得判别器得分最好的那个即可:

判别器训练的一个难点是缺失负向样本,比如我们想要生成手写字体或者二次元头像,那么我们的训练数据其实只有正向样本,或许我们可以通过给正向样本增加噪声来得到负向样本,但我们制作的负向样本的质量及分布是很难把握的,怎么解决这个问题呢?

可以采用让判别器自己来生成负向样本的方法,算法流程如下:

看起来似乎和GAN训练差不多,但其实还存在着问题。如下图可以帮助我们理解判别器训练的过程,可以理解为判别器在为真实样本打高分,同时压制其他样本的得分,并在每次迭代中修复自己的漏洞,最终希望训练到除了真实样本其他全是低分:

其缺点是什么呢?

在高维空间中,负样本采样过程其实是很难进行的,再者判别器生成样本的过程,即argmax过程,要枚举大量样本,效率很低。

判别器的生成既然这么麻烦的话,真的有用判别器来做生成任务的吗?实际上,概率图模型就是一类典型的判别器做生成的例子。

思考一下,概率图模型我们会有一个图,根据图还会有一个Potential Function(势函数,详细马尔科夫随机场、CRF),这不就形成了一个可以打分的判别器吗!计算出来的概率不就是打的分吗?想一下CRF的训练,就是通过给正向样本和负样本打分,不过迭代过程是不是有我不确定,HMM应该就没有吧?总之这个角度的思路是非常棒的!

总结一下,判别器和生成器的区别:生成器 VS 判别器

综合以上所述的生成器和判别器的优缺点,我们发现两者是互补的,因此将其组合起来使用,充分利用两者的优势:

Benefit of GAN

(1) From Discriminator’s point of view

• Using generator to generate negative samples

(2)From Generator’s point of view

• Still generate the object component-bycomponent

• But it is learned from the discriminator with global view. (跟discriminator 学习大局观)

GAN 的数学理论及推导在下一篇详述,李宏毅老师在第一节介绍课程中也没有讲这部分。

主要参考

对抗生成网络(GAN)教程(2018) 李宏毅

GAN生成对抗网络(一)

GAN(Generative Adversarial Networks)是两个网络的的组合, 一个网络生成模拟数据, 另一个网络棚物陵判断生成的数据是真实的还是模拟的。生成模拟数据的网络要不断优化自己让判别的网络判断不出来, 判别的网络也要优化自己让自己判断得更准确。 二者关系形成对抗博弈,因此叫 对抗神经网络 (生成对抗网络)。实验证明, 利用这种网络间的对抗关系所形成的网络, 在无监督及半监督领域取得了很好的效果, 可以算是用网络来监督网络的一个自学习过程。在GAN发明之前,变分自编码器被认为是理论完美、实现简单,使用神经网络训练起来很稳定, 生成的图片逼近度也较高, 但是人类还是可以很轻易地分辨出真实图片与机器生成的图片。

生成对抗网络包含了 2 个子网络: 生成网络(Generator, G)和判别网络(Discriminator,D), 其中生成网络负责学习样本的真实分布,判别网络负责将生成网络采样的样本与真实样本区分开来。

生成网络 G(

标签列表