10分钟教你深度学习的调参

深度学习的训练方法可参见我之前的文章深度学习的训练,以下则是调参的手法及典型值。

两类需要调参的参数(parameters)

优化类的参数:学习率(learning rates)、mini batch、训练代数(epochs)

模型类的参数:隐含层数(hidden layers)、模型结构的参数(如RNN)

优化类的参数

一、学习率 Learning Rate

一个好的起点是从0.01尝试起可选的几个常用值:

0.01

0.001

0.0001

0.00001

0.000001

判断依据:验证集的误差(validation error)

常用策略:

学习率衰减(learning rate)

如果选用了Adam和Adagrad的作为优化器(optimizer),则他们自带了可自适应的学习率(adaptive learning rate)

二、Mini Batch

可选的常用值:1,2,4,8,16,【32】,64,128,256

推荐32比较常用。32、64、128、256都比较合适

256比较大,一次性计算的多,速度会快,但因为矩阵计算量较大,内存可能超过

小的mini batch size可能因为收敛的抖动比较厉害反而不容易卡在局部最低点但是mini batch也不能太大,反而准确率下降。

三、Training Iterations/Epochs

要选择合适的Epochs,就可以用early stopping的方法:

具体就是观察validation error上升时就early stop,但是别一看到上升就停,再观察一下,因为有可能只是暂时的现象,这时候停止反而训练会不充分

模型类的参数

一、隐含层单元数Hidden Units

解决的问题的模型越复杂则用越多hidden units,但是要适度,因为太大的模型会导致过拟合

可以增加Hidden Units数量直到validation error变差

通常来说3层的隐含层比2层的好,但是4,5,6层再深就没什么明显效果了 ,一个例外情况是CNN

二、RNN的调参

RNN内参数

选择CELL类型,常用LSTM和GRU

stack多少个layer,通常两层

用作RNN模型前端的word embedding层的embedding数量控制在 50-200之间

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180319G1HGHG00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券