AutoML--NNL经验分享

AutoML全称是Automated Machine Learning,是2014年以来,机器学习和深度学习领域最炙手可热的领域之一。NNI(Neural Network Intelligence)是一个轻量级但功能强大的机器学习(AutoML)工具包,可帮助用户自动化特征工程、神经架构搜索、超参数调优和模型压缩,并支持单机、本地多机、云等不同的运行环境。

image

NNI使用场景

场景1:超参数优化

[学习率,列采样率,树深度,正样本权重,迭代轮数等] 与经典的调参方法–网格搜索的暴力求解不同,NNI将超参数优化本质上视作一个求最优的算法,使用随机游走、过程共享、贝叶斯等启发式或机器学习方法避免暴力搜索。

搜索的参数可以设定为离散的也可以设定为连续的。同时也可以自定义各种不同的网络大小格子、核函数多大等设定。

经验

一般会比以经验为基础的手动调参要相对值10%左右。但使用时不要直接使用最优的超参数组合,建议使用top10/top20进行各个超参数的取值投票,否则容易造成异常值、过拟合问题。

image

卷积层的维度的合理性需要自己控制,NNI没有那么智能,例如上层8*8,去乘一个 16*16 的矩阵就会报错。

场景2:模型压缩

模型训练和部署的资源都不是无限的,有时我们会需要对模型进行轻量化以在资源匮乏时进行部署及运行,此时就需要进行模型压缩。现有的压缩技术分为三大类:剪枝、量化和蒸馏

剪枝

NNI只能进行粗粒度的剪枝

量化

32bit的参数减为16bit甚至8bit的参数,理论及操作较简单

实验管理

NNI与其他调参工具不同的是,其拥有整个数据流转的架构体系,以manager为内核管理

其他经验

1.NNI的迭代速度太快,官方的指引文件可能存在落后于迭代的问题,例如直接使用官方的配置文件参数会报错,可以通过参考github上的经验解决