论文阅读——《Unsupervised Representation Learning With Deep Convolutional Generative Adversarial Networks》
发布时间
阅读量:
阅读量
关于 无监督表示学习与深度卷积生成对抗网络结合的方法 的阅读
1. Introduction
这篇论文主要有以下几个方面的贡献:
- 研究者探讨了卷积GAN网络架构及其限制因素,并分析表明该架构能在多数配置下实现稳定训练。这一设计被命名为Deep Convolutional GANs(DCGAN)。
- 研究者将已训练好的判别器应用于图像识别任务,并验证其性能与许多无监督算法具相当竞争力。
- 研究团队对生成器中的滤波器进行了可视化处理,并发现这些滤波器能够有效识别并提取关键物体特征。
- 通过对生成器的工作机制深入研究,我们发现其具备独特的向量运算特性,这使得通过简单的算术操作即可调控生成样本的本质特征。
3. Approach and model architecture
相较于原始的GAN, 作者主要做了以下几个改变:
- 将步长卷积(作为判别器)与反卷积(作为生成器)替代传统的池化层。
- 在生成器与判别器中均采用了批归一化技术。
- 舍弃全连接层。
- 除了输出层外,所有生成器的各层级均采用ReLU激活函数。
- 判别器中的每一层均采用了带有泄漏性的ReLU激活函数。
论文中的所用的网络结构如下:

判别器网络架构具有对称性。代码示例如下,在架构上有所差异,生成的结果为32×32×3的图像,请作为参考:
def generator(z, reuse=False, training=True):
with tf.variable_scope('generator', reuse=reuse):
# 1 * 1 * 100 -> 4 * 4
h0 = tf.layers.conv2d_transpose(z, 512, [4, 4], strides=(1, 1), padding='valid', name='g_h0_dconv')
h0 = leaky_relu(tf.layers.batch_normalization(h0, training=training, name='g_h0_bn'))
# 4 * 4 * 512 -> 8 * 8
h1 = tf.layers.conv2d_transpose(h0, 256, [4, 4], strides=(2, 2), padding='same', name='g_h1_dconv')
h1 = leaky_relu(tf.layers.batch_normalization(h1, training=training, name='g_h1_bn'))
# 8 * 8 * 256 -> 16 * 16
h2 = tf.layers.conv2d_transpose(h1, 128, [4, 4], strides=(2, 2), padding='same', name='g_h2_dconv')
h2 = leaky_relu(tf.layers.batch_normalization(h2, training=training, name='g_h2_bn'))
# 16 * 16 * 128 -> 32 * 32
h3 = tf.layers.conv2d_transpose(h2, 3, [4, 4], strides=(2, 2), padding='same', name='g_h3_dconv')
h3 = tf.nn.tanh(h3)
return h3
def discriminator(images, reuse=False, training=True):
with tf.variable_scope('discriminator', reuse=reuse):
# 32 * 32 * 3 -> 16 * 16
h0 = tf.layers.conv2d(images, 128, [4, 4], strides=(2, 2), padding='same', name='d_h0_conv')
h0 = leaky_relu(tf.layers.batch_normalization(h0, training=training, name='d_h0_bn'))
# 16 * 16 * 128 -> 8 * 8
h1 = tf.layers.conv2d(h0, 256, [4, 4], strides=(2, 2), padding='same', name='d_h1_conv')
h1 = leaky_relu(tf.layers.batch_normalization(h1, training=training, name='d_h1_bn'))
# 8 * 8 * 256 -> 4 * 4
h2 = tf.layers.conv2d(h1, 512, [4, 4], strides=(2, 2), padding='same', name='d_h2_conv')
h2 = leaky_relu(tf.layers.batch_normalization(h2, training=training, name='d_h2_bn'))
# 4 * 4 * 512 -> 1 * 1
h3 = tf.layers.conv2d(h2, 1, [4, 4], strides=(1, 1), padding='valid', name='d_h3_conv')
return tf.nn.sigmoid(h3), h3
5. Empirical Validation of DCGANS Capabilities
在本节中, 作者采用了判别器作为特征提取器, 并将其应用于有监督学习数据集上, 以评估基于这些特征的线性模型的性能.
为了从判别器中提取学习到的特征, 作者采用了判别器的所有层来获取特征. 对每一层进行了最大池化处理, 最终生成了4×4的空间网格. 然后将其展平并连接成一个28672维的向量. 接着在这些特征上训练了一个线性L2-SVM分类器, 并采用Imagenet-1k作为数据集. 此外, 作者还对DCGAN+L2-SVM与其他无监督学习算法在CIFAR-10和SVHN数据集上的性能进行了对比分析.


6. Investigating And Visualization The Internals of The Network
作者对训练好的生成器和判别器进行了多方面的研究。其中涉及对于DCGAN模型进行了可视化展示、分析了生成器的工作表征以及深入探究了生成向量z中的算术特性。
全部评论 (0)
还没有任何评论哟~
