方向导数 梯度

news/2024/11/24 11:34:39/

终于理解了方向导数与梯度

        </h1><div class="clear"></div><div class="postBody">

本文作者Key,博客园主页:https://home.cnblogs.com/u/key1994/

本内容为个人原创作品,转载请注明出处或联系:zhengzha16@163.com

0.渊源

第一次接触方向导数与梯度的概念,是在大学的高等数学课堂上,当时对于这部分内容是似懂非懂的。

巧合的是,后来在参加硕士复试的时候,有位老师提问我对方向导数与梯度的理解,当时我只记得一句话:梯度是方向导数变化最大的方向。虽然后来这位老师成了我的导师,但是现在想来依然觉得惭愧,因为我对这两个名词完全没有理解。

后来学习到BP神经网络,也手动推导过根据梯度下降法得到的权值更新公式,但方向导数的定义一直是我的心结。今天终于花了时间将这个简单的问题弄明白,特地记录下来,以警示自己在将来的科研道路上要脚踏实地,不可浮于表面!

1.方向导数

  • 方向导数的本质是一个数值,简单来说其定义为:

一个函数沿指定方向的变化率。

因此,构建方向导数需要有两个元素:

1)      函数

2)      指定方向

当然,与普通函数的导数类似,方向导数也不是百分之百存在的,需要函数满足在某点处可微,才能计算出该函数在该点的方向导数。

至于其物理含义,这里采用最常用的下山图来表示。

 

 简单将上图看作是一座山的模型,我们处在山上的某一点处,需要走到山下。理论上来说,这座山的表面是可以通过一个函数的描述的(虽然想要找到这个函数可能很难),而这个函数可以在不同的方向上都确定出一个方向导数,这就好比于如果我们想下山,道路并不是唯一的,而是可以沿任何方向移动。区别在于有些方向可以让我们下山速度更快,有些方向让我们下山速度更慢,有些方向甚至引导我们往山顶走(也可以理解为下山速度时负的)。在这里,速度的值就是方向导数的直观理解。

2.梯度

  • 梯度与方向导数是有本质区别的,梯度其实是一个向量,其定义为:

一个函数对于其自变量分别求偏导数,这些偏导数所组成的向量就是函数的梯度。

在很多资料中可以看到如下的梯度定义方法:

 

 

 

诚然,这种定义方法更加权威,但是却不够直观,这也是为什么我在高等数学课堂上学习梯度概念时感觉云里雾里。这种定义方法只针对二元函数,所以公式中的i,j可分别表示为函数在x和y方向上的单位向量,这样的描述可以让我们更好理解(因为人类大脑可以比较轻松的理解三维世界的模型图),但是一旦到了更高维度的世界,单纯靠这个公式就不容易理解了。

3.梯度与方向导数的关系

  • 梯度与方向导数的关系应该如何描述呢?

函数在某点的梯度是这样一个向量,它的方向与取得最大方向导数的方向一致,而它的模为方向导数的最大值。

以上描述非常好理解,那如何证明呢?

 

 

说实话,我觉得以上证明过程很抽象,但这就是数学,而我们要做的就是从这些抽象中来理解问题的实质。

依然采用下山的例子来解释。我们想要走到山下,道路有千万条,但总有一条可以让我们以最快的速度下山。当然,这里的最快速度仅仅作用在当前的位置点上,也就是说在当前位置A我们选择一个方向往山下走,走了一步之后到达了另外一个位置B,然后我们在B位置计算梯度方向,并沿该方向到达位置处c,重复这个过程一直到终点。但是,如果我们把走的每一步连接起来构成下山的完整路线,这条路线可能并不是下山的最快最优路线。

原因是什么?可以用一句古诗来解释:“不识庐山真面目,只缘身在此山中。”因为我们在山上的时候是不知道山的具体形状的,因此无法找到一条全局最优路线。那我们只能关注脚下的路,将每一步走好,这就是梯度下降法的原理。

 

标签: 方向导数, 梯度
<div id="blog_post_info">
好文要顶 关注我 收藏该文
飞奔的可亦
关注 - 0
粉丝 - 1
+加关注
0
0
<div class="clear"></div>
<div id="post_next_prev"><a href="https://www.cnblogs.com/key1994/p/11503826.html" class="p_n_p_prefix">« </a> 上一篇:    <a href="https://www.cnblogs.com/key1994/p/11503826.html" title="发布于 2019-09-10 23:33">聊一聊极大似然估计</a>
<br>
<a href="https://www.cnblogs.com/key1994/p/11695519.html" class="p_n_p_prefix">» </a> 下一篇:    <a href="https://www.cnblogs.com/key1994/p/11695519.html" title="发布于 2019-10-17 22:25">优达学城自动驾驶课程项目——车道检测</a>
posted @ 2019-09-10 23:37  飞奔的可亦  阅读(2841)  评论(0)  编辑  收藏
</div>

在这里插入图片描述


http://www.ppmy.cn/news/605387.html

相关文章

LeetCode简单题之最小栈

题目 设计一个支持 push &#xff0c;pop &#xff0c;top 操作&#xff0c;并能在常数时间内检索到最小元素的栈。 实现 MinStack 类: MinStack() 初始化堆栈对象。 void push(int val) 将元素val推入堆栈。 void pop() 删除堆栈顶部的元素。 int top() 获取堆栈顶部的元素。…

【探索 Kubernetes|作业管理篇 系列 14】StatefulSet 存储状态

前言 大家好&#xff0c;我是秋意零。 在上一篇中&#xff0c;我们讲解了 StatefulSet 的拓扑状态&#xff1b;我们发现&#xff0c;它的拓扑状态&#xff0c;就是顺序启动/删除、Pod 名称编号命名、将 Pod 名称设为 Hostname 名称、通过 Service 无头服务的 DNS 记录访问。 …

LeetCode简单题之公交站间的距离

题目 环形公交路线上有 n 个站&#xff0c;按次序从 0 到 n - 1 进行编号。我们已知每一对相邻公交站之间的距离&#xff0c;distance[i] 表示编号为 i 的车站和编号为 (i 1) % n 的车站之间的距离。 环线上的公交车都可以按顺时针和逆时针的方向行驶。 返回乘客从出发点 sta…

如何直观地理解「协方差矩阵」?

如何直观地理解「协方差矩阵」&#xff1f;Xinyu ChenUrban Traffic Data Analytics372 人赞同了该文章协方差矩阵在统计学和机器学习中随处可见&#xff0c;一般而言&#xff0c;可视作方差和协方差两部分组成&#xff0c;即方差构成了对角线上的元素&#xff0c;协方差构成了…

LeetCode简单题之最大三角形面积

题目 给定包含多个点的集合&#xff0c;从其中取三个点组成三角形&#xff0c;返回能组成的最大三角形的面积。 示例: 输入: points [[0,0],[0,1],[1,0],[0,2],[2,0]] 输出: 2 解释: 这五个点如下图所示。组成的橙色三角形是最大的&#xff0c;面积为2。 注意: 3 < poi…

协方差的意义

大 中 小 终于明白协方差的意义了 <div class"article_data_left">2018-03-15<span class"a_username"> <a href"http://www.360doc.com/userhome/48898194" id"savernickname" target"_blank" oncli…

LeetCode中等题之字典序排数

题目 给你一个整数 n &#xff0c;按字典序返回范围 [1, n] 内所有整数。 你必须设计一个时间复杂度为 O(n) 且使用 O(1) 额外空间的算法。 示例 1&#xff1a; 输入&#xff1a;n 13 输出&#xff1a;[1,10,11,12,13,2,3,4,5,6,7,8,9] 示例 2&#xff1a; 输入&#xff1a;n…