博士说 – 一万字入门炼“数”成金的AutoML
AutoML是AI产业化、普世技术的发展方向之一。作为自动代码编写技术的一个子领域,AutoML是机器实现智能化的重要技术之一,适用于应用领域过于专业、业务模型需求大、更新频率高的特定场景。剑桥2019年度《全景AI报告》把AutoML等列为取得重大研究与技术突破的领域。
插播一条小广告:酝酿已久的《博士说》栏目开更啦!聚焦行业技术前沿,汇集各路学霸大神,助您快速科普入门。
首期栏目我们邀请到浪潮AI算法研究员李峰博士,用万字长文带来AutoML入门技术详解。音频资源现已同步上线,配合食用吸收更佳哦。
我非常有幸在从事着与AI相关的一些研发开发工作,也接触了十数个行业以及数十种AI的应用案例,在对这些应用案例的开发过程当中我发现了一个事情,我们大部分的时间和精力都花费在了为一个特定的应用进行模型开发以及调参的过程当中。这些工作几乎消耗了我70%到80%的时间,俗话说得好,懒是人类进步的动力,当一个在哪里跌倒就在哪里躺好的懒癌症晚期患者,在面临这样一个动作,它消耗了我80%的时间的时候,自然而然会想到一个问题,能不能让自动化的方式来解决这件事情,这也就是我们所谓的AutoML自动机器建模的由来。
今天我们一起走进AutoML的小小世界里,看一看机器究竟是怎样通过自己的思维模式、自己的编程方式,将一个一个的人工智能的应用模型逐渐开发出来。
通常我们定义2015年是人工智能元年,2016年人工智能相关的算法应用开始逐渐攀升,2017年是芯片的爆发之年,2018年人工智能开始逐步落地。从此之后,可以说如雨后春笋一般的人工智能长起了一地的鸡毛,为什么说是一地鸡毛呢?人工智能的应用虽然看似非常的庞杂,但是有好多是真命题,有好多可能是伪命题,其中的真命题不乏我们现在经常用到的语音识别、人脸识别等等,还有我们车辆的自动驾驶,可以看到在这整个人工智能的新兴过程当中有好多好多的应用逐步涌现出来,而且他们也逐步的细化或者深入到我们每一个人的日常生活当中。
每每我们提到人工智能技术的时候都绕不开一个巅峰级的存在,那就是AlphaGo,在人类智力游戏顶尖的围棋赛当中,AlphaGo可以说是以绝对碾压式的成绩对我们人类的智商进行了一个惨无人道的蹂躏。我们先抛去比分和实际的围棋的技巧不谈,在AlphaGo当中,大家广为熟知的、津津乐道的一个技术被称之为强化学习,强化学习是什么呢?在我们的一个机器在构建网络过程当中,构建一个行为模式当中,他会自动的去学一些东西,然后来修正他的行为模式,这个东西在AutoML里面也有应用。
人工智能这项技术逐渐大卖或者逐步扩散了其应用领域,人工智能整个皇冠上的一个翘楚被称之为深度学习,可是深度学习的发展也同样带来了一些不可小觑的或者不可忽视的问题。
首先我们从ImageNet数据集出现之后,图象处理或者图象识别这一个领域当中的应用得到了一个腾飞式的发展,但是我们看到在之后的一段时间当中,数据集的规模正在与日俱增,而这些数据集的增大会导致我们在训练过程当中所需要的内存消耗、显存消耗等等也会逐渐增大,因此想要训练出一个非常好的、非常适用的模型,就变得异常的难上加难,尤其当我们的应用与实际的ImageNet数据集不相符的时候,我们的数据或者我们已有的这些像RestNet(VGG)等等这些模型是否有一些过于的冗余的内容在,我们是不是可以消掉其中一部分,然后让模型更加适合于我们自身的应用呢?
另外我们可以看到在深度学习技术的发展过程当中,DNN的网络结构也是日趋复杂,现在各种网络连接、各种组合方式都已经远超人类的想象范畴,在这样一个过程当中,如果我们再有新的任务、新的数据集,我们该如何去设计这个网络结构?虽说创新是站在巨人的肩膀上,但如果巨人太高了,已经超过了珠峰,可能我们攀爬上去都成了一个难度。随着网络结构日益复杂,网络规模也在逐步增加,由于这些网络规模增加、参数的增加,导致网络本身的尺度变得越来越大,在我们很多的实际应用当中,有可能我们的模型是需要放在终端设备上来进行的,比如说在Systemon Chip的片上芯片、片上系统,还有一些嵌入式设备等等我们的一些终端设备上要运行我们的网络结构的时候,我们会发现一个最大的问题,就是这些网络太大了,我们放不进去,因此在这时候我们究竟又该如何去构建我们的网络,如何筛选我们的网络。
此外,在网络的结构日趋复杂的时候,我们仍旧发现一个问题,在网络训练过程当中,对于网络本身我们还有很多其他的超参数,这些超参数的设定又应该何去何从,什么样的超参数组合可能会诞生最好的网络,因此这个问题是消耗大部分的人工智能的算法的开发人员的时间跟精力,因此很多坊间传闻,人工智能的算法工程师其实称之为炼金术士,我们是一个调参师,要尝试不同的参数组合。这个过程就是我们深度学习发展所带来的一些挑战和问题。当然即便这些问题都可以解决,我们想要训练一个网络的时候,仍旧会发现他需要庞大的时间消耗和资源消耗,因此这相当于像古代的一个衙门,衙门口冲南开,有理没钱你别来,所以现在来看深度学习仿佛成了富人的游戏。
此外还有一个非常大的挑战是什么?在AI的应用端,我们把所有的模型从实验室设计出来,想要让他落地的时候,会发现我们在应用端仍旧存在很多问题,比如说概念漂移,当我们原来在用实验室的像ImageNet数据集或者是COCO数据集,或者VOC的数据集,我们训练出来的网络模型在实际的应用当中的时候我们发现图象的尺寸、图象的内容发生了一些概念上的变化,而这时我们的模型往往无法适用。因此很难用原来在ImageNet或者原有公开数据集上构建的模型就可以适配到我们各行各业的不同应用当中。另外一个是尺度适配的问题,这个问题也是刚才我们所提到的网络设计或者学界网络设计的规模跟趋势是日趋复杂、日趋庞大。而实际我们在使用过程当中前端和终端的推理设备,我们的存储容量有限,无法使用这种庞大规模。
还有一个问题是数据隐私,什么叫数据隐私的问题呢?可以想像我们有很多应用公司或者有业务性的公司,我们都会有自己的业务和自己的数据,但是恐怕很难说我们每一个传统行业的公司里面都会有一波人专门从事AI的算法研发跟开发工作,如果想要让传统行业当中去使用AI技术的时候,我们必须要把数据交给第三方的公司来做开发,而这时就会带来数据的隐私和安全性问题。
出于以上这些角度的考虑,是否能够让我们的传统行业,不具备AI技术能力的公司同时可以得到AI的一个红利,AutoML就是我们面对现在的应用提出的一种解决方案。
•什么是AutoML
AutoML中文叫自动机器学习,既然要自动机器学习,我们先看一下,怎么样实现传统意义上的标准机器学习过程,标准的建模过程是什么样的呢?通常我们会拿到原始数据,在有原始数据的时候我们要对数据进行一个预处理,然后做特征工程,做模型设计,最后做一个模型验证这几个阶段,相当于数据处理阶段我们需要对整个的原始数据进行数据的清洗,筛查掉一些异常数据和一些缺失的数据,然后我们要对数据做一些增强,还有像文本数据和其他的语音数据等等我们要做一个编码,把他转换成机器可读的一些浮点型数据或者是整型数据。另外还有数据分割,比如说我们的数据如果过于庞大的话,像现在如果是720P的一个影视作品,一张图片截下来的分辨率就非常大,如果直接放到网络模型当中去,机器去计算的时候,是无法充分的去计算,因为他的内存或者显存都会被整个一张图片挤爆,因此我们还要对数据进行一些数据分割,分割也有技巧,比如我们要识别图片当中的一个人,如果你分割之后他身首异处了,我也许能识别出来脸,剩下的半张身子可能就永远跟他说再见了。
另外一个就是要做特征工程,特征工程所有的数据输入之后,经过数据的预处理,数据的一些清洗和增强操作之后我们会把他进行特征化,我们会构建一些零均值特征,我们会构建一些异方差特征等等,得益于现在深度学习的发展,特征工程和模型构建这两部分对于图象出来或者图象领域的一些任务来说,他们可以合二为一。
最后,做模型设计就是我们现在AutoML的一个核心阶段,AutoML的模型设计是什么呢?在传统意义上来说,就是我们人工用一张纸把可能的模型、可能的数据公式拼凑出来,然后排列出来一个pipeline,然后根据这个流程进行数据的处理和操作,最终我们要进行一个模型验证来判断我们现在的模型究竟是否适配于原来的数据问题,这个模型验证也有非常多的方法,比如说混淆矩阵、PR测试,还有AB Test测试等等,整个一系列的标准过程里面我们可以发现,数据处理,像清洗、增强、文本编码、数据分割等等这些任务似乎可以自动化的用统计的方式,用一些传统意义上机器学习的方法让他自动的实习。而特征工程跟模型构建、模型设计的部分,我们似乎也可以把他归并到一起做一个模型设计,如果我能够构建一种方式来自动化的去绘制这个模型的一个pipeline,这些方程、这些函数公式操作他的一个组合,是不是我就可以完成从原始数据的输入一直到模型的输出,最终我们进行模型验证,通常情况下,从技术角度来说,我们模型验证是可以做成自动化完成的,但是通常而言我们不会这么做,为什么?模型验证最终的验收标准是什么?是否适合我们的应用,这个标准通常情况下来说人的主观性要比客观的数据更为准确。
说了这么多,我们把标准的一个建模过程跟大家表述已清,所谓的自动建模又该如何建呢?其实自动建模他的一个简单的问题描述就是在给定的性能指标之下,我们希望构建或者说找出最好的模型结构及其参数,这个方式通常我们称之为序贯模型算法配置问题,对于深度学习和神经网络来说,有一个特别的案例我们将他称之为神经网络结构搜索Neural Architecture Search,简称NAS(神经网络架构搜索),他的一个问题描述相对来说更为简单,也更为具体,对于一个预测问题而言,希望能够从网络结构中找到可以使整个在验证集上能够最小化误差的一个模型结构。
•AutoML的核心要素
自动机器学习其实包含的最重要的是三大要素,其中第一个是搜索空间,第二个是搜索策略,第三个是评估准则。
所谓搜索空间就是定义究竟我在什么范围之内进行模型搜索,举一个简单的例子,我们对于一个回归问题,我可以有很多现成的模型或者现成的函数,比如说线性回归函数或者多项式回归函数或者是SVR支持向量回归函数,如果是我们的搜索空间就是这些函数,那么我们的搜索策略和评估上面就变得非常简单,我们就是从这些函数当中挑出一个来使得它满足我们刚才所提到的评估标准。对于深度神经网络或者对于(NAS)来说,今天既然深度神经网络作为人工智能的一个掌上明珠,皇冠上最亮的那颗星星,我们就以它为例来介绍我们的AutoML技术。
对于深度神经网络来说,我们搜索空间是什么?其实是一系列的OP,也就是操作,这些操作仿佛是某高的一个玩具积木,在这些无数的积木当中有四个头的、两个头的、三个头的、六个头的等等,我们需要从这些积木当中按照一定的策略挑选出合适的积木,并且按照一张可能的蓝图把它拼凑出来,最终形成一个我们想要的东西,比如说我们希望面前有一条河,我希望能构建一艘船能让他过河,也许我们的理想很丰满,希望通过某高的积木和一张设计图纸我们能够拼出一艘航空母舰,但是现实往往很骨感,当我们拼凑出来以后他也许只是一个小小的帆板,到这时候我们的一个问题就是这个帆板究竟是对还是不对,这样的结果究竟好还是不好,这就是所谓的评估准则。
如果单纯从我们要过河这个角度来看的话这个帆板是可以的,他满足了我们的评估要求,是可以过河的,但是如果我们的评估准则不仅仅局限于说我们要过河,还要求了船体的外部流线特征,还要求了他的流体力学性质,还要求了他的美观性、抗毁性等等,我们会发现,这个帆板可能是不合格的,这个不合格的评价结果我们需要把他返回给我们的搜索策略,来修改我们的蓝图和图纸,最终不断经过这样一个迭代过程,使得我们最终从这些小的积木块,根据我们的选择方式和搜索策略,绘制出一个标准的航空母舰蓝图,然后得到了我们最终想要的一个结果,这个过程就涉及到了我们刚才所说的AutoML的三大要素。
搜索空间针对于深度神经网络来说,其实会更为复杂,我们搜索空间的表示如果是一个简单的,就是全连接的一个神经网络结构的话,他的搜索空间的表示就是最大网络层数,我们只要给定最大网络层数以及每层可选的元操作,以及每一层我们神经原的个数,是不是就是可以唯一的决定一个神经网络该长什么样子。对于一个卷积神经网络来说,他比之前所提到的这个神经网络要稍微多一点,我们的搜索空间表示要包括最大的网络层数,然后每一层可选的元操作数,所谓的元操作数就是一乘一的卷积、三乘三的卷积、五乘五的卷积等等,之后就是与这些操作相关的一些超参数,因为对于一个卷积神经网络来说,一个卷积层不光包含了我们卷积的大小,同样也包含了这个卷积层的通道数量以及他的一个step的(步长)等等。这些就是我们搜索空间当中所具备的一个元素,而用这些元素怎么去设计我们的搜索策略,然后拼装出来我们整个深度神经网络,就是我们AutoML所需要做的一个事情。
当然了,在这个操作过程当中,我们对于搜索空间的定义有几种特别的方式,尤其是对于深度神经网络来说,通常情况下有一种叫做链式网络结构。链式网络结构就是从输入到输出依次来定义我们每一层究竟是什么样的内容,什么样的结构,这样一个网络构建方式可以说是最原始、最传统、也是我们的搜索空间所能表达的所有网络当中最丰富的。还有一种是基于复用一些网络单元的堆叠结构,像最右边这里我们看到人工设计了一个单元堆叠的方式,我们的第一层是input,下面一层是block1,第二个是block2,第三个是block3,经过这几个block堆叠之后我们输出到一个output,这个堆叠方式固定下来之后我们可选的操作是什么呢?就是里面的block,对于每一个block或者是我们称之为一个模块,这个模块我究竟该如何设计,这个模块里面我们可以采用链式网络结构的一个设计方式,虽然大家看到中间这一部分是分了多个分支,其实他仍旧属于链式网络设计的一种逻辑。
我们定义了神经网络的一个搜索空间之后,我们可以知道当我的积木已经准备好了之后,我们就需要进行一个搜索和采样,我需要选出我所需要的积木,然后根据我们设计的蓝图进行一个拼接,我们的积木的选择跟蓝图的绘制目前来说就是我们AutoML搜索策略的几种方式,当今比较流行的三种搜索策略包括进化计算,还有神经网络结构搜索,也就是我们以谷歌的强化学习为代表,之后还有一种是网络迁移的方式,通常这种方式又被称之为网络形态学变换。
所谓进化计算非常好理解的一种说法就称之为遗传算法,之前我们刚才看到有网络空间,网络空间其实每一种操作我们可以给他定义做一个编码,像identity层操作我们称之为零,1×1的卷积比如说称之为1,1×3的卷积称之为2,对于所有这些我们可用的元操作进行一个数值编码之后,我们可以写出一条所谓的染色体,这一条染色体的长度就是我们网络结构的层数,这里面每一个数值就对应着元操作,我们还可以定义一个没有操作,这样如果是某一层没有操作的话,他存在着一个跳层,那么我们整个网络层的层数的深度就会随之减少。
我们定义了染色体的编码方式之后,多个染色体之间可以通过遗传算法,遗传学当中的交叉、变异形成(子带),这些子带就是新的染色体,这些染色体就代表了新的网络结构,然后我们根据适应度评价标准、评价准则来判定什么样的网络模型是更好的,整个过程当中,所谓的适应度评价就是一个外界对于一条染色体或者种群当中某一个个体的一个评价,在整个迭代的过程当中,具有高适应度的个体就优先获得了繁衍权利,而具有低适应度的个体就会逐渐被淘汰,整个过程就是达尔文所说的物竞天择、适者生存的一个逻辑,最终会把所有与我们适应度评价函数最高的染色体,这些子带流传下来,也就得到了我们最想要的这些性能标准。
另外一个我们称之为叫NAS的一个方式,叫强化学习,NAS过程当中我们搜索空间也是跟刚才的一样,定义好多OP,中间会有一个控制器,这个控制器是用来做模型采样,然后做一个OP的采样,这个控制器传统方法上面来说或者在遗传算法上来说,我们的控制器是固定的,只是在每一次控制器采样到的东西进行筛选,去甄别的过程是不定的。而在NAS过程当中我们的控制器是变换的,而筛选结果是不变的,什么意思呢?当我们的搜索空间当中,采样到了一个网络模型,采样到了一个子网络之后我们对他进行了评估,评估这个结果好坏会直接影响控制器下一次是否在这个地方还采样这个操作,这样的话,这个返回的结果就会直接影响到我们参数空间当中进行操作采样的过程,我们采样出来的结果在这样的逐渐迭代的过程当中,对于好的操作,他采样到的概率就会逐渐递增。而对于一些差的操作或者对于我们的网络性能没有什么贡献的操作,他被采到的概率就会逐渐递减,之后经过无数轮迭代之后,我们发现控制器每一次在每一个所需要的层级趋于采样或者大概率的采样适合于这个网络层的一些操作。
还有一种方式就称之为网络形态学变换,这里给出一个比较标准的剪枝操作,所谓剪枝操作就是我们通过对于已经给定的网络模型去修建他当中存在的一些不必要的路径,使得路径发生了一些变化之后我们进行网络参数更新,这样整个网络的模型的结构和样子发生了变化,同时模型的大小和尺度也发生了变化,在这个过程当中,如果我们所用到的数据集跟原来训练这个网络的数据集是不一致的话,他再进行裁剪和重训练之后,这个网络模型就会更加适配于我们现在在实际使用、应用算法当中的应用数据集。
基于这样一个思想,其实我们可以考虑,如果我有一个完备的网络,并且网络当中的路径不只一条,就是同样的两个节点之间的路径可能不只一条,每一条路径是一种操作,我可能在下面像左边这张图里面,我从0到1、到2、到3有不同的路径,每一个节点之间可选的路径还有很多,那也就是他从零到一的操作可以有三种不同的操作,在这样一个我们称之为叫完备网络图的结构当中,我们采用剪枝的操作或者采用路径的削减的一个操作,是不是可以修正和找到最适合于整个网络结构的一个路径组合呢?比方说像下面的这张图,他的完备图经过路径的筛查、筛选之后我们得到右边这张子图里面从0到1就有1条橙黄色的路径,从0到3就有1个红色路径,可以看到从0到2的路被我们删除了,这个也许是经过网络搜索得到的一个最佳的结果。
这样筛选之后我们可以看到一个新的子网络结构具备了新的网络结构类型,也同时具备了不同的尺度,他也达到了我们说模型从无到有的一个生成过程。
说完我们的模型搜索过程之后,我们会发现我现在有了一堆积木,也有信手拈来可以去把他搭建的过程,搭建出来之后究竟这个模型是好还是坏,我们需要用一个评价标准来进行一个评价,通常而言我们的数据会被拆分为几个部分,所有的数据通常是我们由应用和业务过程当中积累下来的历史数据,这些历史数据我们会拆分成两个部分,一个称之为训练数据集,另外一个称之为测试数据集,训练数据集当中我们会把他拆分为训练数据和验证数据,验证数据用来去验证我们现在的模型是否训练到了一个收敛的状态。对于AutoML来说,最常用的一种评价标准是什么?就是以验证数据集作为评价标准,当我们构建出来的模型在验证集上的精度作为最终的一个验收结果。这样一个过程似乎看起来非常完美,我有了搜索空间,我有了可以指导我进行模型构建的一个过程和策略,我也有了一个评价标准,似乎一切显得非常完美,我们是不是AutoML就到此结束了?事实上在这里又存在了一个非常庞大的坑,是什么呢?当我们的一个模型构建出来之后,如果这个模型没有经过训练的话,他在验证集上的精度一定是非常差的,如果要训练他得到一个在验证集上非常好的精度或者可信的精度的话,对于这个模型的训练必不可少,而这个训练又是非常耗时和耗费资源的。
对于这样一个过程我们想怎么样能够提升我们验证集或者提升我们评价标准获得的这样一个效率,降低我们的一个计算资源消耗呢?有几种方式,其中一种是当我们对于精度进行一个预测,我们对于(学习率)的变化进行一个预测,这里面包括了三种方式,其中第一种对精度进行预测,第二种对于学习率进行预测,第三种我们采用参数共享的方法。
对于精度的预测非常简单可以理解,当我有了一个模型之后,我虽然现在不知道他训练完整之后,他的精度大概是多少,但是我可以用另外一个模型来预测这样一个我们生成出来的子模型,他的验证精度,经过几轮的训练和迭代之后,我们称之为判别器,用来预测采样到的模型精度的这个模型我们把他称之为判别器,当这个判别器被训练的非常完美的时候,像这个过程当中其实相当于自己进行了机器编码,这个是机器实现智能化的重要标志之一。
另外一个就是参数共享,所谓的参数共享就是我们之前提到的一个完备的超网络图,在完备的超网络图当中,我们进行一个子网络采样,然后对于这个子网络的训练得到的参数进行上传,然后我们就把他继承到了一个超网络当中去,在这个过程当中,我们不断的去采样子网络,然后对他进行训练,并且上传他的参数,超网络继承了这些参数之后可以看到,当子网络进行了一系列的训练之后,超网络整体也得到了一定的训练,而当我们经过一些轮的迭代之后,超网络当中的每一个子网络如果都训练趋于成熟,或者说我们得到了一些可预测性的网络的时候,对于这些所采样到的子网络只需要在验证集上进行一个(前向)推理,我们得到一个验证集的精度,这些精度虽然都不是完整训练到的一个完备的网络精度,但是如果对于任意的两个子网络来说,这时我们得到的验证集精度与完整训练之后的验证集精度相比,它的相对的精度高低不发生变化的时候,可以说这些网络就已经具备了非常好的可预测性,因为我们所需要的是找到最好的网络,如果他的相对排序不发生变化,那么我们就可以进行一个选择了。
那么到这时候,我们称之为这些超网络具备了可预测性,当一个超网络具备了非常好的可预测性之后,我们就可以同时对他采样成千上万的网络,并且对这些网络进行传统的一些优化算法去迭代,去搜索其中最好的网络参数和网络结构,这样一个过程我们可以把它称之为万箭齐发。
•回顾小结
今天讲了非常多的内容,其实翻回头来仔细看一看包含几个方面。
01. 什么是AutoML?
AutoML其实就是在采用自动化的方式和程式化的一些手段根据我们的开发任务自主的实现模型构建筛选的一种技术。
02. 这个技术为什么要发展?或者说我们为什么需要AutoML来出现呢?
首先我们来看AutoML是自动代码编写技术的一个子领域,因为由机器本身自动去构建了一个网络,这个网络其实是一系列的代码组合,所以他是一个自动代码编写技术的方式,这种方式和这种技术是机器实现智能化的重要技术之一;另外AutoML有一些非常好的适用领域,比如说应用领域太过专业,业务的模型需求量又非常庞大,这些更新的频率又非常高的这些特定场合里面AutoML是非常适用的,比如说有好多业务场景,可能一个行业的ISV公司需要cover掉的是这个行业当中非常多的不同的应用和不同的业务场景,这些算法工作人员需要不断的提供很多新的不同的业务场景适配的一些模型,在这样的情况下AutoML就会非常好的解放他们的生产力;还有一些是我虽然有非常多的应用领域或者说我的应用领域非常专一,我有非常多的技术,但是对于一个传统的行业来说,我并没有这样的人力资源进行AutoML或者AI的开发过程,此时AutoML作为一个拉低AI技术门槛的核心技术是非常适用于这些行业的。因此说AutoML是AI产业化和普适AI化的一个发展方向。
03. AutoML的三大核心要素是什么?
首先是搜索空间,搜索空间定义了模型的元操作,是AutoML当中最基础的一些组成元素,这些元素就决定了我们所构建出来的模型所能够达到的上限,比如说如果一个模型在最理想的环境下可能需要一个平方操作,但是我们的搜索空间空间如果不包含平方操作的话,他一定达不到;
另外一个就是我们的搜索方法,搜索方法就是我们定义操作进行组合的一个方式,是从元素到功能的一种实现,这个方式决定了模型所能达到的下限,为什么叫下限呢?我们的搜索方法如果非常差的话,无异于就是一个随机搜索,我们把很多的模型、很多的操作进行随机的放置、拼接和组合到一起之后我们同样可以得到一个网络模型,这个网络模型也会有一个结果,这个结果通常我们称之为一个baseline,是整个这个网络构建的一个下限,当然值得庆幸的一点是什么呢?可能我们并不需要具备非常多非常庞大的领域知识和非常高精的一些搜索方法才能构建出非常好的网络模型,因为大量的论文和实践研究表明我们即便用随机搜索方式,我们所能达到的这个baseline在很多应用场景当中已经是非常高的了,已经可以非常好的适应和适用于我们很多实际的业务跟应用场景了;
还有一个就是我们最重要的一个评价准则,评价准则定义了一个搜索的发展方向,决定搜索的一个倾向性。我记得跟人力聊天的时候,我们最常说的一句话叫做你考核什么你就得到什么,所以当你定义好了你的评价准则、评价标准之后,你才会得到最适用于你的网络模型。在整个网络模型和AutoML构建过程当中我们也提到了AutoML在搜索方法当中存在的三大主流方式,包括进化计算、强化学习和网络迁移的方法,整体来说,什么叫做AutoML?AutoML就是无中生有的从一个搜索空间当中构建出一系列的模型,然后如果你采用的是一个参数共享的方法,恭喜你你会得到一个非常好用的、具有可预测性的超网络,当具有超网络之后,你就可以在平行的、并行的我们构建,从超网络当中采样成千上万的子网络,称之为万箭齐发,这些万箭齐发当中得到的这些网络当中我们经过评价标准的一个选择之后,弱水三千只取一瓢饮,万千人群中找到最适合你的那一个模型,仿佛沧海一粟,找到之后就可以对你的业务场景和实际应用精准的出一张杀。