梯度下降法

最优化问题是求解函数极值的问题,包括极大值和极小值。相信所有的读者对这个问题都不陌生,在初中时我们就学会了求解二次函数的极值(抛物线的顶点),高中时学习了幂函数,指数函数,对数函数,三角函数,反三角函数等各种类型的函数,求函数极值的题更是频频出现。这些方法都采用了各种各样的技巧,没有一个统一的方案。

真正的飞跃发生在大学时,微积分为我们求函数的极值提供了一个统一的思路:找函数的导数等于0的点,因为在极值点处,导数必定为0。这样,只要函数的可导的,我们就可以用这个万能的方法解决问题,幸运的是,在实际应用中我们遇到的函数基本上都是可导的。

在机器学习之类的实际应用中,我们一般将最优化问题统一表述为求解函数的极小值问题,即:
其中x称为优化变量,f称为目标函数。极大值问题可以转换成极小值问题来求解,只需要将目标函数加上负号即可:

有些时候会对优化变量x有约束,包括等式约束和不等式约束,它们定义了优化变量的可行域,即满足约束条件的点构成的集合。在这里我们先不考虑带约束条件的问题。

一个优化问题的全局极小值X∗X^*X∗是指对于可行域里所有的x,有:

即全局极小值点处的函数值不大于任意一点处的函数值。局部极小值X∗X^*X∗定义为存在一个δ\deltaδ邻域,对于在邻域内:

并且在可行域内的所有x,有:

即局部极小值点处的函数值比一个局部返回内所有点的函数值都小。在这里,我们的目标是找到全局极小值。不幸的是,有些函数可能有多个局部极小值点,因此即使找到了导数等于0的所有点,还需要比较这些点处的函数值。

导数与梯度

由于实际应用中一般都是多元函数,因此我们跳过一元函数,直接介绍多元函数的情况。梯度是导数对多元函数的推广,它是多元函数对各个自变量偏导数形成的向量。多元函数的梯度定义为:

「正定矩阵」和「半正定矩阵」

1 基本的定义

正定和半正定这两个词的英文分别是positive definite和positive semi-definite,其中,definite是一个形容词,表示“明确的、确定的”等意思。
初学线性代数的读者可能会被这两个词“唬住”,但正定矩阵和半正定矩阵的定义实际上是很简单的 (不考虑复数构成的矩阵):

【定义1】给定一个大小为n×nn\times nn×n的实对称矩阵AAA ,若对于任意长度为nnn的非零向量xxx,有xTAx>0x^TAx>0xTAx>0恒成立,则矩阵AAA是一个正定矩阵。

【定义2】给定一个大小为 [公式] 的实对称矩阵n×nn\times nn×n,若对于任意长度为AAA 的向量xxx,有 [公式] 恒成立,则矩阵xTAx≥0x^TAx \geq 0xTAx≥0是一个半正定矩阵。

根据正定矩阵和半正定矩阵的定义,我们也会发现:半正定矩阵包括了正定矩阵,与非负实数 (non-negative real number)和正实数 (positive real number)之间的关系很像。

从二次函数到正定/半正定矩阵

正定矩阵和半正定矩阵的直观解释

为什么协方差矩阵要是半正定的?

最速下降法

1 解决的问题

最速梯度下降法解决的问题是无约束优化问题,而所谓的无约束优化问题就是对目标函数的求解,没有任何的约束限制的优化问题,比如求下方最小值:minf(x)minf(x)minf(x)
其中的函数f:Rn→Rf: R^n\to Rf:Rn→R.
求解这类的问题可以分为两大类:一个是最优条件法和迭代法。
最优条件法是是指当函数存在解析形式,能够通过最优性条件求解出显式最优解。对于无约束最优化问题,如果f(x)在最优点x附近可微,那么x是局部极小点的必要条件为: [公式] 我们常常就是通过这个必要条件去求取可能的极小值点,再验证这些点是否真的是极小值点。当上式方程可以求解的时候,无约束最优化问题基本就解决了。
实际中,这个方程往往难以求解。这就引出了第二大类方法:迭代法。

2 最速梯度下降法

3 最速梯度下降法直观理解

第一步

迭代法的初始点选择。

第二步


第三步

这步在是在选取迭代方向,也就是从当前点迭代的方向。这里选取当前点的梯度负方向,为什么选择这个方向,是因为梯度的负方向是局部下降最快的方向,这里不详细证明,可以参考我以前的一个回答:为什么梯度反方向是函数值局部下降最快的方向?https://zhuanlan.zhihu.com/p/24913912

第四步


第四步也是非常重要的,因为在第三步我们虽然确定了迭代方向,并且知道这个方向是局部函数值下降最快的方向,但是还没有确定走的步长,如果选取的步长不合适,也是非常不可取的,下面会给出一个例子图,那么第四步的作用就是在确定迭代方向的前提上,确定在该方向上使得函数值最小的迭代步长。
下面给出迭代步长过大过小都不好的例子图:

从上图可以看出,选择一个合适的步长是非常最重要的,这直接决定我们的收敛速度。

四 最速梯度下降法实例

五 最速下降法的缺点

需要指出的是,某点的负梯度方向,通常只是在该点附近才具有这种最速下降的性质。
在一般情况下,当用最速下降法寻找极小点时,其搜索路径呈直角锯齿状(如下图),在开头 几步,目标函数下降较快;但在接近极小点时,收敛速度长久不理想了。特别适当目标函数的等值 线为比较扁平的椭圆时,收敛就更慢了。

因此,在实用中常用最速下降法和其他方法联合应用,在前期使用最速下降法,而在接近极小值点时,可改用收敛较快的其他方法。

六 最速下降法与梯度下降法的区别

准确来说,它们并不是完全等价。
对于梯度下降法,我们需要预先设定步长α。

https://zhuanlan.zhihu.com/p/32709034

梯度下降法、最速下降法相关推荐

  1. 最小二乘法、迭代优化、坐标轴下降法(Coordinate Descent, CD)、坐标下降和梯度下降对比、梯度下降法/最速下降法

    最小二乘法.迭代优化.坐标轴下降法(Coordinate Descent, CD).坐标下降和梯度下降对比.梯度下降法/最速下降法 目录

  2. 牛顿下降法和梯度下降法(最速下降法)的速度的比较

    "牛顿下降法和梯度下降法在机器学习和自适应滤波中的都很重要,本质上是为了寻找极值点的位置.但是收敛的速度不同. 本文中就两种方法来探究一下,哪种收敛方法速度快" 牛顿下降法的递推公 ...

  3. 最优化方法总结——梯度下降法、最速下降法、牛顿法、高斯牛顿法、LM法、拟牛顿法

    目录 1 最优化方法的结构 2 常用最优化方法对比分析 3 相关计算公式 1 最优化方法的结构 最优化问题的一般形式为: 其中为决策变量,是目标函数,为约束集或可行域.特别地,如果,则最优化问题成为无 ...

  4. 【数学与算法】步长一维搜索、梯度下降法、最速下降法、牛顿法

    更详细的推导,可以参考这篇博客:一维搜索.最速下降(梯度下降)与牛顿法(拟牛顿法) 1.求解最优步长的方法: f(x)f(x)f(x)可以理解为目标函数,损失函数.我们的目标是最小化这个损失函数,最小 ...

  5. 梯度下降法,最速下降法,牛顿法,Levenberg-Marquardt 修正,共轭方向法,共轭梯度法

    优化对象:凸函数 梯度下降法 顾名思义,就是沿着与梯度相反的方向迭代.(梯度方向是增长最快的方向,所以负梯度方向是下降最快的方向). 最速下降法 最速下降法是梯度方向法的一种,与上面的梯度下降法不同的 ...

  6. 最速下降法(梯度下降法)python实现

    有用请点赞,没用请差评. 欢迎分享本文,转载请保留出处. 最近在写论文,做的是共轭梯度反演方法,所以将论文中的部分内容分享出来吧. 大部分的机器学习算法的本质都是建立优化模型,通过最优化方法对目标函数 ...

  7. 最速下降法/梯度下降法

    基本思想 算法描述 应用于正定二次函数 锯齿现象 梯度下降法在机器学习中是经常用到的一种方法,很多人也把梯度下降法看作是最速下降法,但是这两种方法好像还有一些细微差别,wikipedia中Gradie ...

  8. 机器学习中的数学原理——梯度下降法(最速下降法)

    好久没更新了,确实是有点懒了,主要是这两天返乡在隔离(借口).这个专栏主要是用来分享一下我在机器学习中的学习笔记及一些感悟,也希望对你的学习有帮助哦!感兴趣的小伙伴欢迎私信或者评论区留言!这一篇就更新 ...

  9. 优化:梯度下降法、牛顿法、共轭梯度法

    1.基本概念 1.1 方向导数 1.2 梯度的概念 如果考虑z=f(x,y)描绘的是一座在点(x,y)的高度为f(x,y)的山.那么,某一点的梯度方向是在该点坡度最陡的方向,而梯度的大小告诉我们坡度到 ...

最新文章

  1. Uncaught SyntaxError: Unexpected token
  2. pandas使用replace函数将所有的无穷大值np.inf替换为缺失值np.nan、使用pandas的fillna函数用经验固定值填充缺失值np.nan
  3. mssql 查询当前自增序号_查询函数Choose、Lookup、Hlookup、Vlookup应用技巧解读
  4. 不朽传奇-云计算技术背后的那些天才程序员:Qemu的作者法布里斯贝拉
  5. mysql数据库引擎InnoDB和MyISAM
  6. Mark—零散知识汇总
  7. 计算机专业学生组装电脑配置,我打算配置一台5000左右的组装台式电脑
  8. 杜兰大学计算机专业,杜兰大学计算机科学专业详解.docx
  9. Linux下文件压缩、打包,看这一篇就够了
  10. C#学员管理系统(源代码)
  11. 统计每个日期新用户的次日留存率
  12. 【前端学习-函数】js基础学习笔记
  13. 卡尔曼滤波室内温度估计
  14. 基于FPGA的LSTM加速器设计(MNIST数据集为例)
  15. [Jzoj] 3426. 封印一击
  16. vuex的摸爬滚打.
  17. 信号间隔是什么意思_地铁信号里的行车闭塞是啥意思?
  18. 在 Kubernetes 上执行 GitHub Actions 流水线作业
  19. 山东师范学院计算机系分几级,CCF山东师范大学学生分会完成换届
  20. 逐年大幅扩招,进入这所全球第24位的CS院校越来越容易?

热门文章

  1. Java依赖注入选项
  2. 使用Redis的简单消息队列
  3. 如何在运行时更改日志记录级别
  4. 带有谓词的Java中的函数样式-第2部分
  5. Apache Shiro第3部分–密码学
  6. 什么是ActiveMQ?
  7. GWT MVP变得简单
  8. 实用垃圾收集,第1部分–简介
  9. 在linux上安装mysql5.6,在linux(Centos 7以上版本亲测)上安装mysql5.6
  10. html ios视频播放器,良心推荐!iOS端的视频播放应用