为什么“平方误差函数”有时用常数 1/2 定义,有时用常数 1/m 定义?

人工智能 神经网络 目标函数 定义 均方误差
2021-10-20 18:26:00

根据来源,我发现人们使用“平方误差函数”的不同变体。怎么会这样?

在这里,它被定义为

Etotal =12(targetoutput)2

OTOH,在这里,它被定义为

1mi=1m(hθ(x(i))y(i))2

请注意,它被除以 1m与变体 1 不同,我们乘以1/2.

里面的东西()2只是符号,我明白了,但除以1/m1/2显然会得到不同的结果。哪个版本是“正确的”版本,或者没有正确或“官方”的平方误差函数之类的东西?

1个回答

第一个变体被命名为“Etotal“。它包含一个没有很好指定的总和(没有索引,没有限制)。使用第二个变体的符号重写它会导致:

Etotal=i=1m12(y(i)hθ(x(i)))2,

在哪里:

  • x(i)表示i训练样例
  • hθ(x(i))表示该实例/示例的模型输出
  • y(i)表示该实例的基本事实/目标/标签
  • m表示训练样例的数量

因为大括号内的项是平方的,符号无关紧要,所以我们可以将其重写(切换减去的项)为:

Etotal=i=1m12(hθ(x(i))y(i))2.


现在它看起来已经很像你的第二个变体了。

第二个变体仍然有一个1m总和之外的条款。这是因为您的第二个变体计算所有训练示例的均方误差,而不是第一个变体计算的总误差

任何一个错误都可以用于训练。我个人倾向于使用平均误差而不是总误差,主要是因为平均误差的大小与批量大小无关m,而总误差的大小与用于训练的批量大小成正比。任何一个选项都是有效的,但由于 scale 的不同,它们可能需要不同的超参数值(尤其是学习率)


接着就,随即1m术语解释,唯一剩下的区别是12总和中的术语(也可以从总和中提取),它存在于第一个变体中,但不存在于第二个变体中。包含该术语的原因在您链接到第一个变体的页面中给出:

12包括在内,以便稍后我们进行微分时取消指数。结果最终乘以学习率,所以我们在这里引入一个常数并不重要。