如何设置学习率

学习率的调整

从梯度下降算法的角度来说,通过选择合适的学习率,可以使梯度下降法得到更好的性能。学习率,即参数到达最优值过程的速度快慢,如Andrew Ng的Stanford公开课程所说,假如你从山峰的最高点根据梯度下降法寻找最优值,当你学习率过大,即下降的快,步子大,那么你很可能会在某一步跨过最优值,当你学习率过小时,每次下降一厘米,这将走到何年何月呀,用术语来说就是,长时间无法收敛。因此,学习率直接决定着学习算法的性能表现。

  • 可以根据数据集的大小来选择合适的学习率,当使用平方误差和作为成本函数时,随着数据量的增多,学习率应该被设置为相应更小的值(从梯度下降算法的原理可以分析得出)。另一种方法就是,选择不受数据集大小影响的成本函数-均值平方差函数。

  • 在不同的迭代中选择不同的学习率,还是用前面下山的例子来解释,当你大概知道最优值离你还挺远时,你肯定不会一步一厘米的去走,你肯定会大跨步走到离最优值不远的地方,然后再用小碎步来慢慢找到最优值。即,在最初的迭代中,学习率可以大一些,快接近时,学习率小一些。问题就出在这里,有人会说,我要是知道了最优值,还有梯度下降算法什么事,说的也对,那么我们是怎么解决的呢,我们在每次迭代后,使用估计的模型的参数来查看误差函数的值,如果相对于上一次迭代,错误率减少了,就可以增大学习率如果相对于上一次迭代,错误率增大了,那么应该重新设置上一轮迭代的值,并且减少学习率到之前的50%。因此,这是一种学习率自适应调节的方法。

  • 一般常用的学习率有0.00001,0.0001,0.001,0.003,0.01,0.03,0.1,0.3,1,3,10

 

深度学习如何设置学习率

学习率是深度学习中的一个重要的超参,如何调整学习率是训练出好模型的关键要素之一。在通过SGD求解问题的极小值时,梯度不能太大,也不能太小。太大容易出现超调现象,即在极值点两端不断发散,或是剧烈震荡,总之随着迭代次数增大loss没有减小的趋势;太小会导致无法快速地找到好的下降的方向,随着迭代次数增大loss基本不变。

因此,我们常常用一些退火的方法调整学习率。学习率调整方法基本上有两种

1. 基于经验的手动调整。 通过尝试不同的固定学习率,如0.1, 0.01, 0.001等,观察迭代次数和loss的变化关系,找到loss下降最快关系对应的学习率。

2. 基于策略的调整。

   2.1 fixed 、exponential、polynomial

   2.2. 自适应动态调整。adadelta、adagrad、ftrl、momentum、rmsprop、sgd

 

posted @ 2018-09-27 17:59  耐烦不急  阅读(8147)  评论(0编辑  收藏  举报