本文一共介绍6种机器学习中的优化算法:

1.梯度下降算法(SGD)

2.牛顿法

3.SGD-M

4.AdaGrad

5.AdaDelta

6.Adam

1.梯度下降算法(SGD)

用梯度下降算法最小化目标函数f(x),梯度下降算法沿着梯度向量的反方向进行迭代以得到函数的极值点。参数迭代公式:

其中,γ为学习率,参数初始值为x0,即起始位置。

设置迭代停止条件:

1.达到最大迭代次数

2.梯度小于设定值

2.牛顿法

用牛顿法最小化目标函数f(x)

牛顿发直接使用驻点处导数为0得出参数迭公式:

其中,γ为学习率,参数初始值为x0,即起始位置。

用到了梯度的一阶导数gk,和二阶导数Hk。

停止迭代条件:

  1. 达到最大迭代次数

  2. 梯度小于设定值

缺点:求解Hessian矩阵的逆矩阵或者求解线性方程组计算量大,需要耗费大量的时间。

求的点是极小值点并不一定是最小值点。

3.SGD-M

momentum是模拟物理里动量的概念,更新的时候在一定程度上保留之前更新的方向,同时利用当前batch的梯度微调最终的更新方向,可以在一定程度上增加稳定性,从而学习更快,并且还有摆脱局部最优的能力。

其中,u为动量因子,该算法的特点:

  1. 下降初期时,使用上一次参数更新,下降方向一致,乘上较大的够进行很好的加速。

  2. 下降中后期时,在局部最小值来回震荡的时候,得更新幅度增大,跳出陷阱。

  3. 在梯度改变方向的时候,够减少更新 总而言之,momentum项能够在相关方向加速SGD,抑制振荡,从而加快收敛。

4.AdaGrad

AdaGrad为自适应梯度,是梯度下降算法变体,根据历史梯度值来调整学习率,参数迭代公式:

其中gt 表示当前迭代次数的梯度值。

该算法的特点:

  • 优点:学习率将随着梯度的倒数增长,也就是说较大梯度具有较小的学习率,而较小的梯度具有较大的学习率,可以解决普通的sgd方法中学习率一直不变的问题

  • 缺点:还是需要自己手动指定初始学习率,而且由于分母中对历史梯度一直累加,学习率将逐渐下降至0,并且如果初始梯度很大的话,会导致整个训练过程的学习率一直很小,从而导致学习时间变长。

5.AdaDelta

AdaDelta是对AdaGrad的改进,在一个窗口中对梯度进行求和,而不是对梯度一直累加。将累计梯度信息从全部历史梯度变为当前时间向前的一个窗口期内的累积:

相当于历史梯度信息的累计乘上一个衰减系数ρ,然后用(1−ρ) 作为当前梯度的平方加权系数相加。

最后的公式如下:

其中ϵ 是为了防止分母为0而加上的一个极小值。这种更新方法解决了对历史梯度一直累加而导致学习率一直下降的问题,当时还是需要自己选择初始的学习率。

6.Adam

Adam(Adaptive Moment Estimation)是一种不同参数自适应不同学习速率方法,它利用梯度的一阶矩估计和二阶矩估计动态调整每个参数的学习率。Adam的优点主要在于经过偏置校正后,每一次迭代学习率都有个确定范围,使得参数比较平稳。

mt,ntmt,nt分别是梯度的带权平均和带权有偏方差,初始为0向量,Adam的作者发现他们倾向于0向量(接近于0向量),特别是在衰减因子(衰减率)μ,ν接近于1时,所以要进行偏差修正,m^t 和n^t是对mt nt,的校正。论文推荐参数:μ=0.9,ν=0.999,ϵ=10-8 。

该算法的特点:

  1. 对于稀疏数据,尽量使用学习率可自适应的优化方法,不用手动调节,而且最好采用默认值。

  2. SGD通常训练时间更长,但是在好的初始化和学习率调度方案的情况下,结果更可靠。

  3. 如果在意更快的收敛,并且需要训练较深较复杂的网络时,推荐使用学习率自适应的优化方法。

参考:

http://blog.csdn.net/heyongluoyao8/article/details/52478715

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

http://blog.csdn.net/golden1314521/article/details/46225289

https://arxiv.org/pdf/1706.10207.pdf

推荐阅读,最新比较热门由中国小哥提出的AdaBound算法

比Adam,SGD更优秀的AdaBound实验对比代码

喜欢欢迎收藏,转载,分享!

【总结】6种机器学习中的优化算法:SGD,牛顿法,SGD-M,AdaGrad,AdaDelta,Adam相关推荐

  1. louvian算法 缺点 优化_机器学习中的优化算法(1)-优化算法重要性,SGD,Momentum(附Python示例)...

    本系列文章已转至 机器学习的优化器​zhuanlan.zhihu.com 优化算法在机器学习中扮演着至关重要的角色,了解常用的优化算法对于机器学习爱好者和从业者有着重要的意义. 这系列文章先讲述优化算 ...

  2. 机器学习中的优化算法!

    ↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 作者:李祖贤,Datawhale高校群成员,深圳大学 在机器学习中,有很 ...

  3. 机器学习知识总结系列-机器学习中的优化算法总结(1-4)

    文章目录 1.梯度下降 1.1批量梯度下降(BGD) 1.2随机梯度下降(SGD) 1.3 小批量随机梯度下降(MSGD) 1.4 比较: 1.5 动量算法(momentum) 1.6 Nestrov ...

  4. 机器学习中的优化算法介绍

    在机器学习中,有很多的问题并没有解析形式的解,或者有解析形式的解但是计算量很大(譬如,超定问题的最小二乘解),对于此类问题,通常我们会选择采用一种迭代的优化方式进行求解.   这些常用的优化算法包括: ...

  5. 面试准备——机器学习中的优化器算法

    一.优化问题 总体来看,机器学习的核心目标是给出一个模型(一般是映射函数),然后定义对这个模型好坏的评价函数(目标函数),求解目标函数的极大值或者极小值,以确定模型的参数,从而得到我们想要的模型.在这 ...

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

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

  7. 数据科学和机器学习中的优化理论与算法(下)

    数据科学和机器学习中的优化理论与算法(下) 数据科学和机器学习当前越来越热,其中涉及的优化知识颇多.很多人在做机器学习或者数据科学时,对其中和优化相关的数学基础,包括随机梯度下降.ADMM.KKT 条 ...

  8. 数据科学和机器学习中的优化理论与算法(上)

    数据科学和机器学习中的优化理论与算法(上) 数据科学和机器学习当前越来越热,其中涉及的优化知识颇多.很多人在做机器学习或者数据科学时,对其中和优化相关的数学基础,包括随机梯度下降.ADMM.KKT 条 ...

  9. 机器学习中的聚类算法有哪几种?

    目前,聚类算法被广泛应用于用户画像.广告推荐.新闻推送和图像分割等等.聚类算法是机器学习中一种"数据探索"的分析方法,它帮助我们在大量的数据中探索和发现数据的结构.那么机器学习中的 ...

  10. 【深度学习】一文搞定面试中的优化算法

    深度学习各类优化器 借用古代炼丹的一些名词,我们可以把训练模型中的数据比做炼丹药材,模型比做炼丹炉,火候比做优化器.那么我们知道,同样的药材同样的炼丹炉,但是火候不一样的话,炼出来的丹药千差万别,同样 ...

最新文章

  1. rediscluster全局数据_redis迁移,从redis cluster集群迁移数据到另外一个redis cluster集群...
  2. 一个机械系毕业生的感言
  3. 数据结构---二叉搜索树
  4. dp - 求连续区间异或的最大值
  5. SAI红绿蓝三原色叠加效果
  6. wilcoxon符号秩检验matlab,符号检验和wilcoxon符号秩检验的区别
  7. LMS自适应滤波的MATLAB实现——实例仿真
  8. MDClub 轻量级网论坛源码
  9. 西游记中文殊菩萨的坐骑青狮两次下界为妖
  10. 《 2021春运人群画像分析报告 》
  11. 2023微信手机号筛选器,快速检测出开通微信的号码,检测国外号码过滤微信状态,判断qq是否开通微信软件
  12. 电脑上怎么打开小米手机的便签?
  13. MIT 操作系统 jos make grade出现no jos.out
  14. C语言占位符 格式占位符
  15. 如何让笔记获得更多曝光量?小红书曝光机制是怎样的
  16. 语音-小度自定义技能
  17. 【错误汇总】zabbix 监控偶遇问题一记
  18. 目标检测:各种网络结构对比
  19. 关于一些测绘软件的评价
  20. centos java 时间差8个小时_解决Centos7本机时间与实际时间相差8小时

热门文章

  1. jeb安装教程_JEB2插件教程之一
  2. 在rhel 7.3中安装glibc-devel-2.17-157.el7.i686包的过程详录
  3. USB转串口CH340接线方法
  4. 企业微信api接口调用-通过手机号或微信好友添加客户
  5. java连接sybase的pom_SpringBoot下多数据源连接Sybase数据库
  6. MATLAB矩阵转置
  7. 使用JMeter进行简单的app接口测试
  8. JSP中使用JSP模板
  9. springboot办公OA考勤请假系统java
  10. ESP8266教程——采用AT指令