学习率(Learning rate)的理解以及如何调整学习率


1. 什么是学习率(Learning rate)?

  学习率(Learning rate)作为监督学习以及深度学习中重要的超参,其决定着目标函数能否收敛到局部最小值以及何时收敛到最小值。合适的学习率能够使目标函数在合适的时间内收敛到局部最小值。
  这里以梯度下降为例,来观察一下不同的学习率对代价函数的收敛过程的影响(这里以代价函数为凸函数为例):
  回顾一下梯度下降的代码:
  repeat{
     $ \theta_j = \theta_j - \alpha \frac{\Delta J(\theta)}{\Delta \theta_j} $
  }
  当学习率设置的过小时,收敛过程如下:

![](https://images2018.cnblogs.com/blog/1238724/201808/1238724-20180813212555532-988749685.jpg)
  当学习率设置的**过大**时,收敛过程如下:
![](https://images2018.cnblogs.com/blog/1238724/201808/1238724-20180813212651250-947399776.jpg)
  由上图可以看出来,当学习率设置的**过小**时,**收敛过程将变得十分缓慢**。而当学习率设置的**过大**时,**梯度可能会在最小值附近来回震荡,甚至可能无法收敛**。   我们再来看一下学习率对**深度学习**模型训练的影响:
![](https://images2018.cnblogs.com/blog/1238724/201808/1238724-20180818103751015-1833352554.jpg)
  可以由上图看出,固定学习率时,当到达收敛状态时,会在最优值附近一个**较大的区域内**摆动;而当随着迭代轮次的增加而减小学习率,会使得在收敛时,在最优值附近一个**更小的区域**内摆动。(之所以曲线震荡朝向最优值收敛,是因为在每一个mini-batch中都存在噪音)。   因此,选择一个合适的学习率,对于模型的训练将至关重要。下面来了解一些学习率调整的方法。

2. 学习率的调整

2.1 离散下降(discrete staircase)

  对于深度学习来说,每 $ t $ 轮学习,学习率减半。对于监督学习来说,初始设置一个较大的学习率,然后随着迭代次数的增加,减小学习率。

2.2 指数减缓(exponential decay)

  对于深度学习来说,学习率按训练轮数增长指数差值递减。例如:

\[\alpha = 0.95^{epoch\_num} \cdot \alpha_0 \]

  又或者公式为:

\[\alpha = \frac{k}{\sqrt {epoch\_num}} \]

  其中epoch_num为当前epoch的迭代轮数。不过第二种方法会引入另一个超参 $ k $ 。

2.3 分数减缓(1/t decay)

  对于深度学习来说,学习率按照公式 $ \alpha = \frac{\alpha}{1+ {decay _ rate} * {epoch _ num}} $ 变化, decay_rate控制减缓幅度。


引用及参考:
[1] https://mooc.study.163.com/learn/2001281003?tid=2001391036#/learn/content?type=detail&id=2001702125&cid=2001693086
[2] https://www.cnblogs.com/keguo/p/6244253.html
[3] https://blog.csdn.net/jningwei/article/details/79243800
[4] https://baijiahao.baidu.com/s?id=1591531217345055627&wfr=spider&for=pc

写在最后:本文参考以上资料进行整合与总结,属于原创,文章中可能出现理解不当的地方,若有所见解或异议可在下方评论,谢谢!
若需转载请注明https://www.cnblogs.com/lliuye/p/9471231.html


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM