对训练集进行插值实际上意味着什么?

机器算法验证 过拟合 配件 插值
2022-01-26 19:00:51

我刚刚读了这篇文章:理解深度学习(仍然)需要重新思考泛化

在第 6.1 节中,我偶然发现了以下句子

具体来说,在模型容量大大超过训练集大小的过度参数化机制中,拟合所有训练示例(即,对训练集进行插值),包括噪声样本,不一定与泛化不一致。

在拟合训练数据的情况下,我不完全理解“插值”一词。为什么我们在这种情况下说“插值”?这个词在这里到底是什么意思?有没有其他术语可以代替?

在我的理解中,插值意味着在训练域内对一些不属于训练集的新输入进行预测。

4个回答

你的问题已经得到了两个很好的答案,但我觉得需要更多的上下文。

首先,我们在这里讨论的是过度参数化的模型双下降现象通过过度参数化模型,我们的意思是具有比数据点更多的参数例如,Neal (2019) 和 Neal 等人 (2018) 为 100 个 MNIST 图像的样本训练了一个具有数十万个参数的网络。讨论的模型太大了,以至于它们对于任何实际应用都是不合理的。因为它们太大了,它们能够完全记住训练数据。双重下降现象在机器学习界引起更多关注之前,人们普遍认为记忆训练数据会导致过度拟合和泛化能力差。

正如@jcken 已经提到的,如果一个模型有大量的参数,它可以很容易地将一个函数拟合到数据中,这样它就可以“连接所有的点”,并且在预测时只是在点之间进行插值。我再重复一遍,但直到最近我们还认为这会导致过度拟合和性能下降。对于极其庞大的模型,情况并非如此。模型仍然会进行插值,但函数会非常灵活,不会损害测试集的性能。

为了更好地理解它,请考虑彩票假设粗略地说,如果你随机初始化和训练一个大型机器学习模型(深度网络),这个网络将包含一个较小的子网络,即“彩票”,这样你就可以在保持性能的同时修剪大型网络保证。下面的图片(取自链接的帖子)说明了这种修剪。拥有大量的参数就像买了一堆彩票,你拥有的越多,你中奖的机会就越高。在这种情况下,您可以找到一个彩票模型,它在数据点之间进行插值,但也可以泛化。

将神经网络修剪为较小子网络的算法的动画插图。

另一种思考方式是将神经网络视为一种集成模型每个神经网络都有一个 pre-ultimate 层(下图,改编自此,您可以将其视为问题的中间表示的集合。然后聚合该层的输出(通常使用密集层)以进行最终预测。这就像集成许多较小的模型。同样,如果较小的模型记住了数据,即使每个模型都会过拟合,通过聚合它们,效果也有望抵消。

全连接神经网络图。 最后一个隐藏层用红色圈起来。

所有机器学习算法都在数据点之间进行插值,但如果参数多于数据,您实际上会记住数据并在它们之间进行插值。

用外行的话来说,插值器将字面上“加入点”。

这是一个关于插值可以做什么以及为什么它会很糟糕的简单图形摘要。我想强调插值在统计/毫升中确实发挥了有用的作用,但应谨慎使用。黑点是训练数据,红叉是从相同数据生成过程中提取的类似数据集——它们可以被视为测试集。数据线性拟合(左)和高阶多项式插值器(右)的图像

我们可以看到左边的图适合训练和测试数据。在左边,我只是使用线性回归来拟合数据线(只有参数)。右侧图中的曲线完美地预测了训练集,但看起来测试集完全不同。我使用了阶多项式(加上截距)来拟合插值器。此外,在测试集上,线性拟合给出,插值器给出 - 不好!211thMSE=23.8MSE=10350842349

除了插值的字面意思外,这与所谓的深度学习模型有关totally memorize the training data因此,interpolatingmemorisation本文/上下文中都意味着零训练损失,但在测试集上仍然没有过度拟合。因此,奇怪的现象,通常我们称之为过度拟合(实际上是过度训练),尚未解决。

我要补充一点,引用实际上包含定义,“拟合所有训练示例......包括嘈杂的示例”。所以训练损失为零。评论“包括嘈杂的”意味着数据是由一个过程生成的说

y=f(x)+ϵ

其中表示噪声。通过拟合模型使得即使在非零时,您也可以进行插值。ϵy=f(x)ϵ