成本函数之间的比较以确定“最佳”模型?

数据挖掘 神经网络 lstm 优化 成本函数
2021-09-25 02:46:39

我正在构建一个用于时间序列预测(回归)的 LSTM 神经网络,并且我正在将自定义损失函数整合到训练中。我试图确定哪个成本函数(3 个成本函数)给出了“最佳”模型,换句话说,试图定义“最佳”的含义。

3 个成本函数产生的结果都在不同的尺度上,另外 2 个产生正数,而最后一个产生负数。

我有 5 个数据集,每个数据集都训练一个模型。损失 3 次,这给了我 3 * 5 = 15 次损失。在验证数据上,结果如下所示。

         | loss1 | loss2 | loss3
==================================
data1    | 1.106 | 5.074 | -1.872
==================================
data2    | 1.067 | 2.390 | -1.903
==================================
data3    | 0.823 | 4.724 | -1.892
==================================
data4    | 1.157 | 4.809 | -2.233
==================================
data5    | 0.583 | 2.854 | -2.120
==================================
Average  |   x   |   x   |   x
==================================

我的目标是以某种方式比较训练过的loss1模型与训练过的模型loss2预测样本数据的有效性。

我尝试过的一个程序是标准化每个损失:(loss - mean(loss)) / std(loss)跨数据集,然后对每个损失的数据集取平均值,并检查哪个是最小的。但是,对于 5 的小样本量,我不知道这是否有效。标准化后的平均值可以是简单平均,也可以是几何平均,也可以是调和平均。如果我将此方法应用于上表,我会得到这些结果

                   |  loss1   |  loss2   |  loss3
========================================================
Simple Average     | -3.9e-16 | -3.9e-16 | -9.7e-16
========================================================
Geometric Average  | 0.82     | 0.93     | 0.90
========================================================
Harmonic Average   | 2.69     | 2.36     | 2.55
========================================================

我们可以看到,根据选择的平均值类型,不同的损失被认为是最好的。简单平均loss3是最好的,几何loss1是最好的,谐波loss2是最好的……有点令人困惑。

这是比较不同损失函数的模型性能的有效方法,还是有另一种更适合确定“最佳”模型的方法?

另一种方法是查看跨模型的准确度指标(所有损失和数据集的准确度指标相同)并检查哪个损失产生最高准确度。

1个回答

tl;博士,因为您指的是准确性,我猜您有一个分类任务。

没有办法通过模型的损失来评估模型的实际性能损失函数的目标是训练模型,而不是显示该模型的分类效果。

要查看最佳模型,您应该做的是通过分类指标(例如准确性)对其进行评估。您应该注意,最好在验证集上测量这些以避免过度拟合。


有些事情要考虑...

  1. 不同的损失函数,不要测量相同的东西。例如考虑 MAE 和 MSE。与 MAE 相比,MSE 不成比例地惩罚更大的错误。哪个是最好的?取决于问题和你想要什么!

  2. 分类取决于模型的预测,这些预测本质上是连续的。但是,当我们提到“最佳模型”时,我们想要分类更好的模型。这可能会导致误导性影响,因为模型可以通过对其分类为正确的样本变得更加“自信”来减少损失(通常是由于过度拟合)。

您可以查看以下示例:

label | model1 | model2 
  0   | 0.995  |  0.5
  0   | 0.400  |  0.5
  1   | 0.600  |  0.5
  1   | 0.600  |  0.5

model1是一个更好的分类器(3/4正确的预测),但是model22/4) 损失最小*。

*从技术上讲,这取决于损失函数,但这代表 MAE、MSE 和交叉熵损失。