【GAN模型结构】从最简单的全卷积GAN一起开始玩转GAN

大家好,今天开设新专栏《GAN模型结构》。在这个专栏中,我们会讲述各种各样的GAN的网络结构及其在各类任务中的应用

作者&编辑 | 言有三

三年前GAN刚出来的时候就开始关注GAN了,去年也写过一篇综述,【技术综述】有三说GANs(上),不过因为时间问题一直没有更新更多的内容。


今年公众号也开设了GAN优化专栏,内容更新的差不多了,现在GAN模型结构也走起,在这两个网络专栏的加持下,希望我们能从理论到实践彻底玩转GAN。

1 GAN的基本结构

在机器学习中有两类模型,即判别式模型和生成是模型。

判别式模型即Discriminative Model,又被称为条件概率模型,它估计的是条件概率分布。生成式模型即Generative Model ,它估计的是联合概率分布,两者各有特点。

【GAN模型结构】从最简单的全卷积GAN一起开始玩转GAN_第1张图片

【GAN模型结构】从最简单的全卷积GAN一起开始玩转GAN_第2张图片

常见的判别式模型有Logistic Regression,Linear Regression,SVM,Traditional Neural Networks

Nearest Neighbor,CRF等。

常见的生成式模型有Naive Bayes,Mixtures of Gaussians, HMMs,Markov Random Fields等。


而GAN,即Generative adversarial net,则同时包含判别式模型和生成式模型,如下:

【GAN模型结构】从最简单的全卷积GAN一起开始玩转GAN_第3张图片

判别式模型就是大家熟悉的分类任务模型,输入图像,输出分类概率。生成式模型则是输入一维向量,输出二维图像,如下:

【GAN模型结构】从最简单的全卷积GAN一起开始玩转GAN_第4张图片

这就是用于图像生成的最早的网络结构,剩下来的问题,就是如何分别设计判别器和生成器。

2 全卷积GAN

DCGAN[1]是第一个用全卷积网络做数据生成的,下面我们看看它的生成器和判别器。


2.1 生成器

【GAN模型结构】从最简单的全卷积GAN一起开始玩转GAN_第5张图片

输入为1×100的向量,然后经过一个全连接层学习,reshape为4×4×1024的张量,再经过4个上采样的反卷积网络,生成64×64的图,各层的配置如下:

【GAN模型结构】从最简单的全卷积GAN一起开始玩转GAN_第6张图片

2.2 判别器

输入64×64大小的图,经过4次卷积,分辨率降低为4×4的大小,每一个卷积层的配置如下:

【GAN模型结构】从最简单的全卷积GAN一起开始玩转GAN_第7张图片

判别器和分类器的损失函数都采用了sigmoid_cross_entropy_with_logits,即sigmoid分类损失。


2.3 实验


下面我们采用开源项目进行实践,GitHub地址如下:https://github.com/carpedm20/DCGAN-tensorflow/。

由于MNIST任务作者已经做过,我们来完成一个新的任务,生成嘴部表情,样本如下:

【GAN模型结构】从最简单的全卷积GAN一起开始玩转GAN_第8张图片

下图分别是判别器和生成器损失图:

【GAN模型结构】从最简单的全卷积GAN一起开始玩转GAN_第9张图片

【GAN模型结构】从最简单的全卷积GAN一起开始玩转GAN_第10张图片

由于生成对抗网络的判别器和生成器是交替训练相互对抗,所以它们各自的损失曲线不可能像通常的图像任务一样一直下降直到很低的水平,而是有一个先下降再上升的过程。


对于判别器来说,刚开始没有学习,因此性能很差,随着训练进行,判别器的损失降低。但是因为生成器的性能在不断提升,所以一段时间之后,判别器的损失可能又会增加,不过在这个实验中不明显。


对于生成器来说,刚开始没有学习,性能很差,随着训练进行,性能越来越好,在本实验中,生成器损失下降到一定程度后又增加了,说明继续迭代无法再改善性能。


总的来说,两者相互对抗,直到达到一个较好的平衡,但是光从损失曲线本身,我们仍然难以分辨出模型的性能好坏,因此还要看真正生成的样本。

【GAN模型结构】从最简单的全卷积GAN一起开始玩转GAN_第11张图片

从左到右分别是第2,10,50,100个epoch的结果。从上图结果来看,随着训练的进行,逐渐生成了许多有意义且非常逼真的样本。不过最终生成的图像仍然有一部分效果很差,这是因为DCGAN本身模型性能所限,后续可以使用更好的模型进行改进。


2.4 总结


总的来说就这么多,更多细节大家可以自己去跑实验。DCGAN的原始论文中总结了很多的技巧,但是随着技术的发展,其中的一些技巧不再必要或者通用,因此这里我们先不总结,以后再回过头来一起看。


DCGAN模型非常浅,原理简单,生成分辨率低,所以简单的任务仍然不能完美地完成,后面会有更多模型从各个方向来进行改进。

参考文献

[1] Radford A, Metz L, Chintala S. Unsupervised representation learning with deep convolutional generative adversarial networks[J]. arXiv preprint arXiv:1511.06434, 2015.

总结

DCGAN因为结构非常简单,内容就讲这么多,这只是咱们GAN网络结构的开始,吃完这顿前菜,咱们后会有期


下期预告:金字塔结构GAN。

知识星球推荐

【GAN模型结构】从最简单的全卷积GAN一起开始玩转GAN_第12张图片

有三AI知识星球由言有三维护,内设网络结构1000变,数据集,AI1000问,AI知识汇总,AI书籍,看图猜技术,项目开发,Github推荐八大学习板块,欢迎加入。

今日网络结构

【GAN模型结构】从最简单的全卷积GAN一起开始玩转GAN_第13张图片

转载文章请后台联系

侵权必究

640?wx_fmt=png

640?wx_fmt=png

640?wx_fmt=png

往期精选

  • 【GAN优化】GAN优化专栏上线,首谈生成模型与GAN基础

  • 【GAN的优化】从KL和JS散度到fGAN

  • 【GAN优化】详解对偶与WGAN

  • 【GAN优化】详解SNGAN(频谱归一化GAN)

  • 【GAN优化】一览IPM框架下的各种GAN

  • 【GAN优化】GAN优化专栏栏主小米粥自述,脚踏实地,莫问前程

  • 【GAN优化】GAN训练的几个问题

  • 【技术综述】有三说GANs(上)

  • 【模型解读】历数GAN的5大基本结构

你可能感兴趣的:(【GAN模型结构】从最简单的全卷积GAN一起开始玩转GAN)