avatar

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

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

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

θj=θjαΔJ(θ)Δθj\theta_j = \theta_j -\alpha\frac{\Delta J(\theta)}{\Delta\theta_j}

​ }

当学习率设置的过小时,收敛过程如下:

5

​ 当学习率设置的过大时,收敛过程如下:6

由上图可以看出来,当学习率设置的过小时,收敛过程将变得十分缓慢。而当学习率设置的过大时,梯度可能会在最小值附近来回震荡,甚至可能无法收敛
  我们再来看一下学习率对深度学习模型训练的影响:6.1

可以由上图看出,固定学习率时,当到达收敛状态时,会在最优值附近一个较大的区域内摆动;而当随着迭代轮次的增加而减小学习率,会使得在收敛时,在最优值附近一个更小的区域内摆动。(之所以曲线震荡朝向最优值收敛,是因为在每一个mini-batch中都存在噪音)。
  因此,选择一个合适的学习率,对于模型的训练将至关重要。下面来了解一些学习率调整的方法。


2. 学习率的调整

2.1 离散下降(discrete staircase)

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

2.2 指数减缓(exponential decay)

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

α=0.95epoch_numα0\alpha = 0.95^{epoch\_num}\cdot\alpha_0

​ 又或者公式为:α=kepoch_num\alpha = \frac{k}{\sqrt{epoch\_num}}

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

2.3 分数减缓(1/t decay)

​   对于深度学习来说,学习率按照公式 α=α1+decay_rateepoch_num\alpha = \frac{\alpha}{1+decay\_rate*epoch\_num}变化, decay_rate控制减缓幅度。

软饱和与梯度消散

6.3

交叉熵损失函数

通过最大似然估计的原理,我们可以得到,当似然函数最大的时候,似然函数中对应的模型参数是我们求解的最优参数;而在损失函数中,我们认为当损失函数最小的时候,损失函数中对应模型参数是我们求解的最优参数;故我们可以使用负的似然函数作为损失函数,这样我们可以得到Logistic回归的损失函数(交叉熵损失函数)

详见知乎:

https://www.zhihu.com/search?type=content&q=%E4%BA%A4%E5%8F%89%E7%86%B5%E6%8D%9F%E5%A4%B1%E5%87%BD%E6%95%B0

sotfmax BP 推导

https://zhuanlan.zhihu.com/p/25723112

δABδa=δAδaBAδBδaB2\frac{\delta\frac{A}{B}}{\delta a} =\frac{ \frac{\delta A}{\delta a}B -A\frac{\delta B }{\delta a} }{B^2}6.4

6.5

文章作者: Eckle
文章链接: https://wowli-up.github.io/2020/02/17/%E5%AD%A6%E4%B9%A0%E7%8E%87%E8%A1%B0%E5%87%8F/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Eckle的个人网站
打赏
  • 微信
    微信
  • 支付寶
    支付寶

评论