
机器学习是一个伟大的工具,它正在改变我们的世界。在许多伟大的应用中,机器学习,尤其是深度学习,已经证明比传统方法优越得多。从Alex-Net图像分类到U-Net图像分割,我们看到了在计算机视觉和医学图像处理上的巨大的成功。不过,我经常都会看到机器学习方法的失败。在出现这样的情况时,人们往往会犯下机器学习的七宗罪之一。
虽然所有这些问题都很严重,并会导致错误的结论,但有些问题比其他问题更严重,甚至机器学习专家在对自己的工作感到兴奋的时候,也会犯这样的错误。即使是其他专家,也很难发现其中的许多错误,因为你需要详细查看代码和实验设置,以便能够找出这些错误。特别是,如果你的结果好得让人难以置信的时候,错误往往会发生,你可能会想把这篇博文作为一个清单,以避免对你的工作得出错误的结论。只有当你完全确定自己没有落入这些错误中的任何一个的时候,你才应该继续前进,并向同事或公众报告你的结果。
Sin2:不公平的比较
不要做不公平的比较。你可能会得到想要的结果,但是它们可能无法在其他数据上复制。
即使是机器学习方面的专家也会犯这种错误。如果你想要证明你的新方法比SOTA的方法更好的时候,经常会犯这种错误。特别是研究论文时,往往会屈服于这一点,以说服评审者他们的方法的优越性。在最简单的情况下,你从某个公共仓库中下载一个模型,并使用这个模型,而不对模型进行微调或适当的超参数搜索,然后对比你自己调优过的新方法。在论文中有很多这样的例子。Isensee等人在他们的论文中披露了最近的一个例子,他们在文中论证了,在10个不同的问题上,原始的U-net实际上优于自2015年以来对该方法的所有建议改进。因此,你应该始终执行与用在新提出的方法上相同的对最新模型的参数调优。
Sin4:混淆干扰和错误的数据
用两个不同的麦克风记录了51个演讲者的语音。每个点代表一个记录。这些数据变化的主要因素是麦克风的不同。
数据质量是机器学习的最大陷阱之一。它可能会导致严重的偏见,甚至导致种族主义的人工智能。然而,问题不在于训练算法,而在于数据本身。例如,我们展示了使用两个不同麦克风的51位演讲者的降维录音。因为,我们记录了相同的说话者,他们应该被投影到相同的点上,给出相同的特征表示。然而,我们可以观察到,相同的录音形成两个独立的簇。事实上,一个麦克风直接位于扬声器的口,另一个麦克风位于大约2.5米外的摄像机上,摄像机记录了现场。类似的效果可以通过使用来自两个不同供应商的两个麦克风或在医学成像的背景下使用两个不同的扫描仪来创建。如果你现在在扫描仪A上记录所有的病理病人,在扫描仪B上记录所有的对照受试者,你的机器学习方法很可能会学会区分扫描仪,而不是实际的病理。你会对实验结果非常满意,产生接近完美的识别率。然而,您的模型在实践中会完全失败。因此,请避免混淆干扰和错误的数据。
Sin6:交叉验证引起的混乱
不要使用相同的数据来选择你的模型和特征,同时也用于模型的评估
这几乎是和第一个错误一样的问题,但它是伪装的,我甚至在几乎提交的博士论文中看到过这种情况。所以即使是专家也会被这个问题所迷惑。典型的方案是在第一步中,进行一个模型、架构或特征的选择。因为你只有很少量的数据样本,所以你决定使用交叉验证来评估每个步骤。因此,你可以将数据分成N个折叠,选择具有N-1个折叠的特征来训练模型,并在第N个折叠上进行计算。重复n次之后,计算平均性能并选择性能最好的特征。现在,你已经知道了最好的特征是什么,你可以使用交叉验证为你的机器学习模型选择最佳参数。
这似乎是正确的,对吗?不!它是有缺陷的,因为你已经在第一步中看到了所有的测试数据,并且平均了所有的观察值。因此,来自所有数据的信息被传递到下一步,你甚至可以从完全随机的数据中获得优秀的结果。为了避免这种情况,你需要遵循一个嵌套过程将第一步嵌套在第二个交叉验证循环中。当然,这是非常昂贵的,并产生了大量的需要运行的实验。请注意,只有在对相同的数据进行大量实验的情况下,才有可能由于偶然因素而产生良好的结果。这样的统计测试和Bonferroni校正又是强制性的。我通常会尽量避免大型交叉验证实验,并尽量获得更多的数据,这样你就可以使用训练/验证/测试集。
每项申明都应以事实为根据。你可以在讨论中就你的方法的普遍适用性做出假设,清楚地表明推测,但要真正声明这一点,你必须提供实验或理论证据。现在,你很难让你的方法得到你认为它值得得到的可见性,进行广泛的声明当然会帮助推广你的方法。不过,我建议还是脚踏实地,坚持证据。否则,我们可能很快就会迎来下一个人工智能冬天,以及人们对我们在前几年已经拥有的人工智能的普遍怀疑。让我们在当前的周期中避免这种情况,并坚持我们真正能够证明能够实现的目标。
当然,大多数人已经知道这些陷阱。然而,你可能想时不时地看看机器学习的七宗罪,只是为了确保你还在脚踏实地,没有掉入它们的陷阱中。
英文原文: