机器学习中几种优化算法的比较(SGD、Momentum、RMSProp、Adam)
有关各种优化算法的详细算法流程和公式可以参考【这篇blog】,讲解比较清晰,这里说一下自己对他们之间关系的理解。
BGD 与 SGD
首先,最简单的 BGD 以整个训练集的梯度和作为更新方向,缺点是速度慢,一个 epoch 只能更新一次模型参数。
SGD 就是用来解决这个问题的,以每个样本的梯度作为更新方向,更新次数更频繁。但有两个缺点:
- 更新方向不稳定、波动很大。因为单个样本有很大的随机性,单样本的梯度不能指示参数优化的大方向。
- 所有参数的学习率相同,这并不合理,因为有些参数不需要频繁变化,而有些参数则需要频繁学习改进。
第一个问题
Mini-batch SGD 和 Momentum 算法做出的改进主要是用来解决第一个问题。
Mini-batch SGD 算法使用一小批样本的梯度和作为更新方向,有效地稳定了更新方向。
Momentum 算法则设置了动量(momentum)的概念,可以理解为惯性,使当前梯度小幅影响优化方向,而不是完全决定优化方向。也起到了减小波动的效果。
第二个问题
AdaGrad 算法做出的改进用来解决第二个问题,其记录了每个参数的历史梯度平方和(平方是 element-wise 的),并以此表征每个参数变化的剧烈程度,继而自适应地为变化剧烈的参数选择更小的学习率。
但 AdaGrad 有一个缺点,即随着时间的累积每个参数的历史梯度平方和都会变得巨大,使得所有参数的学习率都急剧缩小。
RMSProp 算法解决了这个问题,其采用了一种递推递减的形式来记录历史梯度平方和,可以观察其表达式:早期的历史梯度平方和会逐渐失去影响力,系数逐渐衰减。
Adam
简单来讲 Adam 算法就是综合了 Momentum 和 RMSProp 的一种算法,其既记录了历史梯度均值作为动量,又考虑了历史梯度平方和实现各个参数的学习率自适应调整,解决了 SGD 的上述两个问题。
机器学习中几种优化算法的比较(SGD、Momentum、RMSProp、Adam)的更多相关文章
- 优化深度神经网络(二)优化算法 SGD Momentum RMSprop Adam
Coursera吴恩达<优化深度神经网络>课程笔记(2)-- 优化算法 深度机器学习中的batch的大小 深度机器学习中的batch的大小对学习效果有何影响? 1. Mini-batch ...
- 详解Oracle数据货场中三种优化:分区、维度和物化视图
转 xiewmang 新浪博客 本文主要介绍了Oracle数据货场中的三种优化:对分区的优化.维度优化和物化视图的优化,并给出了详细的优化代码,希望对您有所帮助. 我们在做数据库的项目时,对数据货场的 ...
- zz:一个框架看懂优化算法之异同 SGD/AdaGrad/Adam
首先定义:待优化参数: ,目标函数: ,初始学习率 . 而后,开始进行迭代优化.在每个epoch : 计算目标函数关于当前参数的梯度: 根据历史梯度计算一阶动量和二阶动量:, 计算当前时刻的下降 ...
- 一个框架看懂优化算法之异同 SGD/AdaGrad/Adam
Adam那么棒,为什么还对SGD念念不忘 (1) —— 一个框架看懂优化算法 机器学习界有一群炼丹师,他们每天的日常是: 拿来药材(数据),架起八卦炉(模型),点着六味真火(优化算法),就摇着蒲扇等着 ...
- 优化方法总结以及Adam存在的问题(SGD, Momentum, AdaDelta, Adam, AdamW,LazyAdam)
优化方法总结以及Adam存在的问题(SGD, Momentum, AdaDelta, Adam, AdamW,LazyAdam) 2019年05月29日 01:07:50 糖葫芦君 阅读数 455更多 ...
- 深度学习笔记:优化方法总结(BGD,SGD,Momentum,AdaGrad,RMSProp,Adam)
深度学习笔记:优化方法总结(BGD,SGD,Momentum,AdaGrad,RMSProp,Adam) 深度学习笔记(一):logistic分类 深度学习笔记(二):简单神经网络,后向传播算法及实现 ...
- java开发过程中几种常用算法
排序算法 排序算法中包括:简单排序.高级排序 简单排序 简单排序常用的有:冒泡排序.选择排序.插入排序 冒泡排序代码如下: private static void bubbleSrot(int[] a ...
- Caffe源码-几种优化算法
SGD简介 caffe中的SGDSolver类中实现了带动量的梯度下降法,其原理如下,\(lr\)为学习率,\(m\)为动量参数. 计算新的动量:history_data = local_rate * ...
- 各种优化方法总结比较(sgd/momentum/Nesterov/adagrad/adadelta)
前言 这里讨论的优化问题指的是,给定目标函数f(x),我们需要找到一组参数x,使得f(x)的值最小. 本文以下内容假设读者已经了解机器学习基本知识,和梯度下降的原理. Batch gradient d ...
随机推荐
- django版本切换以及更改url(pycharm)
Django版本切换:https://blog.csdn.net/weixin_42305814/article/details/80742090 因为是从2版本更改到1版本,所以里面一些东西需要变动 ...
- phpstudy绑定项目(dist文件)域名--陈远波
该篇博客是针对已经打包好的dist文件用phpstudy工具进行域名绑定,dist文件生成在这笔者不进行描述,绑定步骤如下: 一:官网下载phpstudy软件进行安装:http://phpstudy. ...
- 阿里八八Alpha阶段Scrum(4/12)
今日进度 叶文滔: 整合了一下已完成的界面设计,修复了一些BUG. 问题困难:制作多级悬浮按钮阻碍重重,首先是刚更新不久的Andriod Studio 3.0向前兼容性差,一些语句规则的修改无所适从, ...
- 启动 uiautomatorviewer 时报 SWT folder '..\lib\location of your Java installation.' does not exist.
现象,之前本机上的 uiautomatorviewer 一直是好的,最近这段时间无故就不行了,报如标题错误,网上找了各种办法仍无法有效解决,静心细想上一次使用该工具时到目前对本机有做什么跟系统或者工具 ...
- 转 10 个 Nginx 的安全提示
Nginx是当今最流行的Web服务器之一.它为世界上7%的web流量提供服务而且正在以惊人的速度增长.它是个让人惊奇的服务器,我愿意部署它. 下面是一个常见安全陷阱和解决方案的列表,它可以辅助来确保你 ...
- HTML页面打印分页标签样式
<html> <head> <meta name="vs_targetSchema" content="http://schemas ...
- 2298: [HAOI2011]problem a
Description 一次考试共有n个人参加,第i个人说:"有ai个人分数比我高,bi个人分数比我低."问最少有几个人没有说真话(可能有相同的分数) 这句话的意思就等于是说第i个 ...
- IIS7.5全站301跳转,内页+带参数url,这才是真正的全站跳转
说好的转型安全领域,可是我还是忍不住要给大家分享这个教程.因为这个问题很常见,大部分人都遇到了(可能你没注意),困扰了我很久,相信这是一篇真正适合你的IIS301跳转教程. 背景 说到301跳转,作为 ...
- Postman-断言和Runner
断言(部分) // 推荐用全等 ===,确保类型和值都一致 tests['Status code is 200'] = responseCode.code === 200; //判断响应结果是否是20 ...
- scrapy的request的meta参数是什么意思?
作者:乌尔班链接:https://www.zhihu.com/question/54773510/answer/146971644来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注 ...