深度学习:在相同数据上重新训练模型后的巨大差异,该怎么办?

机器算法验证 神经网络 深度学习 张量流 西阿诺 喀拉斯
2022-03-19 15:48:23

keras用来训练一个 5 层回归模型来预测 1000 个不同的温度计。我训练了一个模型,然后让它根据其他 20 种仪器来预测读数。我想看看我做事是否正确,所以我用相同的数据和相同的参数训练了 10 个不同的模型,得到了 10 个不同的模型文件。然后我要求 10 个模型文件中的每一个来预测一堆温度。对于某些温度计,模型中的温度预测非常一致,而对于其他温度计,温度预测却无处不在。这是我的意思的一个例子:

        | predicted_temp_for_sensor_1 | predicted_temp_for_sensor_2 |
        |-----------------------------|-----------------------------| 
model_0 |                        99.1 |                        78.1 |
model_1 |                        97.2 |                        85.5 |
model_2 |                        96.1 |                       110.7 |
model_3 |                        95.3 |                        80.8 |
model_4 |                        96.4 |                        90.8 |
model_5 |                        97.8 |                        95.7 |
model_6 |                        98.6 |                        92.5 |
model_7 |                        97.9 |                        87.1 |
model_8 |                        99.4 |                        98.8 |
model_9 |                        96.1 |                        85.6 |

为了更明显,这里是两个传感器的一些摘要统计信息:

             | predicted_temp_for_sensor_1 | predicted_temp_for_sensor_2 |
             |-----------------------------|-----------------------------| 
 predictions |                          10 |                          10 |  
        mean |                        97.4 |                        90.6 | 
standard dev |                         1.3 |                         9.0 | 
         min |                        95.3 |                        78.1 |
         max |                        99.4 |                       110.7 |

这意味着什么?这是模型不确定性的迹象吗?我应该将其解释为对预测的低信心吗?我不知道该怎么想。

2个回答

这是正常的,正是您应该期待的。通常,深度模型对初始参数非常敏感。看起来他们对迈出的第一步非常敏感,甚至。这是因为损失函数是非凸的,优化过程很难找到任何类型的全局最小值——优化算法的存在和可定位性将使您的模型每次都相同。因此,这不一定表明您的模型存在不确定性。

该怎么办?(1) 你不妨尝试 10 次不同的随机初始化,或者用相同的初始化训练 10 次不同的时间,然后选择给你最好结果的那一次(通常在应用 DL 时,从业者似乎是在大量保留集上测量性能——CV 甚至不可行。) (2) 阅读Goodfellow 等人的深度学习第 8 章。在返回这篇文章的答案之前。这很有趣,可能会让您深入了解您所看到的。

这是一个显示在那里的图表。

在此处输入图像描述

设计一个优化程序,无论从哪里开始,都能在高维度上得到相同的解决方案,这是一个活跃的研究领域,加上上面显示的困难;除了尝试导航非凸拓扑之外,训练迭代量之类的东西现在可能会根据您的起点决定您降落的位置。

即使您没有每次都进行不同的初始化,您仍然可以找到非常不同的模型。您甚至可能不会以不同的局部最小值结束;在高维中,您可能会降落在鞍点或高原等。有时,à建模者会因为训练误差高原而停止训练,但梯度的范数继续增加,这表明它甚至没有达到临界点观点!

最终,由于这些原因,训练深度模型可能需要几个月的时间,而且似乎是艺术的一部分。如果您正在寻找每次都以相同方式训练的模型,请考虑具有凸损失的无数模型之一(例如,SVM、LR)。

也许你没有足够的数据来训练一个非常深的模型......也许有足够的数据训练会更稳定......但我认为情况不一定如此。

假设你的分类器训练得很好并且没有过拟合或欠拟合,这通常可以作为不确定性的衡量标准:由于某种原因,使用相同训练数据的不同模型会得到不同的结果。

这可能是因为您根本无法从数据中很好地预测该温度,例如没有明确的相关性可用。

另一个原因可能是训练/测试数据差异。训练数据与测试数据不同是一个常见问题(例如,在模拟训练但预测真实事件时)。高度变化的预测可能表明(至少是变化的特征)在训练样本中表现不佳。

我建议你做什么:

  • 拆分你的训练样本,比如 80'000 到 20'000,然后在前一个样本上训练你的十个模型并在后一个样本上测试它们。如果变化减少,那是因为上面提到的第二个原因。
  • 从专家的角度检查您的数据:是否存在可能或多或少相关的变量?
  • 不要忘记数量级!如果左侧温度的标准值为 1,右侧的标准值为 10,这也可能是因为左侧数据中的温度在更窄的范围内变化。例如,比较地球表面温度与太阳表面温度的预测。当然,关于太阳的预测,绝对比较,比你对地球温度的预测要差得多。如果这可能是一个问题,您可以通过将它们除以平均值(或类似值)来缩放错误。