深度学习基础笔记——Batch_Size

相关申明及相关参考:

体系学习地址 主要学习笔记地址

由于是文章阅读整合,依据个人情况标注排版,

不确定算不算转载,主要学习围绕AI浩的五万字总结,深度学习基础
如有侵权,请联系删除。


目录

1 Batch_Size概念

2 Batch_Size作用

3 Batch_Size相关设置

A 在合理范围内,增大Batch_Size好处

B 盲目增大Batch_Size缺点

C 调节Batch_Size对训练效果的影响 


1 Batch_Size概念

Batch一般被翻译为批量设置batch_size的目的让模型在训练过程中每次选择批量的数据来进行处理。一般机器学习或者深度学习训练过程中的目标函数可以简单理解为

  • 在每个训练集样本上得到的目标函数值的求和,
  • 然后根据目标函数的值进行权重值的调整,大部分时候是根据梯度下降法来进行参数更新的。

Batch Size的直观理解就是一次训练所选取的样本数
Batch Size的大小影响模型的优化程度和速度,同时其直接影响到GPU内存的使用情况,假如你GPU内存不大,该数值最好设置小一点。

2 Batch_Size作用

在没有使用Batch Size之前,这意味着网络在训练时,是一次把所有的数据(整个数据库)输入网络中,然后计算它们的梯度进行反向传播,由于在计算梯度时使用了整个数据库,所以计算得到的梯度方向更为准确。但在这情况下计算得到不同梯度值差别巨大,难以使用一个全局的学习率,所以这时一般使用Rprop这种基于梯度符号的训练算法,单独进行梯度更新。
在小样本数的数据库中,不使用Batch Size是可行的,而且效果也很好。但是一旦是大型的数库,一次性把所有数据输进网络,肯定会引起内存的爆炸,所以就提出Batch Size的概念。

3 Batch_Size相关设置

设置BatchSize要注意一下几点:

  1.  batch数太小,而类别又比较多的时候,真的可能会导致loss函数震荡而不收敛,尤其是在网络比较复杂的时候。
  2.  随着batchsize增大,处理相同的数据量的速度越快。
  3.  随着batchsize增大,达到相同精度所需要的epoch数量越来越多。
  4.  由于上述两种因素的矛盾, Batch_Size 增大到某个时候,达到时间上的最优。
  5.  由于最终收敛精度会陷入不同的局部极值,因此 Batch_Size 增大到某些时候,达到最终收敛精度上的最优。
  6.  过大的batchsize的结果是网络很容易收敛到一些不好的局部最优点。同样太小的batch也存在一些问题,比如训练速度很慢,训练不容易收敛等。
  7.  具体的batch size的选取和训练集的样本数目相关。
  8.  GPU对2的幂次的batch可以发挥更佳的性能,因此设置成16、32、64、128…时往往要比设置为整10、整100的倍数时表现更优
  9. 在设置BatchSize的时候,首先选择大点的Batch_size把GPU占满,观察Loss收敛的情况,如果不收敛,或者收敛效果不好则降低Batch_size,一般常用16,32,64等。
     

A 在合理范围内,增大Batch_Size好处

  • 内存利用率提高了,大矩阵乘法的并行化效率提高。
  • 跑完一次epoch(全数据集)所需的迭代次数减少,对于相同数据量的处理速度进一步加快。
  • 一定范围内,一般来说 Batch_Size 越大,其确定的下降方向越准,引起训练震荡越小。

B 盲目增大Batch_Size缺点

  • 内存利用率提高了,但是内存容量可能撑不住了。
  • 跑完一次 epoch(全数据集)所需的迭代次数减少,要想达到相同的精度,其所花费的时间大大增加了,从而对参数的修正也就显得更加缓慢。
  • Batch_Size 增大到一定程度,其确定的下降方向已经基本不再变化。

C 调节Batch_Size对训练效果的影响 

  • Batch_Size 太小,模型表现效果极其糟糕(error飙升)。
  • 随着 Batch_Size 增大,处理相同数据量的速度越快。
  • 随着 Batch_Size 增大,达到相同精度所需要的 epoch 数量越来越多。
  • 由于上述两种因素的矛盾, Batch_Size 增大到某个时候,达到时间上的最优。
  • 由于最终收敛精度会陷入不同的局部极值,因此 Batch_Size 增大到某些时候,达到最终收敛精度上的最优。

你可能感兴趣的:(【深度学习笔记】,深度学习)