TensorFlow技术解析与实战 13 生成式对抗网络

    生成式对抗网络是google在2014年提出的一个网络模型,主要灵感来自于二人博弈中的零和博弈,也是目前最火热的非监督深度学习的代表。

13.1 GAN的原理

   TensorFlow技术解析与实战 13 生成式对抗网络

    生成式对抗网络主要解决的问题是如何从训练样本中学习出新样本。生成模型就是负责训练出样本的分布,如果训练样本是图片就生成相似的图片,如果训练样本是文章句子就生成相似的文章句子。判别模型是一个二分类器,用来判断输入样本是真实数据还是训练生成的样本。

    生成式对抗网络的优化是一个minimax two-player game问题,它的目的是使生成模型的输出再输入给判别模型时,判别模型很难判断是真实数据还是虚假数据。训练好的生成模型,有能力把一个噪声向量转化成和训练集类似的样本。

    具体到每一个生成式对抗网络的模型,有很多种结构,不过整体思路是不变的

TensorFlow技术解析与实战 13 生成式对抗网络

   读者也可以设计自己的GAN网络架构。我们主要讲解辅助分类器生成式对抗网络的实现

13.2 生成式对抗网络的应用

   目前在生成数字和生成人脸图像方面表现都非常好

TensorFlow技术解析与实战 13 生成式对抗网络

13.3 生成式对抗网络的实现

    本节代码参考 https://github.com/fchollet/keras/blob/master/examples/mnist_acgan.py

     https://arxiv.org/abs/1610.09585以 Augustus Odena、 Christopher Olah 和 Jonathon Shlens 的论文《Conditional Image Synthesis With Auxiliary Classifier GANs》 为基础的

    通过噪声,让生成模型G生成虚假数据,然后和真实数据一起送到判别模型D当中,判别模型一方面输出这个数据的真/假,另一方面输出这个图片的分类(对MNIST来说就是0-9)