title: DL3 - 加快神经网络训练速度的优化算法
date: 2019-08-17 02:40:57
tags: deeplearning
categories: deeplearning

Welcome to MyBlog!

本文所以截图以及文字均来自于:Coursera

1 小批量梯度下降算法(mini-batch gradient descent)

首先将你的训练集拆分成更小的 微小的训练集 即小批量训练集(mini-batch) 比如说每一个微型训练集只有1000个训练样例 也就是说 取x1至x1000作为第一个微训练集 也叫做小批量训练集 然后取接下来的1000个样例 x1001至x2000这1000个样例 依次继续

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6i3VgsjS-1610775595598)(https://i.loli.net/2019/08/28/57gxIMFENLkJWv9.png)]

将mini-batch极端的设置为m,就得到了批量梯度下降

极端地设置为1,就得到了随机梯度下降

两种方法的区别:批量梯度下降算法可能从这里开始 它的噪声相对小些 每一步相对大些 并且最终可以达到最小值 而相对的 随机梯度下降算法 让我们选一个不同的点 假使从这里开始 这时对于每一次迭代你就在一个样本上做梯度下降 大多数时候你可以达到全局最小值 但是有时候也可能因为某组数据不太好 把你指向一个错误的方向 因此随机梯度算法的噪声会非常大 一般来说它会沿着正确的方向 但是有事也会指向错误的方向 而且随机梯度下降算法 最后也不会收敛到一个点 它一般会在最低点附近摆动 但是不会达到并且停在那里 实际上 mini-batch的大小一般会在这2个极端之间

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6m4QwgoX-1610775595599)(https://i.loli.net/2019/08/28/YQXVuR8HgA4lrd3.png)]

2 指数加权(滑动)平均

beta*V_(t-1)加上 之前使用的是0.1 现在把它换成(1-beta)*theta_t 之前beta=0.9 出于我们之后会讲的某些原因 当你计算这个公式的时候 你可以认为V_t近似于 1/(1-beta)天温度的平均 举例来说 当beta=0.9的时候 你可以认为它是前10天的气温平均值

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PWzzACD4-1610775595600)(https://i.loli.net/2019/08/28/Y1HuTEiq6vUFjPl.png)]

3 偏差修正

它能够帮助你更好地计算平均值

工作原理:用vt/1-βt代替vt(t是下标)

在机器学习中 多数的指数加权平均运算 并不会使用偏差修正 因为大多数人更愿意在初始阶段 用一个稍带偏差的值进行运算 不过 如果在初始阶段就开始考虑偏差 指数加权移动均指仍处于预热阶段 偏差修正可以帮你尽早做出更好的估计

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SuX0Q2Ng-1610775595601)(https://i.loli.net/2019/08/28/9IXPFviqufD4YoS.png)]

4 动量梯度下降算法

它几乎总会比标准的梯度下降算法更快 一言以蔽之 算法的主要思想是 计算梯度的指数加权平均 然后使用这个梯度来更新权重

可以减少震荡,原因:如果把这些梯度平均一下 你会发现这些震荡 在纵轴上的平均值趋近于0 所以 在垂直方向上 你会希望减慢速度 正数和负数在计算平均时相互抵消了 平均值接近于0 然而在水平方向上 所有导数都指向水平方向的右边 所以水平方向的平均值仍然较大 因此在数次迭代之后 你会发现动量梯度下降算法的每一步 在垂直方向上的振荡非常小 且在水平方向上运动得更快 这会让你的算法选择更加直接的路径 或者说减弱了前往最小值的路径上的振荡

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gNCN0hA1-1610775595603)(https://i.loli.net/2019/08/28/akwGWuSgt32xMIj.png)]

5 RMSprop 均方根传递(root mean square prop)

你希望减慢b方向的学习 也就是垂直方向 同时加速或至少不减慢水平方向的学习 这就是RMSprop算法要做的

现在我们来理解一下它的工作原理 记得在水平方向上 即例子中W的方向上 我们希望学习速率较快 而在垂直方向上 即例子中b的方向上 我们希望降低垂直方向上的振荡 对于S_dW和S_db这两项 我们希望S_dW相对较小 因此这里除以的是一个较小的数 而S_db相对较大 因此这里除以的是一个较大的数 这样就可以减缓垂直方向上的更新

另一个收效是 你可以使用更大的学习率alpha 学习得更快 而不用担心在垂直方向上发散

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iRweA9WM-1610775595605)(https://i.loli.net/2019/08/28/azu2tUcdsJ9qBn7.png)]

6 Adam优化算法(自适应矩估计Adaptive Moment Estimation)

Adam优化算法本质上是将 动量算法和RMSprop结合起来:在动量梯度下降算法抵消部分震荡的前提下,利用了rms梯度下降算法降低震荡

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iVZCCQ6T-1610775595606)(https://i.loli.net/2019/08/28/3LOcsl7n4fFihtW.png)]
t表示迭代次数

超参数的选择

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6ervWB1u-1610775595607)(https://i.loli.net/2019/08/28/cqlDBOVoQ5GRgWa.png)]

7 学习率衰减 learning rate decay

如果你想使用学习率衰减 你可以尝试 不同的超参数组合 包括α0 以及这个衰减率的超参数 然后去尝试寻找一个效果好的数值

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TuFiT57x-1610775595608)(https://i.loli.net/2019/08/28/18qR9I4vEFDBTMr.png)]

7.1 其他学习率衰减的方法

k表示常数

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JLTHlD0d-1610775595609)(https://i.loli.net/2019/08/28/tCSQj5FnGyJoNTO.png)]

8 局部最优点,鞍点

对于一个高维空间的函数 如果梯度为零 则在每个方向上 它可能是凸函数 或者是凹函数 假设在一个 2万维的空间中 如果一个点要成为局部最优 则需要在所有的2万个方向上都像这样 因此这件事发生的概率非常低 大概2的负2万次方 你更有可能遇到的情况是
某些方向的曲线像这样向上弯曲 同时另一些方向的曲线则向下弯曲 并非所有曲线都向上弯曲 这就是为什么在高维空间中 你更有可能碰到一个像右图这样的鞍点 而不是局部最优

8.1 停滞区

实际上是停滞区(Plateaus) 停滞区指的是 导数长时间接近于零的一段区域 如果你在这里 那么梯度下降会沿着这个曲面向下移动 然而因为梯度为零或接近于零 曲面很平 你会花费很长的时间 缓慢地在停滞区里找到这个点 然后因为左侧或右侧的随机扰动,你的算法终于能够离开这个停滞区 它一直沿着这个很长的坡往下走, 直到抵达此处, 离开这个停滞区

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-L6sPtDKC-1610775595610)(https://i.loli.net/2019/08/28/R3zsKiFMrCyvdu2.png)]

首先 实际上你不太可能陷入糟糕的局部最优点 只要你训练的是一个较大的神经网络 有很多参数 代价函数J定义在一个相对高维的空间上

其次 停滞区是个问题, 它会让学习过程变得相当慢 这也是像动量(Momentum)算法
或RmsProp算法 或Adam算法能改善你的学习算法的地方

DL3 - optimization algorithms相关推荐

  1. An overview of gradient descent optimization algorithms

    转载自:http://sebastianruder.com/optimizing-gradient-descent/ 梯度下降优化及其各种变体.1.随机梯度下降(SGD) 2.小批量梯度下降(mini ...

  2. Optimization Algorithms

    Optimization Algorithms http://www.cas.mcmaster.ca/~cs4te3/

  3. 强化学习——Proximal Policy Optimization Algorithms

    文章目录 前言 为什么需要PPO TRPO PPO 前言 本文对论文<Proximal Policy Optimization Algorithms>进行总结,如有错误,欢迎指出. 为什么 ...

  4. 第二周:优化算法 (Optimization algorithms)

    第二周:优化算法 (Optimization algorithms) 文章目录 第二周:优化算法 (Optimization algorithms) 2.1 Mini-batch 梯度下降(Mini- ...

  5. 吴恩达deeplearning.ai系列课程笔记+编程作业(6)第二课 改善深层神经网络-第二周:优化算法 (Optimization algorithms)

    第二门课 改善深层神经网络:超参数调试.正则化以及优化(Improving Deep Neural Networks:Hyperparameter tuning, Regularization and ...

  6. Learning Combinatorial Optimization Algorithms over Graphs 2020-05-06

    Learning Combinatorial Optimization Algorithms over Graphs Abstract 解决NP-hard问题通常需要大量的专业知识和反复试验, lea ...

  7. 《DeepLearning.ai》第六课:优化算法(Optimization algorithms)

    第六课:优化算法(Optimization algorithms) 6.1 Mini-batch梯度下降 上图表示了整个Mini-batcha梯度下降的过程. 首先对 X { t } X^{\{t\} ...

  8. 群体智能动态优化算法及其应用综述(A survey of swarm intelligence for dynamic optimization: Algorithms and applicatio)

    群体智能动态优化算法及其应用综述[A survey of swarm intelligence for dynamic optimization: Algorithms and application ...

  9. 【文献阅读】Proximal Policy Optimization Algorithms

    Author: John Schulman 原文摘要 我们提出了一种新的强化学习的 策略梯度方法,该方法在 与环境互动中进行采样 和 使用随机梯度提升算法优化"surrogate" ...

最新文章

  1. 基于HTML5的WebGL结合Box2DJS物理应用
  2. Oracle数据类型(转)
  3. 甲骨文正式发布Java 14(Oracle JDK 14),下载下来尝尝鲜~~~
  4. 表单的ajax填入问题
  5. 嵌入式linux 零基础-实践起步 --- 002 --- 配置虚拟机的网络连接
  6. IEEE 解除华为限制;AWS、谷歌云大规模故障;TypeScript 3.5 发布 | 极客头条
  7. 基于OpenCV的计算机视觉入门(5)图像美化(上)
  8. github操作实用命令
  9. WebRTC教程 - 使用SIPML5
  10. 信息安全技术 网络安全漏洞分类分级指南(GB/T 30279-2020 )
  11. vtuber面部捕捉工具_Live2D纸片人出道?VTuber工具VUP了解下
  12. 关于微信小程序获取小程序码并接受buffer流保存为图片
  13. ES8(Java API Client)查询详解
  14. 英特尔微软强强联手开发智能广告技术
  15. 电脑怎么写入便签并同步到手机版便签上?
  16. 【VRRP】来给你的网关加一个备份吧
  17. 计算机二级ppt为客户制作演示文稿,计算机二级PPT真题:制作日月潭介绍PPT
  18. “前进!前进!不择手段地前进!”——托马斯·维德
  19. Bonferroni correction
  20. jmeter“察看结果树”显示的请求数不全

热门文章

  1. 阿里云产品推荐——云数据库RDS MySQL 版
  2. 神经网络Neural Networks概述
  3. excel 日期选择器_Excel日期选择器工具
  4. flashfxp下载文件,flashfxp如何下载文件到本地
  5. 数据安全法下,企业如何平衡数据安全合规与业务性能?
  6. 一个测试经理/测试主管/测试总监的工作总结
  7. MIME sniffing攻击
  8. cve-2018-1273复现思路及简单利用(避坑)
  9. c语言ch1与ch2什么意思,ch1和ch2是什么意思
  10. 朱清时——物理学步入禅境:缘起性空-(技术工作者上升到哲学思维)