深度学习优化函数详解(5)-- Nesterov accelerated gradient (NAG)
深度学习优化函数详解系列目录
本系列课程代码,欢迎star:
https://github.com/tsycnh/mlbasic
深度学习优化函数详解(0)-- 线性回归问题
深度学习优化函数详解(1)-- Gradient Descent 梯度下降法
深度学习优化函数详解(2)-- SGD 随机梯度下降
深度学习优化函数详解(3)-- mini-batch SGD 小批量随机梯度下降
深度学习优化函数详解(4)-- momentum 动量法
深度学习优化函数详解(5)-- Nesterov accelerated gradient (NAG)
深度学习优化函数详解(6)-- adagrad
上一篇文章讲解了犹如小球自动滚动下山的动量法(momentum)这篇文章将介绍一种更加“聪明”的滚动下山的方式。动量法每下降一步都是由前面下降方向的一个累积和当前点的梯度方向组合而成。于是一位大神(Nesterov)就开始思考,既然每一步都要将两个梯度方向(历史梯度、当前梯度)做一个合并再下降,那为什么不先按照历史梯度往前走那么一小步,按照前面一小步位置的“超前梯度”来做梯度合并呢?如此一来,小球就可以先不管三七二十一先往前走一步,在靠前一点的位置看到梯度,然后按照那个位置再来修正这一步的梯度方向。如此一来,有了超前的眼光,小球就会更加”聪明“, 这种方法被命名为Nesterov accelerated gradient 简称 NAG。
↑这是momentum下降法示意图
↑这是NAG下降法示意图
看上面一张图仔细想一下就可以明白,Nesterov动量法和经典动量法的差别就在B点和C点梯度的不同。
公式推导
上图直观的解释了NAG的全部内容。
第一次看到NAG的梯度下降公式的时候我是懵的,梯度下降的流程比较明白,公式上不太理解。后来推导了好半天才得到NAG的公式,下面就把我推导的过程写出来。我推导公式的过程完全符合上面NAG的示意图,可以对比参考。
记vtv_tvt 为第t次迭代梯度的累积
v0=0v_0=0v0=0
v1=η∇θJ(θ)v_1=\eta \nabla_{\theta}J(\theta) v1=η∇θJ(θ)
v2=γv1+η∇θJ(θ−γv1)v_2=\gamma v_1+\eta \nabla_{\theta}J(\theta-\gamma v_1)v2=γv1+η∇θJ(θ−γv1)
↓\downarrow↓
vt=γvt−1+η∇θJ(θ−γvt−1)v_t=\gamma v_{t-1}+\eta \nabla_{\theta}J(\theta-\gamma v_{t-1})vt=γvt−1+η∇θJ(θ−γvt−1)
参数更新公式
θnew=θ−vt\theta_{new} = \theta - v_tθnew=θ−vt
公式里的−γvt−1-\gamma v_{t-1}−γvt−1 就是图中B到C的那一段向量, θ−γvt−1\theta-\gamma v_{t-1}θ−γvt−1 就是C点的坐标(参数)
γ\gammaγ 代表衰减率,η\etaη 代表学习率。
实验
实验选择了学习率 η=0.01\eta=0.01η=0.01, 衰减率 γ=0.9\gamma = 0.9γ=0.9
↑ 这是Nesterov方法
↑ 这是动量法(momentum)
没有对比就没有伤害,NAG方法收敛速度明显加快。波动也小了很多。实际上NAG方法用到了二阶信息,所以才会有这么好的结果。
实验源码下载 https://github.com/tsycnh/mlbasic/blob/master/p5 Nesterov momentum.py
深度学习优化函数详解(5)-- Nesterov accelerated gradient (NAG)相关推荐
- 深度学习优化函数详解(5)-- Nesterov accelerated gradient (NAG) 优化算法
深度学习优化函数详解系列目录 深度学习优化函数详解(0)– 线性回归问题 深度学习优化函数详解(1)– Gradient Descent 梯度下降法 深度学习优化函数详解(2)– SGD 随机梯度下降 ...
- 深度学习优化函数详解-- Nesterov accelerated gradient (NAG)
动量法每下降一步都是由前面下降方向的一个累积和当前点的梯度方向组合而成.于是一位大神(Nesterov)就开始思考,既然每一步都要将两个梯度方向(历史梯度.当前梯度)做一个合并再下降,那为什么不先按照 ...
- 【深度学习】详解Resampling和softmax模型集成
[深度学习]详解Resampling和softmax模型集成 文章目录 1 图像重采样1.1 次级采样(sub-sampling)1.2 高斯金字塔(Gaussian pyramids)1.3 上采样 ...
- 视频教程-深度学习原理详解及Python代码实现-深度学习
深度学习原理详解及Python代码实现 大学教授,美国归国博士.博士生导师:人工智能公司专家顾问:长期从事人工智能.物联网.大数据研究:已发表学术论文100多篇,授权发明专利10多项 白勇 ¥88.0 ...
- 【深度学习】详解 MAE
目录 摘要 一.引言 二.相关工作 三.方法 四.ImageNet 实验 4.1 主要属性 4.2 与先前结果的对比 4.3 部分微调 五.迁移学习实验 六.讨论与结论 摘要 本文证明了 masked ...
- 深度学习-Transformer详解
2017 年,Google 在论文 Attention is All you need 中提出了 Transformer 模型,其使用 Self-Attention 结构取代了在 NLP 任务中常用的 ...
- 【深度学习】详解Faster-R-CNN
作者简介 CW,广东深圳人,毕业于中山大学(SYSU)数据科学与计算机学院,毕业后就业于腾讯计算机系统有限公司技术工程与事业群(TEG)从事Devops工作,期间在AI LAB实习过,实操过道路交通元 ...
- 深度学习—激活函数详解(Sigmoid、tanh、ReLU、ReLU6及变体P-R-Leaky、ELU、SELU、Swish、Mish、Maxout、hard-sigmoid、hard-swish)
查看全文 http://www.taodudu.cc/news/show-3284957.html 相关文章: SELU激活函数,scaled exponential linear units 激活函 ...
- 深度学习算法详解及应用
深度学习是人工智能从概念提出到走向繁荣得以实现的主流技术.成为移动机器人.人脸识别.物体检测.自动驾驶.智能家居等应用不可或缺的方法,并且基于深度学习的方法在准确率上已经接近甚至超过人类水平. 人工智 ...
最新文章
- jenkins重启 linux_Jenkins节点重启连接失败的解决方法
- IPS与IDS部署场景(直路部署,单臂部署,旁路部署,阻断)
- CISA 称SolarWinds黑客或通过密码猜测攻陷目标,CISA 前局长受聘
- android之wifi开发
- +搭建“记忆宫殿”的三款思维导图神器
- java开发文档怎么写?教你写java技术文档
- Blumind 思维图软件
- Java案例3-1 基于控制台的购书系统
- qt无边框窗体的移动
- 径向渐变加阴影html,CSS径向渐变阴影 - 反转
- Payload Inject And Fake
- 牛客竞赛小白试炼(20201205 怕npy的牛牛)
- IT“咏叹调”之--你公司哪个部门是“老大”?
- V831——条形码识别
- 2020年的12个Vue.js开发技巧和窍门
- musicbee歌词_MusicBee是快速而强大的音乐管理器
- 应届大硕,上海找工作
- 防止引擎爬虫记录(君子协定)
- JS实现统计可供选择的任务分配方式总数
- Java伽马什么意思_伽马值是什么意思?,对比度,色调,清晰度,显示器亮度