直观理解梯度,以及偏导数、方向导数和法向量等

梯度法向量:如何用偏导数刻画曲面的‘垂直方向’? 本文深入探讨了梯度法向量之间的数学联系,揭示了如何通过偏导数精确刻画曲面的垂直方向。从几何意义到工程实践,详细解析了梯度作为法向量的原理及其在计算机图形学中的高效应用,特别是在游戏引擎地形生成中的实际优化技巧。 阅读详情

博客:blog.shinelee.me | 博客园 | CSDN

写在前面

梯度是微积分中的基本概念,也是机器学习解优化问题经常使用的数学工具(梯度下降算法),虽然常说常听常见,但其细节、物理意义以及几何解释还是值得深挖一下,这些不清楚,梯度就成了“熟悉的陌生人”,仅仅“记住就完了”在用时难免会感觉不踏实,为了“用得放心”,本文将尝试直观地回答以下几个问题,

  • 梯度与偏导数的关系?
  • 梯度与方向导数的关系?
  • 为什么说梯度方向是上升最快的方向,负梯度方向为下降最快的方向?
  • 梯度的模有什么物理意义?
  • 等高线图中绘制的梯度为什么垂直于等高线?
  • 全微分与隐函数的梯度有什么关系?
  • 梯度为什么有时又成了法向量?

闲话少说,书归正传。在全篇“作用域”内,假定函数可导。

偏导数

在博文《单变量微分、导数与链式法则 博客园 | CSDN | blog.shinelee.me》中,我们回顾了常见初等函数的导数,概括地说,

导数是一元函数的变化率(斜率)。导数也是函数,是函数的变化率与位置的关系。

如果是多元函数呢?则为偏导数

偏导数是多元函数“退化”成一元函数时的导数,这里“退化”的意思是固定其他变量的值,只保留一个变量,依次保留每个变量,则 N N N元函数有 N N N个偏导数。

以二元函数为例,令 z = f ( x , y ) z=f(x,y) z=f(x,y),绘制在3维坐标系如下图所示,

z = f(x, y)

在分别固定 y y y x x x的取值后得到下图中的黑色曲线——“退化”为一元函数,二维坐标系中的曲线——则偏导数 ∂ z ∂ x \frac{\partial {z}}{\partial {x}} xz ∂ z ∂ y \frac{\partial z}{\partial y} yz分别为曲线的导数(切线斜率)

partial derivative x

partial derivative y

由上可知,一个变量对应一个坐标轴,偏导数为函数在每个位置处沿着自变量坐标轴方向上的导数(切线斜率)

Partial derivative

方向导数

如果是方向不是沿着坐标轴方向,而是任意方向呢?则为方向导数。如下图所示,点 P P P位置处红色箭头方向的方向导数为黑色切线的斜率,来自链接Directional Derivative

Directional Derivative

方向导数为函数在某一个方向上的导数,具体地,定义 x y xy xy平面上一点 ( a , b ) (a, b) (a,b)以及单位向量 u ⃗ = ( cos ⁡ θ , sin ⁡ θ ) \vec u = (\cos \theta ,\sin \theta ) u =(cosθ,sinθ),在曲面 z = f ( x , y ) z=f(x, y) z=f(x,y)上,从点 ( a , b , f ( a , b ) ) (a,b, f(a,b)) (a,b,f(a,b))出发,沿 u ⃗ = ( cos ⁡ θ , sin ⁡ θ ) \vec u = (\cos \theta ,\sin \theta ) u =(cosθ,sinθ)方向走 t t t单位长度后,函数值 z z z F ( t ) = f ( a + t cos ⁡ θ , b + t sin ⁡ θ ) F(t)=f(a+t \cos \theta, b + t \sin \theta) F(t)=f(a+tcosθ,b+tsinθ),则点 ( a , b ) (a,b) (a,b) u ⃗ = ( cos ⁡ θ , sin ⁡ θ ) \vec u = (\cos \theta ,\sin \theta ) u =(cosθ,sinθ)方向的方向导数为:
d d t f ( a + t cos ⁡ θ , b + t sin ⁡ θ ) ∣ t = 0 = lim ⁡ t → 0 f ( a + t cos ⁡ θ , b + t sin ⁡ θ ) − f ( a , b ) t = lim ⁡ t → 0 f ( a + t cos ⁡ θ , b + t sin ⁡ θ ) − f ( a , b + t sin ⁡ θ ) t + lim ⁡ t → 0 f ( a , b + t sin ⁡ θ ) − f ( a , b ) t = ∂ ∂ x f ( a , b ) d x d t + ∂ ∂ y f ( a , b ) d y d t = f x ( a , b ) cos ⁡ θ + f y ( a , b ) sin ⁡ θ = ( f x ( a , b ) , f y ( a , b ) ) ⋅ ( cos ⁡ θ , sin ⁡ θ ) \begin{aligned} &\left.\frac{d}{d t} f(a+t \cos \theta, b+t \sin \theta)\right|_{t=0} \\=& \lim _{t \rightarrow 0} \frac{f(a+t \cos \theta, b+t \sin \theta) - f(a, b)}{t} \\=& \lim _{t \rightarrow 0} \frac{f(a+t \cos \theta, b+t \sin \theta) - f(a, b+t \sin \theta)}{t} + \lim _{t \rightarrow 0} \frac{f(a, b+t \sin \theta) - f(a, b)}{t} \\=& \frac{\partial}{\partial x} f(a, b) \frac{d x}{d t}+\frac{\partial}{\partial y} f(a, b) \frac{d y}{d t} \\=& f_x (a, b) \cos \theta+ f_y (a, b) \sin \theta \\=&\left(f_x (a, b), f_y (a, b)\right) \cdot(\cos \theta, \sin \theta) \end{aligned} =====dtdf(a+tcosθ,b+tsinθ)t=0t0limtf(a+tcosθ,b+tsinθ)f(a,b)t0limtf(a+tcosθ,b+tsinθ)f(a,b+tsinθ)+t0limtf(a,b+tsinθ)f(a,b)xf(a,b)dtdx+yf(a,b)dtdyfx(a,b)cosθ+fy(a,b)sinθ(fx(a,b),fy(a,b))(cosθ,sinθ)
上面推导中使用了链式法则。其中, f x ( a , b ) f_x (a, b) fx(a,b) f y ( a , b ) f_y (a, b) fy(a,b)分别为函数在 ( a , b ) (a, b) (a,b)位置的偏导数。由上面的推导可知:

该位置处,任意方向的方向导数为偏导数的线性组合,系数为该方向的单位向量。当该方向与坐标轴正方向一致时,方向导数即偏导数,换句话说,偏导数为坐标轴方向上的方向导数,其他方向的方向导数为偏导数的合成

写成向量形式,偏导数构成的向量 ∇ f ( a , b ) = ( f x ( a , b ) , f y ( a , b ) ) \nabla f(a, b) = (f_x (a, b), f_y (a, b)) f(a,b)=(fx(a,b),fy(a,b)),称之为梯度

梯度

梯度,写作 ∇ f \nabla f f,二元时为 ( ∂ z ∂ x , ∂ z ∂ y ) (\frac{\partial{z}}{\partial{x}}, \frac{\partial{z}}{\partial{y}}) (xz,yz),多元时为 ( ∂ z ∂ x , ∂ z ∂ y , …   ) (\frac{\partial{z}}{\partial{x}}, \frac{\partial{z}}{\partial{y}},\dots) (xz,yz,)

我们继续上面方向导数的推导, ( a , b ) (a,b) (a,b) θ \theta θ方向上的方向导数为
( f x ( a , b ) , f y ( a , b ) ) ⋅ ( cos ⁡ θ , sin ⁡ θ ) = ∣ ( ( f x ( a , b ) , f y ( a , b ) ) ∣ ⋅ ∣ 1 ∣ ⋅ cos ⁡ ϕ = ∣ ∇ f ( a , b ) ∣ ⋅ cos ⁡ ϕ \begin{aligned} &\left(f_x (a, b), f_y (a, b)\right) \cdot(\cos \theta, \sin \theta) \\ =& |((f_x (a, b), f_y (a, b))| \cdot |1| \cdot \cos \phi \\=& |\nabla f(a,b)| \cdot \cos \phi \end{aligned} ==(fx(a,b),fy(a,b))(cosθ,sinθ)((fx(a,b),fy(a,b))1cosϕf(a,b)cosϕ
其中, ϕ \phi ϕ ∇ f ( a , b ) \nabla f(a,b) f(a,b) u ⃗ \vec u u 的夹角,显然,当 ϕ = 0 \phi = 0 ϕ=0 u ⃗ \vec u u 与梯度 ∇ f ( a , b ) \nabla f(a,b) f(a,b)同向时方向导数取得最大值最大值为梯度的模 ∣ ∇ f ( a , b ) ∣ |\nabla f(a,b)| f(a,b),当 ϕ = π \phi = \pi ϕ=π u ⃗ \vec u u 与梯度 ∇ f ( a , b ) \nabla f(a,b) f(a,b)反向时方向导数取得最小值,最小值为梯度模的相反数。此外,根据上面方向导数的公式可知,在夹角 ϕ < π 2 \phi < \frac{\pi}{2} ϕ<2π时方向导数为正,表示 u ⃗ \vec u u 方向函数值上升, ϕ > π 2 \phi > \frac{\pi}{2} ϕ>2π时方向导数为负,表示该方向函数值下降。

至此,方才有了梯度的几何意义

  1. 当前位置的梯度方向,为函数在该位置处方向导数最大的方向,也是函数值上升最快的方向,反方向为下降最快的方向;
  2. 当前位置的梯度长度(模),为最大方向导数的值。

等高线图中的梯度

在讲解各种优化算法时,我们经常看到目标函数的等高线图示意图,如下图所示,来自链接Applet: Gradient and directional derivative on a mountain

Kl27an.png

图中,红点为当前位置,红色箭头为梯度,绿色箭头为其他方向,其与梯度的夹角为 θ \theta θ

将左图中 z = f ( x , y ) z=f(x, y) z=f(x,y)曲面上的等高线投影到 x y xy xy平面,得到右图的等高线图。

梯度与等高线垂直。为什么呢?

等高线,顾名思义,即这条线上的点高度(函数值)相同,令某一条等高线为 z = f ( x , y ) = C z=f(x,y)=C z=f(x,y)=C C C C为常数,两边同时全微分,如下所示

d z = ∂ f ∂ x d x + ∂ f ∂ y d y = ( ∂ f ∂ x , ∂ f ∂ y ) ⋅ ( d x , d y ) = d C = 0 \begin{aligned} dz = &\frac{\partial f}{\partial x} dx + \frac{\partial f}{\partial y} dy \\=& (\frac{\partial f}{\partial x}, \frac{\partial f}{\partial y}) \cdot (dx, dy) \\=& dC = 0\end{aligned} dz===xfdx+yfdy(xf,yf)(dx,dy)dC=0

这里,两边同时全微分的几何含义是,在当前等高线上挪动任意一个极小单元,等号两侧的变化量相同 f ( x , y ) f(x, y) f(x,y)的变化量有两个来源,一个由 x x x的变化带来,另一个由 y y y的变化带来,在一阶情况下,由 x x x带来的变化量为 ∂ f ∂ x d x \frac{\partial f}{\partial x} dx xfdx,由 y y y带来的变化量为 ∂ f ∂ y d y \frac{\partial f}{\partial y} dy yfdy,两者叠加为 z z z的总变化量,等号右侧为常数,因为我们指定在当前等高线上挪动一个极小单元,其变化量为0,左侧等于右侧。进一步拆分成向量内积形式, ( ∂ f ∂ x , ∂ f ∂ y ) (\frac{\partial f}{\partial x}, \frac{\partial f}{\partial y}) (xf,yf)为梯度, ( d x , d y ) (dx, dy) (dx,dy)为该点指向任意方向的极小向量,因为两者内积为0,所以两者垂直。自然不难得出梯度与等高线垂直的结论。

更进一步地,梯度方向指向函数上升最快的方向,在等高线图中,梯度指向高度更高的等高线

隐函数的梯度

同理,对于隐函数 f ( x , y ) = 0 f(x,y)=0 f(x,y)=0,也可以看成是一种等高线。二元时,两边同时微分,梯度垂直于曲线;多元时,两边同时微分,梯度垂直于高维曲面。

即,隐函数的梯度为其高维曲面的法向量

有了法向量,切线或切平面也就不难计算得到了。令曲线 f ( x , y ) f(x , y) f(x,y)上一点为 ( a , b ) (a,b) (a,b),通过全微分得该点的梯度为 ( f x , f y ) (f_x, f_y) (fx,fy),则该点处的切线为 f x ( x − a ) + f y ( y − b ) = 0 f_x (x-a) + f_y (y-b) = 0 fx(xa)+fy(yb)=0,相当于将上面的微分向量 ( d x , d y ) (dx, dy) (dx,dy)替换为 ( x − a , y − b ) (x-a, y-b) (xa,yb),其几何意义为法向量垂直切平面上的任意向量。

小结

至此,文章开篇几个问题的答案就不难得出了,

  • 偏导数构成的向量为梯度;
  • 方向导数为梯度在该方向上的合成,系数为该方向的单位向量;
  • 梯度方向为方向导数最大的方向,梯度的模为最大的方向导数;
  • 微分的结果为梯度与微分向量的内积
  • 等高线全微分的结果为0,所以其梯度垂直于等高线,同时指向高度更高的等高线
  • 隐函数可以看成是一种等高线,其梯度为高维曲面(曲线)的法向量

以上。

参考

向量与直线,梯度法向量,切向量 阅读详情

相关推荐

c#垂直投影法_形象理解梯度”与“法向量”的关系

学习阶段:大学数学。前置知识:微分,梯度。我们考虑二维曲线的普通方程参数方程两种情况。①曲线的普通方程有一个结论:二元函数 在点 的梯度方向 是曲线 在点 的一个法向量,这是为什么呢?可以做一个直观的推理,如图1所示。三维空间曲面 的梯度向量是 ,意义为函数值 增长最快的x0y平面上的方向。把二维曲线 看作是三维曲面被x0y水平面截出的等高线,这样上山最陡的路径投影在平面上,正...

weixin_35725559的博客 1601

梯度含义的理解

一般的认知某点的梯度某点的导数有很大的联系,但是认识这一概念起就知道导数是某条曲线的切线,切线是函数值变化最快的方向,而梯度也是表明沿着梯度变化方向很快,因此直观上讲,在某些情况应该可以认为导数梯度是一回事。从降维后的曲线可知,现在梯度方向确实是垂直方向,也可以说是切线(切平面)的法线方向,这还没完,这只是梯度在xoy平面的形态,而非在自变量即x轴y轴上的体现。这里顺便提一下,如果我们认为xoy平面的切线是梯度,则此时的因变量不是z,而是y(x是因变量)或者x(y是自变量)。那么,问题到底出在哪?

mengdeer_Q的博客 8604

随机梯度下降法的数学基础

梯度是微积分中的基本概念,也是机器学习解优化问题经常使用的数学工具(梯度下降算法)。因此,有必要从头理解梯度的来源意义。本文从导数开始讲起,讲述了导数偏导数方向导数梯度的定义、意义数学公式,有助于初学者后续更深入理解随机梯度下降算法的公式。大部分内容来自维基百科博客文章内容的总结,并加以个人理解

专注计算机视觉算法训练,算法优化部署以及SDK开发的知识分享。 594

导数梯度

导数导数是一个很熟悉也很容易想象到的概念,导数体现了函数在某点的瞬时变化率,也可表示切线斜率高中时我们对y=x^2求导的时候,实际上将其看作了一元函数,而y=f(x)是方程而不是函数,真正的函数是F(x,y)=x^-y,是一个曲面,只不过取了F(x,y)=0时候的特例。偏导数在二元函数F(x,y)中由于有两个自变量,导数也有xy两个方向的分量,所以引入了偏导数。曲面上一点的瞬时变化率可以是任意方...

gt362ll的博客 1816

【计算机视觉】Lecture 2:灰度平面梯度

可视化图像 回忆可视化一个图像的两种方法 灰度模式 二维数组 弥补差距 动机:我们想把图像可视化到足以保留人类洞察力的高度,但要低到足以让我们轻易地将自己的洞察力转化为数学符号,并最终转化为对数组进行运算的计算机算法。 作为曲面的图像 表面高度与像素灰度值成比例 ( 深=低,浅=高) 例子 这样的可视化如何帮助我们? 地形概念 基本概念: 上坡/下坡 等高线(海拔高度相同的曲线) 坡度...

u010307048的博客 1534

@Accessors 的三种用法的解释

@Accessors Accessor的中文含义是存取器,@Accessors用于配置gettersetter方法的生成结果,下面介绍三个属性 fluent fluent的中文含义是流畅的,设置为true,则gettersetter方法的方法名都是基础属性名,且setter方法返回当前对象。如下 @Data @Accessors(fluent = true) public class User { private Long id; private String name;

乐于分享,共同成长 4852

关于偏导、梯度

导数偏导数方向导数梯度梯度下降 偏导数 在多元函数中,偏导数是对某一个变量单独求导,其余变量视为常数。这一过程是把图形投影到某一个坐标平面,在二维平面上进行求导。 以为例,图形如下 在x方向的偏导,是把当作常数进行求导。若是常数,则y方向导数没有影响,等价于对进行求导,即把原来的三维图形投影到xoz平面上,对二维图形进行求导 方向导数 偏导数只能求函数值在某个坐标轴方向的变化率,方向导数是求函数值在任意方向的变化率。 如下,给出函数求出该方向上的方向导数...

clam的博客 4039

直观理解偏导数方向导数法向量梯度

转自:https://www.cnblogs.com/shine-lee/p/11715033.html 一、隐函数 显函数:解析式中明显地用一个变量的代数式表示另一个变量时,称为显函数。显函数可以用y=f(x)来表示。 隐函数:如果方程F(x,y)=0能确定y是x的函数,那么称这种方式表示的函数是度隐函数。 隐函数与显函数的区别:   1) 隐函数不一定能写为y=f(x)的形式,如x²+y...

JacksonKim的博客 2万+

借助可视化,最直观理解梯度,以及偏导数方向导数法向量

↑ 点击蓝字关注视学算法作者丨shine-lee@博客园来源丨https://www.cnblogs.com/shine-lee/p/11715033.html编辑丨极市平台写在前面梯...

zandaoguang的博客 1918

方向导数梯度

直观理解梯度,以及偏导数方向导数法向量等 微积分II 方向导数梯度向量 14.5 (12)

m0_37347812的博客 281

优秀博客收集

转载自:直观理解梯度,以及偏导数方向导数法向量等 目录 写在前面 偏导数 方向导数 梯度 等高线图中的梯度 隐函数的梯度 小结 参考 博客:blog.shinelee.me|博客园|CSDN 写在前面 梯度是微积分中的基本概念,也是机器学习解优化问题经常使用的数学工具(梯度下降算法),虽然常说常听常见,但其细节、物理意义以及几何解释还是值得深挖一下,这些不...

tracylining的专栏 436

理解偏导数梯度方向导数

偏导数 我们都知道导数是一元函数的变化率,衡量每个x位置处的瞬间变化率。 偏导数是针对多变量函数而言的,它通过将多变量函数退化成一元函数分别求各自的导数。以二元函数为例: Z = F(x,y) 求x的偏导数就是将y变量看成常量,然后对x求导。 总结:偏导数为函数在每个位置处沿着自变量坐标轴方向上的导数(切线斜率)。 梯度 梯度指的就是各个偏导数构成的向量,写作∇f,二元时为(∂z/∂x,∂z/∂y),多元时为(∂z/∂x,∂z/∂y,…) 梯度是一个向量,既有大小又有方向 梯度的意义在后面

小白一直白 1万+

二元偏导数存在的条件_梯度方向导数与等值面

关于函数梯度,一般有如下两种度去理解:a. 如何从山腰走到山谷,沿着当前所在位置附近最陡峭的那条路,就能最快到达山谷。类似地,将函数值下降最快的方向,称为梯度。b. 如何使用最短的步长移动到下一个等值面(等值线也视作等值面,下同),沿着垂直等值面的方向,路径最短。即梯度垂直于原函数的等值面。梯度示意图单独看似乎都比较明了,但放在一起就容易产生误解了。a图中,函数值下降的方向是沿着曲面的,很容易被...

weixin_39723441的博客 1774

理解偏导数方向导数梯度之间的关系

简要理解偏导数方向导数梯度之间的关系

一个搬运知识的笨小孩 1450

导数梯度,切线法向量

[转载] http://www.cnblogs.com/jerrylead 记得在高中做数学题时,经常要求曲线的切线。见到形如之类的函数,不管三七二十一直接求导得到,这就是切线的斜率,然后就得到了处的切线。 上大学又学习了曲面切线法向量的求法,求偏导是法向量,然后套公式求出切线。 一个经典例子如下: (来自web上某个《几何应用》ppt...

Ms.Lyq的博客 3892

导数梯度,切线法向量

转自:http://www.cnblogs.com/jerrylead/archive/2011/03/09/1978280.html 作者讲得很清楚 记得在高中做数学题时,经常要求曲线的切线。见到形如之类的函数,不管三七二十一直接求导得到,这就是切线的斜率,然后就得到了处的切线。 上大学又学习了曲面切线法向量的求法,求偏导是法向量,然后套公式求出切线。 一个

chivalry 4万+

导数偏导数方向导数梯度梯度下降

(转)导数偏导数方向导数梯度梯度下降 - Sugars_DJ - 博客园 偏导数方向导数梯度 - 知乎 如何直观形象地理解方向导数梯度以及它们之间的关系? - 知乎 直观理解梯度,以及偏导数方向导数法向量等 - shine-lee - 博客园 ...

phymat.nico的专栏 1403
上一篇: 如何编译和调试Python内核源码?
下一篇: 为什么要做特征归一化/标准化?
shine-lee
博客等级 码龄15年 212粉丝 59原创
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值