神经网络调参的一些tips

参考建议

调整超参数思想为控制变量法,并且按照学习率、批处理大小和隐藏层设计的顺序进行。以下是一些建议:

使用一个规模比较小的数据集

一般都会把数据集分为训练集、测试集、验证集三份,训练集和验证集也被称为开发数据集,有的数据集不设验证集,是因为数据量小,通常可以用训练集调整超参数。

如果有验证集,验证集的数据不宜过多,因为数据越多,越需要多次迭代才能看到超参数的效果,所需要的时间就越长,在寻找一组最佳参数阶段,需要比较不同参数下损失变化的曲线和精度的值。

调整学习率

控制其他超参数不变,改变学习率,比如从0.0001开始,顺序选择0.001、0.01、0.005、0.1和0.5,然后比较在不同的学习率下损失函数的曲线增长或减小的幅度,我们可以找到一个区间,也就是在这个区间内,损失函数的波形是稳定下降的,不会发生振荡,则取这个区间最小的值就可以。

调整batch_size

控制其他超参数不变,改变批处理大小,可以依次选择20、50、100、200,然后比较在不同的批处理大小下能使准确率变化最陡的值,准确率变化越陡,证明参数学习收敛越快。

调整隐藏层设计

控制其他超参数不变,改变隐藏层的层数或每层神经元的多少,选择能获得最高准确率的值。

超参数的调整主要还是需要自己做大量的实验,得出较好的“经验”,这样调起来会更得心应手一些~

Author: CinKate
Link: http://renxingkai.github.io/2019/03/20/nntuningparameter/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.