当前位置: 首页 > 科技观察

自动化机器学习会成为下一个AI研究主流吗?听听数据科学家怎么说_0

时间:2023-03-19 23:30:23 科技观察

自动化机器学习在过去一年中成为人们感兴趣的话题。KDnuggets举办了一场关于该主题的博客竞赛。结果令人欣喜,提出了许多有趣的想法和项目。一些自动化学习工具也引起了大家的兴趣,受到了大家的追捧。本文作者MatthewMayo将简要介绍自动化学习,讨论其基本原理、采用情况,介绍其目前使用的工具,并讨论其预期的未来发展方向。什么是自动化机器学习?接下来我们要探讨的是自动化机器学习是一门科学,又不是一门科学。自动化机器学习不属于自动化数据科学。毫无疑问,它与自动化数据科学重叠。尽管如此,机器学习只是数据科学工具包中的一个工具。它不适用于所有数据科学任务。例如,机器学习适用于预测数据科学任务。但它不适用于描述性分析的数据科学任务。即使是那些预测性数据科学任务也不仅仅是预测。我们将自动化机器学习与自动化数据科学混淆了。对此,数据科学家SandroSaitta认为,这种误解源于我们对完整的数据科学过程(例如:CRISP-DM)、准备数据(特征提取等)和建模(modelingisalso我们称之为机器学习)。没有行业经验的人在阅读有关数据科学自动化工具和数据科学竞赛的新闻时可能会感到困惑,他们可能认为数据科学是建模,可以完全自动化。他是绝对正确的,不仅仅是意义的问题。如果您想更清楚地了解机器学习和数据科学,请阅读本文。此外,数据科学家和自动化机器学习领域的领导者RandyOlson认为,如果我们想要获得高效的机器学习设计解决方案,我们必须做到以下几点:始终调整我们模型的超参数始终尝试不同的模型始终测试我们的数据大量的特征探索如果我们将以上所有考虑在内,那么我们可以认为自动化机器学习的任务是选择算法、超参数调优、迭代建模和模型评估。这样,我们就可以定义自动化机器学习。自动化机器学习有很多定义(与数据科学相比,当你问十个人什么是数据科学时,你会得到十一个不同的答案。),但我们可以说这开始是个好主意。我们为什么需要它?虽然我们知道自动化机器学习的概念,自动化机器学习可能对我们有好处,但是我们还是要知道机器学习为什么难。S.ZaydEnam,人工智能研究员和博士。斯坦福大学的学生,最近写了一篇名为《为什么机器学习这么“硬”?》的好奇博客,他在其中写道(注意粗体):机器学习仍然是相对非常困难的问题。毫无疑问,通过研究来推进机器学习算法的进步是很困难的。它需要创造力、实验和坚持。由于现成的算法和模型可以很好地为你服务,这阻碍了机器学习的发展。请注意,虽然Enam主要指机器学习研究,但他也指用例中现成算法的实现(见粗体)。紧接着,Enam详细阐述了机器学习的难点,并着重阐述了算法的特点(见粗体):机器学习的难点之一是建立直觉。建立直觉意味着采用一种工具来处理问题。这需要了解可用的算法、模型、风险权衡以及对每个算法、模型的约束。......困难在于机器学习从根本上难以调试。对于机器学习,调试发生在两种情况下:1)你的算法不工作;2)你的算法运行得不是很好。...很少有算法首先起作用的情况,因此我们将大部分时间花在创建它上。Enam随后从算法研究层面阐述了框架问题。同样,他所说的是应用算法。如果一个算法不行,或者性能不是很好,那我们就需要迭代这个算法,也就是重新选择,重新定义。这创建了自动化,因此创建了自动化算法。我之前对自动化机器学习算法本质的理解是这样的:正如SebastianRaschka所描述的,如果计算机程序是关于自动化的,那么机器学习可以被看作是“关于自动化的自动化”。因此,自动化机器学习是关于自动化的自动化。程序通过管理重复性任务来减轻我们的压力;机器学习帮助计算机如何最好地处理这些重复性任务;自动化机器学习帮助计算机学习如何优化上述结果。这种思路非常有用;虽然我们之前会担心调整参数和超参数。自动化机器学习会尝试一系列不同的方法,最后用最好的方式来调整参数,从而得到最好的结果。自动化机器学习的理论基础来自于这样的想法:如果我们必须创建海量机器学习模型,使用大量算法,并使用不同的超参数配置,那么我们可以使用自动化方法对它们进行建模。您还可以比较性能和准确性。简单吧?比较自动化机器学习工具现在我们知道什么是自动化机器学习以及我们为什么要使用它。那么我们如何创建一个自动化的机器学习模型呢?下面是两个自动化机器学习工具包的概述以及两者之间的比较。这些工具包是用python编写的。这两个工具使用不同的方法来实现相同的目标,即机器学习过程的自动化。Auto-sklearnAuto-sklearn是一个用于自动化机器学习的工具包,我们用它来代替scikit-learn中的估计器。它在最近由KDnuggets主办的机器学习博客大赛中获得了冠军称号。auto-sklearn使机器学习用户能够轻松选择算法和调整超参数。它的优势在于使用贝叶斯优化、元数据学习和集合构建。想了解auto-sklearn背后的技术,可以阅读2015年发表在NIPS上的这篇论文。以上信息摘自该项目的文档。Auto-sklearn可以通过贝叶斯优化来优化超参数,就是迭代以下步骤:创建一个概率模型来寻找超参数设置和机器学习使用这个模型来挑选出有用的超参数设置,在探索和开发之间进行权衡,然后继续去体验。探索是指探索模型的未知区域;开发是指专注于从已知空间中找到表现良好的部分。设置超参数后,运行机器学习算法。下面进一步阐明这个过程是如何工作的:这个过程可以概括为联合选择算法、预处理方法和超参数。具体如下:选择分类/回归,预处理方法优先级最高,分类超参数,选择方法的超参数会被激活。我们将使用贝叶斯优化方法来搜索组合空间。贝叶斯优化方法适用于处理高维条件空间。我们使用基于随机森林的SMAC,这是解决此类问题的最佳方法。在实用性方面,由于Auto-sklearn直接替代了scikit-learn的estimator,scikt-learn需要先安装这个功能,我们才能利用这个优势。Auto-sklearn还支持分布式文件系统中的并行计算,它还可以利用scikit-learn模型的连续性。要有效地使用Auto-sklearn而不是estimator只需要4行代码。作者写道:还有一个更健壮的例子(本例使用Auto-sklearn,数据源为MNIST数据集),如下:需要注意的是,Auto-sklearn是ChaLearnAutoML挑战赛,双料冠军汽车单元和tweakathon轨道单元。最近,Kdnuggets举办了自动化数据科学和机器学习博客大赛。Auto-sklearn研发团队提交的博文在本次大赛中获奖。你可以点击这里阅读,也可以点击这里阅读他们的采访。Auto-sklearn由弗莱堡大学开发。Auto-sklearn已经托管在GitHub上,你可以找到相关的文档和API。TPOTTPOT被认为是“您的数据科学助手”(注意,不是“您的数据科学替代者”)。它是一个python工具。使用“遗传编程”自动创建和优化机器学习管道。TPOT类似于Auto-sklearn,可与scikit-learn配合使用。它就像是scikit-learn的包装器。在本文中,我们提到这两个工具以不同的方式实现相似的目标。两者都是开源的,都是用python编写的,并且都声称通过使用自动化机器学习来简化机器学习的过程。但是,Auto-sklearn使用贝叶斯优化,而TPOT使用遗传编程。虽然使用的方法不同,但最终的结果是一样的:自动选择超参数,用一系列算法建模,探索大量的特征,从而迭代建模和模型进化。TPOT的真正好处之一是使用scikit-learn的管道生成随时可以运行的独立Python代码。此代码代表所有候选模型中性能最好的模型。我们可以修改和审查此代码。这段代码不会是最终的模型,但可以作为我们寻找最佳模型的有效起点。下面是一个关于TPOT的例子,它使用的是MNIST数据集:这次运行的结果是98%正确,我们称之为pipeline的pyhton代码也会导入到tpot-mnist-pipeline.py文件中它们,如下所示:我们可以在GitHub上找到TPOT的源代码和文档。TPOT负责人RandyOlson在Kdnuggets上写了一篇关于TPOT和AutoML(自动机器学习)的文章,您可以在此处找到该文章。也可以在这里找到对Randy的采访。TPOT由宾夕法尼亚大学生物医学信息学研究所开发,由NIH资助。当然,自动化机器学习不仅仅是这两个工具。还有其他工具,例如Hyperopt(Hyperopt-sklearn)、Auto-WEKA和Spearmint等等。我敢打赌,在接下来的几年里,将会有大量相关的附加项目,既有研究项目,也有工业项目。自动化机器学习的未来自动化机器学习的未来在哪里?我最近公开发表如下声明(根据我的文章《2017年机器学习预测》):自动化机器学习将成为一项重要的技术。在外人看来,它可能不如深度神经网络。但自动化机器学习对机器学习、人工智能和数据科学具有深远的影响。这种效果很可能会在2017年显现出来。在同一篇文章中,RandyOlson也表达了他对2017年自动化机器学习的期望。此外,Randy在最近的一次采访中更详细地阐述了他的预测:在不久的将来,我认为自动化机器学习将取代机器学习的建模过程:一旦数据集具有相对清晰的格式,那么自动化机器学习将比99%的人类更快地设计和优化机器学习管道。……我可以放心地假设自动化机器学习系统将成为机器学习的主流。但自动化机器学习会取代数据科学家吗?Randy继续说道:我不认为自动化机器学习的目标是取代数据科学家,就像智能??代码完成工具的目标是取代程序员一样。相反,对我来说,自动化机器学习的目标是减轻数据科学家的压力,使他们不必花费大量精力在重复和耗时的任务上(例如机器学习管道设计和超参数***更改)。这使他们可以腾出时间来处理无法自动化的任务。这种想法非常好。auto-sklearn的开发者同意他的观点:我们开发自动化机器学习方法来协助数据科学家,而不是取代他们。这些方法将数据科学家从烦人的复杂任务(如超参数优化)中解放出来,而机器可以很好地解决这些任务。然而,数据分析和结论获取的工作仍然需要人类专家来完成。未来,了解应用领域的数据科学家仍然极其重要。这听起来很鼓舞人心:数据科学家不会大量被取代,自动化机器学习就是帮助他们更好地完成工作。这并不是说自动化机器学习是完美的。当我们提到自动机器学习是否还有改进的空间时,Auto-sklearn团队表示:虽然有一些方法可以用来调整机器学习管道的超参数,但很少有工作能够发现新的管道迄今为止。Auto-sklearn按固定顺序使用一系列预定义的预处理器和分类器。如果一种方法对寻找新管道有效,那么这种方法就会很有用。当然,也可以继续这个思路,尝试自动寻找新的算法。最近,几篇论文都这样做了。比如Learningtolearnbygradientdescentbygradientdescent。(雷锋网之前也提到过这篇论文,获得了RedditML组评选的“年度最佳论文题目奖”)自动化机器学习的发展方向在哪里?很难说。不用说,迟早会出现。尽管并非所有数据科学家都熟悉自动化机器学习,但您将从熟悉自动化机器学习中受益匪浅。别忘了,如果你能在大多数人意识到之前学会自动化机器学习并驾驭技术浪潮,你就不会因为未来的不确定性而担心你的工作。你对这些技术的掌握将帮助你在未来更好地工作。我想不出学习自动化机器学习的更好理由。