深度学习16(对抗生成网络:GAN+自动编码器)
GAN
生成对抗网络(Generative Adversarial Network,简称GAN),主要结构包括一个生成G(Generator)和一个判别器D(Discriminator)。
生成器(Generator):能够输入一个向量,输出需要生成固定大小的像素图像。
判别器(Discriminator):用来判别图片是真的还是假的,输入图片(训练的数据或者生成的数据)
输出为判别图片的标签。
1、定义GAN结构生成数据
(a)状态处于最初始的状态,生成器生成的分布和真实分布区别较大,并且判别器判别出样本的概率不稳定
2、在真实数据上训练nepochs判别器,产生fake(假数据)并训练判别器识别为假
通过多次训练判别器来达到(b)样本状态,此时判别样本区分得非常显著
3、训练生成器达到欺骗判别器的效果
- 训练生成器之后达到(c)样本状态,此时生成器分布相比之前,逼近了真实样本分布。经过多次反复训练迭代之后。
- 最终希望能够达到(d)状态,生成样本分布拟合于真实样本分布,并且判别器分辨不出样本是生成的还是真实的。
损失训练:
整个优化我们其实只看做一个部分,
判别器:相当于一个分类器,判断图片的真伪,二分类问题,使用交叉熵损失
对于真实样本:对数预测概率损失,提高预测的概率。
D、G结构:
DG结构是两个网络,特点是能够反向传播可导计算要介绍G、D结构,需要区分不同版本的GAN。
2014年最开始的模型:
- G、D都是multilayer perceptron(MLP)
- 缺点:实践证明训练难度大,效果不行
2015:使用卷积神经网络+GAN(DCGAN(Deep ConvolutionalGAN))
改进:
- 判别器D中取出pooling,全部变成卷积、生成器G中使用反卷积(下图)
- D、G中都增加了BN层
- 去除了所有的全连接层
- 判别器D中全部使用Leaky ReLU,生成器除了最后输出层使用tanh其它层全换成ReLU
自动编码器
自动编码器有两个方面的应用:
- 数据去噪
- 可视化而降维
自动编码器是一种数据的压缩算法,一种使用神经网络学习数据值编码的无监督方式