深度学习关于Batch的总结

2023-03-26 21:49:44

 

BatchBatch,中文意为“批”假设我们的训练集有100个训练样本,将这些样本分为5批,那么每批就有20个训练样本,此时Batch Size=20,如果让神经网络以上述的规则进行分批训练,那么每迭代一次(更新一次网络参数)就会训练一批(20个)样本(也即完成了一个iteration),迭代5次后,就对全部训练样本完成了一次遍历,也即完成了一个epoch。

批量梯度下降(Batch gradient descent,BGD)批量梯度下降:Batch Size=训练集样本数量优点:(1)由全部训练样本确定的梯度下降方向能够更好地代表样本总体,从而使参数更准确地朝向极值所在方向迭代。

(2)最大限度上利用了计算机硬件的并行计算能力,提高了计算效率数据量较少时,可以采用这种方法进行训练,原因有二:(1)不会爆内存(显存)(2)因为数据量较小,故训练时间也不会太长但当数据量较大时就会出现问题,主要有两点:。

(1)随着数据集海量增长和内存(显存)限制,一次性载入所有数据变得越来越不可行举个例子:数据集共100万张图片,每一张图片大小为64kb,一次性载入大约需要61g内存(显存),这显然对于普通计算机来说太大了。

(2)模型总体收敛所消耗的时间会很长每迭代一次,需要遍历一遍全部训练样本(在这之后,才能利用反向传播更新参数完成一次迭代),虽然这使模型的优化方向更准确,但遍历一遍全部训练样本需要消耗大量时间,导致模型总体的收敛速度变慢。

为解决上述问题,我们引入了SGD随机梯度下降(Stochastic gradient descent,SGD)随机梯度下降:Batch Size=1优点:(1)每次迭代只训练了一个样本,解决了内存(显存)限制问题。

(2)只训练一个样本,就可以立即更新网络参数,大大提高了参数更新速度缺点:(1)准确度下降随机梯度下降每次迭代只训练一个样本,故每次修正方向以各自样本的梯度为方向修正,因此梯度会变来变去,使梯度不准确(2)并行性不好。

由于每一次的梯度计算所用到的网络参数都依赖于上一次迭代后所更新的参数值,这决定了随机梯度下降只能顺序计算,不能很好地利用计算机硬件的并行计算能力,使得计算效率下降小批量梯度下降(MBGD,Mini-batch gradient descent

)小批量梯度下降:Batch Size值为介于1到full-batch(全部训练样本数量)之间的某适当值(常为64)MBGD为BGD和SGD的折中选择,具有两者的部分优点优点:(1)每次使用一个batch可大大减少收敛所需要的迭代次数,同时可以使收敛结果更加接近梯度下降(BGD)的效果。

(2)很好地利用了计算机硬件的并行计算能力。最后实际情况中,Batch Size的值一般不要过大也不要过小,可以取一个适中值(多为2ⁿ,可以更好发挥GPU的性能,比如Batch Size=64)。

 


以上就是关于《深度学习关于Batch的总结》的全部内容,本文网址:https://www.7ca.cn/baike/8480.shtml,如对您有帮助可以分享给好友,谢谢。
标签: Batch
声明

排行榜