5 数据集和模型
Source code: https://github.com/YiddishKop/ml_src_adam_compare.git
5.1 MNIST
5.1.1 Dataset
数据集 | 样本类型 | 训练集 | 验证集 |
---|---|---|---|
MNIST | 灰度图(28*28) | 60000 | 6000 |
5.1.2 NN 架构
层 | 形状 |
---|---|
input_shape | (28,28,1) |
cnn_filter | (3,3,30) |
cnn_filter | (3,3,60) |
max_pooling | (2,2) |
flatten | |
fcn_relu | 600 |
keep_prob | 0.5 |
fcn_softmax | 10 |
5.1.3 model parameter
参数 | 值 |
---|---|
learning_rate | 0.001 (no decay) |
loss fn | categorical cross entropy |
epoch | 30 |
5.2 Cifar-10
5.2.1 Dataset
数据集 | 样本类型 | 训练集 | 验证集 |
---|---|---|---|
Cifar-10 | RGB彩图(32*32*3) | 50000 | 10000 |
5.2.2 NN 架构
层 | 形状 |
---|---|
input_shape | (32,32,3) |
cnn_filter | (3,3,32) |
cnn_filter | (3,3,32) |
max_pooling | (2,2) |
keep_prob | 0.25 |
cnn_filter | (3,3,64) |
cnn_filter | (3,3,64) |
max_pooling | (2,2) |
keep_prob | 0.25 |
flatten | |
fcn_relu | 512 |
fcn_softmax | 10 |
5.2.3 model parameter
参数 | 值 |
---|---|
learning_rate | 1e-4 (decay) |
loss fn | mse |
epoch | 200 |
batch_size | 256 |
5.3 回归
5.3.1 Dataset
数据集 | 样本类型 | 训练集 | 验证集 |
---|---|---|---|
house sales in king county, USA | csv | 18000 | 3600 |
5.3.2 型号架构
层 | 形状 |
---|---|
input_shape | 71 |
fcn_relu | 1000 |
fcn_relu | 1000 |
fcn_relu | 1000 |
fcn_relu | 1 |
keep_prob | 1 |
5.3.3 model parameter
参数 | 值 |
---|---|
learning_rate | 1e-4 (no decay) |
loss fn | mse |
epoch | 40 |
batch_size | 100 |
5.4 DCGAN
5.4.1 Dataset
数据集 | 样本类型 | 训练集 | 验证集 |
---|---|---|---|
Cartoon image Cifar-10 | RGB彩图 | 18000 | 3600 |
5.4.2 Model架构
Generator of conditional-DCGAN
输入feature (256+100维) |
→ 通过fc [input = 356, output = (64 × 4 × 4 × 8)] |
→ reshape成[4, 4, 128] |
→ batch normalization(所有batch normalization的epsilon = 1e-5, momentum = 0.9) |
→ relu activation |
→ 通过4层deconv layer (kernel size = 5 × 5, stride = 2, filters依序为[256, 128, 64, 3]) |
→ 每通过一层deconv都经过batch normalization和relu再传到下一层 |
Discriminator of conditional-DCGAN
两个feature: |
image 维度= (64, 64, 3),分成三类:real(符合文字叙述的图)、wrong(不符合文字叙述的图)、fake(G 对应文字产生的图)。 |
text 维度= 256。 |
图片经过4层convolution layer(kernel size = 5 × 5, stride = 2, filters各自为[64, 128,256, 512] ) |
→每一层都经过leaky relu (max(x, 0.2 x)) |
→后三层的convolution layer通过leaky relu前都会经过batch normalization (这部分的参数设定与generator中相同) |
5.4.3 model parameter
参数 | 值 |
---|---|
learning_rate | 2e-4(decay) |
loss fn | mse |
epoch | 200 |
batch_size | 64 |
5.5 Wasserstein GAN
在WGAN 原始论文中提到:因为WGAN 的训练过程较不稳定,不太适合使用就有动量的优化器,可能会导致loss 增加或是产生的sample 变差,因此可用 RMSProp 取代Adam,而此次我也会针对这一点进行验证。
5.5.1 Dataset
同 DCGAN
5.5.2 Model架构
更改DCGAN的以下部分:
- 去掉discriminator 输出的sigmoid。
- 去掉 loss function 中的 log。
- 在discriminator 加上weight-clipping,设定为0.01。
5.5.3 model parameter
参数 | 值 |
---|---|
learning_rate | 1e-4(decay) |
loss fn | mse |
epoch | 15 |
batch_size | 64 |
weight-cliping | 0.01 |
6 贡献和创新性
7 结论
MNIST | 如同Adam 论文中的叙述,Adam 默认的参数是这个资料集上最好的优化器设定,然而,当 β1、β2 调小一点时,结果不会差很多。 |
Cifar-10 | Adam 中的 β2 = 0.9。 |
regre | Adam 中的 β1、β2 调小一点(如0.5 和0.9),可使error 下降一些。 |
DCGAN | 使用Adam 时,要把β1 设定的小一点,才能较快随着discriminator 改变的方向转向。 |
WGAN | 使用Adam,动量会造成收敛方向无法即时随着discriminator 改变的方向即时,因此结果会变差,并且变差的情况比DCGAN 严重许多。 |
8 可以改进的地方
可尝试使用更好的降维方法。我在参数对loss 的作图中,使用的降维方法为PCA,PCA 的降维过程中会损失一些空间分布的特性。所以我认为可以试试看其他降维的方法,例如: t-SNE,t-SNE可以保留一些空间的特性,也许可从图中得到更多资讯。从我做出的实验结果去找最佳Adam 参数的规则,设定一套流程来判断Adam 最佳的参数。原本我推测Adam 最佳参数与task 的性质(ex: Image classification)有关,然而Google Net 最佳的参数如果套用到Cifar-10 的model,performance 会变得非常差,所以,从我的实验结果来看,参数的选择应该和task 的性质没有绝对的相关性。后来我想到model 参数量的多寡会影响到整个 loss function 的分布,因为直觉上简单的model 应该鞍点或是局部最小值的数量应该会远小于复杂的model 中鞍点跟局部最小值的数量,所以未来可以尝试看看model 参数量与Adam 最佳参数的关系。除了不同参数在鞍点的表现,也可以尝试看看不同参数在local minimum 的表现。