1. 概念
Batch_Size是批量学习中才能用到的参数。统计学习可以分为在线学习、批量学习两类。也就是深度学习可以按照某种划分方式,分为在线学习和批量学习,我们平时用的比较多的是批量学习。
在线学习\color{blue}{在线学习}在线学习:每次接受一个样本,进行预测,并不断重复学习模型;
批量学习\color{blue}{批量学习}批量学习:是一种离线学习方法(需要提前获取所有样本进行训练任务),需要对所有样本或者说是部分样本进行学习。
设置batch_size的目的让模型在训练过程中每次选择批量的数据来进行处理。一般机器学习或者深度学习训练过程中的目标函数可以简单理解为:在每个训练集样本上得到的目标函数值的求和,然后根据目标函数的值进行权重值的调整,大部分时候是根据梯度下降法来进行参数更新。\color{blue}{在每个训练集样本上得到的目标函数值的求和,然后根据目标函数的值进行权重值的调整,大部分时候是根据梯度下降法来进行参数更新。}在每个训练集样本上得到的目标函数值的求和,然后根据目标函数的值进行权重值的调整,大部分时候是根据梯度下降法来进行参数更新。
Batch_Size的直观理解就是一次训练所选取的样本数。
Batch_Size的大小影响模型的优化程度和速度,同时其直接影响到GPU内存的使用情况,假如你GPU内存不大,该数值最好设置小一点。
2. 作用
如果采用在线学习,相当于Batch_Size = 1,这中情况下,梯度下降方向的随机性较大,模型难以稳定收敛(收敛速度慢),所以我们平时用的比较多的是批量学习\color{blue}{批量学习}批量学习。
如果数据集比较小,可采用全数据集的形式。由全数据集确定的方向能够更好地代表样本总体,从而更准确地朝向极值所在的方向\color{blue}{由全数据集确定的方向能够更好地代表样本总体,从而更准确地朝向极值所在的方向}由全数据集确定的方向能够更好地代表样本总体,从而更准确地朝向极值所在的方向。但是对于大数据集,一次性把所有数据输进网络,会引起内存的爆炸\color{blue}{会引起内存的爆炸}会引起内存的爆炸,所以就提出Batch Size的概念。另外,Batch_Normal也需要批量的数据来求均方差,如果Batch_Size为1,BN就不起做用了。
3. 设置
3.1. 增大Batch_Size优点
3.2. 增大Batch_Size缺点
3.3. 减小Batch_Size缺点
综上,Batch_Size 增大到某个时候,达到时间上的最优。由于最终收敛精度会陷入不同的局部极值,因此 Batch_Size 增大到某些时候,达到最终收敛精度上的最优。
参考:
https://blog.csdn.net/jiachang98/article/details/124729988
https://blog.csdn.net/MengYa_Dream/article/details/119719576