向量微积分——理解梯度
向量微积分:理解梯度
- 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)的值),简单来说,就像一个圆,代表所有每个点到圆心的距离相同。
梯度表示变化最大的方向。如果它在等势线上有分量,那么能量就会被浪费掉(当它靠近一个具有相同能量的点时)。当梯度垂直于等势点时,它会尽可能地远离等势点(这篇文章解释了为什么梯度是最大的增长方向)。
向量微积分——理解梯度相关推荐
- 借助可视化,最直观理解梯度,以及偏导数、方向导数和法向量等
↑ 点击蓝字 关注视学算法 作者丨shine-lee@博客园 来源丨https://www.cnblogs.com/shine-lee/p/11715033.html 编辑丨极市平台 写在前面 梯度是 ...
- 机器学习基础:理解梯度下降本质「附Python代码」
https://www.toutiao.com/a6646958932096975373/ 2019-01-16 13:15:26 今天我们尝试用最简单的方式来理解梯度下降,在之后我们会尝试理解更复杂 ...
- 50行代码,带你理解梯度下降法(Gradient Descent Method)
梯度下降法是一种常见的优化算法,在机器学习中应用很广泛.本文从代码的角度,带你理解梯度下降法. 优化算法 优化指的是改变x以最小化或最大化某个函数 f(x) 的任务.通常以最小化 f(x) 指代大多数 ...
- 太赞了!借助可视化,最直观理解梯度,以及偏导数、方向导数和法向量等
点上方蓝字计算机视觉联盟获取更多干货 在右上方 ··· 设为星标 ★,与你不见不散 仅作学术分享,不代表本公众号立场,侵权联系删除 转载于:作者丨shine-lee@博客园 来源丨https://ww ...
- 直观理解-梯度下降及MIT自适应控制律
具体解释了什么是梯度,以及梯度如何应用于MIT自适应控制律,为后续基于梯度法的模型参考自适应控制做铺垫,如果可以理解的,可以自动跳过. 目录 一.梯度 二.MIT自适应律 一.梯度 什么是梯度呢?梯度 ...
- 【机器学习的数学基础】(九)向量微积分(Vector Calculus)(上)
文章目录 5 向量微积分(Vector Calculus) 5.1 单变量函数的微分 5.1.1 泰勒级数 5.1.2 微分法则 5.2 偏微分与梯度 5.2.1 偏微分的基本法则 5.2.2 链式法 ...
- 曲线积分与曲面积分总结_CFD理论扫盲03 向量微积分
CFD理论中的数学公式很多都可以用向量来表示.因此,掌握向量微积分的基本公式是很有帮助的. 注:本文内容译自<The finite volume method in computational ...
- 理解梯度下降算法中的动量
理解梯度下降算法中的动量 在深度学习优化算法中,常用的梯度下降算法中一般会有一个参数 -- 动量(momentum).此文章记录动量算法的原理,以及使用它的目的. N.B. 此处的梯度下降算法是广义的 ...
- 算法理解|从头开始理解梯度提升算法
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 作者:Prince Grover 编译:ronghuaiyang ...
- 很好的理解梯度 散度 旋度 下三角运算 费曼物理讲义
很好的理解梯度 散度 旋度 下三角运算 费曼物理讲义 https://www.zhihu.com/question/24074028/answer/26657334 英文版本 https://www ...
最新文章
- struts文件上传,获取文件名和文件类型
- NYOJ 155 求高精度幂
- Unity 分离贴图 alpha 通道实践
- python 的时间模块使用
- Application log save debug - how log data is persisted to database table
- [2.9训练]【CF909C】Python Indentation,【CF909D】Colorful Points,【CF909E】Coprocessor
- 20110128 学习记录:Datalist中的item项不自动换行而只用空格隔开
- ubuntu 的使用(五)—— 桌面(desktop)
- 基于python+django框架+Mysql数据库的新闻信息管理系统设计与实现
- 用python做计算器(超级版)
- 带头节点的链式存储栈基本操作(进栈、出栈、获取栈顶元素)
- java八大排序算法详解
- 【软件安装】MacBook 安装 MATLAB 2020a
- 谷歌驱动的下载和配置
- WEB入门.九 导航菜单
- 老K仿真的惊人发现|社会的阶层分化过程
- [转载]胡永恒:《最深刻地影响我的人》
- Docker入门笔记(1)
- 找出列表中重复数的下标
- serial.serialutil.SerialException: could not open port 'COM1': PermissionError(13, '拒绝访问。', None, 5)
热门文章
- 2019CCPCQHD Angle Beats
- 输入一个整数(1~7),显示对应星期英文的缩写
- 有了它,Java语法也可以变得甜甜的
- 中国大陆新身份证号码算法
- 硬件工程师岗位应聘为什么都要求精通CC++呢,这其中有什么说法吗
- 安装服务器系统提示加载驱动程序,戴尔PowerEdge:在安装Windows 2003、2008或2012的过程中,如何加载PERC驱动程序...
- 在VMware下安装中标麒麟操作系统7.0以及Neokylin基础常用知识
- 两个小米路由器mini无线桥接
- python扇贝每日一句api,英语每日一句API封装
- DeepFaceLab 模型预训练参数Pretrain的使用!