提起深度学习,没有人不知道梯度下降 (Gradient descent, GD)。但是我们用的往往是Adam优化器。从普通的GD到Adam,经历了哪些改进?Adam的优势又在哪?

SGD

SGD (stochastic Gradient Descent) 和GD是两个极端:前者每次只根据一个样本的梯度进行参数更新。由于这个参数是随机选取的,所以叫做随机梯度下降;后者则一次性地根据全部样本的梯度更新参数。
为了调和二者,我们平常用Mini-batch SGD:取一小部分样本(称为一个batch,batch size根据数据集大小可以取8, 16, 32, 64等),计算梯度下降方向的平均值,更新参数。
好,以下我们提到的优化改进,都是基于Mini-batch SGD的框架的(每次在一个batch上计算梯度)。

Momentum

第一个思路是引入一阶动量。t时刻的梯度下降方向,不只由当前的梯度方向决定,还要受到此前累积的梯度方向的“制衡”。

这里的 V d θ [ t ] V_{d\theta}^{[t]} Vdθ[t]​ 就是Momentum项,它是梯度的指数移动平均值 (Exponential Moving Average, EMA),约等于最近 1 1 − β \frac{1}{1-\beta} 1−β1​个时刻的梯度平均值。
Momentum的引入会减小震荡,加快收敛速度。

Nesterov Accelerated Gradient (NAG)

Momentum的公式中,当前时刻下降方向主要由累积梯度决定,当前时刻的梯度方向只占一小部分。NAG的思路是,既然如此,与其计算当前梯度方向,不如看看如果跟着累积梯度走了一步,那个时候的下降方向是什么。

与Momentum的对比

AdaGrad

AdaGrad引入了自适应学习率:神经网络中包含大量参数,但有些经常更新,有些不经常更新。对于经常更新的参数,我们已经积累了关于它的大量知识,不希望它被少数样本影响太大,学习率要小一些;对于不经常更新的参数,对于它的信息太少,希望从更新中多学习知识,学习率要大一些。


G i , i [ t ] G_{i,i}^{[t]} Gi,i[t]​衡量第 i i i个参数的更新“频率”, G i , i [ t ] G_{i,i}^{[t]} Gi,i[t]​越大,对应参数的学习率越小。
为了防止分母为0,特意加了一个小量 ϵ \epsilon ϵ,一般取 ϵ = 1 e − 8 \epsilon=1e-8 ϵ=1e−8

AdaGrad的思路很好,但 G i , i [ t ] G_{i,i}^{[t]} Gi,i[t]​一项是单调递增的,随着训练过程深入,学习率不断减小,可能导致后来参数无法更新,训练提前结束。

AdaDelta/RMSprop

AdaDelta作为AdaGrad的扩展,它没有累积全部历史梯度,而是只关注过去一段时间窗口的下降梯度。没错,指数移动平均值又要上场了。

Adam (Adaptive moment estimation)

Adam = Mometum + AdaDelta/RMSprop.
Adam在自适应学习率的基础上引入了Mometum,综合了二者的优点。

演化示意图

梯度下降——雏凤清于老凤声相关推荐

  1. 雏凤清于老凤声,九州云角逐边缘计算市场

    近日,由知名创投调研机构CB Insights出品的<What Is Edge Computing>广受关注.文中,CB Insights对边缘计算的发展和应用前景进行了详述,随着更多联网 ...

  2. 对抗新冠也用「梯度下降」,进化生物学家靠这个预测病毒进化方向

    行早 发自 凹非寺 量子位 | 公众号 QbitAI 自从新冠大流行以来,病毒的变异和进化就没有停止过:德尔塔,拉姆达,奥密克戎--在和人类的斗争中也一直抢先一步. 在不断研究病毒进化过程时,有没有一 ...

  3. 大白话5分钟带你走进人工智能-第十节梯度下降之归一化的各种方式和必要性(5)...

                        第十节梯度下降之归一化的各种方式和必要性(5) 上一节中我们讲解了梯度下降的函数最优化算法和梯度下降代码过程,了解了梯度下降的代码实现过程,本节的话我们讲解一个 ...

  4. Lesson 6.动态计算图与梯度下降入门

    在<Lesson 5.基本优化思想与最小二乘法>的结尾,我们提到PyTorch中的AutoGrad(自动微分)模块,并简单尝试使用该模块中的autograd.grad进行函数的微分运算,我 ...

  5. Python统计分析--- 5.统计法与随机梯度下降(SGD)

    #导入包 import numpy as np import pandas as pd import matplotlib as plt import statsmodels.formula.api ...

  6. 最佳论文!牛津大学揭示梯度下降复杂度理论

    点上方计算机视觉联盟获取更多干货 仅作学术分享,不代表本公众号立场,侵权联系删除 转载于:机器之心 AI博士笔记系列推荐 周志华<机器学习>手推笔记正式开源!可打印版本附pdf下载链接 梯 ...

  7. 收藏 | 各种Optimizer梯度下降优化算法回顾和总结

    点上方蓝字计算机视觉联盟获取更多干货 在右上方 ··· 设为星标 ★,与你不见不散 仅作学术分享,不代表本公众号立场,侵权联系删除 转载于:作者丨DengBoCong@知乎 来源丨https://zh ...

  8. 从零开始学Pytorch(十三)之梯度下降

    梯度下降 %matplotlib inline import numpy as np import torch import time from torch import nn, optim impo ...

  9. 李宏毅《机器学习》笔记:3.误差分析和梯度下降

    参考文章: 梯度下降:https://www.bilibili.com/video/BV1Tr4y1N7Lh 梯度下降优化:https://www.bilibili.com/video/BV1r64y ...

最新文章

  1. python数据去噪声_Logreduce:用Python和机器学习去除日志噪音
  2. mxnet加载预训练
  3. Wordpress 更新时 不输入ftp相关信息的方法
  4. Django后台管理
  5. Spring源码版本命名规则及下载安装(下)笔记
  6. react 日历组件_anujs1.5.1支持React.Suspense与lazy
  7. 论文写不出来,导师放养,严重焦虑,怎么办?
  8. 回文数 LeetCode
  9. Arduino操作记录---雨滴传感器的使用
  10. 微信小程序开发详细步骤是什么?
  11. 读书笔记:Bi-Directional Cascade Network for Perceptual Edge Detection
  12. Linux网络配置(NAT)
  13. k8s coredns ContainerCreating
  14. android 自动 轮播图,Android-自定义View实现轮播图
  15. 51单片机使用STC-ISP一直正在检测
  16. jdbc连接mysql数据库驱动下载_Java Jdbc驱动下载配置连接mysql数据库方法代码
  17. Linux设备驱动之HID驱动 源码分析
  18. 【LRPP-GRR】Low-Rank Preserving Projection Via Graph Regularized Reconstruction
  19. 超低功耗/抗干扰19*4段LCD液晶显示驱动IC-VKL076SSOP28 I2C通讯接口 小体积封装 FAE支持
  20. MySql 表操作指令小全与案例 2

热门文章

  1. MySQL忘记/无root密码,强制修改root密码
  2. 基于NRF24L01的CAN数据透传
  3. OpenAI发布ChatGPT:程序员瞬间不淡定了
  4. 如何在Ubuntu 14.04中读取MOBI文件
  5. pump-probe技术简介
  6. photoshop中怎么绘制虚线
  7. 读书笔记(二十二):前端安全
  8. 50件关于学霸与学渣的小事
  9. Python出现 RuntimeError: dictionary changed size during iteration 的解决方法
  10. C++ 对txt文档进行编辑