莫烦pytorch 加速神经网络训练(Speed Up Training)

优化器有以下几种:

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

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

Stochastic Gradient Descent(SGD)

在这里插入图片描述
最基础的方法就是SGD,一般不用优化的训练方法是,把整块的data直接全部放入神经网络NN进行训练,这样消耗的计算资源会很大。

如果我们把这些数据拆分成小批小批的,然后再分批不断放入NN中计算,这就是我们常说的SGD的正确打开方式了。每次使用批数据,虽然不能反映整体数据的情况,不过却很大程度上加速了NN的训练过程,而且也不会丢失太多准确率。
在这里插入图片描述
事实证明,SGD并不是最快速的训练方法,红色的线是SGD,但它到达学习目标的时间是在这些方法中最长的一种。

Momentum更新方法

W += -Learning rate * dx
传统的参数W的更新是把原始的W累加上一个符的学习率(learning rate)乘以校正值(dx)。这种方法可能会让学习过程曲折无比,看起来像喝醉的人回家时,摇摇晃晃走了很多了弯路。
在这里插入图片描述
Momentum参数更新公式:
m = b1 * m - Learning rate * dx
W += m
相当于我们把这个人从平地放到了一个斜坡上,只要他往下坡的方向走一点点,由于向下的惯性,他不自觉地就一直往下走,走的弯路也就变少了。
在这里插入图片描述
AdaGrad更新方法
这种方法是在学习率上面动手脚,使得每一个参数更新都会有自己与众不同的学习率。
他的作用和momentum类似, 不过不是给喝醉酒的人安排另一个下坡, 而是给他一双不好走路的鞋子, 使得他一摇晃着走路就脚疼, 鞋子成为了走弯路的阻力, 逼着他往前直着走. 他的数学形式是这样的.
在这里插入图片描述
RMSProp更新方法
有了momentum的惯性原则,加上adagrad的对错误方向的阻力,我们就能合并成这样。

但是RMSProp中少了momentum中的这一部分。

RMSProp公式
v = b1 * v + (1 - b1) * dx^2
W += -Learning rate * dx / sqrt(v)
在这里插入图片描述
Adam更新方法

计算m时有momentum下坡的属性,计算v时有adagrad阻力的属性,然后再更新参数时把m和v都考虑进去。实验证明,大多数时候,使用adam都能又快又好的达到目标,迅速收敛。

Adam公式
m = b1 * m + (1-b1) * dx -> Momentum
v = b2 * v + (1-b2) * dx^2 -> AdaGrad
W += -Learning rate * m / sqrt(v)
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值