李宏毅《机器学习2021》类神经网络训练不起来怎么办(二):批次(Batch)和动量(Momentum)
Batch(Small Batch v.s. Large Batch)
在神经网络的训练过程中,我们往往需要将数据集划分为一定的批次进行梯度下降,更新参数,而不是一次性将所有数据进行训练。然而,如何确定批次的数量,是需要我们去思考的,小批次和大批次究竟哪一个效果和效率更好,在直觉上,我们往往会认为小批次所花费的时间更短,大批次效果更好,然而事实真是如此吗?李宏毅老师在MNIST数据集上所做的实验告诉了我们答案。
事实上,小批次和大批次在一次更新中所花的时间相差不大,但由于小批次训练一个epoch需要的更新次数更多,所以小批次训练一个epoch所耗费的时间更多,这与我们的直觉不符。
同时,小批次具有更好的效果。这可能是由于小批次中的噪声,一定的噪声对训练是有益的,也提高了泛化能力。
Momentum
Momentum方法是为了防止在梯度下降中掉入critical points。动量不仅仅基于梯度,还包括前一步的动量。下面两张图分别是最基本的梯度下降和加入Momentum后梯度下降的过程。