学习率选择
学习率决定每次沿负梯度方向移动的距离,应在特征缩放后按对数尺度比较。
学习前需要掌握
背景与问题
梯度方向提供局部信息,学习率决定使用多大幅度。相同模型与初始参数,只改变步长,就可能出现缓慢下降、跨谷震荡或损失放大的轨迹。
选择学习率需要区分优化是否稳定与泛化是否更好。某个步长第一步下降最多,不代表在固定预算下验证结果一定最佳。
概念定义
学习率控制参数更新中梯度项的系数。它与损失尺度、批次大小、预处理和优化器有关,数值脱离这些条件就很难比较。
固定步长、预热和衰减是不同策略;自适应优化器也仍存在全局学习率等设置,不能因此认为不再需要观察训练行为。
直观理解
沿正确下坡方向迈步,太小会走得慢,太大可能跨到另一边。跨过谷底也不必然失败:关键是误差是否持续缩小,以及整个过程是否满足目标与预算。
同一起点的一步更新已经可能反向放大误差
构造 J(w)=(w−3)²,起点 -4,梯度为 -14,初始损失 49。学习率 0.1 更新到 -2.6,损失 31.36;0.8 更新到 7.2,虽然跨过最低点,损失仍减为 17.64;1.1 更新到 11.4,损失增为 70.56。
这是单步、单变量构造例,不是网络选型实验。它说明应观察轨迹与稳定性,而不是只用“参数是否跨过最优点”判断好坏;真实选择还需同预算验证。
核心原理
通常先按数量级搜索候选,再在有希望的区间细化。比较时固定数据边界、初始化、训练预算和其他关键设置,避免把不同条件造成的差异归给学习率。
训练曲线用于观察有限性、震荡和优化速度,验证集用于比较所选设置的泛化表现。测试集不应成为反复调步长的反馈来源。
目标函数的曲率影响稳定步长。对某个二次函数推导的临界值,不能推广到所有网络;换损失归约、特征尺度或优化器后也要重新检查。
遇到非有限值应排查输入、梯度和数值稳定性,而不是仅仅增加轮数。记录候选失败同样重要,不能只保留最后一次幸运运行。
数学表达
梯度更新
α 控制一步移动距离。
变量含义
α学习率。∇J当前参数处损失上升最快方向。
计算步骤
- 1先缩放数值特征。
- 2选择对数间隔候选值。
- 3固定其他条件训练。
- 4记录每轮训练/验证损失。
代码对应位置
示例 1在相同初值上核对三种步长的第一步:把方向、步长与损失变化直接算出来。
变量解释
| 变量 | 含义 |
|---|---|
α | 学习率。 |
∇J | 当前参数处损失上升最快方向。 |
交互演示
学习率如何改变梯度下降
在确定性目标函数 上,从 出发。移动滑动条会重新运行全部迭代并实时绘制损失曲线。
当前步长能快速降低损失且没有明显震荡。
| 学习率 | 迭代次数 | 最终损失 | 状态 |
|---|---|---|---|
| 0.005 | 35 | 2.425e+1 | 下降缓慢 |
| 0.1 | 35 | 8.063e-6 | 快速稳定收敛 |
| 0.8 | 35 | 1.000e-8 | 发生震荡 |
| 1.05 | 35 | 3.870e+4 | 可能发散 |
滑动条改变什么
它改变更新式中的 。每次拖动都会从相同初始参数重新计算,因而曲线差异只来自学习率。
曲线为何变化
梯度为 。离最低点越远梯度越大;若学习率也很大,一步就可能跨过最低点。
与真实训练的关系
真实模型有更多参数和更复杂损失,但仍遵循“梯度给方向、学习率给步长”。合适范围要在训练曲线与验证集上确定。
计算与实现步骤
- 先缩放数值特征。
- 选择对数间隔候选值。
- 固定其他条件训练。
- 记录每轮训练/验证损失。
- 识别发散、震荡、过慢与平稳区间。
- 用验证而非测试选择。
代码实现
示例 1
在相同初值上核对三种步长的第一步
example_01.py用途:把方向、步长与损失变化直接算出来。
for rate in [0.1, 0.8, 1.1]:
w = -4.0
gradient = 2 * (w - 3)
w -= rate * gradient
print(f"rate={rate:.1f} w={w:.1f} loss={(w-3)**2:.2f}")代码解析
解析始终位于完整代码下方,并按实际代码段逐项对应。
输入数据与任务
把方向、步长与损失变化直接算出来。
loss- 当前预测与目标之间的损失值。
gradient- 损失对参数的局部变化率。
w- 模型权重或当前待优化参数。
Step 1 · 1–5 行
计算损失对参数的梯度,对应数学表达中的 ∇J;梯度只给出局部变化方向。
for rate in [0.1, 0.8, 1.1]:
w = -4.0
gradient = 2 * (w - 3)
w -= rate * gradient
print(f"rate={rate:.1f} w={w:.1f} loss={(w-3)**2:.2f}")代码与数学原理
参数更新由当前梯度与学习率共同决定。
平方误差代码对应均方损失。
预期输出或运行结果
rate=0.1 w=-2.6 loss=31.36 rate=0.8 w=7.2 loss=17.64 rate=1.1 w=11.4 loss=70.56
常见错误 · 3 条
- 特征未缩放就比较学习率
- 只跑固定轮数不看曲线
- 用测试集挑 α
实际应用
- 线性回归梯度下降
- 神经网络优化
常见错误
- 特征未缩放就比较学习率
- 只跑固定轮数不看曲线
- 用测试集挑 α