将“外部”数据集添加到训练数据集中通常有帮助吗?

机器算法验证 神经网络 数据集 火车
2022-03-06 08:01:47

有几个人已经问过“更多数据有帮助吗?”:

我想问“更多的外部数据有帮助吗”?外部是指来自相似但不相等域的数据。例如,如果我们想检测日本的汽车,我会将美国数据集视为外部数据集,因为那里的普通汽车(和街道)看起来不同。或者使用相同类型的对象但使用不同的相机拍摄的数据集。

我问的原因是,许多论文似乎使用外部数据集取得了巨大成功。例如,深度估计方法额外在 CityScape 数据集上进行训练以对 KITTI 数据集执行预测,请参阅论文同样,外部数据集也经常用于kaggle 比赛最后,2014 年的一篇论文报告了“令人惊讶的效果”,即对 ImageNet 类的前半部分进行预训练,然后对另一半类进行微调,比仅对后半部分类进行训练产生更好的结果。另一方面,本文在图 2 中报告说,添加新数据集会使错误恶化。因此,你的经验是什么?是否有任何指南或有趣的评论文章?还是您只需要总是“尝试一下”?

编辑:为了澄清,“更多数据”是指更多行(而不是更多列/功能)。更具体地说,我假设存在更多数据对应更多图像的计算机视觉问题。

3个回答

我认为您带来的示例主要来自计算机视觉/图像识别,并且这种情况下外部数据集很可能包含与现有数据相似的信号/动态。汽车”是与周围环境无关的“汽车”。卢森堡的“好顾客”或“异常购物活动”与摩尔多瓦不同。除非我们积极考虑“协变量偏移”(输入分布变化)和/或“概念漂移””(即给定输入的正确输出随时间/空间/等而变化)然后“更多数据有帮助”只有在我们幸运的情况下。我们应该注意这也包括计算机视觉;例如,如果我们的附加数据有偏差在某种程度上我们不知道和/或无法控制(例如照片总是在夜间或过度曝光),这不一定有助于我们模型的普遍性。

在某些时候,添加更多数据会导致过度拟合和更差的样本外预测性能。总是。

论文报告通过利用额外数据提高了准确性一点也不奇怪。毕竟,人们(学术界和工业界)都受到强烈的激励来准确地报告这一点。以下是相关算法:

1. Pick an external dataset D.
2. Can you tell a story about how D *might* improve accuracy?
    If no: GOTO 1
3. Fit your model using D. Does it improve accuracy?
    If no: GOTO 1
4. Publish your accuracy improvement using D. Bonus points if you can get a press release.

请注意,只有在准确性提高时才会发布。您不会看到所有没有提高准确性的循环。这被称为“文件抽屉效应”(所有不成功的东西最终都在文件抽屉中)。最终结果是强烈的发表偏倚

另请注意,第 2 步至关重要。讲述一个关于如何提高准确性的故事的能力是必不可少的,因为如果你没有这样的故事,那你就太公然了,以至于你去追逐野鹅。

所以:为了知道你的外部数据是否真的改善了问题,你总是需要避免“在测试集上过度拟合”,就像上面的算法一样。如果您遵循此算法,如果“获胜者”在生产中的表现不如此选择过程之后的表现(这本身就是均值回归的示例),请不要感到惊讶

这取决于。思考这个问题的一种方法如下。您的训练和测试/样本外集中的数据可以建模为 h(x) + 噪声。在这里,噪声是一些常见(理论上最优的)模型 h(x) 无法解释的数据的可变性。这里重要的是,如果您的训练和测试数据是从完全不同/不相关的分布中采样的,那么您的所有训练数据都是噪声,即使它们自己,训练和测试集数据的结构都非常好。

这意味着外部数据集与您的测试数据的差异越大,其中的噪声量就越大。噪声量越大,越容易过度拟合(即使您的模型适应噪声 - 如上所述)。对于您的汽车示例,这意味着复杂模型可能适合美国车牌的具体情况,而在日本检测汽车时,这不是 h(x) 的一部分。

话虽如此,如果您的目标是使您的模型更加健壮(即,如果车牌设计发生更改,或者以其他方式您的 OOS 数据分布发生变化,您希望您的日本汽车模型仍然有效),那么引入美国数据集可能会有所帮助 - 在这种情况下,日本的特质也成为“噪音”的一部分,例如,在交叉验证中,您将被迫提出可能更简单的模型,这些模型可以提取同时适用于在美国和日本,使您的模型更通用,因此更健壮。

所以答案是,它实际上取决于您的数据、外部数据是什么以及您想要实现的目标。