一. batchsize太小的缺点
1. 耗时长,训练效率低
假设batchsize=1,每次用完一个数据进行训练,如果数据总数很多,完整训练完一遍数据需要时间很长,训练效率低
2. 训练数据难以收敛
假设batchsize=1,每次用一个数据进行训练,由于个体差异或者异常值影响,导致梯度波动较大。梯度方向变得不稳定,训练难以收敛,导致模型难以找到最优解。
3. 容易陷入局部最优解
小batchsize的高噪声梯度更新有可能导致模型跳出全局最优解,收敛到局部最优解,最终得到模型训练结果较差
二. batchsize逐渐增大的优缺点
1. 大的batchsize减少训练时间的同时所需内存容量增加
当 batch size 增大时,每个批次中需同时加载的样本数增多,导致内存占用成倍增长,这会影响硬件资源的利用,特别是在 GPU 上
2. 大的batchsize梯度的计算更加稳定
大的batchsize梯度的计算更加稳定, 在微调的时候,大的batchsize可能会取得更好的结果,因为在一定范围内,batchsize越大,梯度下降方向越准,引起的震荡越小。batchsize大到一定程度,其确定方向已经基本不再变化
3. 大的batchsize可能导致泛化能力下降
在一定范围内,增大batchsize有助于收敛的稳定性,但是随着batchsize增大,模型的泛化性能会下降。如果batchsize设置为最大即为样本数量,则每次更新参数都是相同的样本,下降方向基本确定,这会导致模型的泛化性能下降。
三. 如何平衡batchsize大小
batchszie太大或者太小都不好。batchsize的值越大,梯度越稳定,而batchsize越小,梯度越具有随机性,如果batchsize太大,对内存的需求就更高,不利于网络跳出局部极小值点。在实际应用中,batch size 的选择需要考虑硬件资源、任务复杂度和模型的收敛速度。一个常见的方法是使用‘渐进式’ batch size 策略:在模型初期使用较小的 batch size 来获得多样化的梯度方向,然后逐步增大 batch size 来加速收敛。此外,可以结合学习率调整(如‘学习率调度’)来确保收敛的稳定性和模型的泛化性能
本文参考:https://blog.csdn.net/weixin_45928096/article/details/123643006