01月29, 2020

深度学习总结 (四) 学习率设置原则

1. 学习率对训练的影响

为了能够使得梯度下降法有较好的性能,我们需要把学习率的值设定在合适的范围内。太大的学习速率导致学习的不稳定,太小值又导致极长的训练时间。自适应学习速率通过保证稳定训练的前提下,达到了合理的高速率,可以减少训练时间。

2. 学习率的设置

固定学习率的设置:

经验选择:一般情况下倾向于选取较小的学习速率以保证系统的稳定性,学习速率的选取范围在0.01~1e-6之间。

对于不同大小的数据集,调节不同的学习率。根据我们选择的成本函数F()不同,问题会有区别。当平方误差和(Sum of Squared Errors)作为成本函数时, ∂F(ωj) / ∂ωj 会随着训练集数据的增多变得越来越大,因此学习率需要被设定在相应更小的值上。

解决此类问题的一个方法是将学习率λ 乘上1/N,N是训练集中数据量。这样每步更新的公式变成下面的形式:ωj = ωj - (λ/N) * ∂F(ωj) / ∂ωj

解析:固定学习率是根据cost曲线的走向来不断调整学习率,最终获得比较好的初始化。其往往搭配Early Stopping来结束训练

可变的学习率:

  1. 在每次迭代中调节不同的学习率。在每次迭代中去调整学习率的值是另一种很好的学习率自适应方法。此类方法的基本思路是当你离最优值越远,你需要朝最优值移动的就越多,即学习率就应该越大;反之亦反。例如:如果相对于上一次迭代,错误率减少了,就可以增大学习率,以5%的幅度;如果相对于上一次迭代,错误率增大了(意味着跳过了最优值),那么应该重新设置上一轮迭代ωj 的值,并且减少学习率到之前的50%。

  2. 当validation accuracy满足early stopping时,但是我们可以不stop,而是让learning rate减半之后让程序继续跑。下一次validation accuracy又满足no-improvement-in-n规则时,我们同样再将learning rate减半。继续这个过程,直到learning rate变为原来的1/1024再终止程序。

本文链接:http://57km.cc/post/principle learning rate.html

-- EOF --

Comments