文章目录

  • 1.前言
  • 2.SGD(随机梯度下降)
  • 3.Momentum(动量)
  • 4.AdaGrad
  • 5.RMSProp
  • 6.Adam

1.前言

今天我们会来聊聊在怎么样加速你的神经网络训练过程.
常见的有以下几种:

1、Stochastic Gradient Descent (SGD)
2、Momentum
3、AdaGrad
4、RMSProp
5、Adam

越复杂的神经网络 , 越多的数据 , 我们需要在训练神经网络的过程上花费的时间也就越多. 原因很简单, 就是因为计算量太大了. 可是往往有时候为了解决复杂的问题, 复杂的结构和大数据又是不能避免的, 所以我们需要寻找一些方法, 让神经网络聪明起来, 快起来。

2.SGD(随机梯度下降)

所以, 最基础的方法就是 SGD , 对一整套数据, 如果用普通的训练方法, 就需要重复不断的把整套数据放入神经网络 NN训练, 这样消耗的计算资源会很大.

我们换一种思路, 如果把这些数据拆分成小批小批的, 然后再分批不断放入 NN 中计算, 这就是我们常说的 SGD 的正确打开方式了. 每次使用批数据, 虽然不能反映整体数据的情况, 不过却很大程度上加速了 NN 的训练过程, 而且也不会丢失太多准确率.如果运用上了 SGD, 你还是嫌训练速度慢, 那怎么办?

没问题, 事实证明, SGD 并不是最快速的训练方法, 但它到达学习目标的时间是上述这些方法中最长的一种. 我们还有很多其他的途径来加速训练

3.Momentum(动量)


大多数其他途径是在更新神经网络参数那一步上动动手脚. 传统的参数 W 的更新是把原始的 W 累加上一个负的学习率(learning rate) 乘以校正值 (dx). 这种方法可能会让学习过程曲折无比, 看起来像 喝醉的人回家时, 摇摇晃晃走了很多弯路.

所以我们把这个人从平地上放到了一个斜坡上, 只要他往下坡的方向走一点点, 由于向下的惯性, 他不自觉地就一直往下走, 走的弯路也变少了. 这就是 Momentum 参数更新.

4.AdaGrad


这种方法是在学习率上面动手脚, 使得每一个参数更新都会有自己与众不同的学习率, 他的作用和 momentum 类似, 不过不是给喝醉酒的人安排另一个下坡, 而是给他一双不好走路的鞋子, 使得他一摇晃着走路就脚疼, 鞋子成为了走弯路的阻力, 逼着他往前直着走. 他的数学形式是这样的.

5.RMSProp

如果把下坡和不好走路的鞋子合并起来, 是不是更好呢? 没错, 这样我们就有了 RMSProp 更新方法.

有了 momentum 的惯性原则 , 加上 adagrad 的对错误方向的阻力, 我们就能合并成这样. 让 RMSProp同时具备他们两种方法的优势. 不过细心的同学们肯定看出来了, 似乎在 RMSProp 中少了些什么. 原来是我们还没把 Momentum合并完全, RMSProp 还缺少了 momentum 中的 这一部分. 所以, 我们在 Adam 方法中补上了这种想法

6.Adam


计算m 时有 momentum 下坡的属性, 计算 v 时有 adagrad 阻力的属性, 然后再更新参数时 把 m 和 V 都考虑进去. 实验证明, 大多数时候, 使用 adam 都能又快又好的达到目标, 迅速收敛. 所以说, 在加速神经网络训练的时候, 一个下坡, 一双破鞋子, 功不可没.

Pytorch——神经网络训练方法的演进相关推荐

  1. 神经网络模型中class的forward函数何时调用_总结深度学习PyTorch神经网络箱使用...

    ↑ 点击蓝字 关注极市平台来源丨计算机视觉联盟编辑丨极市平台 极市导读 本文介绍了Pytorch神经网络箱的使用,包括核心组件.神经网络实例.构建方法.优化器比较等内容,非常全面.>>加入 ...

  2. PyTorch 神经网络

    PyTorch 神经网络 神经网络 神经网络可以通过 torch.nn 包来构建. 现在对于自动梯度(autograd)有一些了解,神经网络是基于自动梯度 (autograd)来定义一些模型.一个 n ...

  3. PyTorch神经网络集成技术

    PyTorch神经网络集成技术 create_python_neuropod 将任意python代码打包为一个neurood包. create_python_neuropod( neuropod_pa ...

  4. 【Pytorch神经网络实战案例】21 基于Cora数据集实现Multi_Sample Dropout图卷积网络模型的论文分类

    Multi-sample Dropout是Dropout的一个变种方法,该方法比普通Dropout的泛化能力更好,同时又可以缩短模型的训练时间.XMuli-sampleDropout还可以降低训练集和 ...

  5. 总结 | 深度学习PyTorch神经网络箱使用

    点上方蓝字计算机视觉联盟获取更多干货 在右上方 ··· 设为星标 ★,与你不见不散   计算机视觉联盟笔记   作者:王博Kings.Sophia 本文内容概述PyTorch神经网络箱 AI博士笔记系 ...

  6. Tensor:Pytorch神经网络界的Numpy

    摘要:Tensor,它可以是0维.一维以及多维的数组,你可以将它看作为神经网络界的Numpy,它与Numpy相似,二者可以共享内存,且之间的转换非常方便. 本文分享自华为云社区<Tensor:P ...

  7. pytorch神经网络解决回归问题(非常易懂)

    pytorch神经网络解决回归问题(非常易懂) 参考文章: (1)pytorch神经网络解决回归问题(非常易懂) (2)https://www.cnblogs.com/Yanjy-OnlyOne/p/ ...

  8. 使用Google-Colab训练PyTorch神经网络

    Colaboratory 是免费的 Jupyter 笔记本环境,不需要进行任何设置就可以使用,并且完全在云端运行.关键是还有免费的GPU可以使用!用Colab训练PyTorch神经网络步骤如下: 1: ...

  9. 数据分析实战:python热门音乐分析 附代码+数据 +论文(PCA 主成分分析,sklearn 机器学习,pytorch 神经网络,k-means 聚类,Librosa 音频处理,midi 音序)

    项目概述: 本选取了抖音当下最热门的 400 首音乐,通过一系列方法提取每首歌的波形特征,再经过降维以及机器学习等手段,进行无监督学习对音乐数据进行聚类的同时训练并使用监督学习分类器进行音乐流派分类, ...

最新文章

  1. 把整数转换成2的n次方的和数组
  2. docker 开机自启动
  3. 关于魔法方法的一点总结
  4. 分摊的意思_接了两单顺风车遇到几个有意思乘客,后来把顺风车软件删了
  5. Android Paint、Path详解
  6. 一起学习 网络规划设计师
  7. Unity SRP自定义渲染管线 -- 5.Directional Shadows
  8. Shell 脚本生成不重复的随机数
  9. RTT——IO设备管理篇·基本概念理解
  10. 出门问问发布无线智能耳机,李志飞:语音交互的下一个爆点
  11. 三菱PLC史上最全视频教程!(视频+数据+例程)
  12. 【微信小程序】使出千手浮图—回滚式
  13. 我爱天文 - 月亮从哪边升出来?
  14. MATLAB模糊控制工具箱的使用及常见问题处理
  15. 缓冲区(1):为什么会有缓冲区(缓存)?
  16. 如何构建有效的绩效管理(四)
  17. 香侬科技Service Streamer:加速深度学习Web服务、极大提高GPU利用率。| 百万人学AI评选
  18. 云开发(微信-小程序)笔记(五)----云函数,就这(上)
  19. APP - 京东退货上门取件自动变成自己邮寄?
  20. 第十五章 拒绝服务

热门文章

  1. SQL语句关于数据库安全性
  2. 关于PHP代码写的下载文件打不开的问题,自己备忘!(韩老师2011年的例子)
  3. jQuery技术内幕:深入解析jQuery架构设计与实现原理1
  4. web开发中的跨域问题
  5. 【汇编语言与计算机系统结构笔记02】整数的计算机表示与运算,C中的无符号字符(unsigned)和带符号字符(signed),补码,一些例题
  6. Xamarin开发Android---提示、跳转、传递数值 (学习总结)
  7. jbutton可以设置id吗_Java Swing简单控件实例(JButton,JLabel,JMenuBar,JComboBo)
  8. Conda 环境常用碎笔记
  9. 转:一个Sqrt函数引发的血案
  10. java中switch条件_关于java:你能在Android的switch-case中使用条件语句吗?