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

首先定义:待优化参数:  ,目标函数:  ,初始学习率 

而后,开始进行迭代优化。在每个epoch  :

  1. 计算目标函数关于当前参数的梯度: 
  2. 根据历史梯度计算一阶动量和二阶动量:
  3. 计算当前时刻的下降梯度: 
  4. 根据下降梯度进行更新: 

sgd:

先来看SGD。SGD没有动量的概念,也就是说:

代入步骤3,可以看到下降梯度就是最简单的

SGD缺点:下降速度慢,而且可能会在沟壑的两边持续震荡,停留在一个局部最优点。

SGD with Momentum

sgd引入一阶动量,为了抑制SGD的震荡,SGDM认为梯度下降过程可以加入惯性。下坡的时候,如果发现是陡坡,那就利用惯性跑的快一些

t时刻的下降方向,不仅由当前点的梯度方向决定,而且由此前累积的下降方向决定    0.9

AdaGrad

怎么样去度量历史更新频率呢?那就是二阶动量——该维度上,迄今为止所有梯度值的平方和:

我们再回顾一下步骤3中的下降梯度:

可以看出,此时实质上的学习率由  变成了  ,这也是为什么叫自适应学习率

这一方法在稀疏数据场景下表现非常好。但也存在一些问题:因为 是单调递增的,会使得学习率单调递减至0,可能会使得训练过程提前结束,即便后续还有数据也无法学到必要的知识。

AdaDelta / RMSProp

由于AdaGrad单调递减的学习率变化过于激进,我们考虑一个改变二阶动量计算方法的策略:不累积全部历史梯度,而只关注过去一段时间窗口的下降梯度。这也就是AdaDelta名称中Delta的来历。其实只关注了上一个时刻

这就避免了二阶动量持续累积、导致训练过程提前结束的问题了。

Adam

谈到这里,Adam和Nadam的出现就很自然而然了——它们是前述方法的集大成者。我们看到,SGD-M在SGD基础上增加了一阶动量,AdaGrad和AdaDelta在SGD基础上增加了二阶动量。把一阶动量和二阶动量都用起来,就是Adam了——Adaptive + Momentum。

SGD的一阶动量:

加上AdaDelta的二阶动量:

优化算法里最常见的两个超参数  就都在这里了,前者控制一阶动量,后者控制二阶动量。

转载于:https://www.cnblogs.com/ymjyqsx/p/9527560.html

优化器,sgd,adam等相关推荐

  1. 各种优化器SGD,AdaGrad,Adam,LBFGS都做了什么?

    文章目录 各种优化器SGD,AdaGrad,Adam,LBFGS都做了什么? 1. SGD: 2. SGD+Momentum: 3. NAG(Nesterov Accelerated Gradient ...

  2. 妈耶,讲得好详细,十分钟彻底看懂深度学习常用优化器SGD、RMSProp、Adam详解分析

    深度学习常用优化器学习总结 常用优化器 SGD RMS Prop Adam 常用优化器 SGD 基本思想:通过当前梯度和历史梯度共同调节梯度的方向和大小 我们首先根据pytorch官方文档上的这个流程 ...

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

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

  4. torch优化器sgd源码

    Optimizer 更新参数主要是靠 step 函数 SGD类__init__函数 #params 网络模型的参数 #余参数被打包进字典中命名为defaultsdef __init__(self, p ...

  5. Pytorch学习 - Task6 PyTorch常见的损失函数和优化器使用

    Pytorch学习 - Task6 PyTorch常见的损失函数和优化器使用 官方参考链接 1. 损失函数 (1)BCELoss 二分类 计算公式 小例子: (2) BCEWithLogitsLoss ...

  6. 优化器介绍—SGD、Adam、Adagrad

    文章目录 深度学习中的优化器 介绍 随机梯度下降优化器 Adam 优化器 Adagrad 优化器 如何选择优化器 结论 深度学习中的优化器 介绍 在深度学习中,优化器是一个非常重要的组成部分,它通过调 ...

  7. Adam优化器如何选择

    在很多机器学习和深度学习的应用中,我们发现用的最多的优化器是 Adam,为什么呢? 下面是 TensorFlow 中的优化器, https://www.tensorflow.org/api_guide ...

  8. Adam真的是最好的优化器吗?

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 提到优化器,大多数人会想到 Adam.自 2015 年推出以来,A ...

  9. Adam真的是最好的优化器吗?有人认为不过是神经网络进化的结果

    来源:机器之心 本文约2400字,建议阅读6分钟 Adam 优化器真的是最好的优化器吗? 提到优化器,大多数人会想到 Adam.自 2015 年推出以来,Adam 一直是该领域的"王者&qu ...

  10. adam优化_认识 AdaMod: 一个新的有记忆的深度学习优化器

    Meet AdaMod: a new deep learning optimizer with memory by Less Wright https://medium.com/@lessw/meet ...

最新文章

  1. java对于app版本号比较,Java对比APP版本号大小
  2. Xshell Linux常用命令及vim与权限修改等常见问题
  3. 程序员的中场职业规划
  4. linux下的/dev/shm/ 以及与swap目录的区别【转】
  5. 阿里妈妈基于TensorFlow做了哪些深度优化?TensorFlowRS架构解析
  6. kaggle(02)-房价预测案例(基础版)
  7. springmvc拦截器配置
  8. 京东壕掷27亿买下一座酒店 官方回应:以办公为主!
  9. SSM中log4j2.xml配置文件的各项标签
  10. RPM + yum 完美完装tomcat
  11. ubuntu下安装宋体simsun
  12. php 做批量打印二维码,php语言开发的网站,如何实现批量打印快递单的功能?
  13. 爬虫-抖音无水印视频下载
  14. wrk服务器性能测试
  15. 数字化时代,安全沙箱技术促进企业网络安全生态安全运转
  16. [转载] 羽毛球——学打羽毛球 04 正手发高远球
  17. 理解path.join() 和 path.resolve()
  18. 大数据十年回顾(2):当代理论与Google云
  19. 【高效开发工具系列】API工具
  20. 浅谈 裴蜀定理扩展欧几里得

热门文章

  1. Android 摄像头
  2. OpenCV-图像处理(26、直方图反向投影(Back Projection))
  3. python finally语句里面出现异常_python try except语句出现异常
  4. STL map 的基本成员函数
  5. docker php安装gd扩展_PHP安装AMQP扩展
  6. 【HDU4456】Crowd(曼哈顿距离转切比雪夫距离+二维坐标hash离散化+二维树状数组)
  7. 【洛谷P1256】公路修建(问题分析+最小生成树prim法)
  8. php7类型约束,类型约束 - PHP 7 中文文档
  9. Pandas:时间序列数据基本操作和分组
  10. 推流式搅拌器选型功率计算方法_QSJ-1000