为什么在神经网络中将成本函数缩放 1/n?

机器算法验证 神经网络 梯度下降
2022-03-26 12:38:49

在神经网络中,我总是看到按 1/ n缩放的成本函数,其中n = 训练示例的总数。我也看到了它,比如在成本上添加一个正则化项。为什么这样做?

例如,这是最后带有正则化项的交叉熵损失 在此处输入图像描述

这种缩放意味着更新权重的梯度也会被缩放,因此增加训练数据会减慢学习速度。如果你将训练数据翻倍,你的学习速度就会减半。对于 2000 个示例(这没什么!)我需要一个 1.0 的疯狂学习率才能到达任何地方,这意味着我肯定在这里误解了一些东西。

当我拿出这个 1/ n缩放时,我一点问题都没有,而且当我添加更多的训练数据时,我也不必调整我的学习率,这让我更加确定我在这里遗漏了一些东西。

另一个问题是我正在使用一种非常动态的数据增强,其中每个小批量都随机旋转、缩放、添加噪声等,因此网络永远不会真正看到相同的输入两次。在这种情况下,你甚至会如何使用这个 1/ n缩放?

1个回答

在小批量学习方面,应该是批量的大小,而不是训练数据的总量(在您的情况下应该是无限的)。 n

梯度按缩放,因为我们取的是批次的平均值,因此无论批次大小如何,都可以使用相同的学习率。1/n

编辑 我稍后在该页面中找到了这个,它显示了如何在小批量学习的上下文中设置超参数。因此,您所引用的公式和段落似乎是在谈论全批量学习,在这种情况下,应该是训练数据的总数。
在此处输入图像描述
n

编辑

所以现在问题变成了“为什么你在正则化中使用总训练数据大小,而不是批量大小?”

我不知道这是否有理论上的解释,对我来说,这只是让超参数与批次大小无关,因为我们没有对批次中的正则化项求和。