两类需要调参的参数(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,但是别一看到上升就停,再观察一下,因为有可能只是暂时的现象,这时候停止反而训练会不充分
![](https://img.haomeiwen.com/i810998/3bc6e2bba5a30987..png)
模型类的参数
隐含层单元数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之间
关于我:
linxinzhe,全栈工程师,目前供职于某500强通信企业。人工智能,区块链爱好者。
GitHub:https://github.com/linxinzhe
欢迎留言讨论,也欢迎关注我~
我也会关注你的哦!
网友评论