Minibatch 会减少 SGD 的缺点吗?
数据挖掘
深度学习
小批量梯度下降
2022-03-10 14:48:42
2个回答
出于此答案的目的,我们假设您的训练数据或多或少完美地代表了从中采样的真实世界数据的分布。
让我们考虑一下小批量梯度下降。当你有一个小批量时,每个训练步骤都使用一小批训练示例,这可能无法准确地表示更广泛的数据集。这意味着计算出的误差梯度不是很准确,并且有效地更新了模型的参数,就好像一小部分训练样本完全代表了底层分布一样。如果小批量离基础分布特别远,那么在它之后的小批量平均会使模型回到正确的分布。
我们使用一个小的学习率来确保在每个训练步骤中只进行小的更新,这从本质上降低了模型参数在响应一个奇怪的小批量时疯狂偏离轨道的风险,因此使模型的下降更接近于想象中的“完美”的误差梯度下降(因为平均而言,小批量将代表您的训练数据的精确分布)。
如果我们使用更大的批次,它们更有可能代表底层分布,因此我们可以安全地使用更高的学习率。随着我们的模型开始收敛,它应该仍然朝着真正的错误最小值移动,并且不会被奇怪的批次所抛弃。随着训练的进行,我们可能会使用学习率调度来降低学习率。
随机梯度下降等效于批量大小为 1 的小批量梯度下降,因此如果我们的学习率太高,我们就有可能因奇怪的观察而偏离理想的下降。这可能会使我们偏离通往局部最小值的路径并走上通往全局最小值(或至少更好的局部最小值)的路径,但它也可能适得其反。因此,这不是使用非常小的批量大小的好理由。
当然,有时我们不得不使用小批量,因为我们的数据太大而无法一次在内存中容纳许多观察。否则,更大的批量大小会更好。
其它你可能感兴趣的问题

