从一个简单的模型开始,可以让机器学习更高效

AiTechYun

编辑:xiaoshan

要创建通用人工智能,必须首先掌握逻辑回归

从基础开始

在试图发展对世界的科学认识的时候,大多数的领域在探索重要的细节之前都要先进行广泛的尝试。在物理学中,我们从简单的模型(牛顿物理)开始,逐步深入到更复杂的模型(相对论)。这使我们能够以最简单有效的推理来有效地解决问题。

凡事尽可能简洁,但不能太过简单

阿尔伯特·爱因斯坦

从一个非常简单的模型开始的完全相同的方法可以应用到机器学习工程中,这是非常有价值的。事实上,在看到数百个项目从构思到成品之后,我们发现以一个简单的模型作为基线,通常会产生更好的最终产品。

当处理复杂的问题时,简单的解决方案(如我们下面将要描述的基线),有许多缺点:

有时会忽略了输入的重要性。例如,简单的模型常常忽略句子中的单词顺序或变量之间的相关性。

能力有限,无法产生具有细微差别的输出。在向客户展示之前,大多数简单的模型可能需要与启发式思维或手动制定的规则结合。

很枯燥无趣,也可能不会得到你想要得到的前沿研究经验。

这些解决方案所产生的错误输出,在我们看来是非常愚蠢的,因此要标出愚蠢的模型。然而,正如我们在这篇文章中所描述的,它们提供了一个非常有用的第一步,并让我们更好地理解我们的问题,以便告诉我们如何处理它。用George E. P. Box的话说:

所有的模型都有错误,但有些错误是有用的。

换句话说:如果你想过程更加有趣,那就从一个复杂的模型开始。如果你想解决问题和生产产品,从一个愚蠢模型开始。

基线是什么?

不同的分布需要不同的基线

从根本上讲,一个基线是一个模型,该模型既容易设置又可以提供像样的结果。用他们做实验通常是快速和低成本的,因为该实现可以在流行的包里广泛使用。

这里有一些可以考虑的基线:

线性回归。第一种方法是通过一组特征预测连续值(价格、年龄、…)。

逻辑回归。当尝试分类结构化数据或自然语言,逻辑回归通常会给你快速、可靠的结果。

梯度提升树。Kaggle经典!时间序列预测和一般的结构化数据,很难击败梯度提升树。虽然稍微比其他基线难以解释,他们通常表现得很好。

简单的卷积架构。微调VGG或重新训练的一些U-net的变体,对于大多数图像分类、检测或分割问题通常是一个好的开始。

其他更多!

基线模型取决于你所处理的数据类型以及所针对的任务类型。如果你试图预测房价从不同的特点(从一组特征预测价值),线性回归是有意义的,但如果你正试图建立一个语音识别算法。为了选择最好的基线,你要考虑通过使用一个基线可以获得那些有用的。

为什么从基线开始?

配置一个模型需要大量的工作,确保在提交之前进行探索。

当你开始一个项目的时候,首要的任务是了解潜在的会阻碍你前进的挑战。即使它们不是模型的最终版本,基线允许你快速迭代,同时浪费最少的时间。以下原因:

基线将花费你不到十分之一的时间,并且可以提供高达90%的结果。

把你的生产力乘以9!

这里有一个很常见的故事:一个团队想要实现一个模型来预测用户点击广告的概率。他们从逻辑回归开始,并迅速(经过一些微调)达到90%的准确性。

问题在这里出现了:团队是否应该集中将准确性提高到白分之九十五,还是他们应该将当前其他问题的准确性提高到百分之九十?

最先进的模型仍然会让你有非零的错误率,这是由于它们的随机性。这取决于你的用例,但大多数系统效率在本质上是倍增的,这意味着你最好以90%的准确度(导致34%的总体准确度)执行10个连续的步骤,而不是去执行准确率为99%的一个步骤,和准确率为10%的9个步骤(总体准确度0.00000000099%)。

从基线开始,先解决瓶颈!

基线会将一个更复杂的模型放到上下文中

通常有三个级别的性能可以很容易估计:

这是一个可实现的性能,这是一个你希望任何模型都能实现的指标。这可能需要通过猜测分类任务中最频繁的类而得到的准确性。

人为绩效,即人类完成这项任务的水平。计算机在某些任务上比人类好得多(比如下围棋),而在其他任务上(比如写诗)则不如人类。了解一个人有多擅长某些事情可以帮助你提前设定算法的期望值,但是由于人类和计算机的差异在很大程度上是不同的,所以可能需要一些资料来校准。

需要配置性能,它是使你的模型适合于从业务和可用性的角度进行生产的最小值。通常,这种价值可以通过智能设计决策来实现。例如,Google Smart Reply显示了三个建议响应,大大增加了显示有用结果的机会。

这些级别缺失的东西,我称之为“合理的自动化性能”,它代表了一个相对简单的模型所能达到的效果。在评估一个复杂的模型是否运行良好时,拥有这个基准是至关重要的,并且它使我们能够处理准确性/复杂性的权衡。

很多时候,我们发现基线匹配或优于复杂模型,特别是在选择复杂模型时,不考虑基线失败的位置。此外,复杂的模型通常更难配置,这意味着通过简单的基线测量它们的lift是配置它们所需的工程工作的必要前提。

基线很容易配置

根据定义,基线模型很简单。它们通常包含相对较少的可训练参数,并且不需要太多的工作就可以快速地适应你的数据。

这意味着当涉及到工程时,简单的模型通常是:

训练速度更快,快速给出表现反馈。

更易于研究,意味着你遇到的大多数错误要么是模型中的简单错误,要么是你的数据出了问题。

推断速度更快,这意味着配置它们不需要太多的基础设施工程,也不会增加延迟。

一旦你构建并配置了一个基线模型,就可以决定下一步该采取什么步骤了。

构建基线模型后应该做什么?

是时候拿出一些研究论文了吗?(来源)

如上所述,你的基线模型将允许你获得一个快速性能基准。如果你发现它提供的性能是不够的,那么检查一下这个简单模型所遇到的困难,可以帮助你选择下一个方法

例如,在我们的NLP入门中,通过检查基线的错误,我们可以看到它不能将有意义的单词与填充词分开。这就需要我们使用一个可以捕捉这种细微差别的模型。

NLP入门地址:https://blog.insightdatascience.com/how-to-solve-90-of-nlp-problems-a-step-by-step-guide-fda605278e4e

基线可以帮助你理解你的数据

如果基线性能很好,那么你就可以省去设置更复杂模型的麻烦。如果不好,它所犯的错误对数据中的偏差和特殊问题是启发性的。机器学习的大部分问题都是通过更好的理解和准备数据来解决的,而不是简单地选择一个更复杂的模型。看看基线的行为会告诉你什么:

哪个类更难分离。对于大多数分类问题,查看一个混乱矩阵将提供非常有用的信息,可以知道学习哪些类会给你的模型带来麻烦。每当一组类的性能特别差时,我们就应该研究这些数据来理解其中的原因。

你的模型所接收到的信号类型。大多数基线允许你提取特征重要度,揭示输入的哪个方面是最具预测性的。分析特征重要度是一个很好的方式来了解你的模型是如何做决定的,以及它可能忽略了什么。

你的模型忽略了什么信号?如果数据的某个方面看起来很重要,但你的模型忽略了,那么下一步就是设计一个特征或者选择一个不同的模型,以便更好地利用数据的这个特定方面。

基线可以帮助你理解你的任务

除了从你的数据中学习,基线模型还允许你查看哪些部分的推理是容易的,哪些部分是困难的。反过来,这让你可以探索在哪个方面上改进你的模型可以更好地解决有问题的部分

例如,当试图预测某支球队获胜的可能性时,Bowen Yang从逻辑回归开始。他很快注意到,在比赛完成一半以上之后,预测的准确性大大提高了。这一观察帮助他决定了他的下一个建模选择,一种让他可以从先验信息中学习的嵌入技术,这种技术可在比赛第一分钟之前就提高准确率。

大多数机器学习的问题都遵循“no free lunch”定理:没有万能的解决方案。挑战在于选择各种架构、嵌入策略和模型,以确定能够最好地提取和利用数据结构的方法。

另一个例子是,当尝试对心脏MRI进行段切时,Chuck-Hou Yee从一个 vanilla U-net体系结构开始。这使他注意到他的模型所造成的许多细分错误是由于缺乏上下文感知(小的接受域)。为了解决这个问题,他开始使用扩张卷积,这大大减少了细分错误。

当基线不能切割时

最后,对于某些任务,很难构建有效的基线。如果你正致力于分离音频记录中不同的说话者,你可能需要从一个复杂的模型开始,才能获得令人满意的结果。在这些情况下,除了简化模型,另一个好的选择是简化数据:尝试让你的复杂模型过度拟合数据中一个非常小的子集。如果你的模型具有学习所需的表达能力,那就很简单了。如果这部分很难,那通常意味着你应该尝试一个不同的模型!

结论

一旦你意识到更强大的方法的存在,很容易忽略简单的方法,但是在大多数领域中,在机器学习中,从基础开始总是很有价值的。

学习如何应用复杂的方法当然是一个挑战,机器学习工程师面临的最大挑战是决定一个给定任务的建模策略。可以先尝试一个简单的模型;如果它的性能不佳,那就另选一个更复杂的模型,这个模型需要特别擅长于避免你所看到的基线的特定错误。

  • 发表于:
  • 原文链接:http://kuaibao.qq.com/s/20180315A0WIZJ00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券