神经网络训练细节part2上

参数更新机制

  1. SGD
  2. Momentum update
  3. Nesterov Momentum update
  4. AdaGrad update
  5. RMSProp update
  6. Adam update

SGD

随机梯度下降:

x += - learning_rate * dx

特点:如果在水平方向上梯度较小,而在垂直方向上梯度较大,会造成在水平方向更新较慢,而在垂直方向上造成上下抖动。收敛速度慢。

Momentum update

动量更新

v = mu*v - learning_rate * dx
x += v

借用物理学动量的思想,给参数更新加上一个动量。其中mu是超参数,通常设置在0.5到0.9之间,v的初始值为0。

特点:(1)收敛速度比SGD快。(2)从实现可以看出动量更新会逐渐放慢速度,最终停下来。

Nesteriov Momentum update

不同于动量更新,动量更新是当前的梯度加上当前的动量值,得到实际更新的方向,而Nestreriov Momentum update是用当前的动量加上预测的梯度得到更新的方向。

左边:

右边:

特点:比前面两种更新速度更快地向最优解靠近。

AdaGrad update

cache += dx**2
x += learning_rate * dx / (np.sqrt(cache) + 1e-7 )

在更新时,考虑到了数据每一维的规模。其中1e-7是为了防止分母为0的情况出现。

特点:(1)补偿措施。比如垂直方向上梯度较大,水平方向上梯度较大,在用AdaGrad进行更新参数时,就会用垂直方向上的梯度除以对应的cache会使更新的梯度值较小,而同理会使水平方向上的梯度值较大,这在一定程度上是一种补偿措施。因为网络很多情况下需要在梯度大的方向上得到梯度叫较小的更新。(2)网络最终会停止。因为cache会不断变大,会使更新步长越来越小,最终会使网络停止更新,而网络需要不断更新。

RMSProp update

cache = dacay_rate * cache + (1 - decay_rate) * dx**2
x += - learning_rate * dx / (np.sqrt(cache) + 1e-7)

该方法对AdaGrad的最终停止更新做出了改善,decay_rate是一个超参数,名为衰减率,一般设置为0.99。

特点:具备AdaGrad的全部优点,并且不会过早停止。

Adam update

m = beta1*m + (1-beta1)*dx
v = beta2*v + (1-beta2)*(dx**2)
x += - learning_rate * m / (np.sqrt(v) + 1e-7)

是动量和RMSProp的一种结合。

实际上实现的时候会有偏置矫正,一开始的时候数据可能不正确,在最初几次更新中,使m和v较大,不会过小。

m = beta1*m + (1-beta1)*dx
v = beta2*v + (1-beta2)*(dx**2)
m /= 1-beta1**t
v /= 1-beta2**t
x += - learning_rate * m / (np.sqrt(v) + 1e-7)

学习率:最初使用较高的学习率,然后逐渐减小学习率。

CS231n李飞飞计算机视觉 神经网络训练细节part2上相关推荐

  1. [深度学习基础] 斯坦福CS231n李飞飞计算机视觉Lecture 7笔记

    内容列表 Lecture 7 Convolutional Neural Networks 卷积神经网络历史 卷积神经网络具体结构 卷积层 池化层 全连接层 神经网络架构发展 LeNet AlexNet ...

  2. [深度学习基础] 斯坦福CS231n李飞飞计算机视觉Lecture 5笔记

    内容列表 Lecture 5 Training Neural Networks,Part I 神经网络的历史 训练神经网络 激活函数 数据预处理 权重初始化 批量归一化 检查学习过程 超参数优化 小结 ...

  3. [深度学习基础] 斯坦福CS231n李飞飞计算机视觉Lecture 1笔记

    前言:目前做深度学习也有一段时间了,系统的知识也学了很多,但是大多数都是自己在网上所获得的零散的知识,最近看了李飞飞的斯坦福网上公开课,觉得可以好好的巩固一下基础,对每个Lecture做一下笔记,De ...

  4. 李飞飞计算机视觉笔记(5)--神经网络训练细节part2

    参数更新算法 动量更新(Momentum) 复习一下SGD公式 W i = W i − l r ∗ g r a d W_i=W_i-lr*grad Wi​=Wi​−lr∗grad 我们在使用SGD时比 ...

  5. 斯坦福CS231n李飞飞计算机视觉之线性分类上

    线性分类器简介 线性评分函数 阐明线性分类器 译者注:上篇翻译截止处 损失函数 多类SVM Softmax分类器 SVM和Softmax的比较 基于Web的可交互线性分类器原型 小结 线性分类 上一篇 ...

  6. CS231N斯坦福李飞飞-计算机视觉-损失函数和优化

    CS231N斯坦福李飞飞-计算机视觉-损失函数和优化

  7. 李飞飞计算机视觉课CS231n第一天

    李飞飞计算机视觉课CS231n第一天 数据集 Pascal Visual Object Challenge: 20 catagories ImageNet: 22000 catagories and ...

  8. 李飞飞计算机视觉-自用笔记(第八周)

    李飞飞计算机视觉-自用笔记(八) 15 深度学习高效方法与硬件 15 深度学习高效方法与硬件 庞大模型的三大挑战: 大小.速度.能源效率 解决方法: 1.算法优化: 剪枝(pruning):并非神经网 ...

  9. 李飞飞计算机视觉-自用笔记(第一周)

    李飞飞计算机视觉-自用笔记(一) 1 课程介绍-计算机视觉概述 1.1 课程介绍-历史背景 2 图像分类 2.1 数据-驱动方法(机器学习) 2.2 K最近邻算法 2.3 线性分类I 3 损失函数和优 ...

  10. 李飞飞计算机视觉笔记(2)--线性分类器损失函数与最优化

    文章中的词语解释: 分类器:完整的神经网络 类别分类器:分类器中的某一个输出对应的所有权值(单层全连接神经网络) 损失函数:不包括正则式的损失函数 正则化损失函数:包括正则式的损失函数 多类SVM损失 ...

最新文章

  1. GANimation填坑之旅
  2. python 判断是不是汉字危机阅读答案_《汉字危机》阅读练习及答案
  3. 上个ensp实验只发了配置,这次是命令条目
  4. Github Pages 搭建个人网站
  5. 【Top1】Tudou.com首页网页设计的制作方法
  6. kittito_rosbag入坑教程
  7. 【已解决】Could not get lock /var/lib/dpkg/lock-frontend
  8. php 如何将100w级的数据入库。
  9. nodejs实现同步http请求
  10. C-Free 5.0注册码
  11. MMD-MikuMikuDance简易教程(包含软件、资源下载、MME特效中文说明、等等)
  12. python virtualenv_python之virtualenv的简单使用方法(必看篇)
  13. 计算机与信息科学相关教材,AdobeIllustrator实例教程/计算机与信息科学系列规划教材...
  14. 在线网站\本地软件拓扑图\复杂网络绘制
  15. 某银行无线网络频繁掉线重认证分析、解决方案及抓包经验分享
  16. 【IoT】 产品设计:竞品分析思维(WHW模型)
  17. android qq截屏快捷键是什么,手机截屏的快捷键是什么,超过3种截图的快捷键操作方法!...
  18. 【AtCoder】AtCoder Grand Contest 046
  19. 【C语言】大一小白的一个C语言扎金花小程序
  20. JavaScript数据数据类型判断

热门文章

  1. 【故障处理】一次RAC故障处理过程
  2. GEO hash 核心原理
  3. 管理之道(七) - 不可奖励员工错误的行为
  4. 随手写了个android应用
  5. 【十五分钟Talkshow】如何理解并优化.NET应用程序对内存的使用
  6. WordPress出现循环重定向解决办法
  7. 套料排版代码python_XSuperNEST全自动套料解决方案
  8. oracle查看脚本,oracle 查看表空间的脚本
  9. 【LA4992】Jungle Outpost(半平面交+二分)
  10. 【2019杭电多校第一场1009=HDU6586】String(贪心+序列自动机)