小批量会改善模型吗?

数据挖掘 喀拉斯 损失函数 小批量梯度下降
2021-09-18 05:40:59

我正在训练LSTMwith Keras

我注意到批量越小,期间损失减少的越多:所以这让我认为网络一次可以更好地处理更少的项目。

这是一般的正常行为吗?

1个回答

一般来说,更小或更大的批量大小并不能保证更好的收敛性。批量大小或多或少被视为一个超参数,以调整您所拥有的内存限制。

更大或更小的批量大小有一个权衡,它们有自己的缺点,使其成为某种意义上的超参数调整。

理论表明,batch size 越大,梯度中的噪声越小,梯度估计也越好。这允许模型朝着最小值迈出更好的一步。然而,挑战在于更大的批量大小需要更多的内存,并且每一步都非常耗时。

即使我们可以以某种方式避免时间和空间限制,与较小的批量大小相比,更大的批量大小在实践中仍然不会提供更好的解决方案。这是因为神经网络目标的表面通常是非凸的,这意味着可能存在局部最优。仅仅有一个准确的梯度估计并不能保证我们达到全局最优(我们寻求)。它可以准确地引导我们达到局部最优!保持小批量会使梯度估计产生噪声,这可能使我们能够在收敛期间绕过局部最优。但是具有非常小的批量大小对于模型在任何地方收敛来说都太嘈杂了。

因此,最佳批量大小取决于您正在训练的网络、您正在训练的数据以及您尝试优化的目标函数。