梯度方向与等高线方向垂直的理解

article/2025/9/10 3:47:17

项目github地址:bitcarmanlee easy-algorithm-interview-and-practice
欢迎大家star,留言,一起学习进步

1.前言

在讲解梯度下降算法时,经常可以看到下面这张图(图片来自Wiki百科):
在这里插入图片描述
这张图后面一般都会再接一句,梯度下降的方向与等高线的切线方向垂直。
最开始的时候对这句话并没有多想,觉得这理所应当。不过突然有一天回过神来,为什么梯度下降方向与等高线的方向垂直啊?然后开始仔细考虑了一下这个问题。

2.等高线

看到知乎上的一幅图,能比较清楚地看出等高线的绘制过程,在此粘贴过来。
在这里插入图片描述

3.梯度的定义

梯度的概念是为了解决这么一个问题:
函数在变量空间(变量的维度可能很高)的某一点,沿着那个方向有最大的变化率?
梯度退化到xoy平面的二维空间,其实就是导数的概念。
梯度的定义如下:
g r a d f ( x 0 , x 1 , ⋯ , x n ) = ( ∂ f ∂ x 0 , ⋯ , ∂ f ∂ x i , ⋯ , ∂ f ∂ x n ) gradf(x_0, x_1, \cdots, x_n) = \left(\frac{\partial f}{\partial x_0}, \cdots, \frac{\partial f}{\partial x_i}, \cdots, \frac{\partial f}{\partial x_n} \right) gradf(x0,x1,,xn)=(x0f,,xif,,xnf)

需要注意如下几点:
1.梯度是一个向量,既有大小又有方向。
2.梯度的方向是最大方向导数的方向。
3.梯度的模是方向导数的最大值。

4.梯度方向与等高线切线方向垂直

假设Loss Function为 z = f ( x , y ) z = f(x,y) z=f(x,y),该函数为一个三维曲面。该面被平面 z = c z = c z=c所截的曲线方程为
{ z = f ( x , y ) z = c \begin{cases} z = f(x, y) \\ z = c \end{cases} {z=f(x,y)z=c
该曲线在xoy平面上的投影是一条曲线,假设该曲线为Q,在xoy平面上该曲线的方程为
f ( x , y ) = c f(x, y) = c f(x,y)=c
不难看出,xoy平面上的曲线Q即为 z = f ( x , y ) z = f(x, y) z=f(x,y)的等高线。

等高线 f ( x , y ) = c f(x, y) = c f(x,y)=c上的任意一点p切线处的斜率为 d y / d x dy/dx dy/dx
而p点对应的法线的斜率则为:
− 1 d y d x = − 1 − f x f y = f y f x -\frac{1}{\frac{dy}{dx}} = -\frac{1}{-\frac{f_x}{f_y}} = \frac{f_y}{f_x} dxdy1=fyfx1=fxfy
d y d x = − f x f y \frac{dy}{dx} = -\frac{f_x}{f_y} dxdy=fyfx可以由隐函数求导公式推导得出。

而梯度的表达式为:
∂ f ∂ x i + ∂ f ∂ y j \frac{\partial f}{\partial x}i + \frac{\partial f}{\partial y}j xfi+yfj
则梯度的方向为:
∂ f ∂ y / ∂ f ∂ x = f y f x \frac{\partial f}{\partial y} / \frac{\partial f}{\partial x} = \frac{f_y}{f_x} yf/xf=fxfy

由此可见,梯度的方向与等高线切线的法向量方向是相同的!

参考文献:
1.https://zhuanlan.zhihu.com/p/27731819


http://chatgpt.dhexx.cn/article/mnodtLuB.shtml

相关文章

为什么梯度方向一定是函数增大的方向?

前言 今年是很幸运的一年,准备了大半年的研究生终于考上了!但问题随着就来了,我选择的导师方向是深度学习有关的,我从前觉得这个东西十分的高大上,一直敬而远之,没想到今天自己也要参与进来成为它的从业者&…

为什么梯度是上升方向,梯度下降要取负?

讨论 这个问题是很容易忽略,也就一个负号的问题,大多是记下来,但是确实也一个搞不懂的问题。 方向导数 简单说明方向导数,毕竟梯度与方向导数是有关系的。   上图 l l l 对 x x x, y y y的偏导,分别在 x x x和 y y…

深入浅出理解HOG特征---梯度方向直方图

梯度方向直方图 原文路径:https://www.learnopencv.com/histogram-of-oriented-gradients/ 最近在搞车牌识别的时候,训练样本去识别车牌的时候用到HOG特征。国外一篇文章让我受益良多 什么是特征描述符? 特征描述符是指通过提取有用的信息并…

函数的梯度方向和切线方向_方向导数和梯度是什么?

原标题:方向导数和梯度是什么? 为什么梯度的方向是函数在该点的方向导数最大的方向,梯度的模是最大方向导数的值?大家在看复习全书时,有认真想过这个问题吗?小编在本文以二元函数为例详细讲解方向导数和梯度,并试图以尽可能通俗地语言回答上述问题。 1.梯度 首先看看二…

机器学习--什么是梯度?为什么梯度方向就是函数上升最快的方向?本文将给你解惑

本打算把梯度放在神经网络来讲,学习机器学习实战时发现用到梯度下降最优算法,所以就把这个知识点深入讲一下,等后面实战到神经网络时,直接复制这里的,这次讲解会深入讲解,简明易懂是目的,虽然网…

如何理解梯度方向是增长最快的方向

前言: 最近在看关于机器学习的书,里面提到了梯度下降算法,里面提到了梯度方向是增长最快的方向,虽然说很早之前就知道了这个概念,但是一直也没有仔细想过为什么,今天突然想弄懂这个问题,所以有…

什么是梯度?为什么梯度的方向总是指向函数值增大的方向?

闲谈 对于梯度这个概念,我是这样的, 学习时,正序:导数–>偏导数–>方向导数–>梯度,从导数开始一步一步学到梯度这个概念,脑子里想 着:“梯度这个玩意儿有什么用,得记下…

【梯度,方向导数,以及梯度方向为什么是函数增长最快的方向】

梯度,方向导数,以及梯度方向为什么是函数增长最快的方向 结论!!!多元函数的偏导数梯度的直观展示梯度与方向导数参考链接 结论!!! 对一元函数而言,梯度是标量&#xff0…

各种梯度下降法的简单理解

微分 如何看待微分的直观含义,有以下两种最普遍的理解: 1.函数图像中,某点的斜率 2.函数的变化率 单变量微分: 多变量微分(分别对多个变量求偏导数): 梯度 梯度其实就是变量偏导数的一般化…

AcWing 16. 替换空格

文章目录 AcWing 16. 替换空格AC代码 AcWing 16. 替换空格 本题链接:AcWing 16. 替换空格 本博客给出本题截图: AC代码 代码: class Solution { public:string replaceSpaces(string &str) {string res;for (auto x : str)if (x …

c++替换空格

请实现—个函数&#xff0c;把字符串s中的每个空格替换成”%20""。 示例1: 输入:s "we are happy ."输出:""Me%20are%20happy ." #define _CRT_SECURE_NO_WARNINGS //vs2017下使用strcpy #include <iostream> #include <string…

替换空格符

任务描述 本关任务&#xff1a;替换文本流中的空格符。 相关知识 参照第一关&#xff0c;第三关相关知识。 编程要求 在右侧编辑器中的 Begin-End 之间补充代码 &#xff0c;读入一行文本&#xff0c;将输入复制到输出&#xff0c;要求将其中连续的多个空格用一个空格代替…

~替换空格~

问题描述&#xff1a;请实现一个函数&#xff0c;将一个字符串中的空格替换成“%20”。 例如&#xff0c;当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。 问题分析&#xff1a; 1.解决这道题应该关注的点&#xff1a; 1&#xff09;字符串的长度 2&…

替换空格

一、需求 请实现一个函数&#xff0c;把字符串 s 中的每个空格替换成"%20"。 二、遍历法 2,1 思路分析 新建字符串临时变量str和temp&#xff0c;str初始化为空串&#xff1b;截取给定字符串s的每单个字串&#xff0c;若字串为空格&#xff0c;temp赋值为"%…

[字符串]替换空格

一、题目描述 原文链接&#xff1a;Offer 05. 替换空格 具体描述&#xff1a; 请实现一个函数&#xff0c;把字符串 s 中的每个空格替换成"%20"。 示例 1&#xff1a; 输入&#xff1a;s “We are happy.” 输出&#xff1a;“We%20are%20happy.” 限制&#xff…

js 用replace替换空格 替换空格包含换行符 替换空格不包含换行符

第一种&#xff1a;替换所有的空格&#xff08;包含换行符&#xff09; let str 123AD asadf asadfasf\n adf\n let a str.replace(/\s/g," ") console.log(a) // 123AD asadf asadfasf adf 由上可看出是把所有空格替换为&nbsp&#xff1b;了&#xff0c;其中…

5. 替换空格

文章目录 剑指 Offer 05. 替换空格解法一&#xff1a;暴力解解法二&#xff1a;从后往前填充思想 第五题的扩展题&#xff1a;合并两个有序数组 LeetCode 8888. 合并两个有序数组解法一&#xff1a;暴力解解法二&#xff1a;从后往前填充思想 举一反三 剑指 Offer 05. 替换空格…

字符串中的空格替换

输入一个字符串&#xff0c;需要我们使用其他的字符替换空格字符。 例如&#xff1a;一个字符串&#xff1a;“We are happy.”&#xff0c;将其中的空格字符用%20替换。怎么做呢&#xff1f; **第一种思路&#xff1a;**暴力法则&#xff0c;就是直接遍历字符串&#xff0c;遇…

1.【刷爆LeetCode】替换空格(多方法、多思路解决)

大家好我是Liyuyue&#xff01; 接下来我会讲我刷的LeetCode好题用到的好思路、好方法分享给大家一起学习&#xff0c;如果大家在看的过程中还有好的方法&#xff0c;可以评论区或者直接找我继续讨论&#xff0c;感谢大家的支持~&#xff01; 我们先来看要求&#xff1a; 简要分…

学习笔记 - excel筛选分组

整理excel的时候&#xff0c;遇到一个分组功能筛选功能&#xff0c;原始excel内容如下&#xff1a; excel右上角有个筛选功能框 点击下拉列中的“筛选”&#xff0c;excel界面如下显示&#xff0c;标识可以进行筛选功能了&#xff0c;所有列都加入了筛选项目。 点击City Name下…