Facundo Santiago作者Geek AI、张倩编译medium选自

AutoML、AutoKeras......这四个「Auto」的自动机器学习方法你分得清吗?

本文对比了四种自动机器学习方法——AutoML、AutomatedML、AutoKeras、Auto-sklearn的设计理念及适用场景。


让我们先来看一个简短的童话故事…

从前,有一个魔法师,他使用一种无人再使用的编程语言,在一种无人再使用的框架下训练模型。一天,一位老人找到他,让他为一个神秘的数据集训练一个模型。

这位魔法师孜孜不倦,尝试了数千种不同的方式训练这个模型,但很不幸,都没有成功。于是,他走进了他的魔法图书馆寻找解决办法。突然,他发现了一本关于一种神奇法术的书。这种法术可以把他送到一个隐藏的空间,在那里,他无所不知,他可以尝试每一种可能的模型,能完成每一种优化技术。他毫不犹豫地施展了这个法术,被送到了那个神秘的空间。自那以后,他明白了如何才能得到更好的模型,并采用了那种做法。在回来之前,他无法抗拒将所有这些力量带走的诱惑,所以他把这个空间的所有智慧都赐予了一块名为「Auto」的石头,这才踏上了返程的旅途。

从前,有个拥有「Auto」魔石的魔法师。传说,谁掌握了这块魔法石的力量,谁就能训练出任何想要的模型。

哈利波特与死亡圣器

这样的故事太可怕了,不是吗?我不知道这个故事是不是真的,但在现代,机器学习领域的头号玩家们似乎很有兴趣将这样的故事变成现实(可能会略有改动)。在这篇文章中,我将分享哪些设想是可以实现的,并帮助你直观地理解它们的设计理念(尽管所有工具的名字中都有「auto」这个词,但它们之间似乎并没有共同之处)。

动机——人生艰难

在给定的数据集中实现当前最佳模型性能通常要求使用者认真选择合适的数据预处理任务,挑选恰当的算法、模型和架构,并将其与合适的参数集匹配。这个端到端的过程通常被称为机器学习工作流(Machine Learning Pipeline)。没有经验法则会告诉我们该往哪个方向前进,随着越来越多的模型不断被开发出来,即使是选择正确的模型这样的工作也变得越来越困难。超参数调优通常需要遍历所有可能的值或对其进行抽样、尝试。然而,这样做也不能保证一定能找到有用的东西。在这种情况下,自动选择和优化机器学习工作流一直是机器学习研究社区的目标之一。这种任务通常被称为「元学习」,它指的是学习关于学习的知识。

AZURE 的自动化机器学习(试用版)

  • 开源与否:否

  • 是否基于云平台:是(可以完成任何计算目标的模型的评价和训练)

  • 支持的模型类别:分类、回归

  • 使用的技术:概率矩阵分解+贝叶斯优化

  • 训练框架: sklearn

这种方法的理念是,如果两个数据集在一些工作流中能得到类似的(即相关的)结果,那么它们在其它的工作流中可能也会产生类似的结果。这听起来可能似曾相识。如果你以前处理过推荐系统协同过滤问题,你就知道「如果两个用户过去喜欢相同的项目,那么将来他们喜欢相似项目的可能性就会更大」。
由工作流 P 和数据集 D 组成的输入矩阵的可视化。数字对应于数据集 D 在工作流 P 上得到的平衡均值。

要解决这个问题意味着两件事:学习一种隐藏的表示方法来捕获不同数据集和不同机器学习工作流之间的关系,以预测某工作流在给定数据集上能够获得的准确率;学习一种函数,能够成功地告诉你下一步应该尝试哪个工作流。第一个任务是通过创建一个平衡后的准确率组成的矩阵来完成的,不同的工作流可以应对不同的数据集。论文《Probabilistic Matrix Factorization for Automated Machine Learning》描述了该方法,详细说明了他们在超过 600 个数据集上尝试的 42,000 个不同的机器学习工作流。也许这与你今天在 Azure 的试用版中看到的是不同的,但它可以为你提供一种思路。作者指出,隐藏表征不仅成功地捕获了关于模型的信息,而且成功地捕获了关于超参数和数据集特征的信息(注意,这个学习过程是以无监督的方式进行的)。

目前所描述的模型可以作为已经评估的工作流的函数来预测每个机器学习工作流的预期性能,但是还没有对下一步应该尝试哪个工作流给出任何指导。由于他们使用的是矩阵分解的概率版本,该方法可以生成关于工作流性能的预测后验分布,从而允许我们使用采集函数(贝叶斯优化)来指导对机器学习工作流空间的探索。基本上,该方法可以选择出下一个可以最大化预期的准确率提升的工作流。

然而,推荐系统饱受一个非常特殊的问题的困扰:冷启动。如果一个新的数据集出现在系统中(也就是你的数据集),那么模型无从知晓这个新的数据集与什么相似。为了解决冷启动问题,我们可以从数据集中计算出一些元特征,以捕获观测次数、分类的类别数、值的范围等特征。然后通过这些指标在已知数据集的空间中确定出一个封闭的数据集。他们在不同的工作流上尝试了 5次,直到开始使用采集函数来通知自动机器学习系统接下来要尝试的数据集。注意,这个方法不需要访问实际的数据集,只需要访问本地计算出的元特性(这大大减小了开销)。

谷歌的 AUTOML(测试版)

  • 开源与否:否

  • 是否基于云平台:是(训练和评价)

  • 支持的模型类别:用于分类的卷积神经网络(CNN)、循环神经网络(RNN)、长短期记忆网络LSTM

  • 使用的技术:带梯度策略更新的强化学习

  • 训练框架:TensorFlow

说到神经网络,最近最先进的模型的成功离不开从功能设计到架构设计的范式转换。也就是说,构建能够以无监督的方式从数据中学习最佳表征的机器学习架构,而不是直接设计这样的特性(这是复杂的,需要大量关于数据的先验知识)。然而,设计架构仍然需要大量的知识和时间。谷歌 AutoML 的解决思路是创建一个元模型,该模型能够学习一种方法,为子模型设计和生成能够在感兴趣的数据集上取得良好性能的架构。

他们使用实现为 RNN 的神经架构搜索,生成编码为长度可变token序列(「字符串」的一种精妙表达方式)的架构。


使用该方法生成的 CNN 的编码。每个颜色框对应于RNN生成的建议体系架构的一个参数(或token)。

一旦生成了一个架构,就会构建并训练所提出的模型,最终记录所获得的精度。RNN经过训练,使用了强化学习策略,该策略更新了RNN的参数,以便随着时间的推移生成更好的架构。

生成的token序列可以看作是生成架构时应该执行的动作(action)序列。该模型最终会得到一个数据集上的准确率 R,我们可以考虑将 R 作为奖励信号与强化学习算法一起训练 RNN。然而,这样的奖励是不可微的,这就是为什么他们建议通过一些改进措施,使用策略梯度方法迭代更新参数(如Williams 等人在 1992 所提出的方法)。由于训练过程非常耗时,他们使用分布式训练和异步参数更新来加速学习过程,如 Dean 等人在 2012 发表的论文中提出的方法。

它能生成什么样的模型?根据谷歌大脑发表的相关论文《NEURALARCHITECTURE SEARCH WITH REINFORCEMENT LEARNING》,在卷积架构方面,他们将修正过的线性单元用于非线性模型(Nair & Hinton, 2010)、批量归一化(Ioffe &Szegedy, 2015)和跳跃连接(Szegedy et al., 2015 and He et al.,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》)

  • 训练框架:Keras

AutoKeras 和谷歌AutoML 的构建思路相同:它使用一个通过循环训练的 RNN 控制器,对候选架构(即子模型)进行采样,然后对其进行训练,以测量其在期望任务中的性能。接着,控制器使用性能作为指导信号,以找到更有前景的架构。然而,我们之前没有提到计算过程的代价有多高。实际上,神经架构搜索在计算上非常昂贵、耗时,例如 Zoph 等人在 2018 年发表的论文使用 450 个 GPU 运行了大约 4 万个 GPU 小时。另一方面,使用更少的资源往往产生倾倒的结果。为了解决这个问题,AutoKeras使用了高效神经架构搜索(ENAS)。

ENAS 应用了一个类似于迁移学习的概念,其思想是:在特定任务上为特定模型学习的参数可以用于其他任务上的其他模型。因此,ENAS 迫使所有生成的子模型共享权值,从而刻意防止从头开始训练每一个子模型。这篇论文的作者表明,ENAS 不仅可以在子模型之间共享参数,还能够获得非常强的性能。

Auto-sklearn

  • 开源与否:是

  • 是否基于云平台:否

  • 支持的模型类别:分类、回归

  • 使用的技术:贝叶斯优化+自动集成构造

  • 训练框架:sklearn

Auto-sklean 是基于Auto-Weka(https://www.automl.org/automl/autoweka/)使用的 CASH(组合算法选择和超参数优化)问题的定义以及和 AzureAutomated ML 相同的思路构建的:他们考虑同时选择一个学习算法和设置其超参数的问题。他们提出的主要区别是将两个额外的步骤合并到主进程中:一开始是元学习步骤,最后是自动化集成构造步骤,详情请参阅论文《Efficient and Robust Automated Machine Learning》。

auto-sklearnAutoML 方法

该方法使用了全部 38 个元特征来描述数据集,包括简单的、信息论的和统计的元特征,如数据点的数量、特征和分类,以及数据偏度和目标的熵。利用这些信息,他们会选择 k 个采样点作为贝叶斯优化的初始采样点(seed)。注意,这种元学习方法通过使用数据集存储库来获得强大的功能(就像 Azure Automated ML 那样)。

在完成贝叶斯优化之后,它们会构建一个由所有尝试过的模型组成的集成模型。这一步的思路是将训练每个模型所做的努力都存储下来。他们没有抛弃这些模型而选择更好的模型,而是将它们存储起来,最终构建出一个它们的集成模型。这种自动集成构造方法避免了让自己陷入单个超参数的设置中,因此鲁棒性更强(并且不容易过拟合)。他们使用集成选择(这个贪婪过程从空集成开始,迭代地添加能够最大化集成验证性能的模型)来构建集成模型。

结语和点评

每一种方法都有各自的优缺点,也有其各自的赛道。Azure Automatic ML 和 auto-sklearn 是基于相同的思想构建的,它们被用于回归和分类任务,计算量较少,因此实现成本较低。他们不需要整个数据集可见(只要构造的模型能够生成的),如果对数据隐私有要求的话,那么使用这两种框架是很合适的。然而,他们严重依赖于已经获取到的数据集。除了事先处理过的机器学习工作流外,他们不能尝试任何新的东西。我个人十分怀疑能否把这样的方法称为元学习


另一方面,谷歌 AutoML 和 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

产业AutoML
4
相关数据
激活函数技术

在 计算网络中, 一个节点的激活函数定义了该节点在给定的输入或输入的集合下的输出。标准的计算机芯片电路可以看作是根据输入得到"开"(1)或"关"(0)输出的数字网络激活函数。这与神经网络中的线性感知机的行为类似。 一种函数(例如 ReLU 或 S 型函数),用于对上一层的所有输入求加权和,然后生成一个输出值(通常为非线性值),并将其传递给下一层。

机器学习技术

机器学习是人工智能的一个分支,是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、计算复杂性理论等多门学科。机器学习理论主要是设计和分析一些让计算机可以自动“学习”的算法。因为学习算法中涉及了大量的统计学理论,机器学习与推断统计学联系尤为密切,也被称为统计学习理论。算法设计方面,机器学习理论关注可以实现的,行之有效的学习算法。

协同过滤技术

协同过滤(英语:Collaborative Filtering),简单来说是利用某兴趣相投、拥有共同经验之群体的喜好来推荐用户感兴趣的信息,个人通过合作的机制给予信息相当程度的回应(如评分)并记录下来以达到过滤的目的进而帮助别人筛选信息,回应不一定局限于特别感兴趣的,特别不感兴趣信息的纪录也相当重要。协同过滤又可分为评比(rating)或者群体过滤(social filtering)。其后成为电子商务当中很重要的一环,即根据某顾客以往的购买行为以及从具有相似购买行为的顾客群的购买行为去推荐这个顾客其“可能喜欢的品项”,也就是借由社区的喜好提供个人化的信息、商品等的推荐服务。除了推荐之外,近年来也发展出数学运算让系统自动计算喜好的强弱进而去芜存菁使得过滤的内容更有依据,也许不是百分之百完全准确,但由于加入了强弱的评比让这个概念的应用更为广泛,除了电子商务之外尚有信息检索领域、网络个人影音柜、个人书架等的应用等。

参数技术

在数学和统计学裡,参数(英语:parameter)是使用通用变量来建立函数和变量之间关系(当这种关系很难用方程来阐述时)的一个数量。

超参数技术

在机器学习中,超参数是在学习过程开始之前设置其值的参数。 相反,其他参数的值是通过训练得出的。 不同的模型训练算法需要不同的超参数,一些简单的算法(如普通最小二乘回归)不需要。 给定这些超参数,训练算法从数据中学习参数。相同种类的机器学习模型可能需要不同的超参数来适应不同的数据模式,并且必须对其进行调整以便模型能够最优地解决机器学习问题。 在实际应用中一般需要对超参数进行优化,以找到一个超参数元组(tuple),由这些超参数元组形成一个最优化模型,该模型可以将在给定的独立数据上预定义的损失函数最小化。

元学习技术

元学习是机器学习的一个子领域,是将自动学习算法应用于机器学习实验的元数据上。现在的 AI 系统可以通过大量时间和经验从头学习一项复杂技能。但是,我们如果想使智能体掌握多种技能、适应多种环境,则不应该从头开始在每一个环境中训练每一项技能,而是需要智能体通过对以往经验的再利用来学习如何学习多项新任务,因此我们不应该独立地训练每一个新任务。这种学习如何学习的方法,又叫元学习(meta-learning),是通往可持续学习多项新任务的多面智能体的必经之路。

TensorFlow技术

TensorFlow是一个开源软件库,用于各种感知和语言理解任务的机器学习。目前被50个团队用于研究和生产许多Google商业产品,如语音识别、Gmail、Google 相册和搜索,其中许多产品曾使用过其前任软件DistBelief。

概率矩阵分解技术

许多现有的协同滤波算法既不能处理非常大的数据集,也不能轻松处理那些有很少数据的用户。通过使用概率矩阵分解(PMF)模型,可以在大型、稀疏且不平衡的数据集上有很好的表现。以用户-项目评分矩阵为例,矩阵分解就是预测出评分矩阵中的缺失值,然后根据预测值以某种方式向用户推荐。

张量技术

张量是一个可用来表示在一些矢量、标量和其他张量之间的线性关系的多线性函数,这些线性关系的基本例子有内积、外积、线性映射以及笛卡儿积。其坐标在 维空间内,有 个分量的一种量,其中每个分量都是坐标的函数,而在坐标变换时,这些分量也依照某些规则作线性变换。称为该张量的秩或阶(与矩阵的秩和阶均无关系)。 在数学里,张量是一种几何实体,或者说广义上的“数量”。张量概念包括标量、矢量和线性算子。张量可以用坐标系统来表达,记作标量的数组,但它是定义为“不依赖于参照系的选择的”。张量在物理和工程学中很重要。例如在扩散张量成像中,表达器官对于水的在各个方向的微分透性的张量可以用来产生大脑的扫描图。工程上最重要的例子可能就是应力张量和应变张量了,它们都是二阶张量,对于一般线性材料他们之间的关系由一个四阶弹性张量来决定。

推荐系统技术

推荐系统(RS)主要是指应用协同智能(collaborative intelligence)做推荐的技术。推荐系统的两大主流类型是基于内容的推荐系统和协同过滤(Collaborative Filtering)。另外还有基于知识的推荐系统(包括基于本体和基于案例的推荐系统)是一类特殊的推荐系统,这类系统更加注重知识表征和推理。

神经网络技术

(人工)神经网络是一种起源于 20 世纪 50 年代的监督式机器学习模型,那时候研究者构想了「感知器(perceptron)」的想法。这一领域的研究者通常被称为「联结主义者(Connectionist)」,因为这种模型模拟了人脑的功能。神经网络模型通常是通过反向传播算法应用梯度下降训练的。目前神经网络有两大主要类型,它们都是前馈神经网络:卷积神经网络(CNN)和循环神经网络(RNN),其中 RNN 又包含长短期记忆(LSTM)、门控循环单元(GRU)等等。深度学习是一种主要应用于神经网络帮助其取得更好结果的技术。尽管神经网络主要用于监督学习,但也有一些为无监督学习设计的变体,比如自动编码器和生成对抗网络(GAN)。

卷积神经网络技术

卷积神经网路(Convolutional Neural Network, CNN)是一种前馈神经网络,它的人工神经元可以响应一部分覆盖范围内的周围单元,对于大型图像处理有出色表现。卷积神经网路由一个或多个卷积层和顶端的全连通层(对应经典的神经网路)组成,同时也包括关联权重和池化层(pooling layer)。这一结构使得卷积神经网路能够利用输入数据的二维结构。与其他深度学习结构相比,卷积神经网路在图像和语音识别方面能够给出更好的结果。这一模型也可以使用反向传播算法进行训练。相比较其他深度、前馈神经网路,卷积神经网路需要考量的参数更少,使之成为一种颇具吸引力的深度学习结构。 卷积网络是一种专门用于处理具有已知的、网格状拓扑的数据的神经网络。例如时间序列数据,它可以被认为是以一定时间间隔采样的一维网格,又如图像数据,其可以被认为是二维像素网格。

准确率技术

分类模型的正确预测所占的比例。在多类别分类中,准确率的定义为:正确的预测数/样本总数。 在二元分类中,准确率的定义为:(真正例数+真负例数)/样本总数

先验知识技术

先验(apriori ;也译作 先天)在拉丁文中指“来自先前的东西”,或稍稍引申指“在经验之前”。近代西方传统中,认为先验指无需经验或先于经验获得的知识。先验知识不依赖于经验,比如,数学式子2+2=4;恒真命题“所有的单身汉一定没有结婚”;以及来自纯粹理性的推断“本体论证明”

迁移学习技术

迁移学习是一种机器学习方法,就是把为任务 A 开发的模型作为初始点,重新使用在为任务 B 开发模型的过程中。迁移学习是通过从已学习的相关任务中转移知识来改进学习的新任务,虽然大多数机器学习算法都是为了解决单个任务而设计的,但是促进迁移学习的算法的开发是机器学习社区持续关注的话题。 迁移学习对人类来说很常见,例如,我们可能会发现学习识别苹果可能有助于识别梨,或者学习弹奏电子琴可能有助于学习钢琴。

过拟合技术

过拟合是指为了得到一致假设而使假设变得过度严格。避免过拟合是分类器设计中的一个核心任务。通常采用增大数据量和测试样本集的方法对分类器性能进行评价。

神经元技术

(人工)神经元是一个类比于生物神经元的数学计算模型,是神经网络的基本组成单元。 对于生物神经网络,每个神经元与其他神经元相连,当它“兴奋”时会向相连的神经元发送化学物质,从而改变这些神经元的电位;神经元的“兴奋”由其电位决定,当它的电位超过一个“阈值”(threshold)便会被激活,亦即“兴奋”。 目前最常见的神经元模型是基于1943年 Warren McCulloch 和 Walter Pitts提出的“M-P 神经元模型”。 在这个模型中,神经元通过带权重的连接接处理来自n个其他神经元的输入信号,其总输入值将与神经元的阈值进行比较,最后通过“激活函数”(activation function)产生神经元的输出。

长短期记忆网络技术

长短期记忆(Long Short-Term Memory) 是具有长期记忆能力的一种时间递归神经网络(Recurrent Neural Network)。 其网络结构含有一个或多个具有可遗忘和记忆功能的单元组成。它在1997年被提出用于解决传统RNN(Recurrent Neural Network) 的随时间反向传播中权重消失的问题(vanishing gradient problem over backpropagation-through-time),重要组成部分包括Forget Gate, Input Gate, 和 Output Gate, 分别负责决定当前输入是否被采纳,是否被长期记忆以及决定在记忆中的输入是否在当前被输出。Gated Recurrent Unit 是 LSTM 众多版本中典型的一个。因为它具有记忆性的功能,LSTM经常被用在具有时间序列特性的数据和场景中。

强化学习技术

强化学习是一种试错方法,其目标是让软件智能体在特定环境中能够采取回报最大化的行为。强化学习在马尔可夫决策过程环境中主要使用的技术是动态规划(Dynamic Programming)。流行的强化学习方法包括自适应动态规划(ADP)、时间差分(TD)学习、状态-动作-回报-状态-动作(SARSA)算法、Q 学习、深度强化学习(DQN);其应用包括下棋类游戏、机器人控制和工作调度等。

信息论技术

信息论是在信息可以量度的基础上,研究有效地和可靠地传递信息的科学,它涉及信息量度、信息特性、信息传输速率、信道容量、干扰对信息传输的影响等方面的知识。通常把上述范围的信息论称为狭义的信息论,又因为它的创始人是香农,故又称为香农信息论。

自动化机器学习技术

推荐文章
暂无评论
暂无评论~