学习率是最影响性能的超参数之一,如果我们只能调整一个超参数,那么最好的选择就是它。相比于其它超参数学习率以一种更加复杂的方式控制着模型的有效容量,当学习率最优时,模型的有效容量最大。本文从手动选择学习率到使用预热机制介绍了很多学习率的选择策略。
这篇文章记录了我对以下问题的理解:
- 学习速率是什么?学习速率有什么意义?
- 如何系统地获得良好的学习速率?
- 我们为什么要在训练过程中改变学习速率?
- 当使用预训练模型时,我们该如何解决学习速率的问题?
本文的大部分内容都是以 fast.ai 研究员写的内容 [1], [2], [5] 和 [3] 为基础的。本文是一个更为简洁的版本,通过本文可以快速获取这些文章的主要内容。如果您想了解更多详情,请参阅参考资料。
首先,什么是学习速率?
学习速率是指导我们该如何通过损失函数的梯度调整网络权重的超参数。学习率越低,损失函数的变化速度就越慢。虽然使用低学习率可以确保我们不会错过任何局部极小值,但也意味着我们将花费更长的时间来进行收敛,特别是在被困在高原区域的情况下。
下述公式表示了上面所说的这种关系。
new_weight = existing_weight — learning_rate * gradient
采用小学习速率(顶部)和大学习速率(底部)的梯度下降。来源:Coursera 上吴恩达(Andrew Ng)的机器学习课程。
一般而言,用户可以利用过去的经验(或其他类型的学习资料)直观地设定学习率的最佳值。
因此,想得到最佳学习速率是很难做到的。下图演示了配置学习速率时可能遇到的不同情况。
不同学习速率对收敛的影响(图片来源:cs231n)
此外,学习速率对模型收敛到局部极小值(也就是达到最好的精度)的速度也是有影响的。因此,从正确的方向做出正确的选择意味着我们可以用更短的时间来训练模型。
代码语言:javascript复制 Less training time, lesser money spent on GPU cloud compute.