如果使用原始的GAN,输入GAN的随机噪声为100维的随机噪声,输出图像为256×256大小。也就是说要将100维的信息映射为65536维(38维的映射为28×28=784维)。如果单纯用原始的DNN来实现,整个模型参数非常巨大,且学习难度很大(低纬度映射到高纬度需要添加许多信息)
DCGAN即使用卷积网络的对抗网络,其原理和GAN一样,只是把CNN卷积技术用于GAN模式的网络里。
G(生成器)网在生成数据时,使用反卷积的重构技术来重构原始图片。
D(判别器)网用卷积技术来识别图片特征,进而作出判别。
同时,DCGAN中的卷积神经网络也做了一些结构的改变,以提高样本的质量和收敛速度:
- G网中取消所有池化层,使用转置卷积(transposed convolutional layer)并且步长大于等于2进行上采样。D网中也用加入stride的卷积代替pooling。
- 在D网和G网中均使用批量归一化(batch normalization),而在最后一层时通常不会使用batch normalizaiton,这是为了保证模型能够学习到数据的正确均值和方差。
- 去掉了FC层,使网络变为全卷积网络。
- G网中使用ReLU作为激活函数,最后一层使用Tanh作为激活函数。D网中使用LeakyReLU作为激活函数。
DCGAN中换成了两个卷积神经网络(CNN)的G和D,可以更好地学到对输入图像层次化的表示,尤其在生成器部分会有更好的模拟效果。DCGAN在训练中会使用Adam优化算法。