Google AutoML最新技术解析:AutoML-Zero,从0构建模型

AutoML是我一直很关注的领域,也实际设计过相关的很多功能,但是目前AutoML在商业化层面落地的还不多。一个关键因素是AutoML现在在Feature生成或者调参方面有一些应用,但是这些应用更多地是建模的辅助。目前的AutoML技术很难实现从0构建一个算法。如果AutoML希望大规模的应用,一定要在NAS,也就是网络探索上有建树。这也是Google最新发表的这篇文章的原因,他提出AutoML-Zero,从零起步去构建算法。接下来作者会给大家分享下一些看法。

定义算法生成的流程

这篇论文比较有意思的一点是Google很好地定义了AutoML的一个流程。它把机器学习算法生成的流程拆分成了,Setup、Predict、Learn。如下图所示:

屏幕快照 2020-07-17 下午5.08.59.png

  1. Setup:算法结构的初始化

  2. Predict:模型的预测和验证

  3. Learn:算法的训练

NAS结构搜索

 

定义好流程之后就要看如何做网络结构的探索。这里面巧妙地运用了RandomSearch和进化式搜索。

在Setup阶段首先要构建一个海量的模型库,通过RandomSearch随机找一个模型作为初始。接着进入Predict阶段,在Predict阶段内置了一个预测数据集,可能是Cifar10之类的。然后用初始模型做预测,看效果。

将其中比较好的效果的模型保留,剩下的删除。接着在比较好的模型基础上增添一些op,比如增加一些正弦因子,如下图所示:

屏幕快照 2020-07-17 下午5.17.23.png

然后在Learn阶段去按照这个NAS结构构建新模型。

这样就构成了一个进化式的搜索体系,不断地生成新的网络结构,然后基于效果好的网络结构向上进化,不断递归这个流程,如下图所示:

屏幕快照 2020-07-17 下午5.20.07.png

整体流程大概是上面介绍的这样。

个人看法

这篇论文还是比较偏学术,其实是给大家构建了一套NAS的流程体系,但是这个流程其实要依赖海量计算能力才可能实现。虽然论文在后面花了十几页的篇幅证明可行性,但是我个人还是觉得这个方案流程是没问题的,但是实际落地可能有很多问题要解决。比如随机增加算子,会不会造成大量的报错,会不会浪费大量计算资源,所以真正的效果还需要观望。

猜你喜欢

转载自blog.csdn.net/gshengod/article/details/107413545
今日推荐