拿什么拯救我的调参路——AutoGluon
验“金”室
当机器能够完成任务的效果比我们手工完成的更好时,我们何不将其有效利用起来,节省个人精力以便投身到更加重要的工作中去?
1
AutoGluon研发背景
为了减少人工干预,实现机器学习的自动化,越来越多的人开始关注Automated Machine Learning这一新兴领域。不久前,亚马逊发布了开源代码库AutoGluon,它是以三年前亚马逊联合微软推出的Gluon深度学习库为基础研发的,在构建模型时能自动做出参数决策,使得开发人员只需写几行代码即可生成高性能的神经网络模型。
深度学习是机器学习的一部分,它是受到人类视觉系统处理信息过程的启发而诞生的一种技术。视觉信息的流动过程从视网膜接收外界信息开始,在低级脑区提取边缘特征,通过高级脑区判断基本形状,再到达高层判断目标属性,最后在前额叶皮层进行分类决策。而深度学习也正是通过组合低级特征构造更加抽象的高级特征的一个过程。
对于进行深度学习的“初学”机器而言,由于专业知识的匮乏,原型模型的搭建存在一定的困难。而Keras等深度学习库的出现及不断优化,虽然使得深度学习的训练过程变得方便、快捷,但是仍需要人做出大量干预,如数据预处理、特征提取、超参数调优等。AutoGluon则可以有效减少人工干预,通过自动调整限制条件内的选择来实现决策的自动化,利用现有资源找到最优的模型。
2
AutoGluon使用流程
AutoGluon的使用流程如图1所示,首先,要准备好需要训练的数据。AutoGluon的使用范围十分广泛,包含图像、表格、文本和视频数据。其次,调用方法,快速为数据构建深度学习方案,寻找在特定限制条件之下的最佳模型。最后,将新数据导入所找到的最佳模型。
图1 AutoGluon 使用流程
3
AutoGluon技术原理
AutoGluon的本质是一个神经架构搜索工具(NAS)。NAS可以自动设计出有效的网络架构,但是庞大的计算量会导致GPU耗时过长,因此无法在大型任务中进行直接搜索。可微分的NAS虽减少了计算量,却存在高GPU内存消耗问题,因此也不可行。为了解决这个问题,业界普遍的做法是先利用Proxy任务训练少量轮次、学习少量的结构单元,然后反复堆砌相同的结构单元,从而形成具有大量相同结构单元的大型网络。接着,在小数据集进行搜索操作后再迁移到大型网络上。这种方法所带来的问题不仅是结构单元多样性的缺失,而且也无法保证Proxy所得到的结构在目标任务上同样也是最佳的。为了解决传统NAS的缺陷,各类算法应运而生,AutoGluon正是基于MIT提出的ProxylessNAS以及Google所提出的ENAS方法,再融合自动特征抽取和参数调优等技术支持而诞生的神经架构搜索工具。
ProxylessNAS采用的是剪枝的方法,将NAS视作是一个路径不断修剪的过程。如图2所示,首先将输入数据构造成一个过参数化网络,这里的过参数化指的是将每个节点的所有可能值都保留,这样也保留了所有的候补路径。为了判断哪些路径是冗余的,可引入结构化参数来进行区分,结构化参数本身在训练结束时会被移除,以得到一个轻量级网络结构。接着,由于过参数化会导致GPU显存占用和搜索候补路径急剧增长,为了解决这一问题,ProxylessNAS将结构化参数二值化(0或1),并强制让一个路径在搜索时处于激活状态。其次,使用相应的Binary Gate这一基于梯度的方法来更新结构化参数。最后,通过对延迟建模,让延迟可导,对延迟进行优化。
图2 ProxylessNAS训练权重参数和二值化参数
NAS的本质是在大的搜索图中找寻合适的子图作为模型,其搜索空间可以作为单个有向无环图,而ENAS的核心思想就是将NAS最终迭代的搜索图看作ENAS搜索图的子图。如图3所示,每个节点表示的是局部运算,边的方向表示的是信息流动的方向。在ENAS的搜索空间中,允许参数在所有子模型之间共享。通过强制所有子模型共享权重,提升了NAS的效率,解决了NAS算力资源需求大且耗时长的问题。
图3 ENAS搜索图
需要明确的是,NAS只是一种搜索算法,ENAS只是对NAS的改进,使其更加高效。对于普通的神经网络,每一层都是把之前一层的输出作为输入;而对于ENAS而言,它的每一个节点都含有一个前节点索引。因此,ENAS的核心在于如何挑选节点之间的最优连线,这同时也是ENAS共享权重的基础。在确定节点的数量之后,通过参数去控制每个节点连接的前置索引,这组参数就是我们挑选出的表征一个固定神经网络结构的参数。各组模型用相同的一组权重,然后在未被训练的验证数据集中做一次推断,最终选择正确率最高的表征模型结构的一组参数。ENAS为自动超参调优开拓了新的思路,让所有生成模型无需重复训练,大幅度提高了效率。
4
AutoGluon应用实例
对于表格化数据,AutoGluon可以提供根据其他列的数值来预测一列数值的模型。操作者只需调用fit(),就可以在标准的监督学习任务(分类和回归任务)实现很高的准确度。最重要的是,不需要进行数据清洗、特征提取、超参调优、模型选取等过程。
这里使用的是官方数据集来展示AutoGluon在表格预测上的应用,效果如图4所示。
图4 AutoGluon处理表格数据结果(a)
由图4可知,横轴表示的是模型类型,纵轴表示的是模型效果。
AutoGluon提供RF、TabularNeuralNet、KNN、WeightedEnsemble、LGB、Catboost等多种算法的对比功能。对比纵轴的数值,我们可以发现有三种算法的效果是最佳的。
为了帮助开发人员进行超参数调优,AutoGluon还展示了每个结果值的相关细节(如图5所示),其中,包含有模型效果、模型名称、模型类别以及超参数设置等。
图5 AutoGluon处理表格数据结果(b)
5
AutoGluon的意义
虽然AutoGluon还处于项目的萌芽期,尚有许多可以成长的空间,如场景优化、算法优化以及硬件加速等,但现在已经可以用于处理分类、回归等基本任务以及对象检测等高级任务。
也许有些人仍然对这类AutoML工具持有怀疑的态度,也许有些人仍然自信于自己手动调参的结果,使得他们目前并不愿意使用这类AutoML工具,但我仍认为应该怀着开放的心态理性看待和接受这类工具。当机器能够完成任务的效果比我们手工完成的更好时,我们何不将其有效利用起来,节省个人精力以便投身到更加重要的工作中去?而对于企业而言,AutoGluon的出现不仅降低了员工研究深度学习的门槛,压降了AI项目的研发周期和运营成本,也更加符合当下AI项目求快求新求变的趋势。
更多精彩内容
FCC30+
长按左边二维码
关注我们不迷路