DCGAN
- 1.一 论文导读
- 2.二 论文精读
- 3.三 代码实现
- 4.四 问题思索
《unsupervised representation learning with deep convolutional generative adversarial networks》
—深度卷积生成对抗网络(DCGAN)
作者:Alec Radford & Luke Metz
发表会议及时间:ICLR 2016
一 论文导读
如果判别大图像,比如1024*1024,则输入神经元会过多,对于判别器,参数量过于巨大。
为了减少参数量,自然就会想到卷积神经网络。
2012: Alexnet
- 怎么做呢?
效果结果很差!!!!
所以DCGAN产生了
主要贡献
- 提出了一系列策略,成功的将GAN和CNN进行结合
- 能够训练卷积生成对抗网络,使得生成效果大大提升
- 通过充分的实验,对原理做了直观全面的解释
DCGAN作为2016年GAN的代表之作起到了明显的划分作用
MLP与CNN
- MLP
●网络有多个隐层组成
●每一个神经元都和上一层中的所有节点连接
●参数量大,训练难度大
●会丢失像素间的空间信息
- CNN
●稀疏连接,参数少
●可以处理更复杂的图像
●可以利用像素间的空间信息
●可以引入池化、空洞卷积等操作
Decoder中常用的3种上采样
●upsampling 插值上采样
●unpooling 反池化
●deconvolution 转置卷积
双立方插值和双线性插值一样,只不过是把周围4个值,变成周围16个值
最常用的就是双线性插值
反池化,因为位置的关系,保留住了特征,特别是位置信息特征
转置卷积,要先进行扩充,再进行卷积
转置卷积,相比于插值和uppooling的最大优点,就是有着可学习参数的卷积核,典型应用U-NET
GAN网络结构
●由判别模型和生成模型两部分组成
●生成模型负责生成假样本,欺骗判别器
●判别模性来分辨真样本和假样本
●两个模型交替训练,类似对抗博弈的过程
过程
一 训练判别器,固定生成器,使用反向传播
二 固定判别器,训练生成器,使用反向传播
GAN网络训练过程示意图
并不是说,一开始判别器就很厉害,即警察很厉害,判别器和生成器是一起进步的(因为一起训练),判别器每次都要比生成器强一点才行,这样一直一起变强。
二 论文精读
一 去掉判别器中所有的池化,用卷积代替
为什么用卷积代替池化
因为,卷积带有可学习参数,在GAN网络中,判别器D主要目的是辅助生成器G达到最优,如果用池化,则其梯度会稀疏,会导致判别器学习困难,如果判别器学习困难,他就不能很好的辅助指导生成器学习。
同时,卷积也要有下采样的作用
二 生成器使用反卷积
三 去掉判别网络的全连接层
因为FC层其巨大的参数量计算提高了网络的训练难度,改用了卷积
四 改用batch normalization
五 激活函数改用tanh 和 Leaky RelLu
其目的和去池化等同,因为避免梯度稀疏,特别是Leaky RelLu
训练参数设置
训练GAN要了解
突变就是没有学到分布,只是进行了记忆
下图是没有突变,是学到了分布
三 代码实现
四 问题思索
恍然大悟!是解码,解码,解码(decode),以前一直把上采样,看作解码了,解码就是解码,是总称。
补充小知识:深度学习三巨头之一的Bengio Y的数学功底非常强,GAN网络的作者就是Bengio的学生,作为Bengio组出来的文章,数学论证一般都是非常充分的