在 SGD 训练中处理小批量
机器算法验证
机器学习
神经网络
深度学习
梯度下降
随机梯度下降
2022-03-22 07:09:05
2个回答
对于小批量,我相信 SGD 下降方向成为对“真实”下降方向的非常嘈杂的估计(即,如果我们在整个训练集上对其进行评估)。对于小批量,我不确定增加动量会有多大帮助,因为它会在非常嘈杂的方向上积累动量。但我可能是错的,也许你的优化问题在可行的情况下已经足够好了。
如果您不追求“最先进”的结果,您可以选择自然图像数据的一个选项是调整图像大小。实际上,我认为模追求卓越的基准测试性能,自然图像具有许多尺度不变的属性,并且它们的许多语义特征在合理的尺度变换下相当健壮。这将减轻一些 GPU 内存并允许您增加批量大小,并且您的 SGD 下降方向将更好地估计下降方向。
如果您正在处理像负对数似然这样的可分离损失函数,我们可以利用这样一个事实,即大批次的梯度仅仅是其组成子批次的梯度的总和/平均值。例如,如果我们的批大小是 ,我们可以像往常一样通过迭代批次来计算超级如果我们适当地平均,我们将计算大小的超级批次的精确梯度。个批次后执行权重更新。
我们将通过如上所述的序列化计算额外的计算或内存开销最小,只需修改小批量迭代器以包含超级批量序列化和梯度缓存。
最近看到一个有趣的作品:
Samuel L. Smith、Pieter-Jan Kindermans、Chris Ying、Quoc V. Le, 不要降低学习率,增加批量(ICLR 2018)。
这项工作显示了批量大小和学习率之间的直接联系。具体来说,降低学习率与增加批量大小具有相同的效果,反之亦然。
将他们的结论推向极端,人们可能会考虑减少批量大小并通过增加学习率来补偿它。
不过,我还没有真正尝试过。
其它你可能感兴趣的问题