Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Tensorflow搭建神经网络--加速神经网络训练

Tensorflow搭建神经网络--加速神经网络训练

原创
作者头像
软件架构师Michael
发布于 2022-12-31 14:45:14
发布于 2022-12-31 14:45:14
4.1K0
举报

今天我们会来聊聊在怎么样加速你的神经网络训练过程.

包括以下几种模式:

  • Stochastic Gradient Descent (SGD)
  • Momentum
  • AdaGrad
  • RMSProp
  • Adam

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

Stochastic Gradient Descent (SGD)

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

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

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

Momentum 更新方法

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

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

AdaGrad 更新方法

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

RMSProp 更新方法

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

Adam 更新方法

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

【小结】

如果觉得以上内容对你有帮助,欢迎点赞、收藏加关注。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
编辑精选文章
换一批
[Python人工智能] 七.加速神经网络、激励函数和过拟合
因为现实并没有我们想象的美好,激励函数是为了解决我们日常生活中不能用线性概括的问题而提出,如二分类问题。假设女生越漂亮,喜欢的男生人数越多,这是一个线性方程(Linear)问题,但假设场景发生在校园里,校园里男生人数有限,这就变成了一个非线性问题,并且女生不可能是无线漂亮的。
Ai学习的老章
2019/04/08
7470
[Python人工智能] 七.加速神经网络、激励函数和过拟合
如何加速我们的神经网络?
各位老哥们大家好,双击喜欢666。今天我们来聊一聊本萌新最新学习的一些知识。让我们一起来想一下怎么样来加速我们的神经网络的训练过程。 通常我们知道,越复杂的神经网络,越多的训练数据。我们所花费在训练这些实验数据上所消费的时间也就越多。原因很简单,因为你在计算的过程中需要计算的数据量太大了。但是往往在实际的过程中,复杂的数据和海量的数据往往是不可避免的。这个时候,我们就需要找到一些方法,让神经网络变得聪明起来,变得快起来。 所以,人们找出了一个最基础的方法SGD(Stochastic Gradient De
云时之间
2018/04/11
3.6K0
如何加速我们的神经网络?
数学公式、可视化图齐齐上阵,神经网络如何一步步走向最优化「看得见」!
继在《要做好深度学习任务,不妨先在损失函数上「做好文章」》一文中为大家深入浅出地介绍了损失函数的相关知识后,Deep Learning Demystified 编辑、数据科学家 Harsha Bommana 本次接着从优化的角度,结合数学方式和可视化图,带大家以「看得见」的方式来了解神经网络如何一步步找到最小化的损失值,并最终实现最优化。
AI科技评论
2019/10/15
7830
数学公式、可视化图齐齐上阵,神经网络如何一步步走向最优化「看得见」!
深度学习——优化器算法Optimizer详解(BGD、SGD、MBGD、Momentum、NAG、Adagrad、Adadelta、RMSprop、Adam)
在机器学习、深度学习中使用的优化算法除了常见的梯度下降,还有 Adadelta,Adagrad,RMSProp 等几种优化器,都是什么呢,又该怎么选择呢? 在 Sebastian Ruder 的这篇论文中给出了常用优化器的比较,今天来学习一下: https://arxiv.org/pdf/1609.04747.pdf 本文将梳理: 每个算法的梯度更新规则和缺点 为了应对这个不足而提出的下一个算法 超参数的一般设定值 几种算法的效果比较 选择哪种算法 ---- 0.梯度下降法深入理解 以下为个人总结,如有错误
10JQKA
2018/05/09
8.3K0
深度学习——优化器算法Optimizer详解(BGD、SGD、MBGD、Momentum、NAG、Adagrad、Adadelta、RMSprop、Adam)
强化学习DQN玩转FlappyBird|前景提要
强化学习是机器学习大家族中的一大类, 使用强化学习能够让机器学着如何在环境中拿到高分, 表现出优秀的成绩. 而这些成绩背后却是他所付出的辛苦劳动, 不断的试错, 不断地尝试, 累积经验, 学习经验。
用户1621951
2020/11/03
1.5K0
强化学习DQN玩转FlappyBird|前景提要
算法岗机器学习相关问题整理(深度学习部分)
w的更新方向由 决定,而 对所有的w_i是常数,所以实际上w的更新方向由 决定。
曲奇
2021/12/15
6620
算法岗机器学习相关问题整理(深度学习部分)
【深度学习实验】网络优化与正则化(三):随机梯度下降的改进——Adam算法详解(Adam≈梯度方向优化Momentum+自适应学习率RMSprop)
  目前,研究人员通过大量实践总结了一些经验方法,以在神经网络的表示能力、复杂度、学习效率和泛化能力之间取得良好的平衡,从而得到良好的网络模型。本系列文章将从网络优化和网络正则化两个方面来介绍如下方法:
Qomolangma
2024/07/30
4770
【深度学习实验】网络优化与正则化(三):随机梯度下降的改进——Adam算法详解(Adam≈梯度方向优化Momentum+自适应学习率RMSprop)
【干货】深度学习需要了解的四种神经网络优化算法
【导读】近日,Vadim Smolyakov发表了一篇博客,针对当前神经网络的优化算法进行了总结,并利用简单的CNN网络在NMIST数据集上进行实验,探讨不同的优化方法的效果好坏。其中考虑了四种神经网络训练的优化方法:SGD,Nesterov Momentum,RMSProp和Adam,并用TensorFlow进行训练。作者最终得出结果:使用Nesterov Momentum和Adam的SGD产生的结果更好。如果您对神经网络的优化算法还不是很了解,那么相信这篇文章将会给您很好的启发!专知内容组编辑整理。 N
WZEARW
2018/04/12
1.3K0
【干货】深度学习需要了解的四种神经网络优化算法
理解人工神经网络
1957年,Frank Rosenblatt从纯数学的角度重新考察这一模型,指出能够从一些输入输出对(X, y)中通过学习算法获得权重W和b。
小小杨
2021/10/13
4230
聊聊神经网络的优化算法
优化算法主要用于调整神经网络中的超参数,使得训练数据集上的损失函数尽可能小。其核心逻辑是通过计算损失函数对参数的梯度(导数)来确定参数更新方向。
Ryan_OVO
2023/12/19
2280
聊聊神经网络的优化算法
神经网络训练细节part2(上)
在SGD(Stochastic gradient descent)中经常会遇到一个问题,就是梯度在某个方向非常小,在另一个方向有一个很大的速率,这样就会在一个方向进展很小,在另一个方向有很大变化,解决方法是动量更新(Momentum update)
听城
2018/08/30
4380
神经网络训练细节part2(上)
【AI前沿】深度学习基础:训练神经网络
前向传播是神经网络的计算过程,通过输入层传递到输出层。每个神经元接收输入信号,进行加权求和,并通过激活函数得到输出。这个过程层层递进,最终在输出层得到预测结果。以下是一个简单的前向传播过程的步骤:
屿小夏
2025/05/24
1500
【AI前沿】深度学习基础:训练神经网络
深度学习基础知识(七)--- 各种优化方法
深度学习中,优化算法的 目标函数 通常是一个基于训练集的损失函数,优化的目标在于降低训练误差。
TeeyoHuang
2020/02/18
1.4K0
深度学习基础知识(七)--- 各种优化方法
一文概览神经网络优化算法
机器学习的优化(目标),简单来说是:搜索模型的一组参数 w,它能显著地降低代价函数 J(w),该代价函数通常包括整个训练集上的性能评估(经验风险)和额外的正则化(结构风险)。与传统优化不同,它不是简单地根据数据的求解最优解,在大多数机器学习问题中,我们关注的是测试集(未知数据)上性能度量P的优化。
算法进阶
2022/06/02
1.2K0
一文概览神经网络优化算法
深度学习与CV教程(7) | 神经网络训练技巧 (下)
本系列为 斯坦福CS231n 《深度学习与计算机视觉(Deep Learning for Computer Vision)》的全套学习笔记,对应的课程视频可以在 这里 查看。更多资料获取方式见文末。
ShowMeAI
2022/06/01
5510
深度学习与CV教程(7) | 神经网络训练技巧 (下)
【PyTorch入门】 PyTorch不同优化器的比较
在 PyTorch 中,torch.optim 提供了多种优化器用于神经网络训练。每种优化器背后有不同的更新规则和机制,旨在适应不同的训练需求。以下是五种常见优化器(SGD、Momentum、AdaGrad、RMSprop、Adam)的原理、作用、优缺点及应用场景。
机器学习司猫白
2025/01/21
3300
【PyTorch入门】 PyTorch不同优化器的比较
基于TensorFlow的比较研究:神经网络优化算法
用于训练神经网络的最受欢迎的优化算法有哪些?如何比较它们?本文试图用一个卷积神经网络(CNN)来回答这些问题。 随机梯度下降(SGD) SGD通过选取大小(m)的子集或小批量数据,更新在梯度(g)的反
AiTechYun
2018/03/01
1K0
基于TensorFlow的比较研究:神经网络优化算法
Adam 优化算法详解
Adam Optimizer是对SGD的扩展,可以代替经典的随机梯度下降法来更有效地更新网络权重。
deephub
2020/06/10
1.4K0
神经网络中的优化方法
在传统的梯度下降优化算法中,如果碰到平缓区域,梯度值较小,参数优化变慢 ,遇到鞍点(是指在某些方向上梯度为零而在其他方向上梯度非零的点。),梯度为 0,参数无法优化,碰到局部最小值。实践中使用的小批量梯度下降法(mini-batch SGD)因其梯度估计的噪声性质,有时能够使模型脱离这些点。
@小森
2024/05/06
1350
神经网络中的优化方法
【深度学习实验】网络优化与正则化(四):参数初始化及其Pytorch实现——基于固定方差的初始化(高斯、均匀分布),基于方差缩放的初始化(Xavier、He),正交初始化
  目前,研究人员通过大量实践总结了一些经验方法,以在神经网络的表示能力、复杂度、学习效率和泛化能力之间取得良好的平衡,从而得到良好的网络模型。本系列文章将从网络优化和网络正则化两个方面来介绍如下方法:
Qomolangma
2024/07/30
3630
【深度学习实验】网络优化与正则化(四):参数初始化及其Pytorch实现——基于固定方差的初始化(高斯、均匀分布),基于方差缩放的初始化(Xavier、He),正交初始化
推荐阅读
相关推荐
[Python人工智能] 七.加速神经网络、激励函数和过拟合
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档