Auto-Keras:一种高效的神经架构搜索系统

论文地址Auto-Keras: An Efficient Neural Architecture Search System

在这里插入图片描述

一、背景知识

在这里插入图片描述

1、NASNet

NASNet学习的是完整网络中被堆叠、被重复使用的网络单元。为了便于将网络迁移到不同的数据集上,我们需要学习两种类型的网络块:
(1)Normal Cell:输出Feature Map和输入Feature Map的尺寸相同;
(2)Reduction Cell:输出Feature Map对输入Feature Map进行了一次降采样,在Reduction Cell中,对使用Input Feature作为输入的操作(卷积或者池化)会默认步长为2。

NASNet网络单元的计算分为5步:

  1. 从第h(i-1)个Feature Map或者第h(i)个Feature Map或者之前已经生成的网络块中选择一个Feature Map作为hidden layer A的输入,是学习到的网络单元,从中可以看到三种不同输入Feature Map的情况;
  2. 采用和1类似的方法为Hidden Layer B选择一个输入;
  3. 为1的Feature Map选择一个运算;
  4. 为2的Feature Map选择一个元素;
  5. 选择一个合并3,4得到的Feature Map的运算。
    在这里插入图片描述

NASNet最大的贡献是解决了NAS无法应用到大数据集上的问题,它使用的策略是先在小数据集上学一个网络单元,然后在大数据集上堆叠更多的单元的形式来完成模型迁移的。
NASNet已经不再是一个dataset interest的网络了,因为其中大量的参数都是人为设定的,网络的搜索空间更倾向于密集连接的方式。这种人为设定参数的一个正面影响就是减小了强化学习的搜索空间,从而提高运算速度,在相同的硬件环境下,NASNet的速度要比NAS快7倍。

2、Network Morphism(网络态射)

我们提出了一种新颖的学习策略,称为网络态射, 它将父网络转变为子网络,从而实现快速的知识转移。 子网络能够立即获得父网络的性能,并且随着训练过程的进行,其性能将继续提高,这种策略允许针对任意非线性神经元以扩展模式的任何网络形态,包括深度,宽度,核大小和子网变形操作。
在这里插入图片描述

3、skip-connection(残差连接)

主要思想是将输出表述为输入和输入的一个非线性变换的线性叠加,使用一个非线性变化函数来描述一个网络的输入输出,即输入为x,输出为F(x),F通常包括了卷积,激活等操作。当我们强行将一个输入添加到函数的输出的时候,虽然我们仍然可以用G(x)来描述输入输出的关系,但是这个G(x)却可以明确的拆分为F(x)和x的线性叠加。所谓残差连接skip connection即G = F(x,WH) + X。
resnet的skip block

4、Gaussian process (GP)高斯过程

指随机变量的一个集合,其中任意有限个样本的线性组合都有一个联合高斯分布。一个高斯过程是由均值函数和协方差函数确定的。而高斯分布均值和协方差是向量和矩阵(即多维高斯分布的均值和方差是确定值)。

5、Euclidean space(欧氏空间)

在数学中欧几里德所研究的2维和3维空间的一般化。这个一般化把欧几里德对于距离、以及相关的概念长度和角度,转换成任意数维的坐标系。这是有限维、实和内积空间的“标准”例子。
欧氏空间是一个的特别的度量空间,它使得我们能够对其的拓扑性质,例如紧性加以调查。内积空间是对欧氏空间的一般化。内积空间和度量空间都在泛函分析中得到了探讨。设n是正整数,由n个实数构成的有序数组的全体组成的集合,称为n维点集或n维欧几里得空间,记作Rⁿ,即在这里插入图片描述

6、Hungarian algorithm (Kuhn-Munkres algorithm) 匈牙利算法

是一种组合优化算法(combinatorial optimization algorithm),用于求解指派问题(assignment problem),算法时间复杂度为O(n3)。
匈牙利算法解决的问题一般有这样通俗的描述:有n个工作,需要指派给n个工人,每个工人完成每个工作的时间可能都不一样,给出一个算法,使得得到的指派结果总的时间最少。

7、Upper-confidence bound (UCB)上置信界

置信区间是指由样本统计量所构造的总体参数的估计区间,就是分别以统计量的置信上限和置信下限为上下界构成的区间。在统计学中,一个概率样本的置信区间(Confidence interval)是对这个样本的某个总体参数的区间估计,置信区间展现的是这个参数的真实值有一定概率落在测量结果的周围的程度,其给出的是被测量参数的测量值的可信程度,即前面所要求的“一个概率”。

8、 simulated annealing(SA)模拟退火

模拟退火算法是一种通用概率演化算法,用来在一个大的搜索空间内找出最优解。相比于二分、三分等算法,模拟退火更加注意整体的情况。
拿爬山做例子:我们要找到山脉的最高峰,但是我们只知道眼前的点,哪边是下降的,看不到远处的点是否上升,所以每次移动,我们随机选择一个方向。如果这个方向是上升的的(更优),那么就决定往那个方向走;如果这个方向是下降的(更差),那么“随机地接受”这个方向,接受就走,不接受就再随机一次。

二、全文翻译

摘要

神经架构搜索(NAS)在被提出时已经应用于自动调整深度神经网络,但是现在的搜索算法通常会受到十分昂贵的计算成本的影响,例如NASNet [41], PNAS [22] 。当改变神经架构时网络态射可以保持神经网络的功能,在搜索期间通过更有效地训练可以有助于神经架构搜索。在这篇论文中我们提出了一种新的框架能够使得贝叶斯优化指导网络态射进行高效的神经网络搜索。这个框架开发了一种神经网络内核和一种树型结构获取函数优化算法从而高效探索搜索空间。在现实世界参照数据集上进行了密集实验,用于证明开发框架在超越SOAT方法上性能更佳。此外,我们构建了一种基于该方法的名为Auto-Keras1的开源自动机器学习系统。该系统可以在CPU和GPU上并行运行,对不同GPU内存限制采用自适应的搜索策略。

关键词

Automated Machine Learning(自动机器学习),AutoML, Neural Architecture Search(神经架构搜索), Bayesian Optimization(贝叶斯优化), Network Morphism(网络态射)

1、介绍

自动机器学习(AutoML)成为一种非常重要的研究话题,在机器学习技术方面有着广泛的应用。AutoML的目标是使得拥有有限机器学习背景知识的人容易地使用机器学习模型,这些工作已经被用于自动化模型选择、自动化超参数调整等方面。在深度学习的背景下,神经架构搜索NAS的目标是为给定的学习任务和数据集寻找最佳的神经网络架构,它已成为AutoML中的一种高效的计算工具。不幸的是,现在的NAS算法在计算上通常是昂贵的。 NAS的时间复杂度是O(nt¯),n指的是在搜索过程中评估的神经架构的数量,t¯是用于评估n个神经网络中每个神经网络的平均时间代价。许多NAS方法例如深度强化学习[2, 30, 40, 41], 基于梯度的方法[26]和进化算法[10, 23, 31, 32, 34]都需要一个大的n值来达到良好的性能,此外,n个神经网络中每个神经网络的训练都是从0开始的,这是非常缓慢的。

在NAS中,网络态射的应用已经成为一项基础研究[6, 11]。这是一种改变神经网络体系但不破坏它本身功能特性的技术 [8, 36]。因此,我们能够使用网络态射操作将被训练的神经网络修正成一种的新架构,例如,插入一个层或者添加一个残差连接。 只有其中几次迭代需要进一步训练新的架构以期更好的效果。使用网络态射将减少NAS中平均训练时间t¯。基于网络态射的NAS方法最重要的问题是操作的选择,即从网络态射操作集中选择一个操作来将现有的体系结构转换为新的体系结构。但是基于网络态射的NAS方法并不是足够高效,它们要么需要大量的训练案例,要么在查找大型搜索空间中效率低下[11]。如何用态射进行高效的神经架构搜索NAS仍然是一个具有挑战性的问题。

众所周知,贝叶斯优化已经被广泛采用,在有效探索用于全局优化的黑盒函数,其观测值十分昂贵。例如,它已经被用于机器学习模型的超参数调优[13, 15, 17, 35], 其中贝叶斯优化搜索不同组合的超参数。在搜索过程中,超参数组合的每次评估都涉及到对机器学习模型进行训练和测试的代价昂贵过程,这与NAS问题非常相似。贝叶斯优化的不同特性促使我们探索它指导网络态射的可能性,以减少训练神经网络数量n,从而使得搜索更高效。

由于以下挑战,为基于网络态射的NAS设计一种贝叶斯优化方法是不平凡的。
首先,底层高斯模型(GP)传统上用于学习欧式空间中函数的概率分布。为了在观测中更新贝叶斯优化模型,将对底层高斯模型(GP)的搜索架构和它们的性能进行训练。然而,神经网络架构不处于欧氏空间并且难以参数化为一个固定长度的向量。
第二,需要对一个获取函数进行贝叶斯优化,产生下一个架构用以观察。 然而,在网络态射的背景下,它并不是在欧氏空间中的最大化函数,而是在树型结构搜索空间寻找一个结点,每个结点代表一种神经架构,每条边是态射操作。因此传统的基于梯度的方法不能被简单地应用。
第三,由网络态射操作引起的变化是复杂的。在某一层的网络态射操作也许会改变一些中间输出张量的形状,这些张量不再匹配以它们为输入的层的输入形状要求。如何保持这种一致性是一个具有挑战性的问题。

这篇论文中提出了一种高效的带有网络态射的神经架构搜索,它使用贝叶斯优化,通过每次选择最有前途的操作来指导搜索空间。为了应对上述挑战,构建了一种可编辑距离的神经网络内核。与网络态射的关键思想一致,它测量了将一个神经网络转换为另一个神经网络需要进行多少次操作。此外,针对树形结构搜索空间,设计了一种新的能够平衡开发和利用的获取函数优化器,使贝叶斯优化能够从操作中进行选择。此外,还定义了一个图级的网络态射以解决基于层级网络态射的神经架构变化。所提出的方法与在MNIST、CIFAR10和FASHIONMNIST基准数据集上的最优化NAS方法进行了比较。在有限的搜索时间内,我们这种方法所找到的体系架构在所有数据集上都达到了最低的错误率。

此外,我们还基于所提出的方法开发了一个名为Auto-Keras的被广泛采用开源自动机器学习的系统。它是一个开源自动机器学习系统,能够在本地下载安装。该系统是精心设计的,拥有有简洁的人机界面,供不擅长计算机编程和数据科学的人使用。为了加速搜索,在CPU和GPU上的工作量可以并行运行。为了解决不同GPU内存的问题,限制了神经架构的大小,设计了一种可用于部署的内存适配策略。

论文的主要贡献如下:

  • 提出了一种由贝叶斯优化指导的基于网络态射的高效神经架构搜索。
  • 在基准数据集上进行了密集实验用以证明提出的方法在性能方面比基准方法更优。
  • 开发一种名为Auto-Keras的开源系统,是最为广泛应用的自动机器学习系统之一。

2、问题提出

我们在这篇论文中所研究的通用神经架构搜索问题定义如下:给定一个神经架构搜索空间F,输入数据D被划分为D_train和D_val ,代价函数Cost(·),我们的目标是找到一个最优化神经网络 f*∈ F, 能够在数据集D上实现最小代价。该定义等同于求f*满足:
f *= argmin Cost(f(θ^* ),Dval), (1)
θ*= argmin L(f (θ),Dtrain). (2)

其中Cost(·, ·)是评价度量函数,例如:精度、平均平方误差,θ*是f的学习参数。

搜索空间F包括所有神经架构,这些神经架构能够从最初架构进行态射。态射操作的细节将在3.3节进行介绍。值得注意的是,这些操作可以改变卷积层中滤波器的数量,这使得F比固定层宽度所用方法更大。

3、贝叶斯指导下的网络态射

所提出方法的关键思想通过态射由贝叶斯优化算法指导神经架构寻找搜索空间。传统贝叶斯优化是由更新、生成、观察三个步骤组成的循环。在NAS的背景下,我们提出的贝叶斯优化算法迭代地进行:
(1)更新:用现有的架构及其性能训练底层高斯模型进程模型;
(2)生成:通过优化精确定义的获取函数生成下一个架构用于观察;
(3)观察:通过训练生成的神经架构获得实际性能。
在设计一种基于贝叶斯优化的神经架构态射时,面临三个主要挑战,我们在接下来的章节中分别介绍应对这三个挑战的三个关键部分。

3.1 用于高斯过程的可编辑距离的神经网络内核

我们需要解决的第一个挑战是NAS空间并不是欧氏空间,并不满足传统高斯过程的假设。直接矢量化神经架构是不切实际的,因为它也许包含不确定的层数和参数。由于高斯过程是一种核方法,我们建议通过设计一种神经网络内核函数来应对挑战,而不是矢量化神经架构。我们建议通过设计神经网络核函数来解决这个挑战,而不是将神经结构矢量化。核函数背后的直觉知识是将一种神经结构转换为另一种神经结构的编辑距离。从一个体系结构到另一个体系结构需要更多的编辑,这意味着它们之间的距离更远,因此它们相似性较低。核函数的有效性证明见附录E。

内核定义:假设f_a 〖,f〗_b是两个神经网络。 在深图核[38]的启发下,我们提出了一种神经网络的编辑距离核。编辑距离在这里意味着需要多少操作来将一个神经网络转换为另一个神经网络。具体核函数定义如下:
在这里插入图片描述
其中函数d(·,·)表示两个神经网络的编辑距离,其范围为[0,∞),ρ是一个映射函数,它将原始度量空间中的距离映射到新空间中的相应距离。利用布尔根定理[3]将原始度量空间嵌入到新的度量空间中,构造了新的空间,保证了核的有效性。
计算两个神经网络的可编辑距离可以映射到计算两个图的可编辑距离,这是一个NP难问题[39]。基于第2节中定义的搜索空间F,我们提出了一个近似解,如下所示:
在这里插入图片描述
其中D_l表示态射层的可编辑距离,如果跳接被忽略,最小化编辑需要态射f_a到f_b, L_a = {l_a(1) , l_a(2) , . . .} 和L_b = {l_b(1) , l_b(2) , . . .} 是神经网络f_a和f_b的的层集,D_s 是两个神经网络之间改变跳接的近似可编辑距离,S_a= {s_a(1) , s_a(2) , . . .}和S_b = {s_b(1) ,s_b(2), . . .} 是神经网络f_a和f_b的跳接集,λ是层距离和跳接之间的平衡因子。

计算 D_L : 我们假设|L_a | < |L_a |, 通过最小化以下方程来计算两种神经结构f_a和f_b态射层间的可编辑距离:
在这里插入图片描述
其中φ_l : L_a →L_b是层之间的内设匹配函数满足 :∀i < j, φ_l (l_a(i) )≺φ_l (l_a(j) ) ,如果L_a和L_b中的层都按拓扑顺序排序。dl (·, ·) 表明将一层扩大到方程(6)中定义的另一层的可编辑距离。
在这里插入图片描述
其中w(l)是层l的宽度。
在这里插入图片描述
图1: 神经网络内核。给定两个神经网络f_a、f_b和相似层之间的匹配,该图展示了如何将f_a层更改为与f_b相同的层。同样,f_a中的跳连接也要根据给定的匹配更改为与f_b相同。

方程(5)的直觉知识与图1所示的网络态射的想法相一致。假设在两个神经网络之间的节点之间提供了匹配。张量的型号是前一层的宽度的指标(例如,全连接层输入矢量的长度或者卷积层滤波器的数量)。节点之间的匹配使用淡蓝色进行标注,所以在节点间的匹配可以被视作层间的匹配。要使用给定的匹配将f_a态射到f_b,我们需要首先将f_a三个节点扩展到在f_b中与他们相匹配节点的同样宽度,然后在f_a之后的第一个节点插入一个宽度为20的新节点。基于这种态射策略,层的可编辑距离在方程(5)中被定义为D_L。

由于有很多方式将f_a态射到f_b,为了找到最小化D_L节点间的最佳匹配,我们提出了一种动态规划方法,通过定义矩A|L_a|× |L_b| ,递归计算如下:
在这里插入图片描述
其中,A_(i,j)是D_l (L_a(i),L_b(i)) 的最小值,L_a = {l_a(1), l_a(2) , . . .} ,L_b = {l_b(1) , l_b(2) , . . .}

计算D_s:D_s的直觉知识是两个成对神经网络中匹配跳接的可编辑距离之和。 如图1所示,具有相同颜色的跳接是相匹配的对。 类似于D_l (·, ·), D_s (·, ·) 被定义如下:
在这里插入图片描述
我们假设|S_a|<|S_b|,|S_b|-|S_a|衡量了不匹配跳接的总的可编辑距离,因为S_b中每一个不可匹配跳接调用一个编辑,就会将一个新的跳接插入f_a。映射函数φ_s: S_a → S_b 是内射函数。d_s (·, ·)是两个可匹配跳接之间的可编辑距离,定义如下:
在这里插入图片描述
其中u(s)是跳接s开始层的拓扑序列,δ(s) 是跳接s从头节点到尾节点间的层数。
方程(8)中的最小化问题可以映射成二分图匹配问题,其中f_a和f_b是两个不相交的集合,每个跳接是它们相应结合中的节点。两个跳接之间的可编辑距离是它们之间边的权值。加权二分图匹配问题可以通过匈牙利算法进行求解。

3.2 树型结构空间的优化

使用贝叶斯优化指导网络态射的第二个挑战是获取函数的优化。传统获取函数在欧氏空间中被定义。通过网络态射对树型结构搜索的优化方法并不可用。为了优化我们的获取函数,我们需要一种方法去高效的优化在树搜索空间的获取函数。针对这一问题,我们提出了一种新方法来优化在树型结构空间的获取函数。
上置信界(UCB)[1]作为我们的获取函数,定义如下:
在这里插入图片描述
其中y_f= Cost(f ,D),β是平衡因子,µ(y_f ) 和σ(y_f )是变量y_f的后验均值和标准差。它有两个重要的性质,这很符合我们的问题。首先,它有一个显式的平衡因子β 用于开发。第二,α(f)直接类比为搜索历史H = {(f(i) , θ(i) , c(i) )}中的代价函数值c(i)。它评估了给定神经网络f的最低可能代价。f ̂=arg min┬f⁡ α(f) 是为下一次评估生成的神经架构。

树型结构空间定义如下。在α(f )的优化过程中,f ̂ 应该从f (i)和O中得到, 其中f (i)是在搜索历史H中观察到的架构, O是将架构态射为另一种架构的一系列操作。 用O态射f到f ̂ 被定义为f ̂← M(f ,O),其中 M(·, ·)是用O中运算态射f的函数。因此,搜索可以被视作一种树型结构的的搜索,每个结点都是一种神经架构,通过网络态射操作从中态射从而形成子节点。

网络态射最常见的缺陷是它只增加架构的大小而不是缩小它们。在NAS中使用网络态射可能会导致一种非常大的架构,它并没有对较小的架构进行足够的搜索。然而,我们的树型结构搜索并不只是扩展叶子节点,还扩展了内部节点,这意味着早期发现的较小的架构可以选择很多次,去态射以形成更多比较小的架构。

在探索树型结构搜索空间的各种启发式搜索算法和平衡探索与开发的优化方法的启发下,提出了一种基于A*搜索和模拟退火的新方法。A* 算法广泛应用于树型结构搜索。它维持节点的优先级队列,并不断扩展队列中的最佳节点。由于A* 总是利用最佳节点,因此引入模拟退火,通过不选择评估带有概率的最佳架构来平衡探索和开发。

在这里插入图片描述

如算法1所示,该算法以最小温度T_low,模拟退火的温度下降速率r和第2节描述的搜索历史H作为输入。它输出一个神经架构f∈H和一个操作序列O,将f态射为新的架构。
从第2行到第6行,搜索架构被放入优先级队列,根据代价函数值或者获取函数值对元素进行排序。由于上置信界UCB被选作获取函数, α(f )与历史观测值c (i)相类似。从第7行到第18行,是对采集函数的循环优化。其中从第8行到第10行,遵循A*搜索中的设置,每次迭代过程弹出获取函数值最低的体系结构,其中Ω(f)是态射架构f的所有可能操作,M(f,O)是用操作序列O态射架构f的函数。然而,并不是所有的子节点都被放入优先队列中进行探索。它是否被放入队列通过第11行的模拟退火来决定,其中ec_min-α(f’)T是模拟退火中的典型接受函数。 从第14行到第16行c_min和f_min被更新,记录了最小获取函数值和相应架构。

3.3 图级网络态射

第三次挑战是要在态射架构时保持中间输出张量形状的一致性。以前的工作展示了如何保留操作器所应用层的功能,即层级态射。然而,从图层的角度来看,单个层的任何变化都可能对整个网络产生蝴蝶效应。 否则,它将破坏输入和输出张量形状的一致性。 为了应对这一挑战,提出了一种图级态射,以寻找和态射整个网络中受层级操作影响的各层。

遵循[11]中所定义的神经网络f ∈ F的四种网络态射操作,它们可以反映在可计算图G的变化中。
第一个操作是向f插入一个层,使其更深地表示为深度(G,u),其中u是标记插入该层位置的节点;
第二个操作是将f中的一个节点加宽,表示为宽(G,u),其中u表示要加宽的中间输出张量的节点。 这里的加宽可以是使u的前一个全连接层的输出向量更长,也可以根据前一层的类型在u的前一个卷积层中添加更多的滤波器;
第三个操作是从节点u添加到节点v的加性连接,表示为add(G,u,v);
第四个操作是添加从节点u到节点v的连续连接,表示为concat(G,u,v)。 对于深度(G,u),除了初始化新添加层的权重外,不需要其他操作。然而,对于其他三个操作,G需要更多的变化。

首先,我们定义了一个有效的宽区域(G,u_0)作为γ,以便更好地描述网络中的变化。 有效区域是计算图中的节点集合,可以通过以下规则递归定义:1.u_0∈γ。 2.v∈γ,如果∃→e_(u→v) ∉ L_s,u∈γ。 3.v∈γ,如果∃→e_(v→u) ∉ L_s,u∈γ。 L_s是全连接层和卷积层的集合。 操作范围(G,u_0)需要改变两组层的集合,前一层集合L_p={e_(u→v)∈L_s|v∈γ},需要输出更宽的张量,下一层集合L_n={e_(u→v)∈L_s|v∈γ},需要输入更宽的张量。第二,对于运算符add(G,u_0,v_0),可能需要在跳接上附加池化层。 u_0和v_0具有相同数量的通道,但它们的形状可能因它们之间的池化层而不同。因此,我们需要一组池化层,其效果与u_0和v_0之间所有池化层的组合相同,定义为L_o={e∈L_pool|e∈p_(u_0→v_0 )}。其中p_(u_0→v_0 )可以是u_0和v_0之间的任何路径,L_pool是池化层集合。 另一层L_c用于池化层之后,将u_0处理为与v_0相同的宽度。 第三,在concat(G,u_0,v_0)中,级联张量比原始张量v_0更宽。级联张量被输入到一个新的层L_c,以将宽度减少到与v_0相同的宽度。级联还需要额外的池化层。

3.4 时间复杂度分析

正如第3节开头的描述,贝叶斯优化可以大致分为三个步骤:更新、生成和观察。算法效率的瓶颈是观察,它涉及到生成的神经架构的训练.设n为搜索历史中的架构数量。 更新的时间复杂度为O(n2 log_2⁡ n)。在每一次生成中,要在优化获取函数期间的新架构与搜索历史中的新架构之间计算内核,数量值为O(nm),其中m是在优化获取函数期间计算的架构数量。计算d(·,·)一次的时间复杂度为O(l2+s3),其中l和s是层数和跳接数。所以总体时间复杂度为O(nm(l2+s3)+ n2 log_2⁡n)。这些因子的量级在几十个范围内。因此,与观察相比,更新和生成的时间消耗是微不足道的。

4、AUTO-KERAS

基于所提出的神经架构搜索方法,我们开发了一个开源的AutoML系统,即Auto-Keras。 它是以Keras[9]命名的,它以创建神经网络的简单性而闻名。与SMAC[15]、TPOT[28]、AutoWEKA[35]和Auto-Sklearn[13]类似,目标使不熟悉机器学习技术的领域专家能够轻松地使用机器学习技术。然而,Auto-Keras侧重于深度学习任务,这与上述浅层模型所聚焦的系统不同。

虽然在大型云计算平台上有几种AutoML服务,但有三件事阻止了用户使用它们。
首先,云服务不是免费使用的,这可能不是每个想要使用AutoML技术的人都能负担得起的。
其次,基于云的AutoML通常需要Docker容器和Kubernetes的复杂配置,这对于没有丰富计算机科学背景的人来说是不容易的。
第三,AutoML服务提供商是诚实且好奇的[7],不能保证数据的安全性和隐私性。
一个易于下载并在本地运行的开源软件将解决这些问题,使每个人都可以访问AutoML。为了弥补这种差距,我们开发了Auto-Keras。

设计一个易于使用并在本地部署的系统是具有挑战性的。首先,我们需要一个简洁的、可配置的应用编程接口(API)。 对于没有丰富编程经验的用户来说,他们可以很容易地学习如何使用API。 对于高级用户,他们仍然可以配置系统的细节,以满足他们的要求。第二,局部计算资源可能有限。我们需要充分利用本地计算资源来加快搜索速度。第三,在不同的环境中,可用的GPU内存的大小可能不同。 在搜索过程中,我们需要调整神经架构大小以适应GPU内存。

4.1 系统概述

Auto-Keras的系统架构如图2所示。我们设计这种架构是为了充分利用CPU和GPU的计算资源,并通过只在RAM上放置当前有用的信息来有效地利用内存,并将其余的保存在存储设备上,例如硬盘驱动器上。顶部是API,由用户直接调用。它负责调用相应的中层模块来完成某些功能。搜索器是包含贝叶斯优化器和高斯过程的神经架构搜索算法的模块。这些搜索算法运行在CPU上。模型训练器是一个模块,负责GPU上的计算。它将给定的神经网络与训练数据在一个单独的并行过程中进行训练。图是处理神经网络计算图的模块,由网络态射操作的搜索器控制。图中当前的神经结构被放置在RAM上,以便更快地访问。模型存储是一个经过训练的模型库。由于神经网络的大小很大,不能全部存储在内存中,因此模型存储将所有训练好的模型保存在存储设备上。
在这里插入图片描述
图2:Auto-Keras系统概述。(1)用户调用API。(2)搜索器在CPU上生成神经架构。(3)图从神经架构中建立具有RAM参数的真实神经网络。(4)将神经网络复制到GPU进行训练。(5)在存储设备上保存经过训练的神经网络。

Auto-Keras系统的典型工作流程如下。 用户开始搜索数据集的最佳神经架构。API接收调用,对数据集进行预处理,并将其传递给搜索器Searcher以启动搜索。搜索器中的贝叶斯优化器将使用CPU生成一个新的架构。它调用图模块将生成的神经架构构建成RAM中的真实神经网络。新的神经架构复制GPU,以供模型训练器使用数据集进行训练。训练好的模型被保存在模型存储中。 模型的性能被反馈给搜索器Searcher以更新高斯过程。
在这里插入图片描述
图3:CPU和GPU并行。在GPU上训练当前神经架构时,CPU生成下一个神经架构(图)。

4.2 应用编程接口

API的设计遵循Scikit-Learn API[5,29]的经典设计,简洁可配置。神经网络的训练需要分别调用构造函数、拟合函数和预测函数三行代码。为了适应不同用户的需求,我们设计了两个层次的API。
第一级命名为任务级。 用户只需要知道他们的任务就可以调用API,例如图像分类、文本回归。第二级命名为搜索级,用于高级用户。用户可以搜索特定类型的神经网络架构,例如多层感知机、卷积神经网络。为了调用这个API,他们需要自己对数据集进行预处理,并知道哪种类型的神经网络对于处理任务是最佳的,例如CNN或MLP。

已经实现的几种技术,用以提升装有Auto-Keras包的用户体验。
首先,用户可以恢复和继续之前的搜索,这可能导致意外退出。从用户的角度看,与目标是浅层模型的AutoML系统相比,使用Auto-Keras的主要区别是时间消耗更多,因为在神经架构搜索过程中训练了许多深层神经网络。在搜索结束之前,有可能发生一些意外导致退出这个过程。 因此,搜索将所有搜索的神经网络架构及其训练的参数输出到磁盘上的特定目录中。 只要提供目录路径,就可以恢复前面的搜索。
其次,用户可以导出搜索结果,这些结果是神经架构,作为保存的Keras模型可用于其他用途。
第三,对于高级用户,他们可以在界面中通过默认参数指定搜索过程和神经网络优化过程的各种超参数。

4.3 CPU和GPU并行

为了充分利用有限的本地计算资源,程序可以同时在GPU和CPU上并行运行。如果我们按照顺序进行观察(训练当前神经网络),更新和生成贝叶斯优化。在更新和生成过程中,GPU将处于空闲状态。在观察期间,CPU将处于空闲状态。为了提高效率,观察与分离过程中的生成并行运行。训练队列作为模型训练器的缓冲区。图3显示了CPU和GPU之间并行性的时序图。
首先,搜索器Searcher请求队列退出一个新图形,并将其传递给GPU开始训练。
第二,当GPU繁忙时,搜索器请求CPU生成一个新图形。此时,GPU和CPU并行工作。
第三,CPU将生成的图返回给搜索器,搜索器将图放入队列。
最后,模型训练器完成了GPU上的图形训练,并将其返回给搜索器Searcher以更新高斯过程。这样的话,GPU和CPU的空闲时间大大减少,用以提高搜索过程的效率。

4.4 GPU内存适配

由于不同的部署环境对GPU内存的使用有不同的限制,因此需要根据GPU内存来限制神经网络的大小。否则,由于GPU内存耗尽,系统将会崩溃。为了应对这一挑战,我们基于自身的数据结构在神经架构上应用了一个内存估计函数。用一个整数值来标记神经架构大小的上限。任何新的计算图,其估计大小超过上限就会被丢弃。 然而,由于GPU内存管理非常复杂,无法精确估计,所以系统仍然会崩溃。因此,每当GPU内存耗尽时,上限就会降低,以进一步限制所生成的神经网络的大小。

5、实验

在实验中,我们的目的是回答以下问题。

  • 1)有限运行时间内搜索算法的效果如何?
  • 2)贝叶斯优化和网络态射效率如何?
  • 3)搜索算法的重要超参数有什么影响?
  • 4)所提出的核函数能否正确地根据神经网络的实际性能来衡量它们之间的相似性?

数据集:三个基准数据集,MNIST[20],CIFAR10[18]和FASHION[37]被用于在实验中评估我们的方法。他们更喜欢非常不同的神经架构来获得良好的性能。
基准:采用四类基准方法进行比较,具体阐述如下:

  • 简单方法:随机搜索(RAND)和网格搜索(GRID)。它们搜索卷积层的数量和这些层的宽度。
  • 常用方法:SPMT [33] 和 SMAC [15], SPMT和SMAC都是为一般的超参数调优所设计的。它们调整一个三层卷积神经网络的16个超参数,包括每层的宽度,下降率和正则化率。
  • SOAT方法: SEAS [11], NASBOT [16]。我们认真地复现了他们论文中描述的SEAS。对于NASBOT,由于实验设置非常相似,我们在论文中直接训练了它们的搜索神经架构。 由于它们没有搜索MNIST和FASHION数据集,因此在我们的实验中省略了相应结果。
  • 所提出方法的变型: BFS和BO。我们提出的方法被表示为AK。BFS以广度优先搜索取代了AK中的贝叶斯优化。BO是另一种变型,它不使用网络态射来加速训练。对于AK,β设置为2.5,而根据参数灵敏度分析,λ设置为1。

此外,还在实验中对Auto-Keras部署系统(AK-DP)的性能进行了评价。与上述AK不同的是,AK-DP使用各种先进技术来提高性能,包括学习速率调度、多个手动定义的初始架构。
实验设置:评估的一般实验设置描述如下:
第一,根据二八法则将每个数据集的原始训练数据进一步划分为训练集和验证集。
第二,使用每个数据集的测试数据作为测试集。
第三,SEAS、BO、BFS和AK的初始架构是一个三层卷积神经网络,每层有64个滤波器。
第四,每种方法在一个GPU(NVIDIA GeForce GTX 1080Ti)上运行12小时,批处理大小为64。
第五,使用训练集和验证集对输出架构进行训练。
第六,测试集用于评估训练好的架构。由于所有数据集都是用于分类的,所以选择错误率作为评估度量。
为了进行公平的比较,所有方法都采用相同的数据处理并训练程序。在所有实验中,神经网络都被训练了200步。值得注意的是,AK-DP使用了一个真正的部署系统设置,其结果与其他方法没有直接可比性。除了AK-DP之外,其他方法都使用相同的初始架构来开始搜索。

5.1 有效性评估

我们首先评估所提出方法的有效性。评估结果见表1。基于该结果得到以下结论:
在这里插入图片描述

  1. 对AK-DP进行评估以显示我们系统的最终性能,它显示了该部署系统在全部三种数据集都达到了SOAT。
  2. 所提出的AK方法在所有三种数据集上都达到了最低错误率,证明AK能够找到作用于小型数据集(MNIST)的简易且高效的架构,并且能够在大型数据集(CIFAR10)上搜索更复杂的结构。
  3. 简单的方法和传统的方法在MNIST数据集上表现良好,但在CIFAR10数据集上表现不佳。 这可能是因为这样一个事实:简单的方法,如随机搜索和网格搜索,只盲目地尝试有限数量的架构,而这两种传统方法无法改变架构的深度和跳接。
  4. 虽然这两种符合SOAT的方法拥有可接受的性能,但由于SEAS有着低于标准的搜索策略,故无法打败我们所提出的模型。 它所采用的爬山策略在态射当前最佳架构时每次只需一步,搜索树结构被限制为单向扩展。 相比较而言,NASBOT具有更强的搜索可扩展性,并将贝叶斯优化用于我们提出的方法。然而,训练神经架构的低效限制了它在短期内实现可比性能的能力。相反,网络态射策略和新的搜索策略确保了我们的模型在有限的硬件资源和时间变化的情况下获得理想的性能。
  5. 对于所提出方法(Auto Keras)的两个变型,BFS优先考虑搜索围绕初始架构的大量邻点,这限制了它形成不同于初始架构的更好架构的能力。 通过比较,BO可以到达最初架构的远端。 但是没有网络态射,它需要用更长的时间来训练每个神经架构,这限制了它在给定时间内可以搜索的架构数量。

5.2 效率评估

在该实验中,我们试图从两个方面来评估所提出方法的效率增益。首先,我们评估贝叶斯优化是否能够在有限的观测次数下真正找到更好的解决方案。其次,我们评估网络态射是否能提高训练效率

我们将所提出的方法AK与它的两个变型BFS和BO进行了比较,分别显示了贝叶斯优化和网络态射的效率增益。BFS不采用贝叶斯优化,只采用网络态射,使用广度优先搜索选择网络态射操作。BO不采用网络态射,只采用贝叶斯优化。这三种方法中的每一种都在CIFAR10上运行12个小时。图4的左边显示了可实现的最低错误率与搜索的神经网络数量之间的关系。图4的右边显示了所实现的最低错误率与搜索时间之间的关系。
在这里插入图片描述
图4:效率评估。这两张图是使用不同的X轴绘制成的相同结果。BFS使用网络态射。BO使用贝叶斯优化。AK两者兼有。

通过比较BFS和AK可以得出两个结论。
首先,贝叶斯优化可以在有限观测次数下有效地找到更好的架构。当搜索相同数量的神经架构时,AK可以获得比BFS低得多的错误率。结果表明,贝叶斯优化可以在正确方向有效地指导搜索,相比朴素的BFS方法可以更有效地找到良好的架构。
其次,贝叶斯优化在搜索过程中产生的开销很低。在图4的左边,它表明BFS和AK在12小时内搜索了相似数量的神经网络。 BFS是一种简单的搜索策略,除了训练神经网络外,在搜索过程中不会消耗太多时间。由于较高的时间复杂度,AK搜索的神经架构略少于BFS。

通过比较BO和AK也可以得出两个结论。

  • 首先,网络态射不会对搜索性能产生负面影响。在图4的左边,当BO和AK搜索相似数量的神经架构时,它们获得了相似的最低错误率。
  • 第二,网络态射增加了训练效率,从而提升了性能。

正如图4左边所示,由于采用网络态射,AK可以在相同的时间内比BO搜索更多的架构。由于网络态射不会降低搜索性能,故而搜索更多的架构会得到更好的架构。这点可以在图4的右边得以证明。在搜索时间结束时,AK的错误率低于BO。

5.3 参数灵敏度分析

我们现在分析了我们提出的方法中两个最重要的超参数的影响,即方程(10)中的β平衡了搜索策略的探索和开发,方程(4)中的λ平衡了层和跳接之间的距离。对于其他超参数,由于算法1中的r和T_low只是模拟退火的正常超参数,而不是与神经架构搜索直接相关的重要参数,因此我们在这里不深入研究它们。在本实验中,我们以CIFAR10数据集为例。其余的实验设置遵循5.1节的设置。

从图5中,我们可以观察到β和λ对我们方法性能的影响是相似的。如图5左边所示,随着β从10(-2)增加到102,错误率先减小后增大。如果β太小,则搜索过程不足以探索远离初始架构的架构。如果β太大,搜索过程将持续探索远点,而不是尝试探索最有前途的架构。同样,如图5右边所示,λ的增加将首先降低错误率,然后更新它。这是因为如果λ太小,则忽略两种神经架构的跳接差异;相反,如果λ太大,则忽略卷积层或全连接层的差异。在内核函数中,应该平衡层和跳接的差异,以实现整个框架的良好性能。
在这里插入图片描述
图5:参数灵敏度分析。Β平衡了搜索策略的探索开发,λ平衡了层和跳接之间的距离。

5.4内核质量评估

为了显示可编辑距离神经网络核的质量,我们研究了两个矩阵K和P,K_(n×n)是核矩阵,其中K_(i,j)=κ(f(i),f(j))。 P_(n×n)描述了神经网络之间实际性能的相似性,其中P_(i,j)=−|c(i)-c(j)|,c(i) 第3节中描述的搜索历史H中的成本函数值。我们以CIFAR10为例,采用错误率作为成本度量。由于K和P中的值在不同的尺度上,两个矩阵都被归一化为范围[−1,1]。 我们用均方误差定量测量了K和P的差值,为 1.12×10^(-1)。
图6a和6b显示了K和P。 较浅的颜色意味着更大的值。图中可以观察到两种图案。
在这里插入图片描述
图6:内核和性能矩阵可视化。(a)所提出的核矩阵。(b)是神经架构性能的相似矩阵。

首先,图6a和6b的白色对角线。根据核的确定性性质,κ(f_x, f_x)=1,∀f_x∈F,因此K的对角线总是1。对于P来说也是一样的,因为在相同神经网络的性能上不存在差异。
第二,图6a的左上方有一个小的正方形区域。这些是训练贝叶斯优化器的初始架构,它们在网络态射操作方面彼此邻近。 类似的图案反映在图6b中,这表明内核衡量两个相似架构时,它们往往具有相似的性能。

6 总结与展望

本篇论文提出了一种基于网络态射的高效神经架构搜索方法。它使贝叶斯优化能够通过设计神经网络内核来指导搜索,以及指导在树型结构空间中优化获取函数的算法。 所提出的方法被封装到一个开源的AutoML系统中,即Auto-Keras,它可以很方便地下载,并且使用了相当简洁的接口。该方法在实验中表现出良好的性能,优于传统的超参数调整方法和符合SOAT的神经架构搜索方法。我们计划在今后的工作中研究以下开放性问题。

  • (1)搜索空间可以扩展到循环神经网络RNN。
  • (2)联合调整训练过程的神经架构和超参数。
  • (3)设计面向任务的NAS,以解决特定的机器学习问题,例如图像分割[21]和对象检测[25]。

【参考来源】知乎:NASNet详解文章链接

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值