神经网络中过拟合的在线检测

机器算法验证 机器学习 算法 神经网络 在线算法
2022-03-25 17:54:03

当我们训练一个神经网络时,我们可以访问错误率(训练和测试模式)。当过度拟合开始时,使用这些信息尽快停止学习的标准技术是什么?

2个回答

关于这个问题的一些相当混乱的想法(我希望那里有一些有用的东西):

您应该拥有三个分区,而不是训练和测试数据:(i) 训练集,用于优化网络的权重 (ii) 验证集,用于决定何时停止训练(以及对模型做出其他选择,例如要使用的隐藏层神经元的数量)和(iii)用于估计最终网络性能的测试集。您需要三个分区而不是两个分区才能获得公正的性能估计。由于模型的一个方面已经调整为最大化训练集和验证集的性能(通过选择何时停止训练等),这意味着这两个集的性能将给出一个乐观的有偏估计真正的泛化性能(可能相当强烈的偏见)。

早期停止的基本思想是基于这样的假设,即最初网络的权重将以学习数据底层结构的方式改变,但经过一段时间后,泛化的真正改进将不再可用。当网络达到这一点时,它通常仍然可以通过记忆数据中的噪声来减少训练集上的错误,这通常会导致泛化性能变差。但是,如果我们监控一组单独数据的性能,我们应该会看到,一旦我们从学习的第一阶段(这是有益的)进入第二阶段(不是),该组的错误就会开始上升。

问题是验证集的性能通常相当嘈杂,因此很难知道如果我们继续训练是否有可能看到更好的网络,或者验证集的改进是否有意义。我通常只训练收敛,并保持在此过程中最小化验证集误差的权重集。

有一本好书叫做《Neural Networks: Tricks of the Trade》,由 Genevieve Orr 和 Klass-Robert Muller 编辑,它汇集了 1990 年代许多领先的神经网络专家的建议。其中至少有一个对提前停止提供了一些明智的建议。

这些天我更喜欢正则化,Chris Bishop 的优秀著作“用于模式识别的神经网络”使用了这种方法并解释了它与早期停止的关系。根据我的经验,这在实践中要容易得多,尽管更现代的方法,如核方法或高斯过程往往会更好。

没有标准的方法,因为它是错误的——你只是在测试数据上过度拟合你的模型(这是通过参数选择过度拟合的一种隐藏形式)。