翻译自《 Vector Calculus: Understanding the Gradient

1、简介

梯度对于导数来说是个迷人的词,或者说是函数的变化率。这是个向量(移动方向),有以下特点:

  • 指向函数增长最快的方向
  • 在局部极大值或局部极小值处为0 (因为没有单一的增长方向)

"梯度"这个术语一般用于多个输入和单个输出(标量)的函数。你可以说一条线有一个梯度(即它的斜率),但一般在单变量函数中没必要引入梯度概念,简单地认为是斜率就好。

“梯度”可以指颜色渐变,但我们此处我们用于数学定义,它们的含义是相关联的。

2、梯度的性质

现在我们知道梯度是多变量函数的导数,我们来推导一些性质。

通常,常规的导数告诉我们单变量的变化率,比如说 d F d x \frac{dF}{dx} dxdF告诉我们当 x x x变化时,导致函数 F F F的变化有多少。但是当一个函数有多个变量时,例如 x x x y y y,它将有多个导数:
d F d x \frac{dF}{dx} dxdF代表,当变动 x x x时,函数 F F F的变化; d F d y \frac{dF}{dy} dydF代表,当变动 y y y时,函数 F F F的变化。

我们可以用向量来表示这些变化率,每个导数都有一个分量。因此,一个三变量函数将会有一个由3个分量组成的梯度向量:

  • F ( x ) F(x) F(x)有一个变量和一个导数: d F d x \frac{dF}{dx} dxdF
  • F ( x , y , z ) F(x,y,z) F(x,y,z)有三个变量和三个导数: d F d x , d F d y , d F d z \frac{dF}{dx},\frac{dF}{dy},\frac{dF}{dz} dxdF,dydF,dzdF

多变量函数的梯度具有每个方向的变化率分量。就像常规的导数一样,梯度指向最大增长的方向。

此时,我们有多个方向要考虑,就不再像单变量一样考虑简单的一条轴。如果有两个变量,梯度可以指向二维平面中的任意方向,如果有三个变量,梯度可以指向三维空间任意方向。

3、例子

我非常喜欢举例来加深解释。假设我们有一个神奇的烤箱,上面写着坐标和一个特殊的显示屏:
在这里插入图片描述

我们可以输入任意3个坐标(比如“3,5,2″”),屏幕就会显示出这个点的温度梯度。

微波炉还配有一个方便的时钟。然而,这种时钟是有代价的——微波炉内部的温度在不同地方有很大差异。

我们输入任意坐标,微波就会输出那个位置的梯度。

注意不要混淆坐标梯度,坐标是当前位置 ( x , y , z ) (x,y,z) (x,y,z),而梯度是从当前位置移动的方向,如上下左右。

我们把饼干面团放在烤箱里的任意位置,现在想要尽快将其烤熟,那么梯度能帮助我们。

在任何位置的梯度,都指向函数增长最大的方向。此时,我们的函数测量温度。梯度告诉我们面团移动的方向,让它到达温度更高的地方,让它熟得更快。记住梯度并没有给出坐标,它给出了升高温度的运动方向。

我们从(3,5,2)这个随机点开始,并检查梯度。在本例中,梯度是(3,4,5)。现在,我们实际上不需要向右移动3个单位,向后移动4个单位,向上移动5个单位。梯度只是一个方向,所以我们沿着这个方向走一小段,然后再次检查梯度。

我们得到一个新的点,非常接近上一个点,它有自己的梯度。这个新的梯度是新的最优移动方向。我们重复这个过程:在梯度方向上移动一小段,检查梯度,然后在新的梯度方向上又移动一小段。每次我们沿着梯度移动,都会到达一个温度越来越高的地方。

最后,我们会到达烤箱最热的地方。

4、讨论

在吃饼干之前,我们先来看看梯度。首先,当我们到达烤箱的最热点时,那里的梯度是多少?

这个点的梯度是0。为什么? 一旦你处在最大的位置,这里已经没有最大的增长方向。你走的任何方向都会导致温度下降。这就像站在山顶:你移动的任何方向都是下坡。0梯度告诉你保持原地不动——你处于函数的最大值,不能做得更好了。

但如果有两个相邻的最大值,比如两座山挨着,又该怎么办呢?你可能已经站在一座山的顶端,但旁边还有一座更高的山峰。为了到达最高点,你必须先下山。

在常规(单变量)函数中寻找最大值,意味着我们要找到导数为0的所有位置。常规导数将指向局部最小值/最大值,而全局的最大值/最小值必须从这些候选位置进行测试选出。

5、数学表达

梯度的定义:函数中每个变量的偏导数合成向量。
梯度符号通常用一个倒过来的 Δ \Delta Δ(“delta”)表示(delta表示一个变量的变化,而梯度是所有变量的变化)。
F ( x , y , z ) 的 梯 度 = ∇ F ( x , y , z ) = ( d F d x , d F d y , d F d z ) F(x,y,z)的梯度=\nabla F(x,y,z)=(\frac{dF}{dx},\frac{dF}{dy},\frac{dF}{dz}) F(x,y,z)=F(x,y,z)=(dxdF,dydF,dzdF)

假设 F ( x , y , z ) = x + y 2 + z 3 F(x,y,z)=x+y^2+z^3 F(x,y,z)=x+y2+z3

∇ F ( x , y , z ) = ( d F d x , d F d y , d F d z ) = 1 + 2 y + 3 z 2 \nabla F(x,y,z)=(\frac{dF}{dx},\frac{dF}{dy},\frac{dF}{dz})=1+2y+3z^2 F(x,y,z)=(dxdF,dydF,dzdF)=1+2y+3z2

将当前坐标如 ( 3 , 4 , 5 ) (3,4,5) (3,4,5)代入梯度并得到
( 1 , 2 ( 4 ) , 3 ( 5 ) 2 ) = ( 1 , 8 , 75 ) (1,2(4),3(5)^2)=(1,8,75) (1,2(4),3(5)2)=(1,8,75)

新的向量 ( 1 , 8 , 75 ) (1,8,75) (1,8,75)就是我们为了增加函数值而移动的方向。

梯度法的明显应用是求多元函数的最大/最小值。另一个相关应用是求约束函数的最大值,就不多说了:)

关键是要认识到梯度是导数的泛化。梯度指向增长最快的方向;不断沿着梯度移动,你会达到局部最大值。

6、问题

为什么梯度垂直于等势线?

等势线上的点具有相同能量(或者说 F ( x , y , z ) F(x,y,z) F(x,y,z)的值),简单来说,就像一个圆,代表所有每个点到圆心的距离相同。

梯度表示变化最大的方向。如果它在等势线上有分量,那么能量就会被浪费掉(当它靠近一个具有相同能量的点时)。当梯度垂直于等势点时,它会尽可能地远离等势点(这篇文章解释了为什么梯度是最大的增长方向)。

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐