向量微积分:理解梯度

  • 1、简介
  • 2、梯度的性质
  • 3、例子
  • 4、讨论
  • 5、数学表达
  • 6、问题

翻译自《 Vector Calculus: Understanding the Gradient》

1、简介

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

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

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

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

2、梯度的性质

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

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

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

  • F(x)F(x)F(x)有一个变量和一个导数:dFdx\frac{dF}{dx}dxdF​
  • F(x,y,z)F(x,y,z)F(x,y,z)有三个变量和三个导数:dFdx,dFdy,dFdz\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)=(dFdx,dFdy,dFdz)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+y2+z3F(x,y,z)=x+y^2+z^3F(x,y,z)=x+y2+z3

则∇F(x,y,z)=(dFdx,dFdy,dFdz)=1+2y+3z2\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)的值),简单来说,就像一个圆,代表所有每个点到圆心的距离相同。

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

向量微积分——理解梯度相关推荐

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

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

  2. 机器学习基础:理解梯度下降本质「附Python代码」

    https://www.toutiao.com/a6646958932096975373/ 2019-01-16 13:15:26 今天我们尝试用最简单的方式来理解梯度下降,在之后我们会尝试理解更复杂 ...

  3. 50行代码,带你理解梯度下降法(Gradient Descent Method)

    梯度下降法是一种常见的优化算法,在机器学习中应用很广泛.本文从代码的角度,带你理解梯度下降法. 优化算法 优化指的是改变x以最小化或最大化某个函数 f(x) 的任务.通常以最小化 f(x) 指代大多数 ...

  4. 太赞了!借助可视化,最直观理解梯度,以及偏导数、方向导数和法向量等

    点上方蓝字计算机视觉联盟获取更多干货 在右上方 ··· 设为星标 ★,与你不见不散 仅作学术分享,不代表本公众号立场,侵权联系删除 转载于:作者丨shine-lee@博客园 来源丨https://ww ...

  5. 直观理解-梯度下降及MIT自适应控制律

    具体解释了什么是梯度,以及梯度如何应用于MIT自适应控制律,为后续基于梯度法的模型参考自适应控制做铺垫,如果可以理解的,可以自动跳过. 目录 一.梯度 二.MIT自适应律 一.梯度 什么是梯度呢?梯度 ...

  6. 【机器学习的数学基础】(九)向量微积分(Vector Calculus)(上)

    文章目录 5 向量微积分(Vector Calculus) 5.1 单变量函数的微分 5.1.1 泰勒级数 5.1.2 微分法则 5.2 偏微分与梯度 5.2.1 偏微分的基本法则 5.2.2 链式法 ...

  7. 曲线积分与曲面积分总结_CFD理论扫盲03 向量微积分

    CFD理论中的数学公式很多都可以用向量来表示.因此,掌握向量微积分的基本公式是很有帮助的. 注:本文内容译自<The finite volume method in computational ...

  8. 理解梯度下降算法中的动量

    理解梯度下降算法中的动量 在深度学习优化算法中,常用的梯度下降算法中一般会有一个参数 -- 动量(momentum).此文章记录动量算法的原理,以及使用它的目的. N.B. 此处的梯度下降算法是广义的 ...

  9. 算法理解|从头开始理解梯度提升算法

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 作者:Prince Grover 编译:ronghuaiyang ...

  10. 很好的理解梯度 散度 旋度 下三角运算 费曼物理讲义

    很好的理解梯度 散度 旋度 下三角运算  费曼物理讲义 https://www.zhihu.com/question/24074028/answer/26657334 英文版本 https://www ...

最新文章

  1. struts文件上传,获取文件名和文件类型
  2. NYOJ 155 求高精度幂
  3. Unity 分离贴图 alpha 通道实践
  4. python 的时间模块使用
  5. Application log save debug - how log data is persisted to database table
  6. [2.9训练]【CF909C】Python Indentation,【CF909D】Colorful Points,【CF909E】Coprocessor
  7. 20110128 学习记录:Datalist中的item项不自动换行而只用空格隔开
  8. ubuntu 的使用(五)—— 桌面(desktop)
  9. 基于python+django框架+Mysql数据库的新闻信息管理系统设计与实现
  10. 用python做计算器(超级版)
  11. 带头节点的链式存储栈基本操作(进栈、出栈、获取栈顶元素)
  12. java八大排序算法详解
  13. 【软件安装】MacBook 安装 MATLAB 2020a
  14. 谷歌驱动的下载和配置
  15. WEB入门.九 导航菜单
  16. 老K仿真的惊人发现|社会的阶层分化过程
  17. [转载]胡永恒:《最深刻地影响我的人》
  18. Docker入门笔记(1)
  19. 找出列表中重复数的下标
  20. serial.serialutil.SerialException: could not open port 'COM1': PermissionError(13, '拒绝访问。', None, 5)

热门文章

  1. 2019CCPCQHD Angle Beats
  2. 输入一个整数(1~7),显示对应星期英文的缩写
  3. 有了它,Java语法也可以变得甜甜的
  4. 中国大陆新身份证号码算法
  5. 硬件工程师岗位应聘为什么都要求精通CC++呢,这其中有什么说法吗
  6. 安装服务器系统提示加载驱动程序,戴尔PowerEdge:在安装Windows 2003、2008或2012的过程中,如何加载PERC驱动程序...
  7. 在VMware下安装中标麒麟操作系统7.0以及Neokylin基础常用知识
  8. 两个小米路由器mini无线桥接
  9. python扇贝每日一句api,英语每日一句API封装
  10. DeepFaceLab 模型预训练参数Pretrain的使用!