RMSE 和欧几里得距离有什么区别,何时使用自定义损失?

人工智能 神经网络 深度学习 比较 优化 目标函数
2021-11-17 11:03:59

我正在寻找适合我项目的损失函数。实际上,我有两个问题,但它们的方向相同。我看一下均方根误差 (RMSE)欧几里得距离的定义,它们在我看来是一样的。这就是为什么我想知道两者之间的区别。如果我使用 RMSE 作为损失函数或欧几里得距离,会有什么区别?

第二个问题是如何搜索损失函数。我的意思是我知道这取决于问题,常见的是回归的 MSE 和分类的交叉熵,但是假设我有一个特定的问题,我如何搜索损失函数?

我还看到有些人使用自定义损失函数,并且大多数深度学习框架都允许我们定义自定义损失函数,但我为什么要使用自定义损失函数呢?我如何获得需要自定义损失函数的直觉?

更具体地说,我正在做一个需要减少车辆 GPS 误差的项目。我有一些车辆数据,我的神经网络会尝试预测经度和纬度,所以这是一个回归问题。这就是为什么我认为欧几里得距离作为损失函数是有意义的,对吧?现在,不知何故 MSE 对我来说也很有意义,因为它可以区分预测和基本事实。作为专业的 ML 工程师或数据科学家,这对您有意义吗?如果有一个你可以使用的自定义损失函数,你会建议什么,为什么?

1个回答

对于第一个问题,RMSE 和欧几里得距离没有区别,我不知道。

对于第二个问题,您只需要普通任务的常见损失函数。

MSE 是线性回归任务中使用的常见损失函数,以及本质上类似于 RMSE 的损失函数。对于分类任务,首选交叉熵损失。对于逻辑回归,使用二元交叉熵损失。有关详细信息,请参阅此:

交叉熵损失或对数损失衡量一个分类模型的性能,其输出是一个介于 0 和 1 之间的概率值。它是分类的首选,而均方误差 (MSE) 是回归的最佳选择之一。这直接来自您对问题本身的陈述。在分类中,您使用一组非常特殊的可能输出值,因此 MSE 定义错误。

为了更好地理解现象,最好遵循并理解它们之间的关系

交叉熵

逻辑回归(二元交叉熵)

线性回归 (MSE)

您会注意到,两者都可以看作是最大似然估计量 (MLE),只是对因变量有不同的假设。

当您从概率和分布方面推导成本函数时,您可以观察到当您假设误差服从正态分布时会发生 MSE,而当您假设二项式分布时会发生交叉熵。这意味着当你使用 MSE 时,你隐含地在做回归(估计),而当你使用 CE 时,你在做分类。

资料来源:https ://intellipaat.com/community/2015/why-is-the-cross-entropy-method-preferred-over-mean-squared-error-in-what-c​​ases-does-this-doesnt-hold-向上

对于自定义损失函数,例如三元组损失和需要同时优化两个损失的情况,则需要自定义损失函数。对于三元组损失的情况,它用于人脸识别等一次性学习任务。在那里,人脸图像通过 CNN 输入,以获取关于人脸描述的嵌入。在训练阶段,每批有三张图像。一个锚,一个正(与锚是同一个人)和一个负(与锚不同的人)。损失函数triplet loss使anchor embedding和negative embedding之间的距离最大化。相反,它也最小化了锚嵌入和正嵌入之间的距离。损失函数是这样的: 在此处输入图像描述

如您所见,这里有两个分量,将它们相减以最大化第二个分量并最小化第一个分量。alpha 值是为了使损失为正,因为梯度下降将损失优化为尽可能接近于零。

风格迁移的案例还引入了自定义损失函数。这是损失函数: 在此处输入图像描述

风格转换基本上改变了输入图像的风格,就像系统的风格图像一样。

损失函数包括风格损失和内容损失。内容损失减少了输出图像的距离,风格损失减少了输出图像与艺术风格的距离。第二个损失使输出图像模仿风格图像的风格。

在这两种情况下,都使用了自定义损失函数。在这两种情况下,自定义损失函数都用于同时优化两个损失,无论是正面的还是负面的。如第二种情况所示,还可以引入一个权重来对这两个损失进行加权。然而,第二种情况引入了自定义损失函数。这导致了自定义损失函数的第二次使用。它们可用于特定任务并优化特定目标。可以探索自定义损失函数的第一个用途,但第二个用途需要仔细的工程和研究。

所以简而言之,自定义损失函数用于组合两个损失或特定任务。

希望我能帮助你。