在某些情况下,很容易获得大量训练数据,但是这些数据可能不能完全代表将用于生产环境的数据。) L4 W& u% R) B$ v" B# o/ @+ Z
例如,假设你要创建一个移动App来拍摄花朵并自动确定其种类。你可以在网络轻松下载数以百万计的花朵图片,但它们并不能完美地代表在移动设各上使用该App拍摄的图片。也许你只有10000张代表图片(即App实际拍摄的照片)。在这种情况下,最重要的规则是:验证集和测试集必须与在生产环境中使用的数据具有相同的代表性,因此它们应当由专用代表性图片组成:你可以将其混洗并一半放入验证集中,一半放入测试集中(确保两者不重复也不接近重复)。但是在网络图片上训练了模型之后,如果模型在验证集上的性能令人失望,那么你将不知道这是因为你的模型过拟合了训练集,还是只是山于网络图片和移动应用图片之间的不匹配。一种解决方案是将一些训练图片(网络上下载的)放到被吴恩达(Andrew(g)称为train-dev(训练开发)集的另外一个集合中。训练模型后(在训练集而不是在train一dev集上),你可以在train一dev集上对其进行评估。如果模型表现良好,则不会过拟合训练集。如果在验证集上表现不佳,那么问题一定来自数据不匹配。你可以尝试通过预处理网络图片来使其看起来更像山移动应用拍摄的照片,然后重新训练模型。相反,如果模型在train一dev集上表现不佳,则它肯定在训练集上过拟合了,因此你应该尝试简化或规范化模型,获取更多训练数据,并清理训练数据。6 @5 F: B1 N1 p5 F8 z3 |) I* \# B& x& {
- s. a3 ?& K q' D- P6 X5 Y
没有免费的午餐定理5 a$ f& i7 C. ^
模型是观察的简化版。这个简化丢弃了那些不大可能泛化至新实例上的多余细节。但是,要决定去弃哪些数据以及保留哪些数据,你必须要做出假设。例如,线性模型基于的假设就是数据基本上都是线性的,而实例与直线之间的距离都只是噪声,可以安全地忽略它们。6 _ w0 F/ z) `0 S/ F3 s
1996年DaVid Wolpert在一篇著名论文中表明[1],如果你对数据绝对没有任何假设,那么就没有理山更偏好于某个模型,这称为没有免费的午餐()oLunch,NFL)定理。对某些数据集来说,最佳模型是线性模型,而对于其他数据集来说,最佳模型可能是神经网络模型。不存在一个先验模型能保证一定工作得更好(这正是定理名称的山来)。想要知道哪个模型最好的方法就是对所有模型进行评估,但实际上这是不可能的,因此你会对数据做出一些合理的假设,然后只评估部分合理的模型。例如,对于简单的任务,你可能只会评估几个具有不同正则化水平的线性模型,而对于复杂问题,你可能会评估多个神经网络模型。* t. O2 L5 l0 K
( B. C' _: w g) u8 x: }! B) K' o8 B
) X: q9 Q# y# @3 M ) ^7 h! t3 J4 H5 O# X; ? 2 S/ M o0 x+ D0 w & i" T9 g4 l- g( ]- S5 v: i B4 Z