如何直观形象的理解方向导数与梯度以及它们之间的关系?

如何直观形象的理解方向导数与梯度以及它们之间的关系?我们先来玩一个游戏 假如你在一座山上 蒙着眼睛 但是你必须到达山谷中最低点的湖泊 你该怎么办 梯度可以帮助你完成这个游戏 图片来自 Introduction alongwithvar inMachineLea 梯度和方向导数紧密相关 让我们从方向导数开始 1 方向导数顾名思义 方向导数

我们先来玩一个游戏,假如你在一座山上,蒙着眼睛,但是你必须到达山谷中最低点的湖泊,你该怎么办?

如何直观形象的理解方向导数与梯度以及它们之间的关系?

梯度可以帮助你完成这个游戏。

图片来自Introduction to Gradient Descent Algorithm (along with variants) in Machine Learning。

梯度和方向导数紧密相关,让我们从方向导数开始。

1 方向导数

顾名思义,方向导数就是某个方向上的导数。

什么是方向:

如何直观形象的理解方向导数与梯度以及它们之间的关系?

函数f(x,y) 在这个方向上的图像:

如何直观形象的理解方向导数与梯度以及它们之间的关系?

我们知道:

如何直观形象的理解方向导数与梯度以及它们之间的关系?

函数f(x,y) 的A 点在这个方向上也是有切线的,其切线的斜率就是方向导数:

如何直观形象的理解方向导数与梯度以及它们之间的关系?

我之前在什么是全导数、偏导数、方向导数?这个回答中,已经全面回答过什么是方向导数了。感兴趣可以看看。

2 梯度

很显然,A 点不止一个方向,而是360^{\circ} 都有方向:

如何直观形象的理解方向导数与梯度以及它们之间的关系?

每个方向都是有方向导数的:

如何直观形象的理解方向导数与梯度以及它们之间的关系?

此处有互动内容,点击此处前往操作。

这就引出了梯度的定义:

梯度:是一个矢量,其方向上的方向导数最大,其大小正好是此最大方向导数。

定义出来了,并不复杂,但对于我而言这才是开始,因为我还有两个疑问:

  • 为什么所有方向导数中会存在并且只存在一个最大值?而不是有多个最大值、或者说没有最大值?
  • 这个最大值在哪个方向取得?值是多少?

2.1 为什么所有方向导数中会存在并且只存在一个最大值?

其实我最困惑的是梯度的存在性,你说有这么多方向导数,有最大值我觉得还好理解,为什么偏偏只有一个?

我们来看一个显而易见的物理现象:

如何直观形象的理解方向导数与梯度以及它们之间的关系?

光滑的、笔直的玻璃上的水滴,一定会沿着玻璃滑下来,(理想情况下)滑下来的方向就是玻璃最陡峭的地方。对于笔直的平面玻璃而言,这个滑下来的方向是只有一个。

说这个干什么?我们回头来看看梯度的数学定义,并且画一下重点:

如何直观形象的理解方向导数与梯度以及它们之间的关系?

具有一阶连续偏导数,意味着可微。可微意味着函数f(x,y) 在各个方向的切线都在同一个平面上,也就是切平面:

如何直观形象的理解方向导数与梯度以及它们之间的关系?

此处有互动内容,点击此处前往操作。

所有的切线都在一个平面上,就好像刚才我说过的光滑的笔直玻璃上,某一点一定有且只有一个(梯度为0的情况除外,可以自己想想为什么?)最陡峭的地方(因为方向导数是切线的斜率,方向导数最大也就意味着最陡峭)。

这就解决了我对于“为什么所有方向导数中会存在并且只存在一个最大值”的疑问。

注意,因为这里举的例子是水滴往下滑,所以要说多说明一下,往下滑是梯度的反方向。因为梯度指的是增长最快的方向,而往下滑是减少最快的方向。

2.2 这个最大值在哪个方向取得?值是多少?

这个最大值的方向我们就取名为梯度方向。

最大方向导数的值是多少这个问题,我没有找到特别直观的方法来说明。我也不想给出计算步骤,要不看起来和数学书也没啥区别。大家自己去查找计算过程吧。

2.3 方向导数与梯度的关系

方向导数与梯度的关系,我在这里给大家一个直观的操作感受。

先说明一下,下图的矢量表示f(x,y) 在A 点处的梯度,切线是梯度方向的切线。因为我把梯度画在了A 点处,所以我画了一个辅助平面,这个平面和xy 平面平行:

如何直观形象的理解方向导数与梯度以及它们之间的关系?

为了方便观察,我把切平面也画出来了,切平面是之前的辅助平面有一根交线,这根交线很明显平行于xy 平面:

如何直观形象的理解方向导数与梯度以及它们之间的关系?

我增加切平面、平行于xy 的平面以及两者的交线,都是为了方便有个参照物,看出切线的陡峭的程度。

然后我们来观察不同方向的切线和梯度方向的切线的关系(绿色是梯度以外的方向,它和梯度成\theta 夹角):

如何直观形象的理解方向导数与梯度以及它们之间的关系?

自己动手操作以下,就很容易观察出为什么梯度是最陡峭的方向,以及\theta 对方向导数大小的影响:

如何直观形象的理解方向导数与梯度以及它们之间的关系?

此处有互动内容,点击此处前往操作。

2.4 总结

简单总结下:

  • 方向导数是各个方向上的导数
  • 偏导数连续才有梯度存在
  • 梯度的方向是方向导数中取到最大值的方向,梯度的值是方向导数的最大值

3 完成最开头的游戏

对于最开头的游戏,我们只需要通过手感受附近梯度最大的方向,一直沿着梯度相反的方向就可以到达谷底(原理和弹珠从高处滚落最后会滚进最低处一样):

如何直观形象的理解方向导数与梯度以及它们之间的关系?

图片来自Introduction to Gradient Descent Algorithm (along with variants) in Machine Learning。

为了不误导,我要多说一下,这个算法叫做梯度下降算法,我在这里只是描述了它的算法思想,真正实用中还需要很多的改进和优化,以及有它的局限性,这里就不展开讲了。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/212977.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 下午6:50
下一篇 2026年3月18日 下午6:50


相关推荐

  • pt100测温电路图(ad590典型的测温电路)

    PT100精密测温电路一、需求分析根据题目要求为:测温范围为0-100℃、测温精度要求为±1℃。由于铂电阻具有精度高、性能可靠、稳定性好的特点,且铂电阻的电阻相对变化率与温度的关系曲线线性度最好,故选择铂电阻作为敏感元件。而在国标中,铂电阻有几种不同的标准,如PT100、PT1000。分别对应着0摄氏度下铂电阻的阻值为100R和1000R,由于需要考虑铂电阻的自发热问题,所以尽量选择阻值小的铂电阻,故选择PT100为最终型号。二、电路设计2.1热电阻接法热电阻测温电路有多种接法,其中三线制会导致

    2022年4月9日
    79
  • 打印机smtp服务器地址还未配置_打印机如何添加邮箱地址

    打印机smtp服务器地址还未配置_打印机如何添加邮箱地址打印机smtp服务器设置方法内容精选换一换设置日志级别。参见准备环境完成环境配置。以运行用户登录安装Toolkit组件的服务器。执行命令,设置日志级别、获取日志文件。adc–hostxx.xx.xx.xx:22118–log’SetLogLevel(0)[error]’adc–hostxx.xx.xx.xx:22118–log’SetLogLevel(1本节介绍如何基于迁…

    2022年10月7日
    4
  • 2018年小米高级 PHP 工程师面试题(模拟考试卷)

    2018年小米高级 PHP 工程师面试题(模拟考试卷)

    2021年11月4日
    42
  • mysql查询时间戳转换成日期格式

    mysql查询时间戳转换成日期格式在很多的数据表中,很多日期的记录都是以时间戳的格式来存储,在查询的时候无可避免的会带来查看数据的不方便,作者在之前总是通过程序的方式去处理,后来通过查询,发现可以直接在数据表中进行查询。如下图中regdate是时间戳的格式,没法直接了当的进行查看时间。mysql中可以进行转换select*,from_unixtime(regdate,’%Y-%m-%d%H:%i:%s’)asregtimefromtax_common_memberorderbyregdateasc;..

    2022年6月21日
    33
  • Angular 面试题汇总2-Component/Service (Angular v8+)

    Angular 面试题汇总2-Component/Service (Angular v8+)Angularv8+面试系列Angular面试题汇总1-基本知识.目录关于AngularComponentcss样式的作用域、ShadowDOM关于AngularService单例服务(singleton)forRoot()模式关于AngularComponentcss样式的作用域、ShadowDOMShadowDOM是HTML规范的一部分,它允许开发人员封装自己的HTML标记,CSS样式和JavaScript。创建样式Component时,可以通过设置,启用。@Com.

    2022年10月17日
    3
  • mapminmax 用法

    mapminmax 用法mapminmax是MATLAB实现归一化的工具包,默认:(1)将矩阵的每行分别进行归一化;(2)每行的最大值最小值作为每行归一化的xmin和xmax;(3)将数据归一化到[-1,1].若要将数据归一化到0到1之间,即y∈[0,1],使用b=mapminmax(a,0,1);若给与确定的最大值和最小值作为每行的xmin和xmax,使用:b= mapminmax(a,0,1);PS.xmin…

    2022年6月30日
    36

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号