选择哪个Batchsize对模型效果最好?

发布于 2025-1-15 12:56
浏览
0收藏

总结

在项目中,如果你没有任何参考,那么选择2次方(即64、128、256、512、1024等)可以会更加直接和易于管理,然后对上限来说,batchsize大小最好<=数据集样本数*0.1。

梯度下降算法

在更新模型参数时,我们一般会用到梯度下降算法。这个时候,我们就会有一个问题,每次拿多少训练样本进行更新参数呢?这个时候有两个极端情况,资源够,那我们把所有数据都丢进去,我们称之为批量梯度下降法(Batch Gradient Descent,BGD)。另外一个极端,我们每次都是拿一个数据去训练,此时我们称之为随机梯度下降法(Stochastic Gradient Descent,SGD)。

批量梯度下降法(BGD)的好处是稳定下降,loss下降得也快,但容易到极小值,而随机梯度下降法(SGD)的梯度上引入了随机噪声,因此在非凸优化问题中,其相比批量梯度下 降更容易逃离局部最小值。

选择哪个Batchsize对模型效果最好?-AI.x社区

如果拿不同的批量来训练模型来做图像识别问题,实验结果如图所示,横轴是批量大小,纵轴是正确率。结果是可能出乎一部分人的意料:批量大小越大,验证集准确率越差。 这个是优化的问题,大的批量大小优化可能会有问题,小的批量大小优化的结果反而是比较好的。

选择哪个Batchsize对模型效果最好?-AI.x社区

有噪声反而可能是好事

有可能存在的解释是,批量梯度下降法因为沿着一个损失函数,所以比较容易出现局部极小值或者鞍点。而小批量梯度下降法每次都是挑一次批量计算损失,所以每一次更新参数的时候所使用的损失函数是有差异的。

选择哪个Batchsize对模型效果最好?-AI.x社区

选择哪个Batchsize对模型效果最好?-AI.x社区

在论文 “On Large-Batch Training for Deep Learning: Generalization Gap and Sharp Minima”中,作者在不同数据集上训练了六个网络(包括全连接网络、不同的卷积神经网络),在很多不同的 情况都观察到一样的结果。

在小的批量,一个批量里面有256笔样本。在大的批量中,批量大小等于数据集样本数乘0.1,大的批量跟小的批量的训练准确率(accuracy)差不多。 但就算是在训练的时候结果差不多,测试的时候,大的批量比小的批量差,代表过拟合。

本文转载自 沐白AI笔记​,作者: 杨沐白

收藏
回复
举报
回复
相关推荐