本文介绍GAN的扩展:使用 Convolution 网络进行非监督式学习,得到图像层级式的特征表示以及做一些扩展应用。
Introduction
使用GAN 进行 representation learning 有一些优势:
- 模型训练的方式,区别于其它生成式模型 (参考 GAN 中的描述)
- 不需要启发式的损失函数
但是GAN的训练不稳定,而且没有分析中间层结果的相关工作。 所以本文的贡献点:
- 加入模型的限制,使训练更稳定
- 测试判断式模型的性能
- 可视化 filter,分析特定 filter 对生成特定 object 的作用
- 分析生成式模型的具有的向量运算特性
Related work
Representation learning
对无标签数据的表示学习:
- 聚类
- 自编码机 autoencoder
- 深度信念网络 deep belief network
Generating images
生成图像的方式: 无参和有参模型。无参模型使用匹配的方式,在数据库中寻找匹配的 patch。 有参的包含如下工作:
- Variational sampling
- GAN
- LAPGAN
- RNN
- Deconvolutional network
Visualizing
- Fergus 使用 deconvolution,filter max activation 来可视化 filter
- 输出图像使用 backpropagation 查看参数的响应
Approach
起始套用CNN的结构用于GAN没有成功,对CNN作了如下3个改变:
- all convolutional network: 使用 stride convolution 取代 maxpooling,使生成式模型自己学习其 upsampling
- eliminating fully connected layer: global average pooling ??? 折中方案: 直接将向量映射为下一层的输入或输出
- batch normalization: 不在生成模型的输出层,判别模型的输入层使用
- activation function: 生成式模型使用 ReLU,最后一层使用 Tanh; 判别式模型使用 Leaky ReLU
Training
具体的参数包括:
scale | batch size | init | leaky | solver | lr | momentum |
---|---|---|---|---|---|---|
[-1,1] | 128 | (0,0.02) | 0.2 | adam | 0.0002 | 0.5 |
LSUN
判定模型是否过拟合; TODO: what is deduplication
Face
Image scrawl, opencv face detection
Validation
使用判断式模型中,每层 filter 的响应值,maxout 之后作为特征,来验证 representation learing 的性能。 具体到门牌号码识别任务中,使用 DCGAN 训练图像表示可以取得无监督算法中较好的结果,但是用此架构作为有监督的模型训练,效果并不好!
Internals (TODO)
manifold travel
discrinator backpropagation
arithmatic
Note: 关于损失函数: 交叉熵对NN训练的影响,Hinge loss + L2 正则是 SVM 等等参考公众号文章。