深度学习优化函数详解(5)-- Nesterov accelerated gradient (NAG)
来源:互联网 发布:js事件源 编辑:程序博客网 时间:2024/06/05 09:15
深度学习优化函数详解系列目录
深度学习优化函数详解(0)– 线性回归问题
深度学习优化函数详解(1)– Gradient Descent 梯度下降法
深度学习优化函数详解(2)– SGD 随机梯度下降
深度学习优化函数详解(3)– mini-batch SGD 小批量随机梯度下降
深度学习优化函数详解(4)– momentum 动量法
上一篇文章讲解了犹如小球自动滚动下山的动量法(momentum)这篇文章将介绍一种更加“聪明”的滚动下山的方式。动量法每下降一步都是由前面下降方向的一个累积和当前点的梯度方向组合而成。于是一位大神(Nesterov)就开始思考,既然每一步都要将两个梯度方向(历史梯度、当前梯度)做一个合并再下降,那为什么不先按照历史梯度往前走那么一小步,按照前面一小步位置的“超前梯度”来做梯度合并呢?如此一来,小球就可以先不管三七二十一先往前走一步,在靠前一点的位置看到梯度,然后按照那个位置再来修正这一步的梯度方向。如此一来,有了超前的眼光,小球就会更加”聪明“, 这种方法被命名为Nesterov accelerated gradient 简称 NAG。
↑这是momentum下降法示意图
↑这是NAG下降法示意图
看上面一张图仔细想一下就可以明白,Nesterov动量法和经典动量法的差别就在B点和C点梯度的不同。
公式推导
上图直观的解释了NAG的全部内容。
第一次看到NAG的梯度下降公式的时候我是懵的,梯度下降的流程比较明白,公式上不太理解。后来推导了好半天才得到NAG的公式,下面就把我推导的过程写出来。我推导公式的过程完全符合上面NAG的示意图,可以对比参考。
记
参数更新公式
公式里的
实验
实验选择了学习率
↑ 这是Nesterov方法
↑ 这是动量法(momentum)
没有对比就没有伤害,NAG方法收敛速度明显加快。波动也小了很多。实际上NAG方法用到了二阶信息,所以才会有这么好的结果。
实验源码下载 https://github.com/tsycnh/mlbasic/blob/master/p5%20Nesterov%20momentum.py
- 深度学习优化函数详解(5)-- Nesterov accelerated gradient (NAG)
- 深度学习优化算法(sgd/momentum/Nesterov/adagrad/adadelta)
- 深度学习优化函数详解(1)-- Gradient Descent 梯度下降法
- 深度学习优化函数详解
- 深度学习中的数学与技巧(0):优化方法总结比较(sgd/momentum/Nesterov/adagrad/adadelta)
- 深度学习优化函数详解(0)-- 线性回归问题
- 深度学习优化函数详解(4)-- momentum 动量法
- 深度学习优化函数详解(6)-- adagrad
- 深度学习各种优化函数详解
- 深度学习优化函数详解(2)-- SGD 随机梯度下降
- 深度学习优化函数详解(3)-- mini-batch SGD 小批量随机梯度下降
- gradient descend/accelerated gradient descend/linearSVM/libSVM
- method_Nesterov's Accelerated Gradient Descent
- caffe学习笔记(9):优化之Gradient descent
- 从零开始深度学习 T2. Gradient Descent
- 深度学习: gradient diffusion (梯度弥散)
- Proximal Algorithms--Accelerated proximal gradient method
- FGSM(Fast Gradient Sign Method)生成对抗样本(32)---《深度学习》
- NYOJ 8 一种排序
- JQuery-导航栏收缩左边栏
- Java IO流
- 冒泡排序同时得到最大、最小值位置
- BZOJ 2259: [Oibh]新型计算机 heap+dijkstra
- 深度学习优化函数详解(5)-- Nesterov accelerated gradient (NAG)
- IM聊天实现思路及其采用 node+socket.io+elasticsearch实现的代码片段
- Uva 11988 例题6-4 破损的键盘
- SQL 中聚集索引
- 基于H5<audio>标签并通过js和jQuery实现网页版音乐播放器
- LLVM学习笔记(15)
- _stdcall,_cdecl,_fastcall区别
- React-Native 工程添加推送功能 (iOS 篇)
- RxJava2应用场景案列