1. 前言:

细微之处,彰显本质;不求甚解,难以理解。

一直以来,我都认为,梯度下降法就是最速下降法,反之亦然,老师是这么叫的,百度百科上是这么写的,wiki百科也是这么说的,这么说,必然会导致大家认为,梯度的反方向就是下降最快的方向,然而最近在读Stephen Boyd 的凸优化的书,才发现事实并非如此,梯度下降和最速下降并不相同,梯度方向也不一定总是下降最快的方向。

2. 梯度下降法

梯度下降法是一种优化方法,用来求解目标函数的极小值。梯度下降法认为梯度的反方向就是下降最快的方向,所以每次将变量沿着梯度的反方向移动一定距离,目标函数便会逐渐减小,最终达到最小。


所以如果x-x_0和∇f(x)的方向相反,那么相同距离的移动,f(x)的减小最大。

所以梯度下降法的核心步骤就是 
其中,a是步长,可以通过精准线性查找或非精准线性查找确定。

3. 最速下降法

最速下降法在选取x的变化方向时与梯度下降法有细微的差别。 
 表示下降最快的方位方向(normalized sleepest descent direction)。

4. 差异

看到这里,可能觉得最速下降的方向和梯度下降法的方向并没有差别,都是移动单位步长,下降最多的方向。而差别就在单位步长这里,如果中‖v‖是欧式范数,那么最速下降法就是梯度下降法,也就是说梯度下降法是最速下降法使用欧式范数的特殊情况。

5. 为什么会有不用欧式范数的情况

原因其实很简单,因为使用欧式范数的最速下降法(也就是梯度下降法)得到下降方向并非永远都是下降最快的方向。读到这里,你可能有些吃惊,可能会问,难道梯度的反方向是下降最快的方向吗?如果你有这样的疑问和思考,那么恭喜你,你对梯度有着一定的理解。 
然而实际情况是这样的:梯度是变化的,而梯度下降在一次迭代的过程中假设梯度是固定不变的,所谓的梯度方向只是起始点(xk)的梯度方向,并不一定是起始点和终点之间其他点的梯度方向,所以梯度方向不一定是下降最快的方向,所以为了得到更快的下降方向,我们有时并不适用欧式范数。 
 
图片来自Stephen Boyd的凸优化。

6. 什么时候会不用欧式范数?

我们知道梯度是函数对每个因子求偏导得到的列向量,表示着函数的变化趋势, 
(如果你是一名程序员,你也可选择从0开始编号),向量中元素的相对大小决定了梯度的方向。我们前面提到,梯度下降的方向不是最快的方向的原因正是由于梯度方向的变化,那的梯度的方向变化由什么来决定呢? 
提到梯度的变化,很自然的想到了函数的二阶导数,对于多变量函数,也就是函数的Hessian矩阵。 
H=

这里首先讨论一个简单的情况,就是f(x)的各个变量相互独立,此时Hessian矩阵是一个对角阵,

如果相差不多,也就是f(x)f(x)梯度在各个方向的变化基本一致,那么梯度方向基本不会发生变化,此时梯度下降法会得到很好的结果,想法如果如果相差很大,那么梯度方向变化就会较大,当然梯度下降的方向便不再是最好的方向。 

如果,Hessian矩阵不是对角阵,那么我们需要求出矩阵的特征值,最大特征值和最小的特征值之比(这个值叫做condition number)如果不大,则梯度下降法会有很好的效果。

6. 不用欧式范数用什么范数?

使用Hessian范数,牛顿法正是使用Hessian范数的最速下降法,所以牛顿法会比梯度下降法收敛更快! 
hessian 范数为 
,此处不再展开。 
(求解便会得到

梯度下降法和最速下降法区别相关推荐

  1. 梯度下降法和最速下降法的细微差别

    "所谓的梯度方向只是起始点(xk)的梯度方向,并不一定是起始点和终点之间其他点的梯度方向" 原文链接: 梯度下降法和最速下降法的细微差别

  2. 最小二乘法、梯度下降法和两者区别

    一.最小二乘法(最小平方法) 参考来源:一元线性回归模型与最小二乘法及其C++实现 http://blog.csdn.net/qll125596718/article/details/8248249 ...

  3. GBDT与xgb区别,以及梯度下降法和牛顿法的数学推导

    为什么要介绍梯度下降法和牛顿法那? 这里提及两个算法模型GBDT和XGBoost,两个都是boosting模型. GBDT和xgb的目标函数是不同的,同时针对其目标函数中的误差函数 L(θ) 的拟合方 ...

  4. 梯度下降算法_批梯度下降法,Minibatch梯度下降法和随机梯度下降法之间的区别...

    什么是梯度下降法? 梯度下降法是一种机器学习中常用的优化算法,用来找到一个函数(f)的参数(系数)的值,使成本函数(cost)最小. 当参数不能解析计算时(如使用线性代数),并且必须通过优化算法搜索时 ...

  5. 梯度下降法和随机梯度下降法

    1. 梯度 在微积分里面,对多元函数的参数求∂偏导数,把求得的各个参数的偏导数以向量的形式写出来,就是梯度.比如函数f(x,y), 分别对x,y求偏导数,求得的梯度向量就是(∂f/∂x, ∂f/∂y) ...

  6. 梯度下降法和牛顿法计算开根号

    梯度下降法和牛顿法计算开根号 本文将介绍如何不调包,只能使用加减乘除法实现对根号x的求解.主要介绍梯度下降和牛顿法者两种方法,并给出 C++ 实现. 梯度下降法 思路/步骤 转化问题,将 x \sqr ...

  7. 关于梯度下降法和牛顿法的数学推导

    作者:LogM 本文原载于 https://blog.csdn.net/qq_28739605/article/details/80862810,不允许转载~ 文章难免有错误之处,请在原文评论处指出~ ...

  8. 机器学习中梯度下降法和牛顿法的比较

    在机器学习的优化问题中,梯度下降法和牛顿法是常用的两种凸函数求极值的方法,他们都是为了求得目标函数的近似解.在逻辑斯蒂回归模型的参数求解中,一般用改良的梯度下降法,也可以用牛顿法.由于两种方法有些相似 ...

  9. 八、梯度下降法和拟牛顿法

    1.梯度 2.梯度上升和梯度下降 3.梯度下降算法详解 3.1 直观解释 3.2 梯度下降相关概念 3.3 梯度下降的矩阵描述 3.4 梯度下降的算法调优 4.梯度下降法大家族 5.梯度下降法和其他无 ...

最新文章

  1. weblogic管理1——创建 和 删除一个domain
  2. DevOps笔记-08:DevOps追求的根本目标:多快好省
  3. LeetCode OJ 113. Path Sum II
  4. 2021牛客OI赛前集训营-提高组(第五场)C-第K排列【dp】
  5. 前端日拱一卒D5——web安全基础
  6. Java中三层架构与MVC之间的显著区别
  7. 读《如何阅读一本书》的小感想及笔记
  8. duck typing
  9. Spring Cloud与Dubbo详细对比
  10. 仪表图形怎么用c语言写,科一仪表盘图标大全
  11. SpringBoot 优雅地对接口进行数据加解密
  12. 备份指南——Ghost前的系统配置大全(转)
  13. 如何将数据从旧PC传输到新Mac
  14. 【软件测试】黑盒测试方法小结
  15. 运营商造势 CP、SP发力手机游戏
  16. 55ide游戏引擎教程2:新建项目Hello World
  17. Tracert命令 路由跟踪数据包解析
  18. iOS 在 Xcode 中重命名项目名称
  19. 谷歌浏览器共存,一个用户可拥有多个版本谷歌浏览器
  20. mini车f和r的区别_MINI 是一种怎样的车?

热门文章

  1. SpringCloud学习笔记(十二)基于Hystrix解决雪崩效应
  2. C++:accumulate函数用法
  3. 【ChatGPT4】王老师零基础《NLP》(自然语言处理)第二课
  4. 在vue中使用鼠标事件@mousedown、@mouseenter等失效的解决办法,以及PC端长按实现
  5. hint ksql oracle_性能测试中发现oracle11g数据库每天22点,oralce进程CPU占用率突增
  6. 初级程序员最应避免的 7 大错误
  7. java二维数组的长度问题
  8. wire tox_Tox-rs的漫长旅程。 第1部分
  9. 0-8 Vue进阶属性(directives、mixins、extends)
  10. C++我记得应该是当初笔试面试常考的