文章目录

  • 目标函数
  • 三种梯度下降优化框架
    • 1、BGD、SGD、mini_batch
    • 2、**优缺点对比:**
    • 3、**问题与挑战:**
  • 优化梯度下降法
    • 1、动量梯度下降法(Momentum)
    • 2、Nesterov Accelarated Gradient(NAG)
    • 3、Adagrad
    • 4、RMSprop
    • 5、Adaptive momentum estimation(Adam)

目标函数

最优化:得到使目标函数J(θ)J(\theta)J(θ)​最小的θ\thetaθ​的值。

三种梯度下降优化框架

1、BGD、SGD、mini_batch

  • 优化方法(特征维数高)

    1)初始化θ\thetaθ​
    2)最优化方法求解使J(θ)J(\theta)J(θ)​最小的θ\thetaθ​

    • i. 批量梯度下降法(BGD)
      每一次参数更新,使用所有样本
    • ii. 随机梯度下降法(SGD)
      每一次参数更新,使用一个样本,可能会跳出局部最小值,效率高
    • iii. 1 二者综合(mini_batch)
      每一次参数更新,使用样本中的一小部分

2、优缺点对比:

i. 批量梯度下降法(BGD)可以确保每次向正确的方向前进,但时间慢;

ii. 随机梯度下降法(SGD)随机梯度下降每次更新不一定会沿正确方向(不稳定),但更新快,且有可能会跳过局部最优;

iii. 1 二者综合(mini_batch)更新相对较稳定,速度相对较快。

3、问题与挑战:

  • 学习率的选择,α\alphaα过大,容易在极值点附近震荡;α\alphaα过小,收敛速度缓慢。
  • 自动调整学习率,如退火(每次迭代衰减一个较小的阈值),也是需要固定设置阈值,无法实现自适应学习。
  • 所有参数(θ1,...,θn\theta_1,...,\theta_nθ1​,...,θn​​​​)的更新,都是采用同一个学习率,但是根据特征的稀疏度和不同的特征,应当选取不同的学习率。
  • 对于非凸目标函数,容易陷入局部最优点。

优化梯度下降法

1、动量梯度下降法(Momentum)

梯度不仅与当前梯度有关还与之前的梯度有关,这样参数更新的方向会朝向更加有利于收敛的方向(有利于减小震荡),收敛速度更快。

上图红线为增加了动量的,黑线为SGD。

参数更新公式如下:

动量参数α<1\alpha<1α<1,一般≤0.9\leq0.9≤0.9

加上动量项就像从山顶滚下一个球,求往下滚的时候累积了前面的动量(动量不断增加),因此速度变得越来越快,直到到达终点。同理,在更新模型参数时,对于那些当前的梯度方向与上一次梯度方向相同的参数,那么进行加强,即这些方向上更快了;对于那些当前的梯度方向与上一次梯度方向不同的参数,那么进行削减,即这些方向上减慢了。因此可以获得更快的收敛速度与减少振荡。

2、Nesterov Accelarated Gradient(NAG)

是在Momentum的基础上改进得到的一个算法,不同之处在于m每次更新时加上梯度的不同,Momentum是加上当前位置θ\thetaθ的梯度,而NAG是加上当前位置之后一点点θ+βm\theta+\beta mθ+βm处的梯度。这样做会**使动量m指向更加正确的(局部)最优点的方向,加快收敛到极值点。NAG的参数更新公式如下:

下图为Momentum和NAG的对比图:

Momentum根据γm\gamma mγm和η∇1\eta\nabla_1η∇1​计算m,而NAG根据γm\gamma mγm和η∇2\eta\nabla_2η∇2​计算m,**NAG在接近极值的时候,如果超出了极值点,会把更新的方向往回拉,而不是继续往前,有利于减小震荡,加速收敛

3、Adagrad

4、RMSprop

*RMSProp算法不是像AdaGrad算法那样暴力直接的累加平方梯度,而是加了一个衰减系数来控制历史信息的获取多少。*

*在参数空间更为平缓的方向,会取得更大的进步(因为平缓,所以历史梯度平方和较小,对应学习下降的幅度较小),并且能够使得陡峭的方向变得平缓,从而加快训练速度。*

5、Adaptive momentum estimation(Adam)

优点 缺点 适用
BGD 梯度总向正确方向前进 更新慢、实时性差、学习率难调整 小数据集
SGD 更新快、可能可以跳出局部极小 震荡严重、学习率难调整
mini-batch 收敛更稳定、速度更快 学习率难调整;所有特征用同一种学习率,但如果是稀疏特征更希望以大一点的学习率;局部极小值处容易震荡
momentum 增加收敛稳定性,减小震荡,收敛速度更快 所有特征用同一种学习率,但如果是稀疏特征更希望以大一点的学习率;
rmsprop 自动学习率调整 特征稀疏
adam 自动学习率调整 特征稀疏

参考:分享一个各种梯度下降的交互动画演示

梯度优化方法:BGD,SGD,mini_batch, Momentum,AdaGrad,RMSProp,Adam相关推荐

  1. 深度学习笔记:优化方法总结(BGD,SGD,Momentum,AdaGrad,RMSProp,Adam)

    深度学习笔记(一):logistic分类  深度学习笔记(二):简单神经网络,后向传播算法及实现  深度学习笔记(三):激活函数和损失函数  深度学习笔记:优化方法总结  深度学习笔记(四):循环神经 ...

  2. 优化方法总结(BGD,SGD,Momentum,AdaGrad,RMSProp,Adam)

    本文介绍常见的一阶数值优化算法,这些方法在现代神经网络框架(tensorflow, caffe, torch)中已经是标准配置. 问题 设系统参数为ω.对于样本i,其代价函数为Qi(ω).在n个样本组 ...

  3. 深度学习入门-ANN神经网络参数最优化问题(SGD,Momentum,AdaGrad,RMSprop,Adam)

    这里写目录标题 1. 参数优化 1.1 随机梯度下降法(SGD) 1.2 Momentum 动量法 1.3 AdaGrad 1.4 RMSprop 1.5 Adam 1. 参数优化 本文总结一下ANN ...

  4. pytorch梯度下降函数_Pytorch中常用的四种优化器SGD、Momentum、RMSProp、Adam

    来源:AINLPer微信公众号 编辑: ShuYini 校稿: ShuYini 时间: 2019-8-16 引言     很多人在使用pytorch的时候都会遇到优化器选择的问题,今天就给大家介绍对比 ...

  5. 花书+吴恩达深度学习(七)优化方法之基本算法(Momentum, Nesterov, AdaGrad, RMSProp, Adam)

    目录 0. 前言 1. 指数加权平均(exponentially weighted averages) 2. Momentum 动量 3. Nesterov 动量 4. AdaGrad 5. RMSP ...

  6. 主流的深度学习优化方法(SGD,SGDM,Adagrad,RMSProp,Adam)

    文章目录 0 前言 1 SGD 2 SGD with momentum(SGDM) 3 Adagrad 4 RMSProp(root mean square prop) 5 Adam 0 前言 介绍主 ...

  7. 深度学习中常用的优化算法(SGD, Nesterov,Adagrad,RMSProp,Adam)总结

    深度学习中常用的优化算法(SGD, Nesterov,Adagrad,RMSProp,Adam)总结 1. 引言 在深度学习中我们定义了损失函数以后,会采取各种各样的方法来降低损失函数的数值,从而使模 ...

  8. 【深度学习基础】02梯度下降算法改进:SGD、Momentum、NAG、RMSProp、Adam等

    目录 1. 优化算法背景 1.1 常见优化问题 1.1.1 梯度消失或梯度爆炸 1.1.2 局部最小值 1.2 常用解决办法 1.2.1 参数初始化策略 1.2.2 小批量梯度下降 1.2.3 梯度下 ...

  9. 【TensorFlow】优化方法optimizer总结(SGD,Adagrad,Adadelta,Adam,Adamax,Nadam)解析(十三)

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/brucewong0516/article/details/78838124 本文仅对一些常见的优化方 ...

最新文章

  1. java x00_有没有通过python反序列化java对象的方法
  2. 【C++ 语言】pthread_mutex_t 互斥锁
  3. linux命令的导入,[导入]Linux基本命令
  4. linux 核间通讯rpmsg架构分析
  5. html修改原生checkbox选中的颜色_[三分钟小文]前端性能优化-HTML、CSS、JS部分
  6. Linux下搭建FTP服务器笔记
  7. java file rename 失败_java重命名文件造成文件不可读写
  8. Guns 查询列表_入门试炼03
  9. C语言网络编程——基础
  10. Xms Xmx PermSize MaxPermSize 区别
  11. 华为云空间兑换码在哪里找_华为云空间在哪里找到
  12. ps中怎么调整字体间距
  13. [POI2012] 约会 Rendezvous
  14. vue的学习笔记(15)之Promise知识讲解
  15. latex制作幻灯片模板
  16. 球球大作战显示短信服务器出错,球球大作战常见问题汇总 新版本问题解决方法...
  17. 这款App连夜被下架!
  18. 2021届前端面试知识点(其他)
  19. Android10下wifi连接的两种方式:点对点连接和外网连接
  20. STM32学习记录——74HC595四位数码管显示

热门文章

  1. java initial_什么是来自独立Java客户端的Payara InitialContext的环境属性
  2. 1分钟学会 2 个复制文本到剪贴板的方法
  3. Linux开发板显示字库,linux追加中文字库,解决imagemagick 中文乱码的问题。
  4. Keepalived v1.3.5 高可用配置参数总结
  5. webpack loader配置全流程详解
  6. 全国英语等级考试计算机辅助口语考试,全国英语等级考试 计算机辅助高考口语考试练习软件文档.doc...
  7. JS判断服务端是win还是Linux,js 判断当前操作系统是ios还是android还是电脑端
  8. 我的世界服务器雪球回城无限雪球,我的世界如何用命令方块做回城雪球 | 手游网游页游攻略大全...
  9. java电子招标采购系统源码:营造全面规范安全的电子招投标环境,促进招投标市场健康可持续发展
  10. 高级ACL限制不同网段互访 拓扑与命令