机器学习机器学习与数据挖掘机器学习和人工智能入门

深度学习自动调参之NNI使用体验

2019-02-14  本文已影响5人  DeamoV

作者

在机器学习建模时,除了准备数据,最耗时耗力的就是尝试各种超参组合,找到模型最佳效果的过程了。即使是对于有经验的算法工程师和数据科学家,有时候也很难把握其中的规律,只能多次尝试,找到较好的超参组合。而对于初学者来说,要花更多的时间和精力。

自动机器学习这两年成为了热门领域,着力解决超参调试过程的挑战,通过超参选择算法和强大的算力来加速超参搜索的过程。

NNI (Neural Network Intelligence) 是微软亚洲研究院开源的自动机器学习工具。与当前的各种自动机器学习服务或工具相比,有非常独特的价值。在这篇文章中,你将看到:

一、关于AutoML

1.1、AutoML出现原因

机器学习的应用需要大量的人工干预,这些人工干预表现在:特征提取、模型选择、参数调节等机器学习的各个方面。AutoML视图将这些与特征、模型、优化、评价有关的重要步骤进行自动化地学习,使得机器学习模型无需人工干预即可被应用。

1.2、AutoML问题定义

一个通用的AutoML定义如下:

AutoML的核心任务:

1.3、AutoML问题构成

AutoML的主要问题可以由三部分构成:特征工程、模型选择、算法选择。

最终从全局来看,我们可以将以上三个关键步骤整合起来看,一个完整的 AutoML 过程可以分成这么两类:一类是将以上的三个步骤整合成一个完整的 pipeline;另一类则是 network architecture search,能够自动地学习到最优的网络结构。在学习的过程中,对以上三个问题都进行一些优化。

1.4、基本的优化策略

一旦搜索空间确定,我们便可以实用优化器 (optimizer) 进行优化。这里,AutoML 主要回答三个问题:

简单的优化搜索方式包括 grid search 和 random search。其中 grid search 被广泛使用。

从样本中进行优化的方法主要包括启发式搜索、derivative-free 优化、以及强化学习方法。梯度下降法是一种重要的优化策略。

1.5、评价策略

基本评价策略

在设计评价策略时,AutoML主要回答三个问题:

基本的评价策略包括:

高级评价策略

除了上述比较基本的评价策略,我们有时候还会使用更高级评价策略,其主要包括两种:Meta-Learning 和 Transfer Learning。

1.6、应用

1.7、展望

未来可能的研究方向:

二、目前的 AutoML 工具比较

2.1、 TPOT

简介:

TPOT是一个使用genetic programming算法优化机器学习piplines的Python自动机器学习工具。

TPOT Demo

TPOT 通过智能地探索数千种可能的 piplines 来为数据找到最好的一个,从而自动化机器学习中最乏味的部分。

An example Machine Learning pipeline

一旦 TPOT 完成了搜索,它就会为用户提供Python代码,以便找到最佳的管道,这样用户就可以从那里修补管道。


An example TPOT pipeline

输出结果:

最佳模型组合及其参数 ( python 文件) 和最佳得分。

优劣:

TPOT 在数据治理阶段采用了 PCA 主成份分析,在模型选择过程中可以使用组合方法,分析的过程比起其他工具更科学,并能直接生成一个写好参数的python 文件,但输出可参考的结果较少,不利于进一步分析。

2.2、Auto_Sklearn

简介:

Auto-sklearn将机器学习用户从算法选择和超参数调整中解放出来。它利用了最近在贝叶斯优化、元学习和集成构建方面的优势。

img

主要使用穷举法在有限的时间内逐个尝试最优模型,上图是它的架构体系,看的出来他的工作逻辑是目前的开源框架中最复杂的一款,步骤就不细说了,大体过程应该是与Tpot相似的。

输出结果:

计算过程以及最终模型的准确率。

优劣:

穷举法简单粗暴,但也是最靠谱的,如果时间充裕的情况下可以加大预算周期不断让机器尝试最优解,但输出结果太少,基本上对进一步数据分析的帮助不大。

2.3、Advisor

[图片上传失败...(image-e1e054-1550110352092)]

简介:

Advisor 是用于黑盒优化的调参系统。它是基于 Google Vizier 的开源实现,编程接口与 Google Vizier 相同。

输出结果:

推荐参数与训练模型。

优劣:

方便与 API、SDK、WEB 和 CLI 一起使用,支持研究和试验抽象化,包括搜索和 Early Stop算法,像 Microsoft NNI 一样的命令行工具。

介绍完以上这些开源的自动机器学习工具,下面一节就要隆重介绍 NNI 了,NNI 对比以上的工具有很多吸引人的优势,同时作为一个刚刚开源的项目,不可避免也存在一些可以改进的方面,让我们开始吧!

三、关于NNI

3.1、什么是NNI

NNI (Neural Network Intelligence) 是自动机器学习(AutoML)的工具包。 它通过多种调优的算法来搜索最好的神经网络结构和(或)超参,并支持单机、本地多机、云等不同的运行环境。

3.2、我们能用NNI做什么?

3.3、NNI 安装和使用过程体会

安装

NNI 的安装过程非常方便,基本没遇到什么障碍,但需要注意的是,NNI目前只支持 Linux 和 Mac(据说兼容 Win10 版本正在开发中),不过在 Win10上有一个解决方案是可以去应用商店下载一个 Ubuntu 虚拟机,也能很方便的开发。

NNI的官方文档上介绍了三种安装方式,整个过程非常简单,和大部分的开源框架一样,我使用的是第一种:

使用体验

将 NNI 从 Github 上 clone 到本地后,进入路径 ~/nni/examples/trials/mnist-annotation,这里是官方提供的 mnist-annotation 例子,能够带你迅速的了解 NNI 的使用。

将NNI的使用总结一下大体是如下的流程:

流程 启动nni.PNG

NNI 的可视化界面也是相较其他工具最讨喜的方面之一,能够让用户在整个实验过程中获得对训练结果的直观理解,方便分析。

Hyper Parameter 试验

3.4、NNI的优势

四、对NNI的建议

  1. 拓展web UI的功能:
    通过控制页面还可以实时的增加试验的超参组合,或者调整超参的范围。
    能够在界面中读取之前的log文件

  2. 中文文档:
    便于学生使用与查阅,拓展使用群体,降低上手门槛(已解决)

  3. 加入新算法:
    就在发稿前些天,NNI 支持了较新的 ENAS 算法。看来 DARTS 指日可待。这些 Tuner 算法会在后续的文章中依次介绍的。

五、参考资料

上一篇 下一篇

猜你喜欢

热点阅读