【笔记】Adam各个参数分析:params, lr=1e-3, betas=(0.9, 0.999), eps=1e-8,weight_decay=0,amsgrad=False

 

 

 

 

 

 

 

 

 

5 数据集和模型

Source code: https://github.com/YiddishKop/ml_src_adam_compare.git

5.1 MNIST

5.1.1 Dataset

数据集样本类型训练集验证集
MNIST灰度图(28*28)600006000

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_relu600
keep_prob0.5
fcn_softmax10

5.1.3 model parameter

参数
learning_rate0.001 (no decay)
loss fncategorical cross entropy
epoch30

5.2 Cifar-10

5.2.1 Dataset

数据集样本类型训练集验证集
Cifar-10RGB彩图(32*32*3)5000010000

5.2.2 NN 架构

形状
input_shape(32,32,3)
cnn_filter(3,3,32)
cnn_filter(3,3,32)
max_pooling(2,2)
keep_prob0.25
cnn_filter(3,3,64)
cnn_filter(3,3,64)
max_pooling(2,2)
keep_prob0.25
flatten
fcn_relu512
fcn_softmax10

5.2.3 model parameter

参数
learning_rate1e-4 (decay)
loss fnmse
epoch200
batch_size256

5.3 回归

5.3.1 Dataset

数据集样本类型训练集验证集
house sales in king county, USAcsv180003600

5.3.2 型号架构

形状
input_shape71
fcn_relu1000
fcn_relu1000
fcn_relu1000
fcn_relu1
keep_prob1

5.3.3 model parameter

参数
learning_rate1e-4 (no decay)
loss fnmse
epoch40
batch_size100

5.4 DCGAN

5.4.1 Dataset

数据集样本类型训练集验证集
Cartoon image Cifar-10RGB彩图180003600

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_rate2e-4(decay)
loss fnmse
epoch200
batch_size64

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_rate1e-4(decay)
loss fnmse
epoch15
batch_size64
weight-cliping0.01

6 贡献和创新性

7 结论

MNIST如同Adam 论文中的叙述,Adam 默认的参数是这个资料集上最好的优化器设定,然而,当 β1、β2 调小一点时,结果不会差很多。
Cifar-10Adam 中的 β2 = 0.9。
regreAdam 中的 β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 的表现。

 

 

 

 

 

 

  • 40
    点赞
  • 88
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值