寻找合适的学习率(learning rate)
学习率是一个非常非常重要的超参数,这个参数呢,面对不同规模、不同batch-size、不同优化方式、不同数据集,其最合适的值都是不确定的,我们无法光凭经验来准确地确定lr
的值,我们唯一可以做的,就是在训练中不断寻找最合适当前状态的学习率。比如下图利用fastai中的lr_find()函数寻找合适的学习率,根据下方的学习率-损失曲线得到此时合适的学习率为1e-2
。
推荐一篇fastai首席设计师 「Sylvain Gugger」 的一篇博客:How Do You Find A Good Learning Rate[1]
以及相关的论文Cyclical Learning Rates for Training Neural Networks[2]。
learning-rate与batch-size的关系
一般来说,越大的batch-size使用越大的学习率。原理很简单,越大的batch-size
意味着我们学习的时候,收敛方向的confidence
越大,我们前进的方向更加坚定,而小的batch-size
则显得比较杂乱,毫无规律性,因为相比批次大的时候,批次小的情况下无法照顾到更多的情况,所以需要小的学习率来保证不至于出错。可以看下图损失Loss
与学习率Lr
的关系: