由于有大量的参数(数千甚至有时是数百万),神经网络具有很大的自由度,可以适应各种复杂的数据集。 这种特性可以胜任许多“传统”机器学习时代难以取得进展的领域,例如图像识别,对象检测或自然语言处理。 但有时它们的最大优势会成为潜在的劣势。 缺乏对模型学习过程的控制可能会导致过拟合-这种情况是因为神经网络非常适合训练集,以致难以归纳和预测新数据。 了解此问题的根源以及防止其发生的方法,对于成功设计神经网络至关重要。
你如何知道神经网络是否过拟合?
训练,开发和测试集
实际上很难检测到模型过拟合。 当模型已经投入生产,然后意识到出了点问题是很常见的。 只有面对新数据,才能确保一切正常。 但是在训练过程中,应尽量重现真实情况。 因此将数据集分为三个部分-训练集,开发集(也称为交叉验证或保留)和测试集。模型通过仅看这些部分的第一部分来学习。 坚持用于跟踪进度并得出结论以优化模型。 同时,在训练过程的最后使用测试集来评估模型的性能。 使用全新的数据可以对算法的运行情况持公正的看法。
图1 推荐的划分数据集的方法。
确保交叉验证和测试集来自相同的分布,它们能够准确反映将来收到的数据,这一点非常重要。 只有这样才能确保在学习过程中做出的决定更接近更好的解决方案。 如何划分数据集?拆分方式之一是60/20/20,但是在大数据时代,数据集可以计数数百万个条目时,这些固定比例不再适用。 简而言之,一切都取决于数据集的大小。 如果有数百万个条目可供使用,最好将它们按98/1/1的比例划分。 开发和测试集应该足够大。 根据数据集的大小划分数据集的方法如图1所示。