专栏名称: 算法与数学之美
从生活中挖掘数学之美,在实践中体验算法之奇,魅力旅程,从此开始!
目录
相关文章推荐
九章算法  ·  孙正义来了!美国码农有救了! ·  3 天前  
算法爱好者  ·  喜大普奔!GitHub Copilot 免费了 ·  2 天前  
九章算法  ·  Amazon最近的面试好怪… ·  6 天前  
九章算法  ·  今日开播!FAANG工程师给北美码农划202 ... ·  1 周前  
51好读  ›  专栏  ›  算法与数学之美

为什么梯度反方向是函数值下降最快的方向?

算法与数学之美  · 公众号  · 算法  · 2017-02-10 22:26

正文

首先需要和各位粉丝说声抱歉,由于编辑的失误,导致昨天推送的文章公式没有完全显示出来,对此给各位造成的不便,小编深表歉意。因此,今天又把这篇文章推送了一遍,希望这篇文章能给大家带来益处。

梯度下降

Gradient descent

刚接触梯度下降这个概念的时候,是在学习机器学习算法的时候,很多训练算法用的就是梯度下降,然后资料和老师们也说朝着梯度的反方向变动,函数值下降最快,但是究其原因的时候,很多人都表达不清楚。所以我整理出自己的理解,从方向导数这个角度把这个结论证明出来,让我们知其然也知其所以然~


下面我一开始不提梯度的概念,完全根据自己的理解进行下文的梳理,一步一步推出梯度的来历:


  • 导数

导数的几何意义可能很多人都比较熟悉: 当函数定义域和取值都在实数域中的时候,导数可以表示函数曲线上的切线斜率。 除了切线的斜率,导数还表示函数在该点的变化率

将上面的公式转化为下面图像为:


(来自维基百科)


直白的来说,导数代表了在自变量变化趋于无穷小的时候,函数值的变化与自变量变化的比值代表了导数,几何意义有该点的切线。物理意义有该时刻的(瞬时)变化率...


注意在一元函数中,只有一个自变量变动,也就是说只存在一个方向的变化率,这也就是为什么一元函数没有偏导数的原因。


  • 偏导数

既然谈到偏导数,那就至少涉及到两个自变量,以两个自变量为例,z=f(x,y) . 从导数到偏导数,也就是从曲线来到了曲面. 曲线上的一点,其切线只有一条。但是曲面的一点,切线有无数条。


而我们所说的偏导数就是指的是多元函数沿坐标轴的变化率.


指的是函数在y方向不变,函数值沿着x轴方向的变化率

指的是函数在x方向不变,函数值沿着y轴方向的变化率


对应的图像形象表达如下:



那么偏导数对应的几何意义是是什么呢?


  • 偏导数就是曲面被平面所截得的曲面在点处的切线对x轴的斜率

  • 偏导数就是曲面被平面所截得的曲面在点处的切线对y轴的斜率


可能到这里,读者就已经发现偏导数的局限性了,原来我们学到的偏导数指的是多元函数沿坐标轴的变化率,但是我们往往很多时候要考虑多元函数沿任意方向的变化率,那么就引出了方向导数.


  • 方向导数

终于引出我们的重头戏了,方向导数,下面我们慢慢来走进它

假设你站在山坡上,相知道山坡的坡度(倾斜度)

山坡图如下:

假设山坡表示为,你应该已经会做主要俩个方向的斜率.


y方向的斜率可以对y偏微分得到.


同样的,x方向的斜率也可以对x偏微分得到


那么我们可以使用这俩个偏微分来求出任何方向的斜率(类似于一个平面的所有向量可以用俩个基向量来表示一样)


现在我们有这个需求,想求出u方向的斜率怎么办.假设为一个曲面,定义域中一个点,单位向量的斜率,其中是此向量与x轴正向夹角.单位向量u可以表示对任何方向导数的方向.如下图:


那么我们来考虑如何求出u方向的斜率,可以类比于前面导数定义,得出如下:


为一个二元函数,为一个单位向量,如果下列的极限值存在

此方向导数记为


则称这个极限值是沿着u方向的方向导数,那么随着的不同,我们可以求出任意方向的方向导数.这也表明了方向导数的用处,是为了给我们考虑函数对任意方向的变化率.


在求方向导数的时候,除了用上面的定义法求之外,我们还可以用偏微分来简化我们的计算.


表达式是(至于为什么成立,很多资料有,不是这里讨论的重点)


那么一个平面上无数个方向,函数沿哪个方向变化率最大呢?


目前我不管梯度的事,我先把表达式写出来:


设,


那么我们可以得到:

(α为向量与向量之间的夹角)


那么此时如果要取得最大值,也就是当为0度的时候,也就是向量I(这个方向是一直在变,在寻找一个函数变化最快的方向)与向量A(这个方向当点固定下来的时候,它就是固定的)平行的时候,方向导数最大.方向导数最大,也就是单位步伐,函数值朝这个反向变化最快.


好了,现在我们已经找到函数值下降最快的方向了,这个方向就是和向量相同的方向.那么此时我把A向量命名为梯度(当一个点确定后,梯度方向是确定的),也就是说明了为什么梯度方向是函数变化率最大的方向了!!!(因为本来就是把这个函数变化最大的方向命名为梯度)


我的理解是,本来梯度就不是横空出世的,当我们有了这个需求(要求一个方向,此方向函数值变化最大),得到了一个方向,然后这个方向有了意义,我们给了它一个名称,叫做梯度(纯个人理解~希望对大家理解有帮助)欢迎提出问题交流~


作者简介:哈尔滨工业大学SCIR实验室推免生,辽宁省优秀毕业生.研究方向为自然语言处理.大学担任高等数学,线代等课程学生教员.本科期间获得俩次国家奖学金.竞赛方面获:美国数学建模竞赛国际一等奖.全国数学建模竞赛全国二等奖,辽宁省数学建模竞赛一等奖,山东省ACM-ICPC程序设计竞赛银奖。

往期经典文章回顾


  1. 高等数学、线性代数、概率论与数理统计、几何学这些知识可以用来干什么?主要应用有哪些?

  2. 线性代数的本质--对线性空间、向量和矩阵的直觉描述

  3. 理解矩阵背后的现实意义

  4. 数学系和物理系学生有什么差别?

  5. 线性代数的本质

  6. Leibniz 如何想出微积分?(三)

  7. PCA的数学原理

  8. 零除以零在数学中有意义吗?

  9. 算法|人人都该了解的十大算法

  10. 对傅里叶级数的理解