ENAS译文

通过参数共享的高效的神经网络架构搜索
摘要
我们提出了一种快的,廉价的自动模型架构搜索–ENAS。在ENAS中,控制器通过在大型计算图中搜索最优子图来发现神经网络结构。使用策略梯度对控制器进行训练,以选择一个子图,使验证集上的期望回报最大化。同时对所选子图对应的模型进行训练,使正则交叉熵损失最小化。在子模型之间共享参数允许ENAS提供强大的经验性能,同时比现有的自动模型设计方法使用更少的GPUhours,特别是比标准的神经结构搜索便宜1000倍。在Penn Treebank数据集,ENAS发现了一个新奇的架构,实现了一个测试的困惑在所有没有训练后处理的方法中建立一种新的最先进的方法。在CIFAR-10数据集上,ENAS发现了一个新的架构,其测试错误达到2.89%,与NASNet的2.65%测试错误相当。
简介
神经结构搜索已成功地应用于图像分类和语言模型的模型结构设计。在NAS,RNN控制器在一个循环中训练:控制器首先对一个候选体系结构(即子模型)进行采样,然后对其进行收敛性训练,以测量其在期望任务中的性能。然后,控制器将性能作为引导信号来寻找更有前途的架构。这个过程重复许多次。尽管NAS具有令人印象深刻的经验性能,但在计算上非常昂贵和耗时,例如Zoph等使用450 gpu 3-4天(即32,400-43,200)GPU小时)。与此同时,使用较少的资源往往产生较少的引人注目的结果。我们观察到NAS的计算瓶颈是对每个子模型进行收敛性的训练,只是为了度量其准确性,同时丢弃所有训练过的权值。这项工作的主要贡献是通过强制所有子模型共享权重来避免从零开始到收敛对每个子模型进行训练,从而提高NAS的效率。这个想法有明显的并发症,如不同的子models可能利用权重不同,但被以前的工作鼓励转移学习和多任务学习,建立,为一个特定的模型参数学习在一个特定的任务可以用于其他模型在其他任务,没有修改。
我们的经验表明,不仅在子模型之间共享参数是可能的,而且它还允许非常强大的性能。具体来说,在CIFAR-10上,我们的方法实现了2.89%的测试误差,而NAS的测试误差为2.65%。在Penn Treebank上,我们的方法的perplexity达到了55.8,显著优于NAS的perplexity 62.4 (Zoph &这是Penn Treebank不使用训练后处理的方法中最新的最先进的方法。重要的是,在我们所有的实验中,我们使用一个单独的Nvidia GTX 1080Ti GPU,搜索架构花费不到16个小时。与NAS相比,这减少了1000倍以上的gpu小时。由于其高效,我们将我们的方法命名为高效神经结构搜索(ENAS)。
思想
ENAS的核心思想是观察到所有NAS最终迭代的图都可以看作是更大图的子图。换句话说,我们可以用一个有向无环图(DAG)来表示NAS的搜索空间。图2演示了一个通用的DAG示例,其中可以通过获取DAG的子图来实现体系结构。直观地说,ENAS的DAG是NAS搜索空间中所有可能的子模型的叠加,其中节点表示本地计算,边缘表示信息流。每个节点上的本地计算都有自己的参数,这些参数仅在激活特定计算时使用。因此,ENAS的设计允许参数之间共享。

图一在我们的搜索空间中有4个计算节点的一个循环单元的例子。左:对应于循环单元的计算DAG。红色的边表示图中的信息流。中间:循环单元。右:控制器RNN的输出,中间是单元格,左边是DAG。注意,节点3和节点4从不被RNN采样,因此它们的结果被取平均值,并作为单元的输出
图二该图表示整个搜索空间,而红色箭头在搜索空间中定义一个模型,该模型由控制器决定。这里,节点1是模型的输入,而节点3和节点6是模型的输出。
在下面,我们通过一个例子来促进对神经网络的讨论,这个例子说明了如何从一个指定的DAG和一个控制器来为递归神经网络设计单元
(2.1节)。然后,我们将解释如何培训ENAS以及如何从ENAS的控制器派生体系结构(部分)2.2)。最后,我们将解释设计卷积架构的搜索空间,
2.1设计循环单元
为了设计递归单元,我们使用了一个具有N个节点的DAG,其中节点表示本地计算,边缘表示N个节点之间的信息流。ENAS控制器是一个RNN,它决定:1)哪些边被激活,2)在DAG的每个节点上执行哪些计算。我们对RNN元的搜索空间的设计不同于Zoph &Le(2017),作者将架构的拓扑固定为二叉树,只学习树的每个节点上的操作。相反,我们的搜索空间允许ENAS设计这两种拓扑并在RNN单元中进行操作,因此更加灵活。
为了创建一个循环单元,控制器RNN对N个决策块进行采样。这里,我们通过一个简单的计算节点为N = 4的递归计算单元(如图1所示)来说明ENAS机制。设xt为循环单元的输入信号,ht - 1是前一个时间步长的输出我们抽样如下。
节点一:控制器首先对激活函数采样。
在我们的例子中,控制器选择tanh激活函数,这意味着循环单元的节点1应该计算。
在节点2:控制器对之前的索引和激活函数进行采样。在我们的示例中,它选择前面的索引1和激活函数ReLU。这样,计算单元的节点2
在节点3:控制器再次采样前一个索引和一个激活函数。在我们的示例中,它选择前面的索引2和激活函数ReLU
在节点4:控制器再次对之前的索引和激活函数进行采样。在我们的示例中,它选择前面的索引1和激活函数tanh
对于输出,我们简单地对所有未被选择作为输入的节点进行平均。在我们的示例中,由于索引3和索引4从未被采样为任何节点的输入,因此递归单元使用它们的平均值(h3 + h4)/2作为输出。换句话说,ht =
(h3 + h4) / 2。

在上面的示例中,我们注意到,对于每一对节点j <ℓ,有一个独立的参数matrixW (h)
ℓ,j。如示例所示,通过选择前面的索引,控制器还可以决定使用哪个参数矩阵。因此,在ENAS中,搜索空间中的所有递归单元都共享同一组参数
我们的搜索空间包含一个指数式的构型。具体来说,如果复发细胞有N个节点,我们允许4个激活函数(即tanh、ReLU、identity和sigmoid),那么搜索空间有4N×N!配置。在我们的实验中,N = 12,这意味着在我们的搜索空间中大约有*个模型。
培训ENAS并派生架构
我们的控制器网络是LSTM,有100个隐藏单元(Hochreiter & Schmidhuber, 1997)。这个LSTM通过softmax分类器以自回归的方式对决策进行采样:将上一步中的决策作为嵌入到下一步的输入输入。在第一步,控制器网络接收一个空嵌入作为输入。
在ENAS,有两套可学的参数:控制器的参数LSTM,用θ,和子模型的共享参数,用ω表示。ENAS的培训过程包括两个交叉阶段。第一阶段训练ω,modle的共享参数模型,在整个通过训练数据集。在PIB实验中,ω是训练大约400步,每个minibatch 64的例子,在梯度∇ω计算使用反向传播通过时间,截断35次步骤。与此同时,对于CIFAR-10,ω是训练4500张图像,分为minibatches大小128,∇ω计算使用标准的反向传播。第二训练θ,控制器的参数LSTM,固定数量的步骤,通常在我们的实验设置为2000。这两个阶段在ENAS培训期间交替进行。
详情如下。
训练子model的共享参数ω模型。
在这一步中,我们解决控制器的政策π(m;θ)和执行随机梯度下降法(SGD)ω最小化预期损失函数Emπ [L(m; ω)].在这里,L (m;ω)的标准熵损失,计算minibatch训练数据,模型m取样π(m;θ)。梯度是使用蒙特卡罗估计计算
*********************就像上面描述的那样mi有π(m;θ)采样而来
训练控制器参数θ。
In step, 我们 修复 ω 和 更新 政策 参数 θ, 旨在 最大化 最大化 期望 的 奖励 Emπ(m;θ) [R(m, ω)].我们使用Adam optimizer (Kingma & Ba, 2015),其梯度是使用REINFORCE计算的(Williams, 1992),使用移动平均基线来减少方差。
奖励R (mω)计算验证设置,而不是在训练集上,鼓励ENAS选择overfit模型,推广而不是模型训练集。在我们的语言模型实验中,奖励函数是c/valid ppl,其中perplexity是在一小批验证数据上计算的。在我们的图像分类实验中,奖励函数是对一小批验证图像的准确性。
派生的架构
我们讨论了如何从一个训练过的ENAS模型派生出新的架构。我们首先从训练样本政策π(m,θ)中采样几个model。对于每个采样的模型,我们计算从验证集中采样的单个小批模型的回报。然后,我们只对回报最高的模型进行重新训练。通过从头开始训练所有采样的模型,并在独立的验证集中选择性能最高的模型,可以改进我们的实验结果,正如其他工作所做的那样然而,我们的方法产生了类似的性能,同时更经济。
2.3设计卷积网络
图3。在我们的搜索空间中运行一个具有4个计算节点的递归单元的例子,它代表了卷积网络中的4层。Top:控制器RNN的输出。左:与网络结构相对应的计算DAG。红色箭头表示活动计算路径。
右下角:完整的网络。虚线箭头表示跳过连接。
我们现在讨论卷积架构的搜索空间。回想一下,在递归单元的搜索空间中,控制器RNN在每个决策块上采样两个决策:1)连接哪个前节点,2)使用哪个激活函数。在卷积模型的搜索空间中,控制器RNN还在每个决策块上对两组决策进行采样:1)连接之前的节点;2)使用什么样的计算操作。这些决策在卷积模型中构建一个层。
要连接到哪个节点的决定允许模型形成跳过连接,具体来说,在k层,对k - 1之前的相互不同的指标进行采样,导致k层可能出现2k - 1个决策。我们在图3中提供了对卷积网络进行采样的示例。在本例中,在第k = 4层,控制器对之前的索引{1,3}进行采样,因此第1层和第3层的输出将沿着深度维度连接起来并发送到第4层.
同时,使用何种计算操作的决定将特定的层设置为卷积、平均池或最大池化。该控制器可进行6种操作:滤波器尺寸为3×3和5×5的卷积,滤波器尺寸为3×3和5×5的深度可分卷积
5×5 (Chollet, 2017),最大池和平均池的内核大小3×3。对于递归单元,ENAS卷积网络中每一层的每个操作都有一组不同的参数。
对所描述的决策集进行L次决策,我们可以采样一个L层的网络
2.4设计卷积细胞
不需要设计整个卷积网络,可以设计更小的模块,然后将它们连接在一起形成一个网络(Zoph et al., 2018)。图4说明了这种设计,其中设计了卷积单元和约简单元架构。我们现在讨论如何使用ENAS来搜索这些单元的结构
图4。连接3个块,每个块与N个卷积单元和还原细胞1个,做出最终网络。
我们使用具有B节点的ENAS计算DAG来表示单元中局部发生的计算。在此DAG中,节点1和节点2被视为单元的输入,它们是最终网络中前两个单元的输出(参见图4)对于B - 2个节点,我们要求控制器RNN做出两组决策1)两个先前的节点作为当前节点的输入,2)两个操作应用于两个采样节点。这5个操作是:恒等,可分离的卷积与核尺寸33和55,平均池和最大池与核尺寸33。在每个节点上,对前一个节点及其对应的操作进行采样后,将这些操作应用于前一个节点,并将它们的结果相加

图5。我们的搜索空间的控制器在卷积单元上运行的一个例子。顶部:控制器的输出。在我们的卷积单元搜索空间中,节点1和节点2是单元的输入,所以控制器只需要设计节点3和节点
4. 左下角:对应的DAG,其中红色边表示激活的连接。右下:根据控制器样本的卷积单元。
与前面一样,我们通过一个示例(这里是B = 4个节点,参见图5)来说明搜索空间的机制。详情如下。
1)节点1,2是输入节点,因此不需要对它们进行决策。设h1, h2为这些节点的输出
2)在节点3:控制器采样前两个节点和两个操作。在左上角的图5中,它对node 2, node2进行了采样
可分变量conv 5x5,和恒等。这意味着h3 = sep conv 5x5(h2) + id(h2)
3)在节点4:控制器采样节点3、节点1、avg池3x3、sep conv 3x3。这意味着h4 = avg pool 3x3(h3) + sep conv 3x3(h1)。
4)由于除h4之外的所有节点都用作至少另一个节点的输入,因此惟一的松散端h4被视为单元的输出
如果有多个松散的末端,它们将沿着深度维度连接起来,形成单元格的输出。

我们讨论的搜索空间也可以实现一个约简单元,只需:1)从搜索空间中采样一个计算图,2)以2为步长应用所有操作。因此,约简单元将其输入的空间维数减少了2倍。Zoph等(2018)在卷积细胞的条件下对约简细胞进行采样,从而制作控制器
RNN总共运行2个(B - 2)块。
最后,我们估计了这个搜索空间的复杂度。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值