学习率(Learning Rate)

控制每一步迈多大的参数——导数告诉你方向,学习率决定步幅。太大会跨过谷底来回震荡,太小会像蜗牛一样爬行。训练初期用大步快速接近目标,后期逐渐缩小(学习率衰减)做精细调整。

核心公式

📖 符号说明

符号含义说明取值范围
当前位置这一步的参数值
新位置更新后的参数值
学习率控制步幅大小的参数(0, 1)
导数/坡度损失函数在当前位置的斜率

前置知识

一句话理解

学习率就是"每一步走多远"——方向找到了,步幅还得选对。

更新公式

xnew=xoldαL(xold)x_{\text{new}} = x_{\text{old}} - \alpha \cdot L'(x_{\text{old}})xnew=xoldαL(xold)

大白话翻译:新位置 = 旧位置 - 步长 × 坡度α\alphaα(读作"alpha")就是学习率。

太大 vs 太小

L(x)=(x3)2L(x)=(x-3)^2L(x)=(x3)2x0=0x_0=0x0=0 出发:

  • α=0.1\alpha=0.1α=0.1(合适):xxx 一步步靠近 3,损失从 9 稳步减小——稳扎稳打走到谷底
  • α=2\alpha=2α=2(太大):第一步 x1=12x_1=12x1=12,直接冲过目标;第二步弹到 24-2424——来回震荡,越跳越远
  • α=0.001\alpha=0.001α=0.001(太小):第一步 x1=0.006x_1=0.006x1=0.006,几乎没动——蜗牛爬行

学习率衰减

训练初期用大学习率快速接近目标,后期逐渐缩小避免在谷底附近来回震荡——就像练投篮,刚开始大幅调整姿势,接近标准后微调。

常见策略:每隔固定步数将学习率乘以一个衰减因子(如 0.5)。例如初始 α=0.1\alpha=0.1α=0.1,每 1000 步衰减一半:0.10.050.0250.01250.1 \to 0.05 \to 0.025 \to 0.01250.10.050.0250.0125

为什么不一开始就用小学习率?因为太慢——训练时间会成倍增加。

这在机器学习中用来做什么

学习率是训练中最重要的超参数之一——很多"模型不收敛"的问题,第一件事就是检查学习率。在 PyTorch 中,学习率衰减通过 scheduler 实现。

引用本概念的文章