何时使用 RMSE 而不是 MSE,反之亦然?

人工智能 机器学习 深度学习 训练 目标函数
2021-10-19 01:12:48

我知道 RMSE 只是 MSE 的平方根。一般来说,据我所见,人们似乎将 MSE 用作损失函数,并将 RMSE 用于评估目的,因为它准确地将误差作为欧几里得空间中的距离给出。

当用作训练的损失函数时,使用 MSE 和 RMSE 之间的主要区别是什么?

我很好奇,因为像 PyTorch、Keras 等好的框架并没有提供开箱即用的 RMSE 损失函数。这是某种标准约定吗?如果是这样,为什么?

此外,我知道 MSE 放大幅度>1 的误差和缩小幅度<1 的误差(在二次尺度上)的区别,而 RMSE 没有这样做。

1个回答

评论中的答案很不错,尤其是 DuttA。

DuttA 给出了这些,大约

  • 易于衍生
  • 不必担心分母中的 ~0 会导致巨大的梯度
  • 但对我来说最重要的是数学上的方便,有人可能很容易犯 RMSE 的错误只是等于差 y-y' 而不是 y-y' 的均方根。答案可能取决于约定。
  • 在数学中(不知道原因并且可能不准确),我们主要使用方差而不是标准差。

以下是我使用 MSE 而不是 RMSE 的原因:

  • 没有 sqrt 操作,因此计算速度更快
  • 平方根并不容易,它的牛顿法,所以每次迭代可能需要几十步
  • MSE拥有RMSE的所有信息,有1对1的映射,所以没有损失
  • 平方根的存储通常不会在 IEEE-784 中节省任何内存,并且计算与内存的复杂性很重要
  • 像梯度增强机器这样的工具可以“回收”平方误差计算以提高速度并处理 O(n) 复杂度
  • 存在隐藏的缩放和正则化,因为许多 gpu 硬件元素基本上都是 8 位的,所以如果你可以让你的代码在它的胆量中更多的是 8 位,那么你在反向转换中就没有那么多了,它运行得更快