一步一步建立直观
先预测,再点“演示本步”核对右图。每一步都重设到指定情形,随后可以自由修改参数。
01把损失想成脚下的地形
右图采用 ,最低点在 。导数告诉我们在当前位置向右走会使损失增加还是减少,所以更新时沿导数的反方向迈步。步长还乘以学习率;它既不是导数本身,也不是每次必须走固定距离。
02跨过最低点不一定表示失败
把学习率提高后,轨迹可能左右交替。写出误差递推 ,就能看出只要这个倍率的绝对值小于一,交替仍会逐步缩小。图形里的来回摆动需要结合幅度判断,不能一见振荡就断言不收敛。
03过大的更新会放大误差
再提高学习率,误差在两侧反复放大。这里目标函数光滑而且只有一个最低点,算法仍然会失败,说明步长本身是关键条件。高维神经网络的曲率随位置变化,不能把这个玩具函数的稳定区间直接照搬成通用学习率建议。
3.2.1 参数空间里的高度是什么¶
网络参数很多,每一组参数都给一组预测。用损失函数评价预测误差,就可以把参数想象成位置、损失想象成高度。学习过程希望移动到较低的位置;虽然高维地形画不出来,局部变化仍能用导数描述。
对小位移 ,损失的一阶变化约为 。若固定步长大小,这个点积在反梯度方向最小。因此选择 ,预测变化为 。这个理由依赖局部近似,不是对任何大步都有效的保证。
3.2.2 用一个可精确求解的地形检验直觉¶
在 中,梯度为 ,更新后 。损失每步乘以 。现在能精确看见学习率的作用:小步缓慢靠近,较大但合适的步长可能左右摆动着靠近,过大则越走越远。
在交互实验中先选 ,再选 ,最后选 。运行前分别预测序列的符号与绝对值变化;动画给出的应是公式的结果,而不是“训练总会下降”的预设故事。
真实网络的地形更复杂,可能有平坦方向、鞍点和噪声梯度。即使训练损失下降,也不直接保证对新数据有效。因此本节的二次模型用于理解更新机制与步长条件,不能被扩展成所有模型全局收敛的证明。
定义 3.2.1 梯度下降的一维更新
对可微损失 ,给定学习率 ,按 更新参数。学习率控制使用局部斜率的步幅。
命题 3.2.1 二次损失的精确稳定区间
对 ,任意初值的迭代在 时收敛到零;非零初值在 时误差绝对值增长。
证明 · 展开纸笔推导
因为 ,更新式成为 ,从而 。
几何序列趋零当且仅当倍率的绝对值小于一(非零初值)。解 得 。端点 不更新, 对非零初值等幅往返,均不属于该收敛区间。
□
数学表述 3.2.1¶
损失把预测误差压缩为一个标量。梯度指出局部增长最快的方向,向反方向走小步可望减少损失。
。一阶近似给出 ,但它只在步长足够小时可信。
例 3.2.1 把概念用于具体计算
对 ,更新为 。当 时损失不增;若 且 ,严格减小。 时只是来回翻号。
练习 3.2.1¶
,更新后损失?
展开解答与检查
,损失 ,原先为 。
Lean 对照 3.2.1 命题、证明与适用边界
完整证明上述一维二次损失在闭区间步长条件下不增加;没有推广为所有网络的收敛保证。
NeuralNetworks.quadratic_gradient_step
theorem quadratic_gradient_step (x η : ℝ) (h₀ : 0 ≤ η) (h₁ : η ≤ 1) :
(x-η*(2*x))^2 ≤ x^2 := by
have h : (1-2*η)^2 ≤ (1:ℝ) := by nlinarith
have hm := mul_le_mul_of_nonneg_right h (sq_nonneg x)
nlinarith