《为什么梯度的负方向是损失函数下降最快的方向》

  之前从来没有考虑过这个问题如何证明,因为函数某点处的梯度作为一个向量它自身就是指向着某点处变化最大的方向的,所以梯度的负方向肯定是下降最快的方向,但是怎么从理论上给予给力的证明呢,这篇博客来讨论下这个问题。

Key Words:梯度下降、优化损失函数、负方向下降最快推导

Beijing, 2020

Agile Pioneer  

优化问题

  • 1、损失函数为:L(θ)L(\theta)L(θ)
  • 2、优化目标为:θ∗=arg min⁡θL(θ)\theta^* = \argmin_\theta L(\theta)θ∗=θargmin​L(θ)
  • 3、优化方法为:gradient descent
  • 4、我们通过迭代来更新参数,每次更新的参数θ\thetaθ都使得L(θ)L(\theta)L(θ)更小
    • L(θ0)>L(θ1)>L(θ2)>...L(\theta^0) > L(\theta^1) > L(\theta^2) > ...L(θ0)>L(θ1)>L(θ2)>...

  下面的ppt是来自李宏毅老师的ppt课件,直观的反映了通过梯度下降法来求解使得损失函数最小的参数θ1,θ2\theta^1,\theta^2θ1,θ2。下图中的每个点表示θ1,θ2\theta^1,\theta^2θ1,θ2的坐标,对应的等高线的数值是损失函数L(θ1,θ2)L(\theta^1,\theta^2)L(θ1,θ2)的函数值,目的是为了让该函数向最小的地方优化。红色的圆圈是每次更新的范围,我们在这个范围中选取能让损失函数最小的方向来更新参数。

图1

Taylor级数

Taylor展开式近似函数的理解

  不是对所有的函数的任意值的泰勒展开式都能够很好的逼近原始函数的,因为需要考虑到 收敛半径 的问题,x的取值半径过大就可能导致近似值上下波动。所以理论上我们使用泰勒级数对一个函数逼近的时候x的取值半径尽量的小,这样不需要太多高阶项参与的时候就有很好的近似效果。

   用几个泰勒级数在0点处近似函数的情形来理解泰勒级数,也就麦克劳林展开式。对exe^xex来说,明显在距离0越远的地方,有高阶项的加入就会对函数贴合的更好。

图2 图3

   对sin(x)sin(x)sin(x)来说,同样在距离0越远的地方,有高阶项的加入就会对函数贴合的更好。但这是由于收敛半径所决定的,如果x的取值范围超过收敛半径就会出现上下波动的情况,所以级数的敛散性判定在多项式近似的过程中很重要

图4 图5

推导

  二阶的泰勒级数展开式如下:

f(x,y)=f(x0,y0)+∂f(x0,y0)∂x(x−x0)+∂f(x0,y0)∂y(y−y0)+...+1n!(∂f(x0,y0)∂x(x−x0)+∂f(x0,y0)∂y(y−y0))n...+onf(x,y) = f(x_0, y_0) + \frac{\partial{f(x_0, y_0)}}{\partial x}(x-x_0) + \frac{\partial{f(x_0, y_0)}}{\partial y}(y - y_0) +... + \frac{1}{n!}( \frac{\partial{f(x_0, y_0)}}{\partial{x}}(x - x_0) + \frac{\partial{f(x_0, y_0)}}{\partial{y}}(y - y_0) )^n... + o^nf(x,y)=f(x0​,y0​)+∂x∂f(x0​,y0​)​(x−x0​)+∂y∂f(x0​,y0​)​(y−y0​)+...+n!1​(∂x∂f(x0​,y0​)​(x−x0​)+∂y∂f(x0​,y0​)​(y−y0​))n...+on

  就像上面理解的那样,当xxx和x0x_0x0​足够接近的时候就有:

f(x,y)≈f(x0,y0)+∂f(x0,y0)∂x(x−x0)+∂f(x0,y0)∂y(y−y0)f(x,y) \approx f(x_0, y_0) + \frac{\partial f(x_0, y_0)}{\partial{x}}(x - x_0) + \frac{\partial f(x_0, y_0)}{\partial{y}}(y - y_0)f(x,y)≈f(x0​,y0​)+∂x∂f(x0​,y0​)​(x−x0​)+∂y∂f(x0​,y0​)​(y−y0​)

   基于上面的理解,我们继续之前的优化问题,如下图所示,假设(a,b)点是我们参数当前的取值,那么我们可以对该点处进行泰勒展开,这里我们只保留一次项就可以了,因为理论上我们认为红色的圈是非常小的,所以保留一次项就足以在(a,b)对函数进行近似了。

图6

   显然这个红色的圈就是学习率,如果学习率过大,那么梯度下降法就会受到影响,考虑问题:为什么学习率过大会导致梯度下降法不work其原理是一样的。仍旧是对泰勒展开式的理解,因为梯度下降法对x的取值半径是有要求的。

图7

   接下来开始推导为什么梯度的负方向是损失函数下降最快的方向,在降低损失函数的时候,我们可以先不考虑常数项s,只考虑向量 (Δθ1,Δθ2)(\Delta{\theta_1}, \Delta{\theta_2})(Δθ1​,Δθ2​)与梯度向量u,v{u, v}u,v,那么此时的L(θ1,θ2)L(\theta_1, \theta_2)L(θ1​,θ2​)就是两个向量的内积的形式。两个向量的内积可以理解为,一个向量在另一个向量上的投影,具体的计算方法就是两个向量的模长乘以余弦夹角。两个向量的夹角 cosθcos \thetacosθ 的取值越小,那么L(θ1,θ2)L(\theta_1, \theta_2)L(θ1​,θ2​)的值就越小,所以 cosθ=−1cos \theta = -1cosθ=−1时最小,也正是梯度的反方向。

图8

总结

  1. 对损失函数进行泰勒展开,只到一阶导数项。
  2. 对参数的搜索圆圈加以限制。
  3. 构建梯度与变化量间的内积形式,加以证明。
  4. 考虑问题:为什么学习率过大会导致梯度下降法不work?答案尽在其中。

参考

https://blog.csdn.net/qq_37213964/article/details/89476075
https://zhuanlan.zhihu.com/p/43506482
https://www.zhihu.com/question/21149770
https://baijiahao.baidu.com/s?id=1626714973748256700&wfr=spider&for=pc

梯度的负方向是损失函数下降最快的方向相关推荐

  1. 【直观理解】为什么梯度的负方向是局部下降最快的方向?

    推荐阅读时间:8min~15min 主要内容: 为什么梯度的负方向是局部下降最快的方向? 刚接触梯度下降这个概念的时候,是在学习机器学习算法的时候,很多训练算法用的就是梯度下降,然后资料和老师们也说朝 ...

  2. 在梯度下降法中,为什么梯度的负方向是函数下降最快的方向?

    1.问题描述 第一次接触这个问题是在大一暑假的小学期项目上,我们组的课题是一个优化问题,其中一个小问题就是证明为什么梯度的负方向是函数下降的最快方向.(全程用法语写的论文233)当时没有多大感触,后来 ...

  3. [深度学习]为什么梯度反方向是函数值下降最快的方向?

    为什么梯度反方向是函数值下降最快的方向 1. 版本一用泰勒公式展开式解释 1.1. 什么是梯度? 1.2 梯度下降算法 1.3 一阶泰勒展开式 1.4 梯度下降数学原理 1.5总结 2.版本二用方向导 ...

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

    转载自  为什么梯度反方向是函数下降最快的方向 为什么梯度反方向是函数下降最快的方向? 刚接触梯度下降这个概念的时候,是在学习机器学习算法的时候,很多训练算法用的就是梯度下降,然后资料和老师们也说朝着 ...

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

    提到梯度反方向,就不得不提到梯度 提到梯度,就不得不提到方向导数 提到方向导数,就不得不提到偏导数 提到偏导数,就不得不提到导数 其实上面的话,看似累赘且啰嗦,但是如果想真正理解提到方向的学习路线.对 ...

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

    红色石头的个人网站:redstonewill.com 什么是梯度? 对于梯度下降算法(Gradient Descent Algorithm),我们都已经很熟悉了.无论是在线性回归(Linear Reg ...

  7. 为什么说梯度的反方向是函数下降最快的方向

        梯度在机器学习和深度学习中是一个高频词汇,弄懂梯度的概念对梯度下降,反向传播的理解有很大帮助.这里我根据个人理解,对梯度的反方向是函数下降最快的方向这一观点进行解释.限于作者水平,难免有错误之 ...

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

    很多机器学习的训练算法都是利用梯度下降,朝着梯度的反方向变动,函数值下降最快. 导数 导数可以表示函数曲线上的切线斜率. 除了切线的斜率,导数还表示函数在该点的变化率. 导数代表了在自变量变化趋于无穷 ...

  9. 梯度下降法中为什么梯度的反方向是函数下降最快的方向?

    梯度下降法中为什么梯度的反方向是函数下降最快的方向? 梯度是个向量,函数沿梯度方向具有最大的变化率.是因为函数在这个方向具有最大的变化率,所以冠以梯度这一概念,所以要搞清楚的是,怎么在无数个方向导数中 ...

最新文章

  1. 深入理解 C 指针阅读笔记 -- 第四章
  2. 安卓安装mysql数据库文件_android安装mysql数据库
  3. 数据库视频总结一(概述)
  4. 三方协议接收节点不存在_【花开法务】没有保密协议是否意味着员工不存在保密义务?...
  5. org.apache.commons.lang.StringUtils中常用的方法
  6. 【bzoj 1102】[POI2007]山峰和山谷Grz(BFS)
  7. 【1stopt】批处理拟合
  8. 怎么让放大的图片变清晰?
  9. 高通modem命名及对应芯片
  10. 485通讯问题及解决调试方案提炼
  11. 常用crc查表法_请教查表法计算CRC的原理
  12. 一分钟了解“副词、系动词、情态动词、实意动词的先后位置关系”
  13. 机器学习----决策树(一)
  14. 详解JVM之双亲委派机制
  15. BZOJ 4544: 椭圆上的整点
  16. 好玩的CMD几个命令
  17. 无线AP与AC以及STA的区别
  18. 程序员求职攻略(《程序员面试笔试宝典》)之自己的强项或是研究方向与中意的工作岗位不一致怎么办?...
  19. Excel表格左上角+绿色小标倒三角----
  20. 小学三年级计算机学什么时候,我小学文化30岁,准备去学电脑办公软件,要多久才能学会?...

热门文章

  1. java匿名类_Java匿名类
  2. Java将双精度转换为字符串
  3. Android Material Components – MaterialAlertDialog
  4. Eclipse安装SVN
  5. Linux平台代码覆盖率测试工具GCOV简介
  6. 苏宁:我们开发百度小程序遇到的那些“坑”
  7. 硬纪元AI峰会前瞻:线下大数据驱动下的新零售,目标是精准营销
  8. input:hidden的作用
  9. 炒股、投资免于恐惧的思考
  10. Linux中/etc/init.d