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

AutoML、AutoKeras……这四种“Auto”自动机器学习方法,你分得清吗?_0

时间:2023-03-16 00:59:28 科技观察

让我们从一个简短的童话故事开始吧……从前,有一个魔术师,他使用一种没人用过的编程语言,在一个没人用过的框架下训练模型。一天,一位老人走近他,请他为一个神秘的数据集训练模型。魔术师不知疲倦地工作,尝试了数千种不同的方法来训练模型,但遗憾的是,没有一种奏效。于是,他进入自己的魔法图书馆寻找解决办法。突然,他发现了一本关于魔法咒语的书。这个法术将他传送到一个他无所不知的隐藏空间,尝试每一种可能的模型,并执行每一种优化技术。他毫不犹豫的施法,被传送到了那个神秘空间。从那以后,他想出了如何获得更好的模型并采用了这种方法。归来之前,他抵挡不住将这一切力量带走的诱惑,于是将这片空间的智慧全部赋予了一块名为“汽车”的石头,踏上了归途。从前,有一位魔法师,他拥有“自动”魔法石。传说谁掌握了魔法石的力量,就可以训练出任何想要的模型。像哈利波特和死亡圣器这样的故事很可怕,不是吗?我不知道这个故事是否属实,但在现代,机器学习领域的头号人物似乎有兴趣将这些故事变为现实(可能略有修改)。在这篇文章中,我将分享哪些愿景是可以实现的,并帮助您形象化他们的设计理念(尽管所有工具的名称中都有“自动”一词,但它们似乎没有任何共同之处)。动机——生活是艰难的在给定的数据集中实现最先进的模型性能通常需要用户仔细选择合适的数据预处理任务,选择合适的算法、模型和架构,并将其与合适的参数集相匹配.这个端到端的过程通常被称为机器学习管道。没有经验法则告诉我们该往哪个方向走,随着越来越多的模型被开发出来,即使选择正确的模型也变得越来越困难。超参数调整通常需要迭代或采样、尝试所有可能的值。但是,这样做并不能保证您会找到有用的东西。在此背景下,机器学习工作流的自动选择和优化一直是机器学习研究社区的目标之一。这种任务通常被称为“元学习”,指的是关于学习的学习。AZURE的自动化机器学习(试用版)是否开源:否是否基于云平台:是(可以完成任意计算目标模型的评估和训练)支持的模型类别:分类、回归使用的技术:概率matrixdecomposition+shellfishYessianoptimizationtrainingframework:sklearn中这种方法背后的想法是,如果两个数据集在某些工作流中产生相似(即相关)的结果,它们很可能在其他工作流中产生相似的结果。这听起来可能很熟悉。如果你以前处理过推荐系统的协同过滤,你就会知道“如果两个用户过去喜欢同一个项目,他们将来更有可能喜欢类似的项目”。由工作流P和数据集D组成的输入矩阵的可视化。数字对应于工作流P上数据集D获得的平衡均值。解决这个问题意味着两件事:学习隐藏表示以捕获不同数据集和不同机器学习工作流之间的关系预测工作流在给定数据集上可以达到的准确性;学习一个函数,它可以成功地告诉您下一步要尝试哪个工作流程。第一项任务是通过创建一个平衡精度矩阵来完成的,不同的工作流可以处理不同的数据集。《Probabilistic Matrix Factorization for Automated Machine Learning》论文描述了该方法,详细介绍了他们在600多个数据集上尝试的42,000种不同的机器学习工作流程。也许这与你今天在Azure的试用版中看到的有所不同,但它可以给你一种思考方式。作者指出,隐藏表示不仅成功地捕获了有关模型的信息,而且还捕获了有关超参数和数据集特征的信息(请注意,此学习过程以无监督方式进行)。到目前为止描述的模型可以预测每个机器学习工作流的预期性能,作为已经评估的工作流的函数,但没有给出下一步应该尝试哪个工作流的指导。由于他们使用矩阵分解的概率版本,该方法可以生成关于工作流性能的预测后验分布,使我们能够使用获取函数(贝叶斯优化)来指导对机器学习工作流空间的探索。基本上,该方法选择下一个工作流程,以最大限度地提高预期的准确性。然而,推荐系统有一个非常特殊的问题:冷启动。如果一个新的数据集出现在系统中(又名你的数据集),模型无法知道这个新数据集与什么相似。为了解决冷启动问题,我们可以从数据集中计算一些元特征来捕获特征,例如观察的数量、分类的类的数量、值的范围等。然后在已知数据的空间中确定一个封闭的数据集通过这些指标设置。他们在不同的工作流程上尝试了5次,直到他们开始使用采集功能来通知自动化机器学习系统下一步要尝试哪个数据集。请注意,此方法不需要访问实际数据集,只需要访问本地计算的元特征(这大大减少了开销)。谷歌的AUTOML(测试版)是否开源:否是否基于云平台:是(训练和评估)支持的模型类别:卷积神经网络(CNN)、递归神经网络(RNN)、长短期记忆分类使用的技术网络(LSTM):使用梯度策略更新的强化学习训练框架:TensorFlow谈到神经网络,最新最先进模型的成功与从功能设计到架构设计的范式转变密不可分.也就是说,构建可以以无监督方式从数据中学习最佳表示的机器学习架构,而不是直接设计此类功能(这很复杂并且需要大量关于数据的先验知识)。然而,设计架构仍然需要大量的知识和时间。谷歌AutoML背后的想法是创建一个元模型,该元模型学习一种方法来设计和生成子模型的架构,从而在感兴趣的数据集上实现良好的性能。他们使用作为RNN实现的神经架构搜索来生成编码为可变长度标记序列的架构(一种优雅的表达“字符串”的方式)。使用此方法生成的CNN的编码。每个彩色框对应于RNN生成的建议架构的一个参数(或标记)。生成架构后,将构建和训练所提出的模型,并最终记录所达到的准确度。RNN使用强化学习策略进行训练,该策略会随着时间的推移更新RNN的参数以生成更好的架构。生成的令牌序列可以看作是生成模式时应执行的一系列操作。模型最终会在一个数据集上得到一个准确率R,我们可以考虑将R作为奖励信号与强化学习算法一起训练RNN。然而,这样的奖励是不可微分的,这就是为什么他们建议使用策略梯度方法(如Williams等人在1992年提出的)迭代更新参数并进行一些改进。由于训练过程很耗时,他们使用分布式训练和异步参数更新来加速学习过程,正如Dean等人在2012年的一篇论文中提出的那样。它能生成什么样的模型?根据GoogleBrain发表的相关论文《NEURALARCHITECTURE SEARCH WITH REINFORCEMENT LEARNING》,在卷积架构方面,他们对非线性模型(Nair&Hinton,2010)、batchnormalization(Ioffe&Szegedy,2015)和skipconnections(Szegedyet等人,2015年和He等人,2016a)。对于每个卷积层,它可以在[1,3,5,7]中选择一个滤波器高度,在[1,3,5,7]中选择一个滤波器宽度,在[24,36,48]中选择一个滤波器宽度来选择多个过滤器。就步幅而言,它必须预测[1,2,3]中的步幅。对于RNN和LSTM,该架构支持在[identity,tanh,sigmoid,relu]中选择激活函数。RNN神经元的输入对数(“基数”)设置为8。AUTOKERAS是否开源:是与否基于云:否支持的模型类别:卷积神经网络(CNN)、递归神经网络(RNN),用于分类的长短期记忆网络(LSTM)使用的技术:高效神经网络架构搜索(见《Efficient NeuralArchitecture Search via Parameter Sharing》)训练框架:KerasAutoKeras的构建方式与GoogleAutoML相同:它使用一个RNN控制器在循环中训练,对候选架构(即子模型)进行采样,并训练它们以衡量其在所需任务中的表现。然后,控制器使用性能作为指导信号来寻找更有前途的架构。但是,我们没有提到计算过程的开销有多大。在实践中,神经架构搜索在计算上是昂贵且耗时的,例如Zoph等人在2018年发表的一篇论文。使用450个GPU运行了大约40,000GPU小时。另一方面,使用较少的资源通常会产生倾销结果。为了解决这个问题,AutoKeras使用了高效神经架构搜索(ENAS)。ENAS应用了一个类似于迁移学习的概念,即为特定任务的特定模型学习的参数可以用于其他任务的其他模型。因此,ENAS强制所有生成的子模型共享权重,故意防止每个子模型从头开始训练。这篇论文的作者表明,ENAS不仅可以在子模型之间共享参数,还可以获得非常强大的性能。Auto-sklearn是否开源:是是否基于云平台:否支持的模型类别:分类、回归使用的技术:贝叶斯优化+自动集成构建训练框架:sklearnAuto-sklean基于Auto-Weka(https://www.automl.org/automl/autoweka/)使用CASH(组合算法选择和超参数优化)问题定义,并按照与AzureAutomatedML相同的思路构建:他们考虑同时选择学习算法和设置的问题它的超参数。他们提出的主要区别是在主要过程中加入了两个额外的步骤:首先是元学习步骤,最后是自动化集成构建步骤,详情请参阅论文《Efficient and Robust Automated Machine Learning》。auto-sklearnAutoML方法使用所有38个元特征来描述数据集,包括简单的、信息论的和统计的元特征,例如数据点的数量、特征和分类,以及数据偏度和目标熵。使用这些信息,他们选择k个采样点作为贝叶斯优化的初始采样点(种子)。请注意,这种元学习方法通??过使用数据集存储库(如AzureAutomatedML所做的那样)来发挥其威力。在贝叶斯优化之后,他们构建了所有已尝试模型的集合。这一步的思路是存储训练每个模型的努力量。他们没有丢弃这些模型以支持更好的模型,而是存储它们并最终构建它们的集成模型。这种自动集成构建方法避免了在设置单个超参数时陷入困境,因此更加稳健(并且不太容易过度拟合)。他们使用集成选择(一个贪婪的过程,从一个空的集成开始并迭代地添加模型以最大化集成的验证性能)来构建集成模型。结论和评论每种方法都有自己的优点和缺点,也有自己的轨迹。AzureAutomaticML和auto-sklearn建立在相同的思想之上,它们用于计算量较少的回归和分类任务,从而降低实施成本。它们不要求整个数据集是可见的(只要能够生成构建的模型即可),如果对数据隐私有要求,那么这两个框架就非常适合。但是,它们严重依赖现有的数据集。除了他们事先处理过的机器学习工作流程之外,他们不能尝试任何新的东西。就我个人而言,我非常怀疑这种方法能否称为元学习。另一方面,GoogleAutoML和AutoKeras使用相同的方法,他们尝试学习一种从头开始构建模型的方法。这是一种更雄心勃勃的方法,这就是为什么它在动作空间(CNN、RNN、LSTM)上更受限制。然而,他们使用的强化学习方法使他们能够探索构建模型的新方法(谷歌声称他们的方法找到了一个比现有模型好1.05倍的模型)。这听起来更像是元学习。然而,强化学习方法会消耗大量的计算能力,这也是它们每小时收费20美元的原因。在这种情况下,AutoKeras的性能优化以提高准确性非常有吸引力(加上它是开源的,如果你关心隐私,这是个好消息)。原文链接:https://medium.com/@santiagof/auto-is-the-new-black-google-automl-microsoft-automated-ml-autokeras-and-auto-sklearn-80d1d3c3005c【本文为专栏】《机器之心》原译,微信公众号《机器之心(id:almosthuman2014)》】点此查看作者更多好文