交叉验证如何确定何时提前停止?

数据挖掘 交叉验证
2021-09-16 04:03:59

当对神经网络使用“K-Fold Cross Validtion”时,我们是否:

  1. 随机选择并保存网络的初始权重(我们称之为W0)
  2. 将数据拆分为ñ等块
  3. 训练模型ñ-1块,验证剩下的块(ķ'第块)
  4. 获取验证错误并将权重恢复为 W0
  5. 转移ķ 按 1 并从 3 重复。
  6. 平均化验证错误,以更好地了解网络将如何使用这些数据进行泛化。
  7. 恢复到 W0 最后一次,并使用整个数据集训练网络

问题一:

我意识到 7 是可能的,因为我们非常了解网络在第 6 步的帮助下将如何泛化。 - 这个假设是否正确?

问题2:

正在恢复到初始状态 W0必要性,否则我们会过拟合?(像我们在第 4 步和第 7 步中所做的那样还原。)

问题3,最重要的:

假设我们已经完成了第 7 步,并将使用整个数据训练模型。到目前为止,我们不打算在完成后对其进行验证。在那种情况下,我们如何知道在第 7 步期间何时停止训练模型?

当然,我们可以使用与交叉验证期间相同数量的 epoch 进行训练。但是我们怎么能确定交叉验证首先是用适当数量的 epoch 训练的呢?

请注意 - 在第 3、4、5 步中,我们只有 ķ'th 块来评估训练与验证损失。 ķ'th 块非常小,所以在实际的交叉验证过程中,不清楚何时提前停止......更糟糕的是,在 Leave-One-Out(也称为 All- But-One),其中 K 仅由单个训练示例构成

2个回答

首先,我想强调的是,交叉验证本身并不能让您了解过度拟合。这将需要比较各个时期的训练和验证错误。通常,您可以用眼睛进行此类比较,并且可以从一次训练/验证拆分开始。

问题 1:通过获得 N 次验证错误,您对网络将如何在新的看不见的数据上执行(= 它会给出什么错误)有了一个合理的(是否非常好是一个问题)理解。

通常,您将交叉验证作为超参数网格搜索的一部分。那么步骤 6 的平均误差主要是为了选择最好的超参数:如果相应的网络产生最小的平均验证误差,你认为超参数是最好的。同时,这个误差是您对最终模型在新数据上给您的误差的估计。

如果需要,您可以继续探索并相互比较验证错误(对于一个相同的超参数集),计算标准偏差以获得进一步的见解。

“模型泛化好”的概念更多地与不存在过拟合有关。为了得出这个结论,您需要比较训练和验证错误。如果它们彼此接近,则模型可以很好地概括。这与交叉验证没有直接关系。

问题 2: 获取整个数据集的唯一目的是在更多数据上训练模型。更多的数据总是好的。另一方面,如果您对交叉验证期间生成的模型感到满意,则可以接受。

问题3:在超参数的grid-search中可以将epochs的数量作为参数之一。这种搜索通常在内部进行交叉验证。当您在第 7 步获取整个数据集时,您将获取更多数据。因此,这个阶段的过度拟合(如果有的话)只能减少。如果每个块都很小而困扰您,请将 K-fold 交叉验证替换为例如 K 次 50/50 训练/测试拆分。而且我永远不会担心遗漏。它是为小型(非常小的)数据集开发的。为了让神经网络变得更好,您通常需要大型或非常大的数据集。

Q1:我认为答案是肯定的,但是如果数据不是从相同的基础分布中采样的,则不能保证性能可以推广到新的看不见的数据。或者,如果大量信息通过模型选择、配置、提前停止等“泄露”。(我最近看到一个综合示例,在特征选择的情况下,信息完全“爆发”。)

泛化与过拟合密切相关。只要你以后不会将训练好的模型应用到训练数据上,对训练数据的“过度拟合”应该是无关紧要的,只要你对验证数据有很好的泛化能力。良好的泛化意味着过度拟合并不严重。良好的泛化是大目标。

对于 Q2,我认为原则上从头开始是最正确的,以避免对局部最小值的任何偏向过度拟合到子集。不过,我不认为每次训练的初始权重都必须相同。我只是将它们重新初始化为随机值。无论如何,训练过程都很嘈杂。

对于 Q3:我有同样的问题。第一:添加网格维度非常昂贵,因为它将训练运行次数乘以新维度上的点数。运行之间的随机波动越重要,您要比较的运行也越多。添加 epochs 维度似乎也没有必要,因为 CV 的每个“折叠”中的验证损失可以通知提前停止。正如您所说,问题是最终训练没有验证损失。

我猜一个候选解决方案(如您所概述的)是记录所有折叠的时期数(提前停止之前),并将时期数固定为平均值乘以(N-1)/N,让新鲜模型训练的步数与折叠的平均步数一样多。向上还是向下舍入?Down 可以防止过度拟合,可能以接受一些欠拟合为代价。也许相反,首先将每个折叠的时期数乘以 (N-1)/N,将它们四舍五入,然后计算中位数(可能是数字之间的一半)或众数。或者将舍入值建模为来自某个离散概率分布的样本,并获得该分布的模式。开始为一些不能保证成功的事情感到矫枉过正。