K 的一隅

AI 神经网络基础

损失为什么会下降:从一条曲线看懂梯度与学习率

把一个参数放到横轴、把损失放到纵轴。你会看到梯度下降并不是“参数越大越好”,而是每次沿着下坡方向走一点。

5 分钟阅读 更新于 2026-07-27
本文目录

先把神经网络里数不清的权重暂时忘掉,只保留一个参数 (x)。假设它每取一个值,模型都会得到一个损失:

L(x) = (x − 2)2 + 0.5

这不是在说真实网络只有一个参数,而是把“参数怎样影响结果”压成一条可看见的曲线:横轴是参数 (x),纵轴是损失 (L)。站在曲线上任意一点,问题变成:下一小步朝左还是朝右?

下坡实验

站在曲线一点,决定下一步怎么走

按 Enter 或“单步下降”,用当前斜率走一步。红线是当前位置的切线,不是整条损失曲线。

红线是当前位置的切线。单步下降会先标出 Δx,再落到新位置。

损失曲线、当前位置和切线横轴是参数 x,纵轴是损失。当前位置沿梯度反方向更新。最低点 x=2参数 x损失
当前位置 x = -1.500损失 = 12.750梯度 = -7.000

先有标签,才知道什么叫“错了”

训练样本通常带着标签(label,正确答案)。模型先用现有权重做一次预测,再把预测和标签交给损失函数(loss function,衡量错误的规则)。损失小,代表预测更接近标签;损失大,代表这组参数还不合适。

这里的曲线把所有前向计算、预测和比较后的结果浓缩成一个数:高度。山越高,损失越大;谷底更低,损失更小。

切线在回答一个局部问题

当前位置的梯度(gradient,斜率)是:

dL/dx = 2(x − 2)

它只描述当前点附近的变化趋势。若梯度为负,例如人在 (x=-1) 附近,向右走一点,曲线会下降;若梯度为正,则要向左走一点才会下降。

因此,“(x) 增大,损失下降”只在当前负斜率区间成立。跨过谷底后,继续增大 (x),损失反而会上升。梯度下降不是死记“往右”,而是每一次重新看当前位置的坡度,再沿梯度反方向走。

学习率决定这一脚迈多大

实验里每次单步使用的规则是:

xnext = x − η∇L(x)

其中 (η) 是学习率(learning rate,步长)。学习率太小,知道下坡却走得很慢;学习率太大,可能一脚跨过谷底,在两侧反复跳动。拖动滑块后连续点击“单步下降”,观察蓝色轨迹:它不是沿着曲线滑,而是在参数轴上一次次重新计算下一点。

这也解释了为什么训练不是“直接找到答案”。模型在高维参数空间里没有一张完整地图,只能在当前位置通过梯度获得局部方向。

谷底不总是唯一的终点

这张抛物线只有一个最低点 (x=2)。真实神经网络的损失地形要复杂得多,可能有平坦区域、鞍点,也可能有不够低的局部最低点(local minimum,附近都下不去但并非全局最低)。

所以梯度下降追求的是不断降低损失,而不是保证每一步都找到全局最优。批量数据带来的噪声、合适的学习率和优化器,会让训练在巨大参数空间中更实用地前进。

一次更新到底改了什么

假设当前参数是 x = -1.5,它的梯度为 2(x − 2) = −7。学习率取 0.2 时:

xnew = −1.5 − 0.2 × (−7) = −0.1

这里出现两个负号。梯度为负,说明向右走损失会下降;更新式再减去负梯度,所以参数实际增大。若当前位置换到最低点右侧,梯度变成正数,更新后参数反而减小。梯度下降从来不是“让参数一直增大”,而是让参数沿负梯度方向移动。

实验中的红色切线只描述当前点附近。单步之后,旧切线不再代表新位置,必须重新计算梯度。这也是训练为什么反复执行“计算梯度—更新参数”,而不能第一次求出方向后一直走到底。

学习率太大和太小会怎样

把学习率调小,点会稳定靠近最低处,但每一步移动有限,需要更多更新。把学习率调大,某一步可能直接跨过最低点;下一步梯度改变符号,点又向反方向跳。如果跨度持续过大,损失可能越走越高,这叫发散(divergence,训练无法收敛)。

所以学习率不是“允许误差的阈值”,而是把梯度转换为参数改变量的比例。梯度提供方向与坡度,学习率决定实际步长。实际训练还会使用学习率预热、逐渐衰减或 Adam 等优化方法,但它们没有改变这一基本关系:先算出梯度方向,再按学习率决定这一步究竟迈多远。

二维图省略了什么

图中只有一个横轴参数,所以梯度只是一个数。若模型有两个参数 xy,损失是一张曲面,梯度包含两个分量:

∇L = [∂L/∂x, ∂L/∂y]

第一个分量描述沿 x 方向的变化率,第二个描述沿 y 方向的变化率。真实神经网络可能有数十亿个参数,梯度也就有数十亿个分量。我们无法把它画出来,但更新规则仍然相同:每个参数都减去“学习率 × 自己的梯度”。

下一章会回到真正的多层网络:输出层发现自己预测错了以后,误差信号怎样沿着连接一层层分回去。