梯度是一维微积分导数下的一种高维形式。在开始之前,让我们花一点时间回顾一下一维函数的导数,以便我们进行类比。当我们讨论导数时,我们讨论的是变化率,或者说函数切线的斜率。对于点x,函数在这一点上的导数告诉我们它在这一点上增加或减少的速度有多快。
我们通常把这个变化率描绘成在该点处切线的斜率,所以我们可以把导数看作是一个函数,这个函数会给出在该点的斜率
当您将书架固定到墙上之前,在书架上设置一个水平仪,这样就可以测量书架与水平方向的偏差,也就是它在垂直方向上的变化率,现在想象一下在上面的图上画一条水平线,并在这个点上画了一条切线,里面的小气泡会向右上升,表示斜率为正,或导数为正。
对于单变量函数而言,导数是非常重要的数学工具,如果有一种更好的方法可以将它们推广到含两个或更多变量的实函数中,那就太好了。为了更加简单直观,我们在这里只讨论二元实函数,它可以描绘成平面上的曲面(就像一维微积分的图形可以描绘成一条曲线)。
将单变量函数的图想象为山的山脊,你正在沿山脊徒步攀登。
当你到达水平轴上的某个点时,你可以把水平面放在与山脊相切的地方,我们会很容易地理解这一点,因为你只能沿着山脊的一个方向走。
与二维的情况相比,现在你不是沿着山脊行走,而是穿过一个丘陵山谷。
如果你站在一个特定的点上,我问你斜率是多少?你很可能会放下你的水平仪来测量,这看起来就像在一维情况下,我们可以用水平仪把点转换成斜率。然而,测量表面上的斜率并不是一个单一的方向,而是无限多个方向!不管你站在那个点的时候朝哪个方向转弯,你都可以放下你的水平仪并进行读数,从而给出那个点的斜率值。要知道这些斜坡不一定是相同,我们假设在山上有一个徒步路径网络,这些路径在某些点上纵横交错
如果你正站在图中的十字路口,根据你所处的位置,你会得到完全不同的坡度读数(例如,前后的坡度比左右的坡度增加得快得多)。
记住,我们的最终目标是对二维函数求导,所以我们需要一些方法来给不同的点指定斜率。上面的例子清楚地表明,这并不像一维情况那么简单,因为曲面可以从一个点向不同方向倾斜,且每个方向倾斜的角度不同。所以如果给定一个点并指定一个方向,就很容易确定该方向上的导数
因为你可以从一个点开始向许多方向移动,我们要把所有的各个方向上的斜率收集在一起(用数学术语来说,方向导数),并用一个数学对象连接到每个点,存储每个方向的斜率。这似乎是对高维函数的单变量导数的一个很好的推广,因为一维版本也存储了各个方向的斜率:只是碰巧它只有一个方向!
给定一个二维函数f,我们将把它的导数(或所有方向导数的集合)表示为f的梯度
这个导数“存储”了所有的方向导数,意思是,给定了梯度和方向,我们就可以立即得到函数在那个方向上的斜率。用数学术语表示;
这让我们对梯度本身可能是什么类型有了一些了解(注意,直到现在我们真的不知道;从我们给出的定义来看,它很可能是一个包含各种可能的方向导数的巨大列表!)既然给定了一个向量和梯度,我们想要得到斜率(标量),那么梯度必须是某个对象,当它与一个向量结合时,就可以得到一个标量。如果梯度也是一个向量,我们就得到了我们所需要的,因为两个向量的点积是一个标量!这给了我们一个新的更精确的梯度定义