李宏毅ML-自动调整学习速率

自动调整学习速率

文章目录

  • 自动调整学习速率
    • 1. RMS and Adagrad
    • 2. RMSProp and Adam
    • 3. Learning rate scheduling
    • 3. 总结

1. RMS and Adagrad

在下面有两幅图,如第一幅图所示,随着 iteration 的增加,loss 在不断减少,最后趋近于 0,训练卡住不动了,很多人以为肯定是遇到了 critical point…
其实不然,如第二幅图所示,gradient 还是有起有伏的,并没有完全等于 0,只是在训练过程中,小球在两个峡谷的谷壁之间来回跳动,并没有落到谷底之中…
李宏毅ML-自动调整学习速率_第1张图片
那么下面这张图背后的模型又是怎样训练出来的呢?下面这个模型需要特别的技巧才能将其训练出来。
但是在大多数的模型训练过程中,很多时候 loss 等于 0 但 gradient 还是很大,所以遇到 critical point 的几率还是较小的。

李宏毅ML-自动调整学习速率_第2张图片
假如 critical point 也遇不到了,性能较好的模型依旧很难训练出来。
如下图所示,loss 相当于一个凸函数,要使 loss 逐渐变小最后趋近于 0,相当于在解一个凸优化的问题。
当 learning rate = 1 0 − 2 10^{-2} 102 时,设置得太过大了,以至于直接喷了出去;
当 learning rate = 1 0 − 7 10^{-7} 107 时,设置得太过小了,以至于始终走不到使得 loss 最小的点。
李宏毅ML-自动调整学习速率_第3张图片
因此我们要给每一个不同的未知参数,单独设置学习率。
在坡度比较陡的时候,学习率设置小一点,在坡度比较平缓的时候,学习率设置大一点。
引入的参数 σ \sigma σ 是求 gradient 的 root mean square.
李宏毅ML-自动调整学习速率_第4张图片
李宏毅ML-自动调整学习速率_第5张图片
这也就是 Adagrad 优化算法。
李宏毅ML-自动调整学习速率_第6张图片

2. RMSProp and Adam

刚刚的 error surface 是一个凸函数,梯度是在不断减小的,但如果遇到了如下这样比较复杂的情形时,梯度一会增加一会减小,我们就希望学习率能够动态的自适应。
李宏毅ML-自动调整学习速率_第7张图片
在计算梯度的 RMS 时,多引入了一个超参数 α \alpha α,如果 α \alpha α 比较小,说明当前点的梯度占比多,反之,则说明前一个点的梯度占比较多。
李宏毅ML-自动调整学习速率_第8张图片
这种对梯度的有权重地求 RMS 叫RMSProp.
李宏毅ML-自动调整学习速率_第9张图片
RMSProp + Momentum 相结合起来使用,就变成了 Adam 优化算法。
李宏毅ML-自动调整学习速率_第10张图片
让学习率根据 error surface 的变化而自适应,使用 Adagrad 优化算法后,发现 Loss 不断地走到了最小点。
李宏毅ML-自动调整学习速率_第11张图片

3. Learning rate scheduling

在上面的模型训练过程中,虽然最后训练结果是好的,loss 减少到最小,但在做 optimization 的最后几步,突然喷了出去,是因为小球快滚到谷底了,连续较小的梯度和,使得学习率变得太大,以至于喷了出去。
在这里我们引入学习率调度,随着模型在不断地训练,当越来越接近目的地的时候,我们要减少学习率,以避免出现乱喷现象。
李宏毅ML-自动调整学习速率_第12张图片

3. 总结

为了让 optimization 做得更好,我们由最开始的梯度下降公式,让学习率自适应,引入了 RMS,变成了 Adagrad 优化算法;然后为了应对更复杂的 error surface,引入了 RMSProp,再结合 Momentum,变成了 Adam 优化算法;最后为了应对 last few steps 的乱喷现象,引入了学习率调度,也就变成了如下图中的公式。
李宏毅ML-自动调整学习速率_第13张图片

你可能感兴趣的:(机器学习,深度学习,学习,深度学习)