【说明】:本博客只是向大家推荐一些深度学习学习率设定策略的文章,以及我在keras中实现的相关学习率设置的接口。大家若喜欢可以直接拿去使用。纯学习交流目的,代码地址请看这里。
在大量的实际应用中,深度学习模型表现出了令人满意的效果。但要训练出一个好的模型,却是一件困难的事。近年来,诸多学者致力于研究深度学习模型的训练调优策略,《Neural Networks Tricks of the Trade》一书详细介绍了诸多技巧。如大家所熟悉的,目前NN的训练基本都是基梯度的反响传播,逐步对各个参数进行更新,直到逼近某个极优点。
深度学习模型的调优过程中,一个比较重要的超参就是学习率‘Learning rate’。梯度为参数的更新指明了方向,而学习率影响着更新的幅度大小。一个好的学习率设定不仅能缩短模型训练时间,还能提高模型性能。博客《Setting the learning rate of your neural network》系统介绍了如何给DNN拟定一个合适的学习率策略,建议大家认真学习参考下。早期在训练模型时,我们通常会事先依据经验或是某些策略选择一个合适的学习率,然后在训练的整个过程中使用固定不变的学习率。随着研究的深入,诸如阶梯衰减、指数衰减、循环学习率以及各种基于SGD进行改进的优化算法等各种新奇而有效的策略被提出。所有策略的共同思想基本都是,期望模型训练的前期能够对参数进行较大的调整,以加速训练;后期对参数做小幅度微调,以稳步提升模型性能。总的来说学习率的设置大致可以分为直接改变学习率和通过优化算法间接调整学习率两大类。
1 直接法
就是在训练模型过程中,利用某种函数直接对学习率进行操作变换。常见的有以下几种:
(1)常数法