seegongsik
工程数学

梯度 是什么

值上升最快的方向,垂直于等高线,−∇f 是下降,∇f=0 是最优点

想象你站在雾气弥漫的山坡上。眼前一寸也看不见,脚下的坡度却清清楚楚。仅凭这一点,就能知道往哪边走上升得最陡,而这个方向就是梯度。在高度或温度这类每一点都带着一个值的标量场里,它是指向值增长最快方向的箭头。人们往往只读它的方向,可它的长度也有含义:坡越陡,箭头越长。握住这一支箭头,登山路线的设计、热量流动的方向,乃至训练 AI 的梯度下降法,都能用一根线串起来。

在涂了颜色的高度场上拖动探针,无论放在哪里,都会跟着出现一支白色箭头。它指向从那个位置往上最陡的方向,也就是梯度。越靠近右上方的山顶,坡度越平缓,箭头越短;在陡坡上,箭头就长得很长。下方用数字写出它的长度,也就是坡度的大小。所以,这支箭头同时装着“往哪里爬最快”和“有多陡”。在平坦的原野上没有更高处可去,箭头就缩到几乎为 0。

地图上的等高线把同样高度的点连起来,而梯度在任何地方都与它恰好成直角。原因很简单:沿着等高线走,高度不变,上升量为 0,所以上升最快的方向只能正面横穿这条线。图中是一个顶点在原点的圆丘,所以等高线画成了同心圆。移动探针来检验,金色箭头所示的梯度与蓝线所示的等高线切线在任何地方都保持 90 度。这张图里的箭头为了只显示方向而固定了长度,但真正的梯度,在等高线越密集的地方,也就是坡越陡的地方,就越长。

梯度说到底也是向量,可以分解成水平分量和竖直分量。水平分量是向东走时值上升得有多快 (∂f/∂x),竖直分量是向北走时上升得有多快 (∂f/∂y)。这两个就是偏导数:只留下一个方向,把其余的暂时固定后量出的斜率。拖动探针,绿色的向东分量和橙色的向北分量合成白色的梯度箭头,下方的式子用同样的颜色写出两个分量的值。在“向量就是一个移动”里,把向量读成“几个 î 加几个 ĵ”的那种组装,在这里同样适用。

既然梯度指向上坡,它的反方向 (−∇f) 就是下降最快的路。放下一个球,它每一刻都从所在位置朝最陡的下坡方向挪一步,最后停在谷底。图中的地形有两个山谷,把金色的球拖到不同地方,每个都会滚进离起点较近的山谷,白线标出路径,小圆圈标出停下的位置。这就是梯度下降法。训练 AI 模型时也一样,在误差这片地形上沿着 −∇(误差) 一步步往下走,寻找误差最小的山谷。它用与在山上滚球完全相同的原理,调整着数十亿个数。

有些地方梯度会变成 0 而消失:山顶、谷底,还有鞍点。在这些地方,既没有往上的方向,也没有往下的方向,所以箭头完全不见了。图中左边是山峰,右边是山谷。拖动探针,找到箭头缩成 0 的地方,那个点会变成大大的金色,并显示“平坦”的标记。这些地方之所以重要,是因为任何把某个量做到最大或最小的问题,最终都变成“找出 ∇f = 0 的点”的问题。最便宜的设计、最坚固的结构、最小的误差,全都是这样。在最优点上,地形总是平的。从下一讲起,我们不再看标量,而转向向量场本身在各点怎样变化。

实际应用梯度 ∇f 是指向标量场中值增长最快方向的向量,它的长度就是坡的陡峭程度。它总与等高线成直角相交,分量 (∂f/∂x, ∂f/∂y) 是沿各轴方向的斜率,即偏导数。反方向的 −∇f 是下降最快的路,因此成了梯度下降法的引擎;∇f = 0 的点是山峰、山谷和鞍点,也就是最优化的答案。在工程中,热量沿温度的 −∇ 流动,力是势的 −∇,机器学习沿损失的 −∇ 进行学习。一个梯度,把物理和 AI 放进了同一个句子。
← 工程数学
如果有帮助,请支持我们