这个 梯度(gradient) 是导数的一个花哨说法,或者说是函数的变化率。它是一个向量(移动的方向),
- 指向函数增长最快的方向(为什么的直觉)
- 在局部最大值或局部最小值处为零(因为没有单一的增长方向)
术语“梯度(gradient)”通常用于具有多个输入和单个输出(标量场)的函数。是的,你可以说一条直线有梯度(它的斜率),但将“梯度”用于单变量函数会造成不必要的混淆。保持简单。
“梯度”可以指颜色的逐渐变化,但如果你同意的话,我们将坚持数学定义。你会发现这些含义是相关的。
梯度(Gradient)的性质
既然我们知道梯度是多变量函数的导数,让我们推导一些性质。
普通的、简单的导数给出了单个变量(通常是 $x$)的变化率。例如,$\frac{dF}{dx}$ 告诉我们函数 $F$ 随 $x$ 的变化而变化的程度。但如果一个函数有多个变量,比如 $x$ 和 $y$,它就会有多个导数:当我们“扰动” $x$($\frac{dF}{dx}$)和扰动 $y$($\frac{dF}{dy}$)时,函数的值会发生变化。
我们可以将这些多个变化率表示在一个向量中,每个导数对应一个分量。因此,一个接受3个变量的函数将有一个包含3个分量的梯度:
- $F(x)$ 有一个变量和一个导数:$\frac{dF}{dx}$
- $F(x,y,z)$ 有三个变量和三个导数:$\frac{dF}{dx}, \frac{dF}{dy}, \frac{dF}{dz}$
多变量函数的梯度在每个方向上都有一个分量。
就像普通导数一样,梯度指向增长最快的方向(原因如下: 我们在每个方向上权衡运动,以最大化收益)。
然而,现在我们有了多个要考虑的方向($x$、$y$ 和 $z$),增长最快的方向不再像单变量函数那样简单地是沿着 $x$ 轴的“向前”或“向后”。
如果我们有两个变量,那么我们的2分量梯度可以指定平面上的任何方向。同样,有3个变量时,梯度可以指定在3D空间中移动以增加函数值的任何方向。
一个扭曲的例子
我非常喜欢用例子来巩固解释。假设我们有一个神奇的烤箱,上面写着坐标,还有一个特殊的显示屏:

我们可以输入任意三个坐标(例如“3,5,2”),显示屏会向我们展示 梯度(gradient) 该点的温度。
微波炉还带有一个方便的时钟。不幸的是,这个时钟是有代价的——微波炉内部的温度因位置不同而剧烈变化。但这是值得的:我们真的很想要那个时钟。
到目前为止,跟上我了吗?我们输入任意坐标,微波炉会输出该位置的梯度。
小心不要混淆坐标和梯度。 坐标是当前位置是在 $x,y,z$ 轴上测量的。 梯度(Gradient)是移动方向 从我们当前位置出发的方向,例如向上、向下、向左或向右移动。
现在假设我们需要精神帮助,把Pillsbury Dough Boy放进烤箱,因为我们认为他味道不错。他是用饼干面团做的,对吧?我们把他放在烤箱内的随机位置,目标是尽快把他烤熟。梯度可以帮忙!
任何位置的梯度都指向 最大增加 函数变化最快的方向。在这个例子中,我们的函数测量温度。所以梯度告诉我们往哪个方向移动面团小子可以让他到达温度更高的位置,从而更快地烤熟他。记住,梯度 不 并不会告诉我们目的地的坐标;它给我们的是 移动方向 为了升高温度而需要移动的方向。
因此,我们从(3,5,2)这样的随机点出发,检查梯度。在这个例子中,那里的梯度是(3,4,5)。实际上,我们并不会真的向右移动3个单位,向后移动4个单位,向上移动5个单位。梯度只是一个方向,所以我们会 沿着这个轨迹移动一小步沿着这个方向移动一小步,然后再次检查梯度。
我们到达一个非常接近原始点的新点,该点有它自己的梯度。这个新梯度是接下来要遵循的新最佳方向。我们会重复这个过程:在梯度方向上移动一小步,检查梯度,再在新梯度方向上移动一小步。每次我们沿着梯度方向移动,都会到达越来越温暖的位置。
最终,我们会到达烤箱最热的位置,并留在那里,准备享受新鲜出炉的饼干。
别吃那块饼干!
但在你吃那些饼干之前,让我们对梯度做一些观察。这更有趣,对吧?
首先,当我们到达烤箱最热的位置时,那里的梯度是什么?
零。没有。什么也没有。为什么?嗯,一旦你处于最大值位置,就没有 没有最大增加的方向任何方向移动都会导致温度下降。 减小 在温度上。就像站在山顶:无论朝哪个方向移动都是下坡。梯度为零意味着你应原地不动——你处于函数的最大值,无法做得更好了。
但如果有两个相邻的最大值,就像两座相邻的山峰呢?你可能在一座山的山顶,但旁边还有更高的山峰。为了到达最高点,你必须先下山。
啊,现在我们正深入梯度不那么美好的腹地。在常规(单变量)函数中寻找最大值意味着我们要找出所有导数为零的地方:没有最大增加的方向。如果你还记得,常规导数会指向 局部 最小值和最大值,并且必须从这些候选位置中测试出绝对最大值/最小值。
同样的原理适用于梯度,它是导数(Derivative)的推广。你必须找出多个梯度为零的位置——你需要测试这些点,看看哪一个才是全局最大值。同样,每座山顶的梯度都为零——你需要比较每个点的高度,看哪个更高。现在我们已经厘清了这一点,去享用你的饼干吧。
数学
我们知道梯度的定义:函数对每个变量的导数。梯度符号通常是一个倒置的三角,称为“del”(这有点道理——delta 表示一个变量的变化,而梯度是所有变量的变化)。以上面的三个导数为例
![]()
注意梯度的 x 分量是关于 $x$ 的偏导数($y$ 和 $z$ 类似)。对于单变量函数,根本没有 $y$ 分量,因此梯度退化为导数。
另外,注意梯度是一个函数:它接受 3 个坐标作为位置,并返回 3 个坐标作为方向。
![]()
![]()
如果我们想找到使函数增长最快的移动方向,我们将当前坐标(如 3,4,5)代入梯度得到:
![]()
因此,这个新向量 (1, 8, 75) 就是我们增加函数值所应移动的方向。在这种情况下,我们的 x 分量对函数值贡献不大:偏导数始终是 1。
梯度的明显应用是寻找多变量函数的最大值/最小值。另一个不那么明显但相关的应用是寻找约束函数的最大值:一个函数的 x 和 y 值必须位于某个域内,例如,找出所有限制在一个圆上的点的最大值。解决这个问题需要我的老朋友拉格朗日,但一切都还来得及,一切都还来得及:现在先享受梯度吧。
关键洞察是将梯度视为导数的推广。 梯度(Gradient)指向最大增加的方向;持续沿着梯度(Gradient)移动,你将达到局部最大值。
问题
为什么梯度(Gradient)与等势线垂直?
等势线是指具有相同能量(或 $F(x,y,z)$ 值)的点。在最简单的情况下,圆表示所有与中心等距的点。
梯度表示最大变化的方向。如果它在等势线上有任何分量,那么该能量将被浪费(因为它正在接近一个具有相同能量的点)。当梯度垂直于等势点时,它正在尽可能远离它们(本文 解释了为什么梯度是最大增加的方向——它是最大化圆内各种权衡的方向)。