机器学习中踩过的坑,如何让你变得更专业?

踩过坑才知道哪些路是不可行的,有时候犯错误也能帮助我们变得更加专业。

数据科学家 Archy de Berker 在本文中详述了他和周围同伴们在机器学习探索中踩过的坑,这也都是大家经常性遇到的问题。他希望通过这一篇文章,带大家了解机器学习中一些有趣的错误——一些只有你深入了这个领域才能接触到的错误。

这不是一篇入门级的文章,想要读懂本文,最好先在 Pytorch 或 Tensorow 上多练习下毁坏模型。

机器学习中踩过的坑,如何让你变得更专业?_第1张图片

本文主要集中在绿色分布的错误,但紫色分布和黄色分布也会部分涉及

一、机器学习中的常见错误

Berker 将机器学习中出现的各种错误归为三大类,严重程度由低到高。

1、这些错误只会浪费你的时间

机器学习中踩过的坑,如何让你变得更专业?_第2张图片

计算科学中最难的两件事是命名和缓存失效,图中这条推文高度概括了此类错误。shape error 是最可怕又最常见的错误,通常是由于大小不一致的矩阵相乘导致。

本文不会花太多时间来讨论这类错误,因为错得非常明显。大家很容易找到错误,然后进行修复,然后再犯错,然后再修复。这是个不断重复的过程。

2. 这些错误会导致结果不准确

这类错误会让你付出很大代价,因为它会造成模型结果不准确。

2015年,有一架从澳大利亚悉尼飞往马来西亚吉隆坡的亚航航班因出现技术故障,在墨尔本机场紧急降落。如果模型的结果不准确,就如同这架飞机的技术故障,最终会飞到错误的目的地。

举个例子,假如你在模型中新增了一个特征并同时增加了许多参数,在未进行超参数调优的情况下对比之前的性能,发现增加特征后模型性能变差了,于是得出结论,增加的特征会让模型性能变差。这是不对的,实际上你需要更加规范化的操作,以寻求更具表现力的模型。

错误对于模型的影响会随着时间而加重,导致更加不准确的实验结果。因此,尽早发现错误是非常有价值的。

3、这些错误会让你误认为自己的模型已经「完美」

这是很严重的错误,会让你高估模型的性能。这种错误通常很难发现,因为我们从心底里不愿承认看似”完美“的模型可能是假象。

当模型表现得出奇差时,我们倾向于不相信然后再测试一遍,但当模型表现得出奇好时,我们通常会相信并开始沾沾自喜。这就是所谓的确认偏差(Confirmation Bias),即个人无论合乎事实与否,都倾向于偏好支持自己的见解、猜想。

模型性能看似「完美」,通常是因为过拟合的原因,导致训练数据已经不再有代表性,或者是因为选错了评价指标,这两点后文都会详细解释。

如果你只能从本文带走一点,希望你记住:没有什么比你发现模型的真正结果实际上很糟糕这件事更令人尴尬和沮丧的了。

二、机器学习的生命周期

机器学习中踩过的坑,如何让你变得更专业?_第3张图片

机器学习就如同上图香肠机的三个阶段一样:获取数据,将数据输入到模型中,然后通过一些指标来量化输出。

接下来我们会讨论到每个阶段中一些看似愚蠢的错误。

1、输出什么:评价指标

机器学习可以归结为不断减少损失函数值的过程。

机器学习中踩过的坑,如何让你变得更专业?_第4张图片

但是,损失函数绝不是最终的优化目标,它只是一个近似值。例如训练分类任务时,通过交叉熵损失函数来优化训练集或者验证集,但实际上我们更加信任在测试集上的结果或者说 F1、AUC 评价指标。在实际优化目标的数据差异非常小的情况下,在模型评价上采用低置信度来加速评价过程会导致问题更加严重。

无论在哪种环境下,如果损失函数已经不能代表模型的真实表现,那么麻烦就大了。

此外还有一些让模型更糟糕的做法:

1)混合训练集和测试集

机器学习中踩过的坑,如何让你变得更专业?_第5张图片

混合训练集和测试集是很容易的,而且通常会训练出来很不错的性能,但这样的模型在复杂的真实环境中会表现非常糟糕。

所以,训练集、验证集、测试集数据是不能相交的,各自需要包含不同的样

你可能感兴趣的:(机器学习中踩过的坑,如何让你变得更专业?)