我什么时候应该创建自定义损失函数?

人工智能 神经网络 深度学习 Python 目标函数 回归
2021-11-02 22:28:23

我正在使用神经网络来解决多元回归问题,因为我正在尝试预测连续值。更具体地说,我正在制作一个跟踪算法来跟踪对象的位置,我正在尝试预测两个值,即对象的纬度和经度。

现在,要计算模型的损失,有一些常用的函数,比如均方误差或平均绝对误差等,但我想知道是否可以使用一些自定义函数,比如这样,来计算模型之间的距离两个经度和纬度值,然后损失将是真实距离(根据真实经纬度计算)与预测距离(根据预测经纬度计算)之间的差值。这些是我的一些想法,所以我想知道这样的想法是否有意义?

在我的情况下,这会比使用均方误差作为损失函数更好吗?

我想到了另一个问题。在我的例子中,我预测两个值(经度和纬度),但是有没有办法将这两个目标值转换为一个值,以便我的神经网络可以更好更快地学习?如果是,我应该使用哪种方法?我应该计算两者的总和并将其作为新目标吗?这有意义吗?

2个回答

使用两个值并使用 MSE 可能是更好的方法。我希望你将值组合成一个值,就像求和的情况一样,网络可能适合在一个轴上输出 0,而在另一个轴上输出值。你提出的方法也有同样的问题。真实距离有多种组合,但只有一种是正确的。为了让神经网络学得更快,一个值不会帮助它学得更快。相反,如果预测值是标签的一个热向量而不是单个值,则通常会提高准确性。希望这可以帮到你。

或者,您可以测量两个向量之间的角度(假设它们是球体上的点),也许使用它们的标量积并将其用作损失函数。

ab=abcosθ

(或仅使用极坐标)

一个重要的问题是错误的方向是否可能是一致的,或者特定方向的错误是否比其他方向更频繁地发生(在这种情况下,需要将其内置到损失函数中)