我是神经网络的新手,想知道什么时候我应该降低学习率而不是批量大小。
我理解如果学习不同,学习率必须降低。
但是,何时减少或增加批量?我的猜测是,如果损失波动太大,那么减小批量大小是理想的吗?
答案 0 :(得分:5)
如果增加批量大小,则渐变更可能指向正确的方向,以便(整体)误差减小。特别是在仅考虑导致非常随机和噪声梯度的单个示例之后更新权重。
因此,如果损失函数波动,您可以同时执行以下操作:增加批量大小并降低学习率。批量大的缺点是每次更新的计算成本更高。因此,如果培训时间过长,请查看它是否仍然以较小的批量大小收敛。
您可以阅读更多here或here。 (顺便说一句,https://stats.stackexchange.com/更适合于不包含特定代码实现的理论问题)
答案 1 :(得分:1)
“正确”的学习方法是在梯度下降的每一步中使用所有训练数据。然而,这需要一点时间来计算它,因为这是一个非常繁重的函数 - 大部分时间 - 由成千上万的训练样例参数化。
这个想法是,当您将几个训练样例留下时,错误功能/重量更新看起来足够相似。这加快了误差函数的计算速度。但是,缺点是您可能无法通过某些梯度下降步骤进入正确的方向。但在大多数情况下它应该“几乎”正确。
所以理由是即使你没有完全朝着正确的方向前进,你也可以在同一时间做更多的步骤,这样就无所谓了。
迷你批量大小的一个非常常见的选择是128或256.最极端的选择通常称为“随机梯度下降”,仅使用1个训练示例。
正如在ML中经常这样,尝试不同的值是个好主意。