zoukankan      html  css  js  c++  java
  • 直观理解梯度,以及偏导数、方向导数和法向量等(转载)

    写在前面

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

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

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

    偏导数

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

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

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

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

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

    z = f(x, y)

    在分别固定yy和xx的取值后得到下图中的黑色曲线——“退化”为一元函数,二维坐标系中的曲线——则偏导数zx∂z∂x和zy∂z∂y分别为曲线的导数(切线斜率)

    partial derivative x

    partial derivative y

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

    Partial derivative

    方向导数

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

    Directional Derivative

    方向导数为函数在某一个方向上的导数,具体地,定义xyxy平面上一点(a,b)(a,b)以及单位向量u⃗ =(cosθ,sinθ)u→=(cos⁡θ,sin⁡θ),在曲面z=f(x,y)z=f(x,y)上,从点(a,b,f(a,b))(a,b,f(a,b))出发,沿u⃗ =(cosθ,sinθ)u→=(cos⁡θ,sin⁡θ)方向走tt单位长度后,函数值zz为F(t)=f(a+tcosθ,b+tsinθ)F(t)=f(a+tcos⁡θ,b+tsin⁡θ),则点(a,b)(a,b)处u⃗ =(cosθ,sinθ)u→=(cos⁡θ,sin⁡θ)方向的方向导数为:

    =====ddtf(a+tcosθ,b+tsinθ)∣∣∣t=0limt0f(a+tcosθ,b+tsinθ)f(a,b)tlimt0f(a+tcosθ,b+tsinθ)f(a,b+tsinθ)t+limt0f(a,b+tsinθ)f(a,b)txf(a,b)dxdt+yf(a,b)dydtfx(a,b)cosθ+fy(a,b)sinθ(fx(a,b),fy(a,b))(cosθ,sinθ)ddtf(a+tcos⁡θ,b+tsin⁡θ)|t=0=limt→0f(a+tcos⁡θ,b+tsin⁡θ)−f(a,b)t=limt→0f(a+tcos⁡θ,b+tsin⁡θ)−f(a,b+tsin⁡θ)t+limt→0f(a,b+tsin⁡θ)−f(a,b)t=∂∂xf(a,b)dxdt+∂∂yf(a,b)dydt=fx(a,b)cos⁡θ+fy(a,b)sin⁡θ=(fx(a,b),fy(a,b))⋅(cos⁡θ,sin⁡θ)

    上面推导中使用了链式法则。其中,fx(a,b)fx(a,b)和fy(a,b)fy(a,b)分别为函数在(a,b)(a,b)位置的偏导数。由上面的推导可知:

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

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

    梯度

    梯度,写作f∇f,二元时为(zx,zy)(∂z∂x,∂z∂y),多元时为(zx,zy,)(∂z∂x,∂z∂y,…)。

    我们继续上面方向导数的推导,(a,b)(a,b)处θθ方向上的方向导数为

    ==(fx(a,b),fy(a,b))(cosθ,sinθ)|((fx(a,b),fy(a,b))||1|cosϕ|f(a,b)|cosϕ(fx(a,b),fy(a,b))⋅(cos⁡θ,sin⁡θ)=|((fx(a,b),fy(a,b))|⋅|1|⋅cos⁡ϕ=|∇f(a,b)|⋅cos⁡ϕ

    其中,ϕϕ为f(a,b)∇f(a,b)与u⃗ u→的夹角,显然,当ϕ=0ϕ=0即u⃗ u→与梯度f(a,b)∇f(a,b)同向时方向导数取得最大值最大值为梯度的模|f(a,b)||∇f(a,b)|,当ϕ=πϕ=π即u⃗ u→与梯度f(a,b)∇f(a,b)反向时方向导数取得最小值,最小值为梯度模的相反数。此外,根据上面方向导数的公式可知,在夹角ϕ<π2ϕ<π2时方向导数为正,表示u⃗ u→方向函数值上升,ϕ>π2ϕ>π2时方向导数为负,表示该方向函数值下降。

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

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

    等高线图中的梯度

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

    Kl27an.png

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

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

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

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

    dz===fxdx+fydy(fx,fy)(dx,dy)dC=0dz=∂f∂xdx+∂f∂ydy=(∂f∂x,∂f∂y)⋅(dx,dy)=dC=0

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

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

    隐函数的梯度

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

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

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

    小结

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

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

    以上。

  • 相关阅读:
    win10 uwp 弹起键盘不隐藏界面元素
    win10 uwp 存放网络图片到本地
    win10 uwp 存放网络图片到本地
    sublime Text 正则替换
    sublime Text 正则替换
    win10 uwp 绘图 Line 控件使用
    win10 uwp 绘图 Line 控件使用
    AJAX 是什么?
    什么是 PHP SimpleXML?
    PHP XML DOM:DOM 是什么?
  • 原文地址:https://www.cnblogs.com/ganxiang/p/12838394.html
Copyright © 2011-2022 走看看