一篇文章“简单”认识《生成对抗网络》(GAN)

前言

背景:在监督学习中,训练集需要大量的人工标注数据,并且需要人工判断生成结构好坏,这个过程是高成本且低效率的;GAN能自动完成这个过程,效率高成本低。

定义生成对抗网络(GAN,generative adversarial network),是一种常用于学习类别特征的神经网络结构;主要有两部分组成,分别是生成网络、判别网络。

生成对抗网络GAN让机器能作诗、作曲、作画。

 

生成对抗网络应用

GAN 的应用十分广泛,它的应用包括图像合成、图像编辑、风格迁移、图像超分辨率以及图像转换,数据增强等。

1)风格迁移

图像风格迁移是将图像A的风格转换到图像B中去,得到新的图像,取个名字为new B。其中new B中即包含图像B的内容,也包含图像A的风格。

一篇文章“简单”认识《生成对抗网络》(GAN)_第1张图片

 

2)图像生成

图像生成的目的是生成与训练样本图像类似的图像,其中被广泛应用的一种网络结构是深度卷积对抗网络(DCGAN,Deep Convolutional Generative Adversarial Network)

比如:动漫头像生成、人脸生成等等。

一篇文章“简单”认识《生成对抗网络》(GAN)_第2张图片

 

3)音乐创作

通过学习各种类型音乐的特点,深度学习网络可以创作出对应类型的音乐。

Maddelta是一个在线AI音乐生成的网站,可以通过选择歌曲类型来随机生成对应类型的音乐。

一篇文章“简单”认识《生成对抗网络》(GAN)_第3张图片

 

目录

前言

生成对抗网络应用

1)风格迁移

2)图像生成

3)音乐创作

生成学习算法

生成对抗网络

GAN的简要实现流程

GAN算法实现要点

MNIST 案例

GAN优点

GAN缺点

文献学习

1. Generative Adversarial Networks

2. Conditional GANs

3. DCGAN

4. Improved Techniques for Training GANs

5. Pix2Pix

6. CycleGAN

7. Progressively Growing of GANs

8. BigGAN

9.NAS

温故而知新

参考:

开源代码


生成学习算法

判别式学习:人工神经网络ANN、卷积神经网络CNN、循环神经网络RNN 这些神经网络模型均属于判别式学习算法。该类算法根据改定特征x,计算样本属于y的概率。

生成式学习生成对抗网络GAN 这种神经网络模型属于生成式学习算法。该类算法先从训练集中总结出各个类别的特征,即先得到p\left ( x\mid y \right ),再把待预测样本的特征与各个类别的特征进行比较,以判断出其所属的类别。

生成式学习算法的核心在于求解p\left ( x\mid y \right );生成式算法能够获取类别本身的特征,这使得算法具有创造出新样本的可能。

 

生成对抗网络

生成对抗网络(GAN,generative adversarial network),是一种常用于学习类别特征的神经网络结构;主要有两部分组成,分别是生成网络、判别网络。

生成网络(也称:生成器 Generator):用于生成(合成)数据,目的是“骗过”判别器。

判别网络(也称:判别器 Discriminator):用于判别生成的数据是否真实,目的是找出生成器做的“假数据”。

两个网络同时训练,直到判别网络不能鉴别生成数据的真假。

GAN原理图:

生成网络和判别网络,两者的训练目的是为了打败彼此,两者有互相对抗。

 

GAN的简要实现流程

  1. Generator网络将形状为(latent_dim,)的向量映射到形状为(height, width, channel)的图
  2. Discriminator网络将形状(h,w,c)的图像映射为一个二进制分数,用于评分图像为真的概率
  3. GAN网络将Generator网络和Discriminator网络连接在一起: gan(x) = discriminator(generator(x))
  4. 使用带有“真假”标签的图像训练Discriminator网络(先)
  5. 训练GAN,使得GAN的每步更新使Discriminator网络将其分类为真

 

GAN算法实现要点

1、初始化生成器G和判别器D

2、开始迭代训练:

  • 1)首先固定生成器G的参数,训练判别器D(先训练别器,让其有一个高分的模型)
  • 2)然后固定判别器D的参数,训练生成器G(别器是一个较好的模型基础上,此时它能判别真假数据了;再训练生成器,让它分数越高越好)

训练技巧

1、一个模型训练K次、另一个模型训练1次;

2、单边标签平滑:正则化、防止判别器梯度过大。

 

MNIST 案例

对于MNIST,判别器网络是一个标准的卷积网络,可以对馈送到其的图像进行分类,二项式分类器将图像标记为真实或伪造。

从某种意义上说,生成器是逆卷积网络:虽然标准卷积分类器获取图像并对其进行下采样以产生概率,但生成器获取随机噪声的向量并将其上采样至图像。第一个通过诸如maxpooling之类的下采样技术丢弃数据,第二个生成新数据。

一篇文章“简单”认识《生成对抗网络》(GAN)_第4张图片

生成器和判别器相互博弈,随着判别器改变,生成器也随之变化;判别器需要判断是真实图片,还是假图片(生成器生成的);生成器需要尽可能生成真实的图片,以骗过判别器。

 

GAN优点

  1. 能更好建模数据分布,生成的图像更锐利、清晰;
  2. 生成器G的参数更新不是直接来自数据样本,而是使用来自D的反向传播;
  3. GAN是一种生成式模型,相比较其他生成模型(玻尔兹曼机和GSNs)只用到了反向传播,而不需要复杂的马尔科夫链

 

GAN缺点

  1. 难训练,训练GAN需要达到纳什均衡,判别器D与生成器G之间需要很好的同步;在实际训练中很容易出现判别器D收敛,生成器G发散不收敛的情况。
  2. 训练经常出现不稳定、梯度消失、模式崩溃的情况。
  3. 可解释性差,生成模型的分布没有显式的表达。

 

 

文献学习

1. Generative Adversarial Networks

论文名称:Generative Adversarial Nets

论文地址: https://arxiv.org/abs/1406.2661

“GAN之父” Ian Goodfellow 发表的第一篇提出 GAN 的论文,提出了 GAN 这个模型框架,讨论了非饱和的损失函数,然后对于最佳判别器(optimal discriminator)给出其导数,然后进行证明;最后是在 Mnist、TFD、CIFAR-10 数据集上进行了实验。

 

2. Conditional GANs

论文名称:Conditional Generative Adversarial Nets

论文地址:https://arxiv.org/abs/1411.1784

cGAN 在生成器部分添加了类别标签这个输入,通过这个改进,缓和了 GAN 的一大问题--训练不稳定。

“引入先验知识的做法”,这种思想,在如今大多数非常有名的 GAN 中都采用这种做法,后面介绍的生成图片的 BigGAN,或者是图片转换的 Pix2Pix,都是这种思想, cGAN 的提出非常关键。

 

3. DCGAN

论文名称:Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks

论文地址:https://arxiv.org/abs/1511.0643

采用 CNN 结构成功实现 GAN 模型,它介绍如何使用卷积层,并给出一些额外的结构上的指导建议来实现。采用反卷积构建生成器和判别器,添加BN驾驶学习和收敛过程。

它还讨论如何可视化 GAN 的特征、隐空间的插值、利用判别器特征训练分类器以及评估结果。

 

4. Improved Techniques for Training GANs

论文名称:Improved Techniques for Training GANs

论文地址:https://arxiv.org/abs/1606.0349

介绍了很多如何构建一个 GAN 结构的建议,它可以帮助你理解 GAN 不稳定性的原因,给出很多稳定训练 DCGANs 的建议,比如特征匹配(feature matching)、最小批次判别(minibatch discrimination)、单边标签平滑(one-sided label smoothing)、虚拟批归一化(virtual batch normalization)等等,利用这些建议来实现 DCGAN 模型是一个很好学习了解 GANs 的做法。

 

5. Pix2Pix

论文名称:Image-to-Image Translation with Conditional Adversarial Networks

论文地址:https://arxiv.org/abs/1611.0700

用原始图片生成新风格的图片;这个模型在训练时候需要采用成对的训练数据,并对 GAN 模型采用了不同的配置。

一篇文章“简单”认识《生成对抗网络》(GAN)_第5张图片

 

6. CycleGAN

论文名称:Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks

论文地址:https://arxiv.org/abs/1703.1059

这篇论文提出了一个非常好的方法--循环一致性(Cycle-Consistency)损失函数;CycleGAN仅仅需要准备两个领域的数据集即可,但不需要一一对应。

 

7. Progressively Growing of GANs

论文名称:Progressive Growing of GANs for Improved Quality, Stability, and Variation

论文地址:https://arxiv.org/abs/1710.10196

它取得非常好的结果以及对于 GAN 问题的创造性方法;它利用一个多尺度结构,从 4*4 到 8*8 一直提升到 1024*1024 的分辨率。

 

8. BigGAN

论文名称:Large Scale GAN Training for High Fidelity Natural Image Synthesis

论文地址:https://arxiv.org/abs/1809.11096

BigGAN 应该是当前 ImageNet 上图片生成最好的模型了,它的生成结果非常的逼真,但这篇论文比较难在本地电脑上进行复现,它同时结合了很多结构和技术,包括自注意机制(Self-Attention)、谱归一化(Spectral Normalization)等,这些在论文都有很好的介绍和说明。

 

9.NAS

论文名称:AdversarialNAS: Adversarial Neural Architecture Search for GANs

论文地址:https://arxiv.org/abs/1912.02037

代码地址:https://github.com/chengaopro/AdversarialNAS

提出一种专门针对生成对抗网络(GAN)量身定制的Adversarial NAS方法,以搜索无条件图像生成任务中的高级生成模型。网络架构自动化设计的神经架构搜索(NAS),在许多计算机视觉领域取得了可喜的成果。

 

这里收集了大量 GAN 论文的 Github 项目,并且根据应用方向划分论文:https://github.com/zhangqianhui/AdversarialNetsPapers

 

温故而知新

一篇文章“简单”认识《人工神经网络》

人工神经网络 (Artificial Neural Network, ANN),由人工神经元构成的网络,模拟人类的大脑;它模拟生物过程以反映人脑某些特征的计算结构。

神经元及其突触是神经网络的基本器件;模拟生物网络首先模拟生物神经元。

一篇文章“简单”认识《卷积神经网络》

卷积神经网络(Convolutional Neural Network, CNN),在计算机视觉中得到了广泛的应用。

卷积神经网络通过卷积层池化层的叠加实现对输入数据的特征提取,最后连接全连接层实现分类。

卷积神经网络是前馈网络;前馈神经网络是一个静态网络,信息的传递是单向的,网络的输出只依赖于当前的输入,不具备记忆能力。即:处理的数据是一个一个输入的,前后数据没有关系的。实际生活中,很多数据都是有上下文相关性的,这些数据称为序列数据;处理的时候,不能只考虑当前的输入就进行判断,需要考虑前后输入之间的关系。

一篇文章“简单”认识《循环神经网络》

循环神经网络(Recurrent Neural Networks,RNN),是一种反馈网络,模拟“人脑记忆功能”,常用于语言识别、机器翻译、视频分析、生成图像描述等。

RNN能有效处理序列特性的数据,它能挖掘数据中的时序信息以及语义信息

 

参考:

1)西安电子科技大学《人工智能导论》课程;

2)北京交通大学《图像处理与机器学习》课程;

3)上海交通大学《人工智能技术》课程;

4)https://zhuanlan.zhihu.com/p/80128600

如有错误,欢迎指出;欢迎交流~

声明:本篇文章,未经许可,谢绝转载。

 

开源代码

3 个复现多种 GANs 模型的 github 项目,分别是目前主流的三个框架,TensorFlow、PyTorch 和 Keras:

  • https://github.com/TwistedW/tensorflow-GANs:TensorFlow 版本
  • https://github.com/eriklindernoren/PyTorch-GAN:PyTorch 版本
  • https://github.com/eriklindernoren/Keras-GAN:Keras 版本

 搜索论文:大佬们的优秀成果都喜欢放在arxiv上,不妨直接去arxiv网站上找,http://cn.arxiv.org/ 

你可能感兴趣的:(人工智能,人工智能,神经网络,生成对抗网络,GAN,深度学习)