Py学习  »  机器学习算法

深度学习自动调参工具,NNI使用

机器学习AI算法工程 • 4 年前 • 1100 次点击  


向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。
    当遇到一些极端情况使得网络表现效果不好时,可以考虑进行 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三年

......




阅读过本文的人还看了以下文章:


《美团机器学习实践》_美团算法团队.pdf


分享《深度学习入门:基于Python的理论与实现》高清中文版PDF+源代码


《21个项目玩转深度学习:基于TensorFlow的实践详解》完整版PDF+附书代码


《深度学习之pytorch》pdf+附书源码


PyTorch深度学习快速实战入门《pytorch-handbook》


【下载】豆瓣评分8.1,《机器学习实战:基于Scikit-Learn和TensorFlow》


《Python数据分析与挖掘实战》PDF+完整源码


汽车行业完整知识图谱项目实战视频(全23课)


李沐大神开源《动手学深度学习》,加州伯克利深度学习(2019春)教材


笔记、代码清晰易懂!李航《统计学习方法》最新资源全套!


《神经网络与深度学习》最新2018版中英PDF+源码


将机器学习模型部署为REST API


FashionAI服装属性标签图像识别Top1-5方案分享


重要开源!CNN-RNN-CTC 实现手写汉字识别


yolo3 检测出图像中的不规则汉字


同样是机器学习算法工程师,你的面试为什么过不了?


前海征信大数据算法:风险概率预测


【Keras】完整实现‘交通标志’分类、‘票据’分类两个项目,让你掌握深度学习图像分类


VGG16迁移学习,实现医学图像识别分类工程项目


特征工程(一)


特征工程(二) :文本数据的展开、过滤和分块


特征工程(三):特征缩放,从词袋到 TF-IDF


特征工程(四): 类别特征


特征工程(五): PCA 降维


特征工程(六): 非线性特征提取和模型堆叠


特征工程(七):图像特征提取和深度学习


如何利用全新的决策树集成级联结构gcForest做特征工程并打分?


Machine Learning Yearning 中文翻译稿


蚂蚁金服2018秋招-算法工程师(共四面)通过


全球AI挑战-场景分类的比赛源码(多模型融合)


斯坦福CS230官方指南:CNN、RNN及使用技巧速查(打印收藏)


python+flask搭建CNN在线识别手写中文网站


中科院Kaggle全球文本匹配竞赛华人第1名团队-深度学习与特征工程


不断更新资源

深度学习、机器学习、数据分析、python

 搜索公众号添加: datayx  

长按图片,识别二维码,点关注


AI项目体验

https://loveai.tech



Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/49290
 
1100 次点击