Sirui Xie等作者

另一种可微架构搜索:商汤提出在反传中学习架构参数的SNAS

为了寻找可以用在大规模数据集上的成熟的AutoML神经网络架构搜索(NAS)解决方案,本文作者提出了一种经济的、端到端的 NAS:随机神经网络架构搜索(SNAS)。该方法在保持 NAS 工作流程完整性和可微性的同时,在同一轮反向传播中训练神经运算的参数和网络架构分布的参数。在使用 CIFAR-10 数据集进行的实验中,SNAS 在经过更少 epoch 迭代的情况下取得了当前最佳性能,而且其效果可以被迁移至 ImageNet。

自 2016 年 Barret Zoph 和 Quoc Le 提出「用强化学习进行神经架构搜索」(《Neural architecture search with reinforcement learning》)以来,在大量科研人员的努力下,自动搜寻最先进的网络架构的趋势一直在增长。通常而言,一个神经网络架构搜索(NAS)的工作流程包括架构采样、参数学习、架构验证、信用分配以及搜索方向更新。

目前主要有三种神经架构搜索框架。首先,诸如 NEAT(Stanley & Miikkulainen,2002)的基于演化计算的 NAS 框架采用演化算法同时优化拓扑结构和参数。然而,它需要耗费巨大的计算能力,还不能在深度学习中利用高效的梯度反向传播。为了达到与最先进的人工设计的神经网络架构相当的性能,Real et al.(2018)要运行完完整的演化计算过程需要让 3150 个 GPU 工作一天的时间;基于强化学习的 NAS 是一种端到端的可以使用梯度反向传播的模型;而效率最高的 ENAS(Pham et al.,2018)能够像 NEAT 一样同时学习最优参数和网络架构。

然而,由于 NAS 被建模为一种马尔科夫过程,它会用时序差分(TD)学习(Sutton et al.,,1998)将信用度(credit)分配给结构化的决策,其效率和可解释性会受到延迟奖励的影响(Arjona-Medina et al.,2018)。为了摆脱架构采样过程的弊端,DARTS(Liu et al.,2019)提出了对运算的确定性注意力机制,分析计算每一层的期望,并在父网络收敛后删掉分配到较低注意力的运算。由于神经网络中普遍存在非线性计算过程,子网络的性能往往不一致,这时对参数的再训练就十分必要了。研究人员通常希望建立一个更高效、更易于解释并且偏置更小的搜索框架,尤其是用在未来的大规模数据集上的成熟的 NAS 解决方案。

本文提出了一种新的高效且高度自动化的搜索框架——随机神经网络架构搜索(Stochastic Neural Architecture Search,SNAS),该框架在保持 NAS 工作流程完整并可微的条件下,在同一轮反向传播中训练神经运算的参数和架构的分布参数。构建 SNAS 的一个关键的思想是,利用泛化损失中的梯度信息提高基于强化学习的 NAS 的效率,其反馈机制是由持续的奖励(reward)信号触发的。

为了能够与任意可微的损失函数相结合,搜索空间由一组服从完全可分解联合分布的 one-hot 随机变量表示,这些变量相乘作为掩码来选择每条边的运算。通过具体的概率分布来松弛网络架构的分布,可以使得在该搜索空间中的采样过程具有可微分性(Maddison et al.,2016)。有关它们参数的梯度被命名为「搜索梯度」,类似于 Wierstra et al.(2008)中的参数,但不涉及基于策略梯度(policy gradient)的强化学习方法。

从全局的角度来看,作者证明了:除了使用训练损失作为奖励,SNAS 的优化目标与基于强化学习的 NAS 是相同的。具体而言,作者提出了与搜索梯度等价的策略梯度,说明了每个样本中损失的梯度如何被用来为所有的结构化决策分配信用度。以这种方式分配信用可以被解释为泰勒分解(Montavon et al.,2017a),它比存在延迟奖励的时序差分学习更高效(Arjona-Medina et al.,2018)。此外,作者为做出结构化的决策,自然地分解了一个全局资源约束,增强了这一信用分配问题的可行性。

在本文的实验中,与 DARTS 和其它现有的 NAS 方法相比,SNAS 在测试误差、模型复杂度和搜索资源方面表现出了强大的性能。具体而言,在 CIFAR-10 数据集上进行测试时,SNAS 发现新的卷积神经架构可以在仅仅具有 2.8M 参数的情况下获得 2.85±0.02% 的测试误差,这比一阶 DARTS 搜索到的带有 3.3M 参数的网络所获得的 3.00±0.14% 测试误差和 ENAS 搜索到的带有 4.6M 参数的网络所获得的 2.89% 测试误差都要好。SNAS 搜索到的网络也在使用更少的参数的条件下,达到了与通过二阶 DARTS 搜索到的带有 3.3M 参数的网络(2.76±0.09%)相当的性能。通过更强的资源约束,SNAS 发现即使是更小的模型(带有 2.3M 参数)也能在 CIFAR-10 数据集上获得 3.10±0.04% 的测试误差。

在架构搜索过程中,SNAS 使用更少的 epoch 的迭代达到了 88% 的验证准确率,而 ENAS 的验证准确率则大约为 70%。在不进行调优的情况下,在 CIFAR-10 上验证派生的子网络时,SNAS 保证了搜索验证的准确率,显著优于 DARTS 取得的验证准确率为 54.66% 的性能。以上实验结果结果验证了我们的理论,即 SNAS 的偏置小于 DARTS。当迁移到 ImageNet(在移动设备上)时,SNAS 所发现的神经元架构获得了 27.3% 的 top-1 错误率,这与二阶 DARTS 所获得的 26.9% 的 top-1 错误率相当。

图 1:SNAS 中前向传播的概念的可视化结果。Z 是一个从分布 p(Z) 中采样得到的矩阵,其中每一行的 Z_(i,j) 是一个随机变量的 one-hot 编码向量,表示将掩码和有向无环图(DAG)中的边(i,j)相乘。该矩阵的列对应于运算 O^k。在本例中,有四个候选的操作,其中最后一个操作为零操作(即移除这条边)。目标函数是所有子图的泛化损失 L 的期望。

论文:SNAS: STOCHASTIC NEURAL ARCHITECTURE SEARCH

论文地址:https://openreview.net/pdf?id=rylqooRqK7

在本文中,作者提出了一种经济的、端到端的神经网络架构搜索(NAS)解决方案:随机神经网络架构搜索(SNAS)。该方法在保持 NAS 工作流程完整性和可微性的同时,在同一轮反向传播中训练神经运算的参数和网络架构分布的参数。在本文中,NAS 被重新规划神经网络架构内搜索空间的联合分布参数的优化问题。为了利用可微的泛化损失中的梯度信息进行结构搜索,作者提出了一种新的搜索梯度。

作者证明了这种搜索梯度优化了与基于强化学习的 NAS 相同的目标,但可以更高效地为结构化决策分配信用。该信用分配机制进一步增加了局部可分解的奖励,从而实现了对资源效率的约束。在使用 CIFAR-10 数据集进行的实验中,SNAS 在经过更少 epoch 的迭代的情况下,取得了比不可微的基于演化计算或基于强化学习的 NAS 更好的、目前最先进的性能,并且其效果可以被迁移至 ImageNet。研究还表明,SNAS 子网络在搜索过程中能够保持验证准确率,而基于注意力机制的 NAS 需要经过参数再训练才能与之相匹敌,SNAS 在大数据集上显示出向高效 NAS 发展的潜力。

2 方法

SNAS 的主要研究动机是在尽可能少地破坏 NAS 系统工作流程的前提下,构建一个高效而经济的端到端学习系统。在本节中,作者将首先描述如何从搜索空间中对神经元内的 NAS 进行采样,以及它如何激发 SNAS(2.1 节)。作者在 2.1 节中给出了优化目标,讨论了基于注意力机制的 NAS 的不一致性。接着在 2.2 节中,作者将介绍如何将这个离散的搜索空间松弛为连续的搜索空间,从而让梯度能够反向传播。在 2.3 节中,作者将 SNAS 的搜索梯度与基于强化学习的 NAS 的策略梯度方法(Zoph & Le,2016;Pham et al.,2018)相结合,通过贡献分析解释 SNAS 的信用分配机制。最后,作者在 2.4 节中介绍了 SNAS 是如何分解资源约束并将其融合到信用分配中,从而增强了目标的可行性。

3 实验

本文的实验借鉴了 DARTS 的工作流程,由三个阶段构成。首先,作者将 SNAS 用于在 CIFAR-10 数据集上搜索一个小型的父网络中的卷积神经架构,并且基于它们的搜索验证准确率选出了最佳的神经架构。接着,通过堆叠学到的神经架构(子网络)构建出一个更大的网络,并且在 CIFAR-10 数据集上进行再训练,用于比较 SNAS 和其它最先进的方法的性能。最后,作者通过在 ImageNet 上评价这些模型的性能,证明了在 CIFAR-10 上学习到的神经架构可以被迁移到大型的数据集上。

图 2:在 CIFAR-10 数据集上的神经架构(子网络)的随机神经网络架构搜索(带有较弱的约束)。(a)正常的神经架构。(b)删减后的神经架构。

表 1:分别使用 SNAS 和 DARTS 得到的搜索验证准确率及子网络的验证准确率。标有「*」的结果是使用 Liu et al.(2019)的代码获得的。

图 3(左):SNAS、DARTS 以及 ENAS 的验证准确率随着搜索进度不断推进的变化情况。图 4(右):SNAS 和 DARTS 中的架构分布的熵。

如图 5 所示,子网络中更多的边被摘掉,仅仅剩下了 两条边,这导致了一些节点(包括输入节点 c_{k-1},两个中间节点 x_2、x_3)也从网络中被摘除掉。请注意,通过 ENAS 和 DARTS 是不能发现这样的子网络的。

图 5:在 CIFAR-10 数据集上的神经架构(子网络)的随机神经网络架构搜索(带有较强的约束)。(a)正常的神经架构。(b)删减后的神经架构。

表 2:在 CIFAR-10 数据集上,SNAS 和最先进的图像分类的分类误差。

表 3:在 ImageNet 数据集上,SNAS 和最先进的图像分类的分类误差。

入门神经架构搜索AutoMLNASSNAS
4
相关数据
深度学习技术

深度学习(deep learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。 深度学习是机器学习中一种基于对数据进行表征学习的算法,至今已有数种深度学习框架,如卷积神经网络和深度置信网络和递归神经网络等已被应用在计算机视觉、语音识别、自然语言处理、音频识别与生物信息学等领域并获取了极好的效果。

参数技术

在数学和统计学裡,参数(英语:parameter)是使用通用变量来建立函数和变量之间关系(当这种关系很难用方程来阐述时)的一个数量。

概率分布技术

概率分布(probability distribution)或简称分布,是概率论的一个概念。广义地,它指称随机变量的概率性质--当我们说概率空间中的两个随机变量具有同样的分布(或同分布)时,我们是无法用概率来区别它们的。

收敛技术

在数学,计算机科学和逻辑学中,收敛指的是不同的变换序列在有限的时间内达到一个结论(变换终止),并且得出的结论是独立于达到它的路径(他们是融合的)。 通俗来说,收敛通常是指在训练期间达到的一种状态,即经过一定次数的迭代之后,训练损失和验证损失在每次迭代中的变化都非常小或根本没有变化。也就是说,如果采用当前数据进行额外的训练将无法改进模型,模型即达到收敛状态。在深度学习中,损失值有时会在最终下降之前的多次迭代中保持不变或几乎保持不变,暂时形成收敛的假象。

有向无环图技术

在图论中,如果一个有向图从任意顶点出发无法经过若干条边回到该点,则这个图是一个有向无环图(DAG图)。 因为有向图中一个点经过两种路线到达另一个点未必形成环,因此有向无环图未必能转化成树,但任何有向树均为有向无环图。

规划技术

人工智能领域的「规划」通常是指智能体执行的任务/动作的自动规划和调度,其目的是进行资源的优化。常见的规划方法包括经典规划(Classical Planning)、分层任务网络(HTN)和 logistics 规划。

损失函数技术

在数学优化,统计学,计量经济学,决策理论,机器学习和计算神经科学等领域,损失函数或成本函数是将一或多个变量的一个事件或值映射为可以直观地表示某种与之相关“成本”的实数的函数。

注意力机制技术

我们可以粗略地把神经注意机制类比成一个可以专注于输入内容的某一子集(或特征)的神经网络. 注意力机制最早是由 DeepMind 为图像分类提出的,这让「神经网络在执行预测任务时可以更多关注输入中的相关部分,更少关注不相关的部分」。当解码器生成一个用于构成目标句子的词时,源句子中仅有少部分是相关的;因此,可以应用一个基于内容的注意力机制来根据源句子动态地生成一个(加权的)语境向量(context vector), 然后网络会根据这个语境向量而不是某个固定长度的向量来预测词。

神经网络技术

(人工)神经网络是一种起源于 20 世纪 50 年代的监督式机器学习模型,那时候研究者构想了「感知器(perceptron)」的想法。这一领域的研究者通常被称为「联结主义者(Connectionist)」,因为这种模型模拟了人脑的功能。神经网络模型通常是通过反向传播算法应用梯度下降训练的。目前神经网络有两大主要类型,它们都是前馈神经网络:卷积神经网络(CNN)和循环神经网络(RNN),其中 RNN 又包含长短期记忆(LSTM)、门控循环单元(GRU)等等。深度学习是一种主要应用于神经网络帮助其取得更好结果的技术。尽管神经网络主要用于监督学习,但也有一些为无监督学习设计的变体,比如自动编码器和生成对抗网络(GAN)。

时序差分学习技术

时间差(TD)学习是一种基于预测的机器学习方法。 它主要用于强化学习问题,被称为是“蒙特卡罗思想和动态规划(DP)思想的结合”。 TD类似于蒙特卡洛方法,因为它通过对环境进行取样来学习 一些策略;其与动态规划技术相关,因为它基于先前学习的预估(自助法的过程)对当前状态进行近似估计。 TD学习算法也与动物学习的时间差模型有关

准确率技术

分类模型的正确预测所占的比例。在多类别分类中,准确率的定义为:正确的预测数/样本总数。 在二元分类中,准确率的定义为:(真正例数+真负例数)/样本总数

大数据技术技术

大数据,又称为巨量资料,指的是传统数据处理应用软件不足以处理它们的大或复杂的数据集的术语。

目标函数技术

目标函数f(x)就是用设计变量来表示的所追求的目标形式,所以目标函数就是设计变量的函数,是一个标量。从工程意义讲,目标函数是系统的性能标准,比如,一个结构的最轻重量、最低造价、最合理形式;一件产品的最短生产时间、最小能量消耗;一个实验的最佳配方等等,建立目标函数的过程就是寻找设计变量与目标的关系的过程,目标函数和设计变量的关系可用曲线、曲面或超曲面表示。

神经元技术

(人工)神经元是一个类比于生物神经元的数学计算模型,是神经网络的基本组成单元。 对于生物神经网络,每个神经元与其他神经元相连,当它“兴奋”时会向相连的神经元发送化学物质,从而改变这些神经元的电位;神经元的“兴奋”由其电位决定,当它的电位超过一个“阈值”(threshold)便会被激活,亦即“兴奋”。 目前最常见的神经元模型是基于1943年 Warren McCulloch 和 Walter Pitts提出的“M-P 神经元模型”。 在这个模型中,神经元通过带权重的连接接处理来自n个其他神经元的输入信号,其总输入值将与神经元的阈值进行比较,最后通过“激活函数”(activation function)产生神经元的输出。

图像分类技术

图像分类,根据各自在图像信息中所反映的不同特征,把不同类别的目标区分开来的图像处理方法。它利用计算机对图像进行定量分析,把图像或图像中的每个像元或区域划归为若干个类别中的某一种,以代替人的视觉判读。

强化学习技术

强化学习是一种试错方法,其目标是让软件智能体在特定环境中能够采取回报最大化的行为。强化学习在马尔可夫决策过程环境中主要使用的技术是动态规划(Dynamic Programming)。流行的强化学习方法包括自适应动态规划(ADP)、时间差分(TD)学习、状态-动作-回报-状态-动作(SARSA)算法、Q 学习、深度强化学习(DQN);其应用包括下棋类游戏、机器人控制和工作调度等。

堆叠技术

堆叠泛化是一种用于最小化一个或多个泛化器的泛化误差率的方法。它通过推导泛化器相对于所提供的学习集的偏差来发挥其作用。这个推导的过程包括:在第二层中将第一层的原始泛化器对部分学习集的猜测进行泛化,以及尝试对学习集的剩余部分进行猜测,并且输出正确的结果。当与多个泛化器一起使用时,堆叠泛化可以被看作是一个交叉验证的复杂版本,利用比交叉验证更为复杂的策略来组合各个泛化器。当与单个泛化器一起使用时,堆叠泛化是一种用于估计(然后纠正)泛化器的错误的方法,该泛化器已经在特定学习集上进行了训练并被询问了特定问题。

推荐文章
暂无评论
暂无评论~