机器学习的七原罪

打破机器学习实验信誉的七个常见错误

机器学习的七原罪

机器学习是一种伟大的工具,正在改变着我们的世界。 在许多伟大的应用中,机器(尤其是深度学习)已被证明优于传统方法。 从用于图像分类的Alex-Net到用于图像分割的U-Net,我们看到了计算机视觉和医学图像处理领域的巨大成功。 不过,我看到机器学习方法每天都在失败。 在许多这样的情况下,人们迷上了机器学习的七大罪过之一。

尽管它们都很严厉并得出错误的结论,但有些却比另一些更糟,甚至机器学习专家也可能因自己的工作而感到兴奋。 即使是其他专家,也很难发现其中的许多缺点,因为您需要详细研究代码和实验设置才能弄清楚它们。 特别是,如果您的结果看起来好得令人难以置信,那么您可能希望将此博客文章用作清单,以避免对您的工作有错误的结论。 仅当您完全确定自己没有遭受任何这些谬论时,才应该继续向同事或公众报告结果。

罪过1:数据和模型滥用

机器学习的七原罪

初学者在深度学习中常常犯下这种罪过。在最常见的情况下,实验设计存在缺陷,例如训练数据用作测试数据。使用简单的分类器(例如最近的邻居),这立即导致大多数问题的识别率达到100%。在更复杂,更深入的模型中,精度可能不是100%,而是98–99%。因此,如果您在第一张照片中获得了如此高的识别率,则应始终仔细检查实验设置。但是,如果您使用新数据,您的模型将完全崩溃,甚至可能产生比随机猜测更糟糕的结果,即准确度低于1 / K,其中K是类别数,例如两类问题的比例不到50%。在同一行中,您还可以通过增加参数的数量来轻松地过度拟合模型,从而完全记住训练数据集。另一个变体是使用过小的训练集,它不能代表您的应用程序。所有这些模型都可能会破坏新数据,即在实际应用场景中使用时。

罪过2:不公平的比较

机器学习的七原罪

甚至机器学习方面的专家也可能陷入这种罪恶。如果您想证明自己的新方法比最新技术更好,那么通常会采用该方法。特别是研究论文经常屈服于这一观点,以使评论者相信其方法的优越性。在最简单的情况下,您可以从某个公共存储库下载模型,然后使用该模型进行微调或进行适当的超参数搜索,而无需针对已针对当前问题开发的模型,并调整所有参数以在测试中获得最佳性能数据。文学中有许多这种罪恶的例子。 Isensee等人揭露了最近的例子。在他们的非新网论文中,他们证明了原始的U-net几乎胜过所有自2015年以来针对十个不同问题提出的对该方法的改进。因此,您应该始终对最新模型执行相同数量的参数调整。

罪过3:微不足道的进步

机器学习的七原罪

在完成所有实验之后,您最终找到了一个模型,该模型产生的结果要比最新模型更好。但是,即使在这一点上,您还没有完成。机器学习中的所有内容都是不精确的。此外,由于学习过程的概率性,您的实验会受到许多随机因素的影响。为了考虑这种随机性,您需要执行统计测试。这通常是通过使用不同的随机种子多次运行实验来执行的。这样,您可以报告所有实验的平均效果和标准偏差。使用像t检验这样的显着性检验,您现在可以确定观察到的改善仅与机会相关的概率。为了使您的结果有意义,此概率应至少低于5%或1%。为此,您不必是专家统计学家。甚至还有在线工具可以计算它们,例如用于识别率比较或相关性比较。如果您进行重复实验,请确保您还应用Bonferroni校正,即,将所需的显着性水平除以相同数据上的实验重复次数。有关统计测试的更多详细信息,您应该查看我们的深度学习讲座的视频。

罪四:混杂因素和不良数据

机器学习的七原罪

数据质量是机器学习的最大陷阱之一。它可能会导致严重的偏见,甚至导致种族主义的AI。但是,问题不在于训练算法,而在于数据本身。例如,我们展示了使用两个不同的麦克风对51个扬声器进行降维录音。因为我们录制了相同的扬声器,所以在进行适当的特征提取后,实际上应该将它们投影到相同的位置。但是,我们可以观察到,相同的记录形成两个独立的簇。实际上,在记录场景的摄像机上,一个麦克风直接位于扬声器的嘴部,而另一个麦克风位于大约2.5米远的地方。通过使用来自两个不同供应商的两个麦克风,或者在医学成像的情况下,通过使用两个不同的扫描仪,已经可以产生类似的效果。如果您现在在扫描仪A上记录了所有病理患者,在扫描仪B上记录了所有对照对象,则您的机器学习方法将可能学会区分扫描仪,而不是实际的病理。您将对实验结果感到非常满意,并获得接近完美的识别率。但是,您的模型在实践中将完全失败。因此,请避免混淆因素和不良数据!

罪过5:标签不当

机器学习的七原罪

Protagoras已经知道:"在所有方面,衡量标准是人。"这也适用于许多分类问题的标签或基本事实。我们训练机器学习模型以反映人造类别。在许多问题中,我们认为在定义它们的那一刻,这些类是清晰的。一旦我们查看了数据,就会发现它通常也包含模棱两可的情况,例如在ImageNet Challenge中显示两个对象而不是一个的图像。如果我们去处理诸如情感识别之类的复杂现象,那就更加困难了。在这里,我们意识到在许多现实生活中的观察中,即使人类也无法清晰地评估情绪。为了获得正确的标签,因此我们需要询问多个评估者并获得标签分布。我们在上图中对此进行了描述:红色曲线显示了清晰表壳的尖峰分布,即所谓的原型。蓝色曲线表示模糊情况的广泛分布。在这里,不仅机器,而且人类评级者都可能最终陷入矛盾的解释中。如果您仅使用一个评估者来创建您的基本事实,您甚至不会意识到这个问题,因此通常会引发有关标签噪声及其有效处理方法的讨论。如果您可以使用真实的标签分布(当然这是很昂贵的),您甚至可以证明您可以通过消除模棱两可的情况来显着提高系统性能,例如我们在行为情感的情感识别中所看到的与现实生活中的情感。但是,在您的实际应用程序中可能并非如此,因为您从未见过模棱两可的情况。因此,与单个评估者相比,您应该更喜欢多个评估者。

罪过6:交叉验证混沌

机器学习的七原罪

这与罪#1几乎是相同的罪过,但是它是变相的,我已经看到这甚至发生在几乎提交的博士学位中。 论文。 因此,即使是专家也可能会喜欢上它。 典型的设置是第一步需要选择模型,体系结构或特征。 因为只有几个数据样本,所以您决定使用交叉验证来评估每个步骤。 因此,您将数据分为N折,选择具有N-1折的特征/模型,并在第N折上求值。 重复此N次后,您可以计算平均性能并选择性能最佳的功能。 现在,您知道最佳功能是什么,接下来继续使用交叉验证为您的机器学习模型选择最佳参数。

这似乎是正确的,对吧? 没有! 这是有缺陷的,因为您已经在第一步中看到了所有测试数据并平均了所有观察值。 这样,所有数据中的信息都会传递到下一步,您甚至可以从完全随机的数据中获得出色的结果。 为了避免这种情况,您需要遵循一个嵌套过程,该过程将第一步嵌套在第二个交叉验证循环中。 当然,这非常昂贵,并且会产生大量实验运行。 请注意,仅由于对相同数据进行大量实验,在这种情况下,仅由于偶然原因,您也可能会产生良好的结果。 因此,统计测试和Bonferroni校正同样是强制性的(参见罪3号)。 我通常会尽量避免进行大型的交叉验证实验,并尝试获取更多数据,以便您可以进行训练/验证/测试拆分。

罪过7:对结果的过度解释

机器学习的七原罪

除了所有先前的过失之外,我认为在当前的炒作阶段,我们在机器学习中经常犯的最大过错是,我们过度解释和夸大了自己的结果。 当然,每个人都对通过机器学习创建的成功解决方案感到满意,并且您有权为此感到自豪。 但是,您应该避免将结果推断在看不见的数据或状态上,以一般地说已经解决了问题,因为您已经用相同的方法解决了两个不同的问题。

同样,由于我们在罪过#5中所做的观察,关于超人类表现的主张引起了怀疑。 您将如何胜过标签的来源? 当然,您可以在疲劳和专心方面击败一个人,但在人工班上总体上胜过人类? 您要小心此声明。

每个主张都应基于事实。 您可以在讨论中清楚地表明推测的基础上假设该方法的普遍适用性,但要真正声明这一点,您必须提供实验或理论证据。 现在,很难让您的方法具有应有的可见性,并提出重大主张当然会有助于推广您的方法。 尽管如此,我还是建议您坚持实地并坚持证据。 否则,我们可能很快就会遇到下一个AI Winter,以及我们在前几年已经普遍怀疑的人工智能。 让我们在当前周期中避免这种情况,并坚持我们真正有能力实现的目标。