提前停止与交叉验证

机器算法验证 交叉验证 过拟合
2022-02-16 14:31:57

我目前正在使用提前停止工作来防止过度拟合。特别是那些采取早期停止但何时?.

我现在想与其他分类算法进行比较,在这些算法中,10 折交叉验证似乎被广泛使用。

但是,我对交叉验证是否是一种防止过度拟合或选择良好参数的方法感到困惑。(或者也许这是一回事?)。我也很困惑早期停止方法和交叉验证是否可以相互替代或组合使用。

那么问题来了:提前停止和交叉验证有什么关系?

3个回答

交叉验证是一种估计监督学习算法的泛化精度的方法。

Early stop 是一种避免过拟合的方法,需要一种方法来评估学习模型的泛化精度和训练精度之间的关系。

因此,您可以在早期停止框架内使用交叉验证来替换您引用的论文中提到的验证集。例如,十折交叉验证比使用单个验证集更准确,并且通常可以更好地估计泛化误差。

总而言之,交叉验证是一种泛化精度度量,可以用作早期停止框架的一部分。

除了您提到的两种泛化方法之外,还有许多其他方法。

  • 在损失(成本)函数中添加正则化项,以最小化非零模型参数的数量和大小
  • 在每个训练时期随机丢弃(归零)模型中的某些部分权重/参数
  • 在模型中添加一层随机节点(例如,从逻辑函数输出给出的“概率”中采样)

许多这些方法(包括您的交叉验证和提前停止方法)可以组合在一起,以最大限度地提高模型在未见数据上的性能(泛化性能)。

关于早期停止方法的一个说明。对于神经网络,Geoffrey Hinton 建议在测试集准确度达到最大值时停止训练(不包括正则化项的测试集损失最小)。Hinton 方法的另一个“调整”是如果 test_set 准确度比您的训练集更好(损失更小),即使测试集准确度已经停止提高(测试集损失已经停止下降),也不会停止。这不太可能让你获得超过一个时期的训练,但有时这会有所帮助,尤其是对于小型测试集。不要对极小的测试集执行此操作(小于代表性样本集,例如有时用于 K-folds 训练和交叉验证)。

您不能结合使用提前停止和 K 折交叉验证。由于提前停止从验证集中选择最佳模型,因此需要通过测试集来验证性能。但是在 K-fold 交叉验证中,没有测试集,如果您使用提前停止从验证集中选择最佳模型,它将在验证集中再次验证。K-fold 交叉验证是获得最佳模型的平均性能(以准确性衡量),并且没有意义。