第3章 3.3 生成对抗网络_第1页
第3章 3.3 生成对抗网络_第2页
第3章 3.3 生成对抗网络_第3页
第3章 3.3 生成对抗网络_第4页
第3章 3.3 生成对抗网络_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

生成对抗网络生成对抗网络生成对抗网络(GenerativeAdversarialNetwork,GAN)是近年来在复杂分布上的无监督学习中最具前景的方法之一。网络通过框架中的生成网络与判别网络的互相博弈产生相当好的输出,即生成网络能够生成以假乱真的样本,同时判别网络也具有很高的判别成功率。原始GAN理论中,并不要求生成网络和判别网络都是神经网络,只要求它们是能拟合相应生成和判别的函数即可。但实际应用中一般使用深度神经网络作为生成网络和判别网络。1基于GAN的手写数字生成实例目录常用GAN算法及其结构2常用GAN算法及其结构1.GANGAN包含生成网络和判别网络。生成网络从潜在空间(LatentSpace)中随机采样作为输入,其输出结果需要尽量模仿训练集中的真实样本,如下图所示。常用GAN算法及其结构判别网络的输入则为真实样本或生成网络的输出,其目的是尽可能将生成网络的输出从真实样本中分辨出来。判别网络的最后一层一般只有一个神经元,并且使用Sigmoid激活函数得到一个0到1的输出。如果输入真实样本,则希望判别网络输出1。如果输入生成网络产生的样本,则希望判别网络输出0,如下图所示。生成网络的训练如下图所示。常用GAN算法及其结构

常用GAN算法及其结构

常用GAN算法及其结构

常用GAN算法及其结构

常用GAN算法及其结构GAN有如下3个优点。(1)能更好地对数据分布建模(图像更锐利、清晰)。(2)理论上,GAN能训练任何一种生成网络。而其他框架需要生成网络有一些特定的函数形式,例如,输出是满足高斯分布的。(3)无须利用马尔科夫链反复采样,无须在学习过程中进行推断,没有复杂的变分下界,避开近似计算中棘手的概率难题。GAN有如下两个缺点。(1)难训练,不稳定。生成网络和判别网络之间需要很好的同步,但是在实际训练中很容易出现判别网络收敛,生成网络发散的情况。GAN的训练需要精心设计。(2)可能出现模式崩溃(ModeCollapse)问题。在GAN的学习过程中可能出现模式崩溃问题,生成网络开始退化,总是生成同样的样本点,无法继续学习。常用GAN算法及其结构2.DCGANDCGAN是对GAN有较好改进的变种,其主要的改进主要是在网络结构上。到目前为止,DCGAN的网络结构仍被广泛使用。DCGAN极大地提升了训练的稳定性以及生成结果质量。DCGAN使用两个CNN分别表示生成网络和判别网络,其中生成网络如下图所示。常用GAN算法及其结构

常用GAN算法及其结构3.ConditionalGAN原始的GAN在训练时会很容易失去方向,不稳定且效果差。而ConditionalGAN在原始的GAN中加入一些先验条件,使网络变得更加可控制。具体来说,可以在生成网络G和判别网络D中同时加入条件来引导数据的生成过程。条件可以是任何补充的信息,如样本的类别、其他模态的数据等。这样的做法有很多应用,如图像标注、利用文本生成图片等。常用GAN算法及其结构ConditionalGAN的网络结构如下图所示。虽然训练样本有多个类别,但是每个样本的类别只作为数据和对应的样本一起传入判别网络中,判别网络的输出仍然是一个0到1的数。训练判别网络的时候,真实样本的标签仍然是1(不论是哪一个类别),假样本的标签仍然是0。并且,对于假样本,需要随机指定一个类别,再一起输入判别网络中进行训练。具体的细节可看3.3.2小节的ConditionalGAN生成手写数字图片的实例。1基于GAN的手写数字生成实例目录常用GAN算法及其结构2基于GAN的手写数字生成实例1.DCGAN生成手写数字图片本小节利用Keras构造DCGAN并训练,使得生成网络可以生成以假乱真的手写数字图片。在训练DCGAN时,首先需要冻结生成网络,采样真实手写数字图片和生成网络输出的假样本,训练判别网络,使其尽可能区分两类样本;然后冻结判别网络,将生成网络构造的图片输入判别网络,训练生成网络,使得判别网络输出越接近1越好,即生成的图片越来越逼真,直到最后“骗过”判别网络。此时生成网络产生的图片与真实的手写数字图片基本一致。构造一个生成网络。因为手写数字数据库比较简单,使用原始的DCGAN的网络结构会导致过拟合,需要减少卷积核的数量。生成网络首先让一维向量(100,)经过一个全连接层得到大小为7×7×128的三维矩阵;然后分别经过4组批归一化、激活函数和二维转置卷积,其中前两组的二维转置卷积的步长为2,可以把行和列的大小扩大一倍;最后经过一个Sigmoid传递函数,输出一个大小为(28,28,1)的矩阵,每个像素值为0到1的值。基于GAN的手写数字生成实例构造一个判别网络。判别网络输入一张形状为(28,28,1)的图片,输出一个0到1的数。为了避免过拟合,判别网络的卷积核的数量也比原始的DCGAN中判别网络的要少。需要注意的是,在每一个卷积层之前,都先经过了传递函数LeakyReLU,它与ReLU的区别是,如果输入值小于0,它将返回alpha乘输入值,而不是返回0。把生成网络和判别网络串联在一起,构造了一个DCGAN。需要注意的是,在训练生成网络的时候,判别网络的参数需要保持不变(discriminator.trainable=False),如此训练过程才能稳定。训练所构造的DCGAN。训练包括两个步骤:首先冻结生成网络,采样真实样本和生成网络输出的假样本,训练判别网络,让它学会区分两类样本;然后冻结判别网络,让生成网络构造图片输入判别网络,训练生成网络,使判别网络的输出越接近1越好,即让判别网络认为生成的样本是真的。不断迭代训练,当生成网络构造的图片让判别网络区分不了真假时,生成网络就具备了创造手写数字图片的能力。定义一个函数plot_images,用于显示和保存生成网络构造的一批图片基于GAN的手写数字生成实例在训练过程中,代码会把生成网络每隔500次迭代后所绘制的图片保存起来。DCGAN生成的手写数字图片在第1000次、第2000次、第4000次和第10000次迭代的结果如下图所示。可以看到,当迭代到第1000次的时候,生成网络还不具备构造高质量手写数字图片的能力;当迭代到第2000次的时候,图像的质量已经有了明显的提升;当迭代到10000次的时候,已经可以生成“以假乱真”的手写数字图片了。(a)第1000次迭代(b)第2000次迭代(c)第4000次迭代

(d)第10000次迭代如果没有GPU的支持,网络的训练时间会很长,可通过读取dcgan_mnist_generator.h5文件来直接使用已经训练过的生成网络基于GAN的手写数字生成实例2.ConditionalGAN生成手写数字图片在DCGAN生成手写数字图片的实例中有一个问题,给定一个随机向量,生成网络得到的数字图片也是随机的,即可能是0到9的任何一个,没有办法控制它生成指定数字的图片。本小节将利用ConditionalGAN生成指定数字的图片,除了传入一个随机向量给生成网络之外,还会传入指定数字的类别的独热编码向量。需要注意的是,ConditionalGAN的判别网络输出仍然是一个0到1的数。训练判别网络的时候,传递给损失函数的真实样本的标签仍然是1(不论是哪一个数字),假样本的标签仍然是0。而且对于假样本,需要随机指定一个类别,再一起输入判别网络中进行训练。例如,把某张手写数字2的图片输入网络中时,还会同时传入向量[0,0,1,0,0,0,0,0,0,0],即生成网络和判别网络都有两个输入。基于GAN的手写数字生成实例在生成网络中,首先将100个分量的随机向量与10个分量的独热编码向量结合在一起,构成具有110个分量的向量,经过第一个全连接层和Reshape层后,得到大小为(7,7,128)的二维向量。然后进行4组转置卷积,得到一个大小为(28,28,1)的输出。在判别网络中,首先让具有10个分量的独热编码向量经过全连接层和Reshape层得到和输入图像一样大小为(28,28,1)的数据。然后把该数据和图像数据拼接起来,得到大小为(28,28,2)的数据。再经过4组卷积和一个全连接层,得到一个0到1的标量输出。生成网络构造的图片如果与所给定的独热编码指定数字不一致,那么判别网络就会得到接近0的输出,从而迫使生成网络调整自身参数,让生成的图片与独热编码指定的数字相一致。最后,通过独热编码向量控制生成网络得到的图片究竟是哪一个数字的图片。使用ConditionalGAN生成手写数字图片。基于GAN的手写数字生成实例ConditionalGAN生成的手写数字图片在第1000次、第2000次、第3000次和第5000次迭代的结果如下图所示。可以看到,当迭代到第1000次的时候,生成网络还不具备构造高质量手写数字图片的能力;当迭代到第3000次的时候,图像的质量已经有了明显的提升;当迭代到第5000次的时候,已经可以生成以假乱真的手写数字图片了。并且,生成网络可以通过独热编码向量生成指定数字的图片,即第一列是0的图片、第2列是1的图片……最后一列是9的图片。(c)第1000次迭代(d)第2000次迭代(c)第3000次迭代

(d)第5000次迭代实训1卷积神经网络1.训练要点(1)掌握使用Keras构建卷积神经网络的主要步骤。(2)根据卷积的输出结果,理解卷积运算的过程。(3)掌握使用预训练好的ResNet对自己的数据再次进行训练的方法。2.需求说明基于cifar10数据集实现图像分类,该数据集共有60000张彩色图像,这些图像的尺寸为32×32,分为10个类别,每个类别有6000张图。其中有50000张图片用于训练,构成了5个训练批,每一批有10000张图,每一类都有5000张图;另外10000张图片用于测试,单独构成1个测试批。测试批的数据,取自10个类别,每一类随机取1000张。需要实现以下内容。(1)自行构造一个有3个卷积层的卷积神经网络,并设置优化算法及其学习率、批大小和迭代的次数,分析相应的结果。实训1卷积神经网络(2)得到cifar10数据集的第一张训练图片在3个卷积层某个通道的中间结果,用图形绘制出来,并进行分析。(3)使用预训练好的ResNet,选取部分网络层,并添加合适的网络层,构造网络进行训练,并调整网络参数,分析相应的结果。与自己构造的卷积神经网络对比分类精度。3.实现思路及步骤(1)构建卷积神经网络,设置优化算法、学习率、批大小和迭代次数。(2)使用图形绘制3个卷积层中某个通道的中间结果。(3)读取预训练好的ResNet50的权重,构造网络、调整网络参数并训练网络,最后分析网络的分类精度。实训2循环神经网络1.训练要点(1)掌握循环神经网络中的常用网络层的基本原理与实现方法。(2)理解注意力模型的使用方法。(3)能够设计并编程实现利用循环神经网络进行文本分类的方法。2.需求说明在处理网络问政平台的群众留言时,工作人员首先按照一定的划分体系对留言进行分类,以便后续将群众留言分派至相应的职能部门处理。目前,大部分电子政务系统还是依靠人工根据经验处理,存在工作量大、效率低且差错率高等问题。请根据附件给出的数据,利用循环神经网络和SelfAttention网络,建立关于留言内容的一级分类网络。实训2循环神经网络附件数据如下表所示。3.实现思路及步骤可参考3.2.2小节介绍的新闻摘要分类实例。留言编号留言用户留言主题留言时间留言详情一级分类744A089211建议增加A小区快递柜2019/10/1814:44我们是A小区居民……交通运输实训3生成对抗网络1.训练要点(1)掌握生成对抗网络中的常用网络层的基本原理与实现方法。(2)能够设计并编程实现生成对抗神经网络解决一些实际问题。2.需求说明fashion_mnist数据集(fromkeras.datasetsimportfashion_minist)包含10个类别的图像,分别是T-shirtHOP(T恤)、Trouser(裤子)、Pullover(套衫)、Dress(连衣裙)、Coat(外套)、Sandal(凉鞋)、Shirt(衬衫)、Sneaker(运动鞋)、Bag(包)、Ankleboot(短靴),如图3-35所示。利用fas

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论