令(; )表示一个深度神经网络, 为网络参数,在使用小批量梯度下降进
行优化时,每次选取 个训练样本 = {(, )},k = [1,..., K].第 次迭代(Iteration)
时损失函数关于参数 的偏导数为:
其中ℒ(⋅)为可微分的损失函数, 称为批量大小(Batch Size). 第 次更新的梯度g 定义为:
其中 > 0为学习率. 每次迭代时参数更新的差值Δ 定义为
从上面公式可以看出,影响小批量梯度下降法的主要因素有:1)批量大小、 2)学习率、 3)梯度估计.
本文介绍如何选择批量大小。
1.批量大小不影响随机梯度的期望,但会影响随机梯度的方差
批量越大,随机梯度的方差越小,引入噪声也越小,训练越稳定,可以设置较大学习率
批量较小时,需要设置较小的学习率,否则模型会不收敛
2.批量大小和学习率的关系?
通常批量大小应该和学习率保持线性缩放规则
假设batchsize为k,
如果是batchsize是mk,
可以假定 = ,我们可以看到如果batchsize为mk,虽然它的样本的数量增加了,但是其梯度下降的速度和批量较小的k时是一样的,所以我们应该增大batchsize为mk时的学习率,以更快的收敛到最优解。从另一个方面来说,我们的batchisize越大,设置的学习率也应该越大,从而保证和批量较小的设置有同样速度的收敛效率。当然在实际应用中,两者并不是一个严格的线性关系,也就是说批量大小增大m倍,但是学习率不一定增大m倍。
从图a可以看出,对于每一次的梯度更新,批量大小越大,下降效果越明显,并且下降曲线越平滑. 但从图b可以看出,如果按整个数据集上的回合(Epoch)数来看,则是批量样本数越小,下降效果越明显.适当小的批量会导致更快的收敛.这是因为虽然每次迭代批量大的损失下降更快,但是对于一个epoch,批量小的迭代次数多,所以在每个epoch反而批量小的收敛更快。 此外,批量大小和模型的泛化能力也有一定的关系.[Keskar et al., 2016]通 过实验发现:批量越大,越有可能收敛到尖锐最小值;批量越小,越有可能收敛到平坦最小值.
批量大小的选择可以考虑几个方面:
从效率上将,批量的大小应该充分利用GPU的并行计算能力,GPU能放多少就放多少。但是批量越大,优化效率反而慢,所以需要折衷。此外,批量越小,随机性越强,可以使得模型的泛化能力越强。如果训练数据很多,模型的泛化性就不是要考虑的指标,可以将批量大小设置最大以充分利用计算资源,但是如果训练数据较少,模型的泛化能力就需要考虑,这时应该将批量设置小一些。在具体实践中批量的大小还需要实验得出。