深度学习自动调参工具,NNI使用
向AI转型的程序员都关注了这个号????????????
机器学习AI算法工程 公众号:datayx
在机器学习建模时,除了准备数据,最耗时耗力的就是尝试各种超参组合,找到模型最佳效果的过程了。即使是对于有经验的算法工程师和数据科学家,有时候也很难把握其中的规律,只能多次尝试,找到较好的超参组合。而对于初学者来说,要花更多的时间和精力。
自动机器学习这两年成为了热门领域,着力解决超参调试过程的挑战,通过超参选择算法和强大的算力来加速超参搜索的过程。
NNI (Neural Network Intelligence) 是微软亚洲研究院开源的自动机器学习工具。与当前的各种自动机器学习服务或工具相比,有非常独特的价值。在这篇文章中,你将看到:
什么是自动机器学习
目前的一些自动机器学习工具
关于NNI
NNI的安装及使用过程初体验
总结NNI可以改进的方面
一、关于AutoML
1.1、AutoML出现原因
机器学习的应用需要大量的人工干预,这些人工干预表现在:特征提取、模型选择、参数调节等机器学习的各个方面。AutoML视图将这些与特征、模型、优化、评价有关的重要步骤进行自动化地学习,使得机器学习模型无需人工干预即可被应用。
1.2、AutoML问题定义
从机器学习角度讲,AutoML可以看作是一个在给定数据和任务上学习和泛化能力非常强大的系统。但是它强调必须非常容易使用。
从自动化角度讲,AutoML则可以看作是设计一系列高级的控制系统去操作机器学习模型,使得模型可以自动化地学习到合适的参数和配置而无需人工干预。
一个通用的AutoML定义如下:
AutoML的核心任务:
更好的训练效果
没有人为干预
更低的计算力需求
1.3、AutoML问题构成
AutoML的主要问题可以由三部分构成:特征工程、模型选择、算法选择。
-
特征工程
特征工程在机器学习中有着举足轻重的作用。在AutoML中,自动特征工程的目的是自动地发掘并构造相关的特征,使得模型可以有最优的表现。除此之外,还包含一些特定的特征增强方法,例如特征选择、特征降维、特征生成、以及特征编码等。这些步骤目前来说都没有达到自动化的阶段。
上述这些步骤也伴随着一定的参数搜索空间。第一种搜索空间是方法自带的,例如PCA自带降维参数需要调整。第二种是特征生成时会将搜索空间扩大。
-
模型选择
模型选择包括两个步骤:选择一个模型,设定它的参数。相应地,AutoML的目的就是自动选择出一个最合适的模型,并且能够设定好它的最优参数。
-
算法选择
对于算法选择,AutoML 的目的是自动地选择出一个优化算法,以便能够达到效率和精度的平衡。常用的优化方法有 SGD、L-BFGS、GD 等。使用哪个优化算法、对应优化算法的配置,也需要一组搜索空间。
最终从全局来看,我们可以将以上三个关键步骤整合起来看,一个完整的 AutoML 过程可以分成这么两类:一类是将以上的三个步骤整合成一个完整的 pipeline;另一类则是 network architecture search,能够自动地学习到最优的网络结构。在学习的过程中,对以上三个问题都进行一些优化。
1.4、基本的优化策略
一旦搜索空间确定,我们便可以实用优化器 (optimizer) 进行优化。这里,AutoML 主要回答三个问题:
选择的优化器可以作用在哪个搜索空间上?
它需要什么样的反馈?
为了取得一个好的效果,它需要怎样的配置?
简单的优化搜索方式包括 grid search 和 random search。其中 grid search 被广泛使用。
从样本中进行优化的方法主要包括启发式搜索、derivative-free 优化、以及强化学习方法。梯度下降法是一种重要的优化策略。
1.5、评价策略
基本评价策略
在设计评价策略时,AutoML主要回答三个问题:
这种策略能能够快速进行评价吗?
这种策略能够提供准确的评价吗?
这种策略需要怎样的反馈?
基本的评价策略包括:
直接评价。直接在目标数据上进行评价。这是被使用最多的策略。
采样。当数据样本量非常大时,采样一些样本进行评价。
Early Stop。
参数重用。将之前学习过的参数重复利用在新任务上,以加快训练速度。这在两种任务配置差不多时可用。
共轭评价。
高级评价策略
除了上述比较基本的评价策略,我们有时候还会使用更高级评价策略,其主要包括两种:Meta-Learning 和 Transfer Learning。
Meta-Learning 法:从先前的学习经验中提炼出基本的参数和结构配置。
Transfer Learning法:从先前的学习经验中提炼出可以重用的一些知识。
1.6、应用
使用 Auto-sklearn 进行模型选择。
使用强化学习进行 Neural Architecture Search。
使用 ExploreKit 进行自动特征构建。
1.7、展望
未来可能的研究方向:
提高 AutoML 的效率。
更明确的问题定义。
发展基本和高级的搜索策略。
找到更适合的应用。
二、目前的 AutoML 工具比较
2.1、 TPOT
简介:
TPOT是一个使用genetic programming算法优化机器学习piplines的Python自动机器学习工具。
TPOT 通过智能地探索数千种可能的 piplines 来为数据找到最好的一个,从而自动化机器学习中最乏味的部分。
一旦 TPOT 完成了搜索,它就会为用户提供Python代码,以便找到最佳的管道,这样用户就可以从那里修补管道。
输出结果:
最佳模型组合及其参数 ( python 文件) 和最佳得分。
优劣:
TPOT 在数据治理阶段采用了 PCA 主成份分析,在模型选择过程中可以使用组合方法,分析的过程比起其他工具更科学,并能直接生成一个写好参数的python 文件,但输出可参考的结果较少,不利于进一步分析。
2.2、Auto_Sklearn
简介:
Auto-sklearn将机器学习用户从算法选择和超参数调整中解放出来。它利用了最近在贝叶斯优化、元学习和集成构建方面的优势。
主要使用穷举法在有限的时间内逐个尝试最优模型,上图是它的架构体系,看的出来他的工作逻辑是目前的开源框架中最复杂的一款,步骤就不细说了,大体过程应该是与Tpot相似的。
输出结果:
计算过程以及最终模型的准确率。
优劣:
穷举法简单粗暴,但也是最靠谱的,如果时间充裕的情况下可以加大预算周期不断让机器尝试最优解,但输出结果太少,基本上对进一步数据分析的帮助不大。
2.3、Advisor
简介:
Advisor 是用于黑盒优化的调参系统。它是基于 Google Vizier 的开源实现,编程接口与 Google Vizier 相同。
输出结果:
推荐参数与训练模型。
优劣:
方便与 API、SDK、WEB 和 CLI 一起使用,支持研究和试验抽象化,包括搜索和 Early Stop算法,像 Microsoft NNI 一样的命令行工具。
介绍完以上这些开源的自动机器学习工具,下面一节就要隆重介绍 NNI 了,NNI 对比以上的工具有很多吸引人的优势,同时作为一个刚刚开源的项目,不可避免也存在一些可以改进的方面,让我们开始吧!
三、关于NNI
3.1、什么是NNI
NNI (Neural Network Intelligence) 是微软开源的自动机器学习(AutoML)的工具包。它通过多种调优的算法来搜索最好的神经网络结构和(或)超参,并支持单机、本地多机、云等不同的运行环境。
中文文档
https://github.com/microsoft/nni/blob/master/README_zh_CN.md
3.2、我们能用NNI做什么?
在本地 Trial 不同的自动机器学习算法来训练模型。
在分布式环境中加速自动机器学习(如:远程 GPU 工作站和云服务器)。
定制自动机器学习算法,或比较不同的自动机器学习算法。
在自己的机器学习平台中支持自动机器学习。
安装
NNI 的安装过程非常方便,基本没遇到什么障碍,但需要注意的是,NNI目前只支持 Linux 和 Mac(据说兼容 Win10 版本正在开发中),不过在 Win10上有一个解决方案是可以去应用商店下载一个 Ubuntu 虚拟机,也能很方便的开发。
NNI的官方文档上介绍了三种安装方式,整个过程非常简单,和大部分的开源框架一样,我使用的是第一种:
-
通过 pip 命令安装 NNI
先决条件:
python >= 3.5
python3 -m pip install --upgrade nni
使用体验
将 NNI 从 Github 上 clone 到本地后,进入路径 ~/nni/examples/trials/mnist-annotation
,这里是官方提供的 mnist-annotation 例子,能够带你迅速的了解 NNI 的使用。
将NNI的使用总结一下大体是如下的流程:
详细说明需查看文档
https://github.com/microsoft/nni/blob/master/README_zh_CN.md
阿里云双11大促 服务器ECS 数据库 全场1折
活动地址
1核2G1M,86一年,¥229三年
2核4G3M,¥799三年
2核8G5M,¥1399三年
......
阅读过本文的人还看了以下文章: