为什么局部下降最快的方向就是梯度的负方向?

https://blog.csdn.net/red_stone1/article/details/80212814
什么是梯度?
对于梯度下降算法(Gradient Descent Algorithm),我们都已经很熟悉了。无论是在线性回归(Linear Regression)、逻辑回归(Logistic Regression)还是神经网络(Neural Network)等等,都会用到梯度下降算法。我们先来看一下梯度下降算法的直观解释:

假设我们位于黄山的某个山腰处,山势连绵不绝,不知道怎么下山。于是决定走一步算一步,也就是每次沿着当前位置最陡峭最易下山的方向前进一小步,然后继续沿下一个位置最陡方向前进一小步。这样一步一步走下去,一直走到觉得我们已经到了山脚。这里的下山最陡的方向就是梯度的负方向。

首先理解什么是梯度?通俗来说,梯度就是表示某一函数在该点处的方向导数沿着该方向取得最大值,即函数在当前位置的导数。

∇=df(θ)dθ
∇=df(θ)dθ
上式中,θθ是自变量,f(θ)f(θ)是关于θθ的函数,θθ表示梯度。

梯度下降算法
如果函数f(θ)f(θ)是凸函数,那么就可以使用梯度下降算法进行优化。梯度下降算法的公式我们已经很熟悉了:

θ=θ0−η⋅∇f(θ0)
θ=θ0−η⋅∇f(θ0)
其中,θ0θ0是自变量参数,即下山位置坐标,ηη是学习因子,即下山每次前进的一小步(步进长度),θθ是更新后的θ0θ0,即下山移动一小步之后的位置。

梯度下降算法的公式非常简单!但是”沿着梯度的反方向(坡度最陡)“是我们日常经验得到的,其本质的原因到底是什么呢?为什么局部下降最快的方向就是梯度的负方向呢?也许很多朋友还不太清楚。没关系,接下来我将以通俗的语言来详细解释梯度下降算法公式的数学推导过程。

一阶泰勒展开式
这里需要一点数学基础,对泰勒展开式有些了解。简单地来说,泰勒展开式利用的就是函数的局部线性近似这个概念。我们以一阶泰勒展开式为例:

f(θ)≈f(θ0)+(θ−θ0)⋅∇f(θ0)
f(θ)≈f(θ0)+(θ−θ0)⋅∇f(θ0)
不懂上面的公式?没有关系。我用下面这张图来解释。

凸函数f(θ)f(θ)的某一小段[θ0,θ][θ0,θ]由上图黑色曲线表示,可以利用线性近似的思想求出f(θ)f(θ)的值,如上图红色直线。该直线的斜率等于f(θ)f(θ)在θ0θ0处的导数。则根据直线方程,很容易得到f(θ)f(θ)的近似表达式为:

f(θ)≈f(θ0)+(θ−θ0)⋅∇f(θ0)
f(θ)≈f(θ0)+(θ−θ0)⋅∇f(θ0)
这就是一阶泰勒展开式的推导过程,主要利用的数学思想就是曲线函数的线性拟合近似。

梯度下降数学原理
知道了一阶泰勒展开式之后,接下来就是重点了!我们来看一下梯度下降算法是如何推导的。

先写出一阶泰勒展开式的表达式:

f(θ)≈f(θ0)+(θ−θ0)⋅∇f(θ0)
f(θ)≈f(θ0)+(θ−θ0)⋅∇f(θ0)
其中,θ−θ0θ−θ0是微小矢量,它的大小就是我们之前讲的步进长度ηη,类比于下山过程中每次前进的一小步,ηη为标量,而θ−θ0θ−θ0的单位向量用vv表示。则θ−θ0θ−θ0可表示为:

θ−θ0=ηv
θ−θ0=ηv
特别需要注意的是,θ−θ0θ−θ0不能太大,因为太大的话,线性近似就不够准确,一阶泰勒近似也不成立了。替换之后,f(θ)f(θ)的表达式为:

f(θ)≈f(θ0)+ηv⋅∇f(θ0)
f(θ)≈f(θ0)+ηv⋅∇f(θ0)
重点来了,局部下降的目的是希望每次θθ更新,都能让函数值f(θ)f(θ)变小。也就是说,上式中,我们希望f(θ)<f(θ0)f(θ)<f(θ0)。则有:

f(θ)−f(θ0)≈ηv⋅∇f(θ0)<0
f(θ)−f(θ0)≈ηv⋅∇f(θ0)<0
因为ηη为标量,且一般设定为正值,所以可以忽略,不等式变成了:

v⋅∇f(θ0)<0
v⋅∇f(θ0)<0
上面这个不等式非常重要!vv和∇f(θ0)∇f(θ0)都是向量,∇f(θ0)∇f(θ0)是当前位置的梯度方向,vv表示下一步前进的单位向量,是需要我们求解的,有了它,就能根据θ−θ0=ηvθ−θ0=ηv确定θθ值了。

想要两个向量的乘积小于零,我们先来看一下两个向量乘积包含哪几种情况:

AA和BB均为向量,αα为两个向量之间的夹角。AA和BB的乘积为:

A⋅B=||A||⋅||B||⋅cos(α)
A⋅B=||A||⋅||B||⋅cos(α)
||A||||A||和||B||||B||均为标量,在||A||||A||和||B||||B||确定的情况下,只要cos(α)=−1cos(α)=−1,即AA和BB完全反向,就能让AA和BB的向量乘积最小(负最大值)。

顾名思义,当vv与∇f(θ0)∇f(θ0)互为反向,即vv为当前梯度方向的负方向的时候,能让v⋅∇f(θ0)v⋅∇f(θ0)最大程度地小,也就保证了vv的方向是局部下降最快的方向。

知道vv是∇f(θ0)∇f(θ0)的反方向后,可直接得到:

v=−∇f(θ0)||∇f(θ0)||
v=−∇f(θ0)||∇f(θ0)||
之所以要除以∇f(θ0)∇f(θ0)的模||∇f(θ0)||||∇f(θ0)||,是因为vv是单位向量。

求出最优解vv之后,带入到θ−θ0=ηvθ−θ0=ηv中,得:

θ=θ0−η∇f(θ0)||∇f(θ0)||
θ=θ0−η∇f(θ0)||∇f(θ0)||
一般地,因为||∇f(θ0)||||∇f(θ0)||是标量,可以并入到步进因子ηη中,即简化为:

θ=θ0−η∇f(θ0)
θ=θ0−η∇f(θ0)
这样,我们就推导得到了梯度下降算法中θθ的更新表达式。

总结
我们通过一阶泰勒展开式,利用线性近似和向量相乘最小化的思想搞懂了梯度下降算法的数学原理。也许你之前很熟悉梯度下降算法,但也许对它的推导过程并不清楚。看了本文,你是否有所收获呢?

更多机器学习资源,请关注公众号:AI有道(ID:redstonewill
-

原文地址:https://www.cnblogs.com/fpzs/p/10528541.html

时间: 2024-07-29 15:07:11

为什么局部下降最快的方向就是梯度的负方向?的相关文章

反向梯度方向是函数值局部下降最快的方向

在SLAM中,机器学习中等关于梯度下降的应用还是蛮多的,但是关于"反向梯度方向是函数值局部下降最快的方向"等概念的解释,不是特别清晰,下面附上自己的一些理解. 名词解析: 梯度: 梯度是一个向量,表示某一函数在该点处的方向导数沿着该方向取得最大值,即函数在该点处沿着梯度的方向变化最快. 设在平面区域D上具有一阶连续偏导数,为一个单位向量,如果下列的极限值存在 此方向导数记为 则称这个极限值是沿着方向的方向导数,那么随着的不同,我们可以求出任意方向的方向导数. 简化计算如下: 设, 那么

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

转载:知乎专栏忆臻https://zhuanlan.zhihu.com/p/24913912 刚接触梯度下降这个概念的时候,是在学习机器学习算法的时候,很多训练算法用的就是梯度下降,然后资料和老师们也说朝着梯度的反方向变动,函数值下降最快,但是究其原因的时候,很多人都表达不清楚.所以我整理出自己的理解,从方向导数这个角度把这个结论证明出来,让我们知其然也知其所以然~ 下面我一开始不提梯度的概念,完全根据自己的理解进行下文的梳理,一步一步推出梯度的来历: 导数 导数的几何意义可能很多人都比较熟悉:

算法工程师&lt;数学题/智力题&gt;

<数学题/智力题> 1.如果一个女生说,她集齐了十二个星座的前男友,我们应该如何估计她前男友的数量? https://blog.csdn.net/FnqTyr45/article/details/80248927 2.如何理解矩阵的秩? https://www.zhihu.com/question/21605094 3.矩阵低秩的意义? https://www.zhihu.com/question/28630628 4.如何理解矩阵特征值? https://www.zhihu.com/ques

线性回归Linear Regression

Hypothesis function 假设我们有一组房子面积和房价之间的关系的数据,并以面积作为横坐标,房价作为纵坐标把它画出来,有了这样的数据以后,假设给你一个房子的面积,要如何预测房子的价格呢? 一种很直观的方法是使用训练数据拟合出一条直线出来,在线性回归里我们称为Hypothesis function,这里只有一个特征值(即房价),所以Hypothesis function为$$h_{\theta} (x)=\theta_{0} x_{0} + \theta_{1} x_{1}$$其中$

线性回归、梯度下降 - Andrew Ng机器学习公开课笔记1.1

实例 首先举个样例.如果我们有一个二手房交易记录的数据集.已知房屋面积.卧室数量和房屋的交易价格,例如以下表: 假如有一个房子要卖,我们希望通过上表中的数据估算这个房子的价格. 这个问题就是典型的回归问题,这边文章主要讲回归中的线性回归问题. 线性回归(Linear Regression) 首先要明确什么是回归. 回归的目的是通过几个已知数据来预測还有一个数值型数据的目标值. 如果特征和结果满足线性关系,即满足一个计算公式h(x).这个公式的自变量就是已知的数据x,函数值h(x)就是要预測的目标

机器学习中最小二乘与梯度下降发的区别

http://www.zhihu.com/question/20822481 知乎用户,非文, 非理 Spirit_Dongdong.Wildog.mt Practices 等人赞同 同意 @张子权 的说法, 稍微再补充一下. 看问题估计, 题主可能是在学 machine learning 的东西, 所以才会有此问题. 但正如其他人指出的, 其实两种方法并不太具有可比性. 不过我当时在学的时候也有类似的问题. 当时我的问题是, 最小二乘法的矩阵解法和梯度下降法的区别在哪里? 我估摸着题主可能是想

(2)Deep Learning之线性单元和梯度下降

往期回顾 在上一篇文章中,我们已经学会了编写一个简单的感知器,并用它来实现一个线性分类器.你应该还记得用来训练感知器的『感知器规则』.然而,我们并没有关心这个规则是怎么得到的.本文通过介绍另外一种『感知器』,也就是『线性单元』,来说明关于机器学习一些基本的概念,比如模型.目标函数.优化算法等等.这些概念对于所有的机器学习算法来说都是通用的,掌握了这些概念,就掌握了机器学习的基本套路. 线性单元是什么? 感知器有一个问题,当面对的数据集不是线性可分的时候,『感知器规则』可能无法收敛,这意味着我们永

梯度下降讲解(举例场景+数学分析)

本文将从一个下山的场景开始,先提出梯度下降算法的基本思想,进而从数学上解释梯度下降算法的原理,最后实现一个简单的梯度下降算法的实例! 梯度下降的场景假设 梯度下降法的基本思想可以类比为一个下山的过程.假设这样一个场景:一个人被困在山上,需要从山上下来(找到山的最低点,也就是山谷).但此时山上的浓雾很大,导致可视度很低.因此,下山的路径就无法确定,他必须利用自己周围的信息去找到下山的路径.这个时候,他就可以利用梯度下降算法来帮助自己下山.具体来说就是,以他当前的所处的位置为基准,寻找这个位置最陡峭

讲透机器学习中的梯度下降

本文始发于个人公众号:TechFlow,原创不易,求个关注 在之前的文章当中,我们一起推导了线性回归的公式,今天我们继续来学习上次没有结束的内容. 上次我们推导完了公式的时候,曾经说过由于有许多的问题,比如最主要的复杂度问题.随着样本和特征数量的增大,通过公式求解的时间会急剧增大,并且如果特征为空,还会出现公式无法计算的情况.所以和直接公式求解相比,实际当中更倾向于使用另外一种方法来代替,它就是今天这篇文章的主角--梯度下降法. 梯度下降法可以说是机器学习和深度学习当中最重要的方法,可以说是没有