写在前面,本文只记录了个人认为的关键点,仅供参考。更多细节请参考链接中文章
参考1:机器学习之常用优化方法
参考2:拉格朗日乘数法

梯度下降法

梯度下降法是最早最简单,也是最为常用的最优化方法。梯度下降法实现简单,当目标函数是凸函数时,梯度下降法的解是全局解。一般情况下,其解不保证是全局最优解,梯度下降法的速度也未必是最快的。梯度下降法的优化思想是用当前位置负梯度方向作为搜索方向,因为该方向为当前位置的最快下降方向,所以也被称为是”最速下降法“。最速下降法越接近目标值,步长越小,前进越慢。

  • 梯度下降法的搜索迭代示意图如下图所示:
  • 公式为目标函数的一阶泰勒函数展开:
  • 梯度下降法的缺点:

1.靠近极小值时收敛速度减慢
2.可能会“之字形”地下降
3.直线搜索时可能会产生一些问题;

  • 随机梯度下降和批量梯度下降

批量梯度下降:最小化所有训练样本的损失函数,使得最终求解的是全局的最优解,即求解的参数是使得风险函数最小,但是对于大规模样本问题效率低下。
随机梯度下降:最小化每条样本的损失函数,虽然不是每次迭代得到的损失函数都向着全局最优方向, 但是大的整体的方向是向全局最优解的,最终的结果往往是在全局最优解附近,适用于大规模训练样本情况。

牛顿法

牛顿法使用函数f (x)的泰勒级数的前面2项来寻找方程f (x) = 0的根。牛顿法最大的特点就在于它的收敛速度很快

  • 牛顿法的搜索迭代示意图如下图所示:
  • 公式为目标函数的二阶泰勒函数展开:
  • 牛顿法和梯度下降法的效率对比:

从本质上去看,牛顿法是二阶收敛,梯度下降是一阶收敛,所以牛顿法就更快。如果更通俗地说的话,比如你想找一条最短的路径走到一个盆地的最底部,梯度下降法每次只从你当前所处位置选一个坡度最大的方向走一步,牛顿法在选择方向时,不仅会考虑坡度是否够大,还会考虑你走了一步之后,坡度是否会变得更大。所以,可以说牛顿法比梯度下降法看得更远一点,能更快地走到最底部。(牛顿法目光更加长远,所以少走弯路;相对而言,梯度下降法只考虑了局部的最优,没有全局思想。)

  • 牛顿法的优缺点总结:

优点:二阶泰勒展开,收敛速度更快
缺点:牛顿法是一种迭代算法,每一步都需要求解目标函数的Hessian矩阵的逆矩阵,计算比较复杂。

拟牛顿法

拟牛顿法的本质思想是改善牛顿法每次需要求解复杂的Hessian矩阵的逆矩阵的缺陷,它使用正定矩阵来近似Hessian矩阵的逆,从而简化了运算的复杂度(即使用正定矩阵去逼近难求的Hessian矩阵)。拟牛顿法和最速下降法一样只要求每一步迭代时的目标函数的梯度(即利用一阶就可以去模拟牛顿的二阶)。通过测量梯度的变化,构造一个目标函数的模型使之足以产生超线性收敛性。

  • 公式为目标函数的二阶泰勒函数展开:


    这里的BkB_kBk​为代替牛顿法中Hessian矩阵的正定矩阵

  • 优点

解决了使用一阶的正定矩阵去逼近牛顿法中难求的Hessian逆矩阵,降低了计算量

拉格朗日乘数法

拉格朗日乘子法主要用于解决约束优化问题,它的基本思想就是通过引入拉格朗日乘子来将含有n个变量和k个约束条件的约束优化问题转化为含有(n+k)个变量的无约束优化问题
一般在机器学习中的损失函数都伴随着约束条件,分为约束条件为等式和不等式。

  • 考虑等式和不等式的综合公式为:

  • 考虑不等式的公式为:

机器学习之常用优化方法(GD、牛顿、拟牛顿、拉格朗日乘子)相关推荐

  1. 机器学习中的优化方法小结

    来源|福大命大@知乎,https://zhuanlan.zhihu.com/p/158215009 前几天听了林宙辰老师的一个报告,讲的是机器学习中的优化方法[1],做个笔记.推荐机器学习的人去听听. ...

  2. Algorithm:机械优化设计的数学模型简介、常用优化方法、优化计算工具简介之详细攻略

    Algorithm:机械优化设计的数学模型简介.常用优化方法.优化计算工具简介之详细攻略 目录 机械设计中基于算法模型的机械优化设计 1.优化设计的数学模型

  3. HiveSQL常用优化方法全面总结

    转载自  HiveSQL常用优化方法全面总结 Hive作为大数据领域常用的数据仓库组件,在平时设计和查询时要特别注意效率.影响Hive效率的几乎从不是数据量过大,而是数据倾斜.数据冗余.job或I/O ...

  4. Linux协议栈:基于ping流程窥探Linux网络子系统,及常用优化方法

    初识 Linux 网络栈及常用优化方法 RToax 2020年9月 初识 Linux 网络栈及常用优化方法 1. 文章简介 基于 ping 流程窥探 Linux 网络子系统,同时介绍各个模块的优化方法 ...

  5. oracle sql语句常用优化方法

    oracle sql语句常用优化方法 最近做一些报表查询,经常做一些小优化,在这里总结一下 语句上的优化: 1.SELECT 语句中避免使用*,用那些字段就摘出哪些. 2.SQL语句尽量用大写: 因为 ...

  6. 机器学习--梯度-牛顿-拟牛顿优化算法和实现

    版权声明:作者:Jinliang's Hill(金良山庄),欲联系请评论博客或私信,CSDN博客: http://blog.csdn.net/u012176591 目录(?)[+] 要求解的问题 线搜 ...

  7. 机器学习笔记一——常用优化算法—GD、BGD、SCD、MBGD

    优化算法1 1.梯度下降(Gradient Descent,GD) 2. 批量梯度下降(Batch Gradient Descent,BGD) 3. 随机梯度下降(Stochastic Gradien ...

  8. 梯度-牛顿-拟牛顿优化算法和实现

    要求解的问题 线搜索技术和Armijo准则 最速下降法及其Python实现 牛顿法 阻尼牛顿法及其Python实现 修正牛顿法法及其Python实现 拟牛顿法 DFP算法及其Python实现 BFGS ...

  9. 深度学习之常用优化方法篇

    写在前面,此文记录常用的优化算法包括:随机梯度下降(SGD),Momentum算法,AdaGrad算法,RMSProp算法,Adam算法,牛顿法和拟牛顿法(包括L-BFGS 参考1:https://w ...

最新文章

  1. oracle服务器环境建立,oracle 透明网关环境的建立
  2. 【工作秘籍】Facebook内部高效工作大揭秘
  3. 50行代码串行Promise,koa洋葱模型原来这么有趣?
  4. JS 异步编程及常考面试题
  5. XML的DTD约束和Schema约束
  6. c语言程序设计会出现什么问题,计算机C语言程序设计过程中的常见问题分析和研究...
  7. 【线代】相似矩阵中特征根的求法:特征方程、一般方程为什么求得的特征根含义不同?
  8. YYC采集工具python语言精简方便实用的视频采集工具
  9. 电子信息工程考研:12大专业方向解读
  10. 第三方软件产品采购分享
  11. scrapy的分页(翻页处理)
  12. 新生报到系统_新生报到迎新系统正式开放啦!
  13. Android WebView onShowFileChooser 无法重复调用.
  14. java 通过 itext生成pdf添加,插入文字,图片
  15. 视频教程-EXCEL提升效率100招-Office/WPS
  16. 分享几个下载免费电子图书的地方ebook
  17. unreal rtgi vs lpv
  18. Java课堂作业:手机销售系统(控制台输出)
  19. 韩流来袭,英文歌曲的垄断地位被撼动
  20. Hbase系统架构简述

热门文章

  1. 一款可以安利的MarkDown编辑器
  2. 【原创】设计模式面对面之观察者模式
  3. spring---aop(3)---Spring AOP的拦截器链
  4. Python编码规范和Python风格规范
  5. ld cannot find an existing library
  6. C#学习笔记-ContextMenuStrip
  7. Kinetic使用注意点--circle
  8. What is Equivocation in Byzantine Fault Tolerance?
  9. 【matplotlib笔记】plt.subplot()绘制子图
  10. html页面锁屏,JavaScript网页锁屏效果源码实例