概述
准确性往往是判断模型是否能快速收敛并达到高准确度的最大杠杆。
深入探讨
学习率控制优化器每次更新采取的步长。太高,训练出现偏差;太低了,它会爬行或被卡住。调度会随着时间的推移调整该值。一个常见的现代方法是预热,然后衰减:从接近零开始,在最初的几百或几千步中逐渐增加(这么早,嘈杂的梯度不会炸毁不稳定的权重),然后逐渐减少。流行的衰减形状包括阶梯衰减(在设定的时期下降一个因子)、指数衰减和余弦退火,它平滑地遵循半余弦曲线下降到接近零。具有线性预热的余弦计划现在是训练大型语言模型的标准,而循环和单周期策略可以加速较小模型的训练。
现实世界的实施
预训练 Transformer 语言模型时使用线性预热加上余弦衰减。
在 ImageNet 上训练图像分类器时,步骤衰减会在第 30、60 和 90 时期将学习率降低 10 倍。
fast.ai 中的单周期策略可以在很少的 epoch 内训练模型达到良好的准确性。
余弦退火和热重启可以周期性地逃避急剧损失最小值并提高泛化能力。
学习率调度的未来
随着训练运行变得越来越昂贵,时间表正在与优化器和批量大小共同设计,研究人员研究缩放法则以在训练前预测最佳峰值速率。无需提前选择衰减曲线的无计划优化器正在获得关注,而响应生命损失曲线的自适应、反馈驱动的计划可能会减少仍然主导大规模训练的试错。
付诸实践
为什么这很重要
- 成本与预算. 多年来,架构决策决定着性能和运营成本。
- 更清晰的判决. 技术教育帮助团队选择正确的堆栈,而不仅仅是最新的堆栈。
- 质量控制. 更好的工程选择可以减少生产中的可靠性事故。
留意
- 优化一项基准测试可以隐藏更广泛的系统弱点。
- 基础设施和维护成本常常被低估。
- 随着系统变得更加复杂,安全性和可观察性差距可能会扩大。
后续步骤
- 在实施之前定义延迟、质量和成本目标。
- 在实际负载和数据条件下进行基准测试。
- 仪器监控错误、漂移和用户影响。
- 在扩展之前准备回滚和事件响应路径。
不断探索
常见问题
什么是学习率调度?
学习率计划会在训练期间改变步长,而不是保持固定。正确执行通常是模型能否快速收敛并达到高精度的最大杠杆。
学习率计划中“预热”阶段的目的是什么?
预热从接近零开始并增加速率,以便不稳定的早期更新不会在优化器统计数据稳定之前破坏模型的稳定性。
哪个时间表平滑地遵循半余弦曲线下降到最低速率?
余弦退火沿着半余弦形状衰减学习率,在早期提供大步长,在接近结束时提供小步长。
如果学习率设置得太高会发生什么?
过高的比率会导致超调,因此损失可能会反弹或爆炸,而不是稳定下来。
步长衰减对学习率有何影响?
阶梯衰减会在选定的里程碑处将速率乘以一个因子(例如 0.1),从而创建阶梯模式。
What does a warm restart do to a learning-rate schedule?
Warm restarts begin another learning-rate cycle at a higher value; they do not guarantee escape from a particular loss-landscape feature.