本打算把梯度放在神经网络来说,学习机器学习实战时发现用到梯度降低最优算法,因此就把这个知识点深刻讲一下,等后面实战到神经网络时,直接复制这里的,此次讲解会深刻讲解,简明易懂是目的,虽然网上都有各类画图说明,可是仍是不容易理解,本讲解必定会让你们理解的,讲解主要从问题出发,从简单的内容开始,这须要你对导数、向量、多远微分有点了解,进入正题:算法
若是有基础的能够从下面的泰勒级数阅读:
想知道前因后果的建议仔细阅读。网络
什么是梯度?为何梯度方向就是函数上升最快的方向?又为何有梯度降低的说法?他们有什么联系?机器学习
什么是梯度?函数
讲梯度的定义以前,先说明一下梯度他不是一个实数,他是一个向量即有方向有大小。这个向量有什么特色呢?这里以二元函数为主讲解,先给出公式:学习
设一个多元函数为,在某点(,)的梯度为这点的偏导即:优化
其中是函数在这一点的梯度符号,是一个总体,而、是函数在 在( ) 的偏导数。.net
看到这里你们确定是晕晕的,别急咱们慢慢往下看,如今问题来了,为何在多元函数中某点的梯度就是该函数在这一点的偏导数呢?为何不是二阶偏导数不是其余而是一阶偏导数呢?为何会这样呢?基础很差的同窗可能还会问什么是偏导数呢?什么是向量呢?上面这个定义,你们看了下面理解之后再过来看就懂了。blog
你们还记得什么是向量吗?怎么定义的?数学
在平面直角坐标系中,分别取与x轴、y轴方向相同的两个单位向量i,j做为一组基底。 为平面直角坐标系内的任意向量,以坐标原点O为起点做向量 。由平面向量基本定理可知,有且只有一对实数(x,y),使得 ,所以把实数对(x,y) 叫作向量 的坐标,记做 。这就是向量 的坐标表示。三维的也是这样表示的。基础
那么这样你们就能理解向量是可使用坐标表示的,同时解释了他是一个向量的表示,虽然没有箭头,可是他也是向量呀,并且就是梯度,如今你们应该能够理解为何说他是一个向量,到这里咱们还须要一点矩阵方面的知识,例如矩阵方面的向量什么?这里的向量和矩阵的向量有所不一样,你们须要区别开,由于应用不一样,全部定义有点不一样可是具备相同的性质即有大小有方向。后面会发现就是经过向量把他们的关系创建起来的。
矩阵:矩阵你们都知道,矩阵的向量默认为列向量即一列为一组向量(这点特别重要,你们务必留心,这关系后面的梯度证实的理解),矩阵中的向量有什么性质呢?在这里只提到用到的性质,下降难度,即向量的范数(在空间向量中称为模),以及两个向量的內积。
向量的內积:
设二维空间内有两个向量 和 ,定义它们的数量积(又叫内积、点积)为如下实数:
更通常地,n维向量的内积定义以下: [1]
几何定义
设二维空间内有两个向量 和 , 和 表示向量a和b的大小,它们的夹角为 ,则内积定义为如下实数: 、
內积的物理意义就是b向量在a向量的投影的乘积或者说a向量在b向量投影的乘积,他们是同样的。
该定义只对二维和三维空间有效。
此时你们看到了內积的定义,知道內积计算结果是一个数,不是向量,他的物理意义就是既然是一个数那就存在最大值和最小值,再看看这个公式:,由于的范围为[-1,1],因此內积的范围为[-, ],所以存在最大值和最小值,当取180°时最下,当取0时最大,由此咱们可知只要这两个向量共线就会取极值,若是共线同向则取极大值,反之取极小值,所谓共线就是两线平行的意思。 这个概念很重要,你们务必理解了,这将直接关系可否理解梯度。下面介绍矩阵这方面内容。
矩阵向量:
从这里你们能够看到,矩阵中向量的內积定义和平面向量的定义很像,只是他们的表达不同吧了,若是把平面中a向量和b向量写成列的形式就同样了。只能说平面向量是矩阵向量的一种特殊状况,你们能够这么理解,
由于矩阵向量是列向量,而矩阵的运算法则是行乘以列,所以矩阵向量求內积须要转置一下才能求出是一个数,
到这里你们知道了矩阵的向量计算內积公式了,总结一下:
设矩阵向量为、,则他们的內积为,既然是內积,那它也有最大值和最小值,和平面理解同样,两向量同向,值最大,反向值最小(这个概念很重要的,理解透什么是內积,切记矩阵向量內积的形式),这样你们能够理解內积了,至于梯度,你们别急,基础理解了,梯度天然而然的就理解了。下面是导数方面的内容。
什么是导数?什么是偏导数?他们有什么物理意义?梯度和导数、向量有什么关系?
你们都知道导数是表明函数(曲线)的斜率,是描述函数(曲线)变化快慢的量,同时曲线的极大值点也可使用导数来判断,即极大值点的导数为0,此时斜率为零(如今不深刻讨论,后面会经过泰勒级数进行讨论,一阶导数为零的点不必定是极值点多是驻点,这时须要根据二阶导数判断),那么导数就为咱们求解函数的极值提供了可能,固然咱们如今说的导数是一元导数即,只具备一个变量,所以很容易求导,那么什么是偏导数呢?咱们知道导数是指一元函数的,他的物理意义就是衡量函数变化快慢的量,例如一天中,温度随时间变化的函数就是一元函数,而多元函数是指形如、、等的函数,此时函数的自变量有多个,在这里以二元函数为例说明,咱们知道,一旦变量增多,意味着影响因素增长,例如一天的气温不只和时间有关仍是天气有关,还和地理位置有关等,可是咱们就想知道,在这多种因素的影响下,我就想知道哪一个因素对他影响最大,怎么办呢?所谓的影响最大就是这个因素对气温的影响最大,即求气温的最值,这时候你们可能会说求导啊,对呀求导最好了,可是这里有不少变量啊,例如,我想求x对f的影响,怎么办呢?初中咱们都学过一个实验方法就是控制变量法,即当我须要改变一个量时,让其余量不变的状况下去改变这个量而后观察对函数的影响,那么咱们 多元求导可不能够也使用这样的方法呢?当我求x对f的影响时,我把y当作常量来处理,而后对x求导便可,固然能够啊,只是这时候的求导不在是导数了,由于多元函数是对一个因素也就是x进行求导,所以称为偏导,这下你们理解为何有称为偏导了吧。
总结一下:偏导数是指在多元函数的状况下,对其每一个变量进行求导,求导时,把其余变量看作常量进行处理,物理意义就是查看这一个变量在其余状况不变的状况下对函数的影响程度。
那什么是梯度呢?和上面又有什么关系呢?
再说梯度以前仍是要先说一下泰勒级数,为何要说这个泰勒级数,由于证实梯度方向老是指向函数最大增长方向的一个关键支撑。
泰勒级数:
数学中,泰勒公式是一个用函数在某点的信息描述其附近取值的公式。若是函数足够平滑的话,在已知函数在某一点的各阶导数值的状况之下,泰勒公式能够用这些导数值作系数构建一个多项式来近似函数在这一点的邻域中的值,即泰勒级数在某一邻域内去无限接近该函数的一个公式。详解泰勒级数可参考这篇文章
这里引入泰勒级数的目的是为了证实极值点的导数问题,高阶函数通常要使用到矩阵论的海森矩阵相关知识,这里不引入那么深的概念,可是基本的矩阵知识仍是须要的。
咱们只保留前三项:
上面提到了一阶导数是极值点的 。如今解释为何会是这样,上面的是指很小的步长,当时说明x向右走,当时说明x向左走,学太高等数学极限的应该有这个概念,如今咱们经过泰勒级数只考虑上面公式的前两项来解释为何,极值点处的一阶导数为0
假如这一点的函数值为极值点,能够是极小值或者极大值,这里以极大值点为讲解内容 :
由于此时的为极大值,不管仍是,那么的,那么上面的公式想要成立,只能让
才能成立,极小值也是这样证实的,无需画图,从泰勒级数就能够说明极值点的一阶导数必定为0,那么一阶导数为零的点不必定是极值点怎么证实呢?使用三项便可证实,下面证实;
一阶导数为零不必定是极值点:
若是,那么公式可写成这样:
从上式能够看到若是在时假如为极大值,理应说不管仍是,,可是此时若是 ,则,因此,即证的不是极大值点,那如何才能判断是极值点呢?
此时须要借助二阶导数,上面若是则为极大值点,因此才有一阶导数等于零,二阶导数小于零为极大值点,若是二阶导数大于零则为极小值点。若是二阶导数等于0怎么办?那就继续判断三阶导数就能够了。
这是在标量的状况下的极值问题,若是x是向量怎么处理呢?
仍是引入泰勒公式就能够了。只是不同的是都是向量了:
咱们知道机器学习中的变量都不少,通常都使用向量进行表示(此时为列向量)且为多元函数,求导和标量同样的,只是如今是求偏导了。
上面的公式、、、都是向量,例如一阶偏导应该是这样的:
由于是向量,因此有大小有方向了,你们注意到了没有此时的为行向量了,由于转置了,所以和相乘是內积,此时咱们也只看前两项即:
如今重点来了啊,为了每次x前进的方向是使函数增加最快,应该怎样选取前进方向的步伐(向量),才能保证呢?好,你们能看到直接影响着,而决定的值是由、决定,然而是肯定的,因此使其最大便可,而该式就是向量的內积,根据上面讲了半天的向量內积可知,只要使取的向量和共线就能够了,若是共线同向则取最大方向,反向取最小小方向。所以直接使=便可,即保证方向共线就能够了,至于值得大小能够乘一个标量,如今咱们找到了这个向量,而这个向量就是多元函数的一阶偏导数,这时候就定义,多元函数的一阶偏导数为梯度,符号为,数学上的梯度就是这么来的,此时就能够写成这样了:
好,到这里咱们知道了什么是梯度,梯度怎么来的,总结来讲梯度是为了寻找极值而生的,并且是极大值,所以梯度老是指向函数增加最快的方向,这就是本质缘由了,可是咱们常听的是梯度降低,改变梯度方向就是降低最快的,共线反向取极小值就是这个道理了。
该式更能反映事实。你们细细品味,梯度的知识点难在理解上,梯度不是标量,他是向量,有方向有大小,通常咱们不是很关心大小,由于能够经过标量放大或者缩小,重要的是方向问题,由于只要肯定增加最快的方向,才能找到极值点,这也是不少算法使用梯度优化算法的缘由,固然是梯度的反方向,
到如今基本上就结束了,可是我仍是有些知识须要交代,矩阵方面的没给你们深刻讲,可能上面的证实仍是不够严谨,可是证实思路已经出来了,理解梯度已经够用了,若是感兴趣,建议你们有时间看看张贤达的矩阵论,里面有更严谨的数学推到 ,在这里但愿给你们一种抛砖引玉的感受,矩阵论对这方面讲解的很透彻,主要牵扯到二次型,正定、半正定等知识。有时候感受数学没什么用,其实用处很大的,须要咱们学习者内化或者理解其物理意义,搞明白前因后果,方能正确使用数学这把利剑,梯度到此结束,有问题欢迎交流。————————————————版权声明:本文为CSDN博主「zsffuture」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处连接及本声明。原文连接:https://blog.csdn.net/weixin_42398658/article/details/83017995