Efficient Sample-based Neural Architecture Search with Learnable Predictor
我们想要的结果
- predictor的输入的形式
- predictor的结构
- predictor输出的结果和实际的表现对比
Efficient Sample-based Neural Architecture Search with Learnable Predictor
这篇文章做了啥
作者说之前的方法很少有研究如何提升采样效率的,为了平衡exploitation和exploration,作者提出了贝叶斯优化的网络结构搜索,Bayesian Optimized Nerual Architecture Search, BONAS.
BONAS的主要成分是一个sampler以及科学系的embedding extractor。特别的,作者使用EA算法作为他们的sampler,使用GCN predictor来作为他们的替代模型(surrogate model),这两者能够使得作者的方法自适应的discover 以及 incorporate 节点的结构,来近似网络结构的表现。(对于网络结构进行详细的编码,然后说这种编码方式是可以近似的)
对于NAS的任务而言,作者同时设计了一个加权的loss,来集中在表现比较好的网络结构。通过大量的实验,作者发现他们的方法比random高效123.7倍,比SOTA的LaNAS高效7.5倍
前人工作的缺陷
nas搜索效率比较低,针对于此,前人也已经提出了predictor,(Liu et al., 2018; Luo et al., 2018; Wang et al., 2019b),这些predictor都是基于MLP和LSTM的。
上述三个方法的缺陷
- 他们都只是将architecture编码成一个string
- 忽略了结构连接的特性
- MLP只能够在固定长度上的输入上进行操作,所以当网络结构有不同数量的node的时候则不适用
作者的结构图
如上图所示,主要包含两个部分,一个是可学习的embedding extractor和可学习的 sampler。在embedding extractor中,作者使用的是GCN来produce 网络结构的embedding,这种结构可以自然的处理神经网络的图结构,可以弥补MLP或LSTM的缺陷。
用Bayesian Linear Regression(BLR),来替代比较流行的GP 模型(GP 模型的缺陷是对大模型计算比较慢,如何近似的定义一个高效的网络结构的距离也是一个问题)。
实验发现,GCN对比较小数目的architecture-acc pair 泛化比较好。之前就有人(Zhang et al., 2019)用过 GCN 来做prediction of architecture parameters。但是作者说这事一种one-shot的NAS method,及时在封闭的搜索空间也不能确保找到最优解。和他们不同的是,作者用graph embedding来直接预测performance。
sampler用来从search space中sample 网络结构,在这篇文章中作者会比较random sampler,RL-based sampler和EA-based sampler。
相关工作
NAS
NAS可以分为两种,一种是one-shot类型的,就是有一个比较大的超网络,之后来获得最好的sub-network,第二种是基于采样的NSA。
Bayersian optimization
作者这里考虑最大化目标\(f\),GP是一种广泛用来学习\(f\)的潜在替代模型
在BO中,需要一个索取函数(acquisition function)来指导搜索的过程。之前的很多研究提出了不同的索取(acquisition)函数,这些索取函数用来平衡下一次sampling的exploitation和exploration。其中expected improvement经常被采用。假设其替代函数的超参为\(\Theta\), 给定观察的数据集\(\mathcal{D}\)和新数据\(x\),则可以定义为
其中\(\mu(x;\mathcal{D}, \Theta)\)是预测的均值,\(\sigma(x; \mathcal{D}, \Theta)\)是预测的方差,以及\(f(x_{best})\)是目前观察到的最大目标值
Expected Inprovement (EI) 可以定义为如下
其中\(\mathcal{N}(\cdot;0, 1)\)以及\(\Phi (\cdot; 0, 1)\)分别标准正态分布的概率密度函数和累计分布函数。
GCN
给定一个计算图\(G = (V, E)\), 其中\(V\) 是一系列的\(N\)个节点,\(E\)是一系列的edges。相应的\(N\times N\)的累邻接矩阵定义为\(A\),每一个节点都有一个\(d\)维的特征。整个图的特征矩阵可以定义为\(X\in \R^{N\times d}\)。
GCN是对图结构的数据建模,它利用局部的谱滤波器来抽取每个节点有用的embedding。它已经被用在了variety of 图相关的任务上,比如link prediction和聚类。
对于一个\(L\) layer的GCN,逐layer的传播法则是
其中,$ \widetilde{A} = A+I\(,\)I\(是单位矩阵,\)D\(是对角矩阵,其中\)\widetilde{D}{ii} = \sum^{N}A_{ij}$, \(H^{(l)}\)和\(W^{(l)}\)分别是\(l\)层的特征图和权重。\(RELU\)为激活函数,\(H^{(0)}\)是原始的特征矩阵\(X\), \(H^{(L)}\)是图嵌入矩阵
提出的方法
作者说BO能够balance exploration 和exploitation,以及extractor能够获取很好表示模型结构的embeddings,所以能够从search space用很少的samples得到很好的结果
作者还说为了减少搜索空间,作者会用一个sampler来评估subspace(是subspace还是sample?)
可学习的embedding extractor
图中的每个节点代表一个operation,每个边代表数据的流向。下图是NAS-Bench-101的例子,该网络是cell的重复堆叠,所以作者只考虑cell的结构
上图给出了邻接矩阵,和特征矩阵。有了这两个东西,就可以用图卷积传播的法则进行计算,比如给定初始的\(H^{(0)}\)或者是\(X\),联合邻接矩阵以及,训练的图卷积的权重\(W\)。则可以计算下一层的feature。
但是标准的GCN都是预测每个node的embedding,而作者这里是想获取整个图embedding。为了解决这个问题,作者将所有的node都add到一个globa node,并且将其添加到整个图中。
为了训练GCN,作者将GCN的output(cell embedding)输入到一个标准的regressor,作者用一个单层的神经网络,和GCN一起end-to-end的进行训练。貌似是有一个NAS-Bench dataset可以用来训练作者提出的这个predictor。给定网络结构就可以输出acc。(但是后续作者好像会用BO去替代这个fc层)
bayesian linear regressor with embedding input
GP常用来作为BO的surrogate model。对于NAS而言,GP需要在两个网络上定义kernel,比较难!
训练GP需要\(\mathcal{O}(N^{3})\)的复杂度。其中\(N\)是采样的网络结构的数目
为了解决这个问题,作者将GP替换为Bayesian linear regressor(BLR),并且上一步的输出的embedding作为输入。给定一系列的训练结构\(\mathcal{D}\),其中包含训练结构\(\{(A_i, X_i )\}\)以及他们的表现\(\{t_i\}\), 则concate对应的embeddings \(\{\phi(A_i, X_i )\}\) 来得到一个设计的矩阵\(\Phi\), 其中\(\Phi_{ij}=\phi_j(A_i, X_i )\)。对一个new的\((A, X)\), 根据参考文献PRML从BLR model预测出来的mean \(\mu\)可以表示为
其中\(m_N = \beta S_N\Phi^Tt\), \(S_N = (\alpha I+\beta\Phi^T\Phi)^{-1}\), \(I\)是单位矩阵。\((\alpha, \beta)\)是模型的精度参数,根据文献Snoek et al. 2012可以通过估计下式的边缘最大似然(marginal likelihood)来得到\((\alpha, \beta)\)
考虑最后一层全连接层的权重不确定性,则可预测的方差可以通过下式获得
这样就获取到了方差和均值,所以就可以获得expected improvement score(作者在related works中提到),然后根据获得EI指数就可以求得下一个arch sample应该怎么选择。
采样搜索空间
NAS的搜索空间比较大,在每一个iteration,只有一个subset可以被评估。标准的采样是random sample,RL也比较流行。
大概是为了对比,作者说他们用EI scores采样得到的结果来训练RL controller
同时作者还对比了EA算法,作者创建新矩阵的方法是,对邻接矩阵和特征矩阵进行变异。对临街矩阵就是随机的选择一个边\(i\rarr j\),然后修改源节点\(i\)为计算图中\(i\)前面的一个节点。为了变异特征矩阵,作者随机选取一个节点,然后将其operation等概率的修改为任何一个可能的operation(包括和原来一样)
New architectures are constructed by mutation, which can be performed on either the adjacency matrix1 or feature matrix. To mutate the adjacency matrix, we randomly select one edge \(i \rarr j\)in the cell, and modify its source \(i\) to a random node preceding \(i\) in the computation graph.
值得注意的是,上面所提到的三个sampler,RL, BO, EA,只有RL是学习的,其他两个并不是可学习的
指数加权loss
作者说作者训练GCN的时候使用的是MSE loss,但是在训练用作exploration和exploitation替代函数的时候,对于表现好的网络结构应该给予更多的关注。在上述介绍的BO中,我们总是选取那些索取函数比较高的samples。因此,能够尽量精确的预测那些有比较高表现的网络结构以至于能够发现最好的一个网络结构,同时对于表现不太好的网络结构则没必要预测name精确。
为了达到这个目标,作者在BO搜索的过程中,对训练surrogate predictor 模型提出了如下的指数加权loss,
这里,\(y_i\)是预测的精度,$ \widetilde{y}_i$是gt的结果。对精度高的权重比较大,对精度低的权重比较小。作者这个启发是从focal loss来的。但是focal loss是用来做分类的,而作者的任务是回归。
整体算法
首先采样一些随机网络结构\(\{(A_i, X_i)\}\),对这些网络结构进行训练,得到对应的表现\(\{t_i\}\), 然后训练GCN embedding extractor,之后,最后一层的全连接被BLR替代。
然后采样器\(\mathcal{A}\)对pool \(\mathcal{C}\)进行采样,对每一个candidate,通过使用其GCN预测的embedding和从BLR得到的均值方差可以根据公式2得到其EI指数,有比较高的EI指数的candidate被选择出来以及进行充分的训练来得到其performance value,(这里应该是在dataset上训练),然后将其添加到\(\mathcal{D}\)中,GCN predictor和BLR被更新。BLR更新比较容易,所以更新的频率更高。
对于sampler的更新,作者如下说:对EAsampler,通过add一些新的模型,同时移除掉一些老的模型,来更新种群。对于RL的sampler,作者通过RL controllersampler \(R\)个 arc,然后预测他们的EI score来作为奖励更新 controller,这个步骤会一直重复,知道满足停止标准
所以一共两个步骤
MSE loss训练GCN训练surrogate function来 exploration和exploitation
实验
作者使用的是NAS-bench-101,最大的nas benchmark,423k个卷积网络结构。同时也有NA-bench-102,有15k网络结构。作者创建LSTM-12K。
作者先对比了GCN相对于MLP和LSTM的优越性。GCN有4个含有64单元的隐藏层,使用square loss,adam optimizer优化。MLP有5层,维度分别为512, 2048, 2048, 512和1.对LSTM,隐藏层和embedding的size都为100,最后接一个全连接层。
85%train,10% for val, rest for testing
封闭domain测试
作者在上面给定的三个数据集上进行了实验,
开放domain进行试验
作者自定义搜索网络结构,一个cell里面有四个block,120个epoch停止训练
posted on 2021-05-26 14:09 YongjieShi 阅读(128) 评论(0) 编辑 收藏 举报