当前位置:   article > 正文

自动化机器学习AutoML(1)_auto-sklearn on windows

auto-sklearn on windows

自动化机器学习AutoML

什么是AutoML

在过去十年内,机器学习领域获得了巨大的进展,得益于互联网(数据)与芯片(算力)行业的快速发展,各类机器学习算法终于化理论为实践,被应用当各行各业、千家万户。如今,越来越多的科研领域依赖机器学习算法,机器学习算法的实现也因sklearn等算法库而变得轻便简单,但真正高水平的应用却很大程度依赖于机器学习算法工程师的经验。

现代机器学习系统不止是关系到编程、数学等技能,更是伴随着众多基于经验和专业性的设计决策,包括如何构筑特征、选择模型,如何设置超参数空间(parameter space)、如何设置神经网络结构、如何排布和管理数据处理管道(pipeline)等等。在实际的机器学习系统搭建过程当中,有超过80%的时间都在处理基于经验的设计决策,而决策所需的专业性拉开了算法工程专家与普通编程者的距离,也拉开了算法专业人员与业务人员的距离。

虽然机器学习领域的高专业性保障了算法工程师的稀缺性与高待遇,但在实际商业场景中,还有众多不关注机器学习技术细节、只关注机器学习产出成果的公司与个人,对他们而言,机器学习领域对专业知识的要求成为了巨大的门槛。无论一门技术多么先进,最终的目的还是要围绕业务场景、解决业务问题,而机器学习算法的核心价值也在于能够一定程度上代替人脑完成决策、完成部分思考流程的自动化。为了机器学习能够被更广泛地应用、更快速地发展,研究者们产生了让机器学习完成机器学习建模流程中所需决策的想法,正是一想法催生了自动化机器学习AutoML这一研究领域。

建模流程

AutoML旨在让算法完成机器学习建模流程中所需的决策

AutoML的最终目标是让机器学习建模流程不再需要人工干预
或至少不再需要富有经验的机器学习专家的干预

在整个建模流程中,可能自动化的步骤包括了:

  • 数据预处理
  • 特征构建/特征工程
  • 模型选择
  • 搭建神经网络架构
  • 模型调参
  • 模型融合
  • 模型可视化

其中某些领域在自动化之后,甚至可能完全替代算法工程师的作用。围绕所有可能的领域,学者们艰难探索了数十年。随着人工智能的兴起,AutoML也取得了极大的进展,终于有了较为成熟的方法与工具。现在,AutoML已经是近年来机器学习领域最受关注的研究领域之一:

  • 学术界
  • 2021年,google scholar上新增了2690篇autoML领域相关的论文
  • 光是在自动化神经网络架构领域,就有数百篇论文被发表
  • 学术研究中几乎不再出现手动调参方法
  • 自2014年以来,每两年会有一场AutoML或AutoDL大规模挑战赛
  • 第一届AutoML国际会议将在2022年夏季举办

从此AutoML不再是混迹在CVPR、ICML等大型会议上的小展台了。

  • 工业界
  • 2周之前,华为天才少年钟钊公布了他们的首个AutoML大规模商用的成果
  • 微软(Azune)、谷歌、亚马逊都已经提出了各自的AutoML解决方案
  • 2018年,自动化设计的神经网络架构首次胜过人为设计的神经网络架构
  • 自动化神经网络架构设计已经是许多实验室/高科技公司的标准化技能
  • 已实现的自动化框架

开源框架

例如,业务人员或非专业人员恐怕很难在琳琅满目的第三方框架中选择适合当下项目的框架,同时非专业人员也无法辨别“自动化”究竟完成了哪些工作,还有哪些非自动化的流程需要完成,因此非专业人员只能够使用综合性自动化建模方案。然而:

  • AutoWEKA只支持Java

    AutoWEKA底层是基于WEKA所构建,而WEKA只有Java才能调用,因此AutoWEKA拓展性较差,不适用Java以外语言

  • Auto-sklearn不支持windows

    Auto-sklearn底层是基于linux中的resorce模块运行,因此不支持Windows系统,也不能完全支持Mac系统

  • hpsklearn缺乏维护,年久失修

    hpsklearn底层是基于sklearn,代码简单但缺乏维护,年久失修,时至今日一些基本的代码(如fit)运行还会报错

更糟糕的是,自动化流程是脆弱的,为了能够让用户简单地进行调用,自动化框架往往封装程度很深,一旦框架本身不那么完美,自动化流程就非常容易崩溃。即便真的能够进行调试,无论是最简单的网格搜索,还是复杂的贝叶斯优化,底层都是复杂的数学理论。即便对于机器学习算法工程师来说,AutoML算法背后的原理都令人望而生畏,更不要提完全不理解机器学习的非专业人员了。

AutoML的三大成熟研究领域

  • 超参数优化HPO(HyperParameter Optimization)

超参数优化是AutoML领域中最成熟、最深入、也是最知名的方向。每一个机器学习算法都会有超参数,而超参数的设置很大程度上影响了算法实际的使用效果,因此调参是机器学习算法工程师最为基础和重要的任务。理论上来说,当算力与数据足够时,HPO的性能一定是超过人类的。HPO能够降低人为工作量,并且HPO得出的结果比认为搜索的复现可能性更高,所以HPO可以极大程度提升科学研究的复现性和公平性。当代超参数优化算法主要可以分为:

基于网格的各类搜索(Grid)

基于贝叶斯优化的各类优化算法(Baysian)

基于梯度的各类优化(Gradient-based)

基于进化算法的各类优化(Evolutionary Optimzation)

  • 神经网络架构搜索NAS(Neural Architecture Search)

神经网络架构搜索解决深度学习世界当中最关键的问题之一:如何寻找性能良好的深度神经网络架构。与机器学习领域不同,深度学习领域没有一统天下的算法架构,面临任意学习任务,深度学习算法工程师都必须找出适应当前数据和业务的架构。自动化架构搜索可以大大加快新的深度学习应用程序的开发,因为开发人员终于不需要煞费苦心地评估不同的架构了。

  • 元学习(Meta-Learning)

元学习是一种基于其他任务的经验进行学习的方法。人类在学习新知识时,总是会或多或少地借助以前学习过的相关知识。例如,当你学习游泳时,你并不需要从“什么是水”开始,你已经自然地理解了“什么是水”,“水下不能呼吸”、“人下水会沉”等基本信息,然后就可以从“如何漂浮”以及“如何在水下换气”开始学习。

但对机器学习算法来说,每次学习都是从0开始,在接触训练数据之前,机器学习算法不会有任何“相关经验和理解”。元学习就是赋予机器学习算法“相关经验”的方法。在元学习中,我们一般会先让算法学习与目标任务相关的其他任务或其他信息,以获得能够知道检索新任务最优模型的相关知识,然后再在目标任务上进行训练。这一手段被广泛地应用于HPO和NAS领域,同时深度学习中的“迁移学习”也于元学习有异曲同工之妙。

在实际应用中,原学习可以被用于以下任务:

HPO&NAS

算法预测

模型选择

算法构建(L2L)

AutoML的新兴研究领域

  • 交互式可解释性机器学习ixAutoML(Interactive and Explainable AutoML)

大部分AutoML框架封装程度很深、许多AutoML算法还是黑箱算法,因此无论是机器学习工作者、还是非专业人士,都不太信任AutoML的结果。ixAutoML是研究自动化解释模型、自动化可视化的领域,旨在增强专业人员对AutoML的信任感,增强AutoML的透明程度。该领域已经发展了一段时间,目前为止最先进的研究能够可视化参数变化对模型整体的影响。

  • 绿色AI(Green AI)

AutoML最关键的问题之一是巨大的计算量。当人工神经网络、boosting算法等超参数众多的算法被应用当工业当中,巨量的数据、巨量的超参数让AutoML对算力的要求很高。绿色AI旨在自动研发低参数量、低超参量、但性能优越的算法。这个领域目前刚刚萌芽。

  • 非线性流程优化

无论我们如何“自动化”机器学习,在调参和模型选择中都会有一个巨大的争议:有的模型在没有调参之前结果不佳,但是调参之后可能得到很好的结果,有的模型在调参之前结果很好,但是调参之后未必能得到很好的结果。但在自动化过程中,我们一定是先选择模型,再调节参数,因此具有强大调参潜力的模型反而容易在自动化过程中被筛选掉。现在的技术已经支持对多个模型同时调参,并最终选择调参后结果最佳的模型,但这样又会需要大量计算资源与计算时间。如何快速解决模型选择与调参顺序所导致的问题,是现代autoML关键的课题。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/384259
推荐阅读
相关标签
  

闽ICP备14008679号