学习率到底应该怎么调?学习率在深度学习中的意义

学习率是深度学习中一个很重要的超参,通过调节学习率可以提高模型的精度,在模型训练的过程中,如果确定数据和代码都没有问题,但是loss不下降,acc也不上升或者为0,这种情况就要考虑学习率。直白来说就是通过调节不同大小的学习率对网络进行测试,这是最直接有效的方式。那么详细来说要怎么调节学习率呢?

对于一些简单的模型,我们可以通过数学推导等方式估算出最佳学习率,但是对于一些复杂模型胡总复杂大量的数据,往往不能通过推到估算学习率,最好的方式便是调节学习率进行观察和估计。

学习率就是上述公式中的a。我们都知道深度学习的模型训练其实就是一个函数fx在不断的通过求导寻找函数最优解的过程,而这个过程可以形象的比喻成人在山顶往山下走的过程,我们要找到一个斜率最高的也就是下降最快的路线作为最优路线,而学习率可以看成我们在最优路线上走的每一步的步伐,如果这个步伐过快,我们很有可能错过最低点,如果过小那么下山的速度会很慢,但是这个有更大的概率走到最低点(最优解)。 

一般的训练策略是开始使用大的学习率然后随着模型的拟合不断调小学习率,使模型达到最优解。但是这不适用于所有情况。如果遇到loss,acc不变的问题,那么最好的方式还是手动去调节学习率观察模型拟合的情况。

关于学习率有一篇

Cyclical Learning Rates for Training Neural Networks

这篇文章是通过实验分析了如果调节学习率。

文章提出:首先设置一个十分小的学习率,在每个epoch之后增大学习率,并记录好每个epoch的loss或者acc,迭代的epoch越多,那被检验的学习率就越多,最后将不同学习率对应的loss或acc进行对比。

上图是论文中的实验结果,最小学习率是0,最大学习率是0.02,在大概0.01的位置,模型一开始就收敛的很好,因此可以把初始学习率选择为0.01。

要注意一点,选择学习的时候,是从小到大,因为当学习率小的时候对loss影响不会很大,并且学习率比上一轮大,可以看做是在原始数据进行更新,

在训练一定epoch之后,都会对学习率进行衰减,从而让模型收敛得更好。学习率衰减有以下三种方式:

在0.005的位置,开始出现了acc的负增长之后并趋于平缓,这个点即可作为max_lr,base_lr通常是设置为max_lr的1/3或1/4,因此0.001可以作为base_lr。

参考:你真的懂学习率了吗 - Welcome to AI World (terrifyzhao.github.io)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SetMaker

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值