Auto Byte

专注未来出行及智能汽车科技

微信扫一扫获取更多资讯

Science AI

关注人工智能与其他前沿技术、基础学科的交叉研究与融合发展

微信扫一扫获取更多资讯

指数级加速架构搜索:CMU提出基于梯度下降的可微架构搜索方法

寻找最优神经网络架构的任务通常需要机器学习专家花费大量时间来完成,最近人们提出的自动架构搜索方法释放了我们的精力,但却非常消耗算力。由卡耐基梅隆大学(CMU)在读博士刘寒骁、DeepMind 研究员 Karen Simonyan 以及 CMU 教授杨一鸣提出的「可微架构搜索」DARTS 方法基于连续搜索空间的梯度下降,可让计算机更高效地搜索神经网络架构。

研究者称,该方法已被证明在卷积神经网络和循环神经网络上都可以获得业内最优的效果,而所用 GPU 算力有时甚至仅为此前搜索方法的 700 分之 1,这意味着单块 GPU 也可以完成任务。该研究的论文《DARTS: Differentiable Architecture Search》一经发出便引起了 Andrew Karpathy、Oriol Vinyals 等学者的关注。

DARTS 代码: https://github.com/quark0/darts

引言

发现最优的神经网络架构需要人类专家耗费大量精力才能实现。近来,人们对开发算法来解决架构设计过程的自动化问题产生了兴趣。自动化的架构搜索已经在诸如图像分类和目标检测这样的任务中获得了非常有竞争力的性能。

当前最佳的架构搜索算法尽管性能优越,但需要很高的计算开销。例如,在 CIFAR-10 和 ImageNet 上获得当前最佳架构需要强化学习的 1800 个 GPU 工作天数 (Zoph et al., 2017) 或进化算法的 3150 个 GPU 工作天数(Real et al., 2018)。人们已经提出了很多加速方法,例如为搜索空间强加特定的结构(Liu et al., 2017b,a),为每个单独架构强加权重或性能预测(Brock et al., 2017; Baker et al., 2018)以及在多个架构之间共享权重(Pham et al., 2018b; Cai et al., 2018),但可扩展性的基本挑战仍然存在。主要方法(例如基于强化学习、进化算法、MCTS(Negrinho and Gordon, 2017)、SMBO(Liu et al., 2017a)或贝叶斯优化(Kandasamy et al., 2018))低效性的一个内部原因是,架构搜索被当成一种在离散域上的黑箱优化问题,这导致需要大量的架构评估。

在这项研究中,我们从一个不同的角度来解决这个问题,并提出了一个高效架构搜索方法 DARTS(可微架构搜索)。该方法不同于之前在候选架构的离散集上搜索的方式,而是将搜索空间松弛为连续的,从而架构可以通过梯度下降并根据在验证集上的表现进行优化。与基于梯度优化的数据有效性和低效的黑箱搜索相反,它允许 DARTS 使用少几个数量级的计算资源达到和当前最佳性能有竞争力的结果。它还超越了其它近期的高效架构搜索方法 ENAS(Pham et al., 2018b)。值得注意的是,DARTS 比很多已有的方法都简单,因为它并不涉及任何控制器(Zoph and Le, 2016; Baker et al., 2016; Zoph et al., 2017; Pham et al., 2018b)、超网络(Brock et al., 2017)或性能预测器(Liu et al., 2017a),然而它也能足够通用地搜索卷积和循环架构。

在连续域中搜索架构的概念并不新鲜(Saxena 和 Verbeek,2016;Ahmed 和 Torresani,2017;Shin 等,2018),但有几个主要区别。尽管先前的工作试图微调架构的特定方面,例如卷积网络中的滤波器形状或分支模式,但 DARTS 能够在丰富的搜索空间中发现具有复杂图形拓扑的高性能架构。此外,DARTS 并不限于任何特定的架构族,且能够搜索卷积网络和循环网络。

实验证明 DARTS 设计的卷积单元可在 CIFAR-10 上获得 2.83 ± 0.06% 的测试误差,与使用正则化进化方法(Real et al., 2018)的当前最优结果不相上下,而后者使用的计算资源高于前者三个数量级。同样的卷积单元迁移至 ImageNet(移动端)后也得到了 26.9% 的 top-1 误差,与最优强化学习方法(Zoph et al., 2017)旗鼓相当。在语言建模任务上,DARTS 发现的循环单元在单个 GPU 工作天数的训练时间中即在 PTB 上获得了 56.1 的困惑度(perplexity),优于大规模调参的 LSTM(Melis et al., 2017)和基于 NAS(Zoph and Le, 2016)与 ENAS(Pham et al., 2018b)的所有现有自动搜索单元。

本论文的贡献如下:

  • 介绍了一种新型算法用于可微网络架构搜索,该算法适用于卷积架构和循环架构。

  • 在图像分类和语言建模任务上进行的大量实验表明:基于梯度的架构搜索在 CIFAR-10 上获得了极具竞争力的结果,在 PTB 上的性能优于之前最优的结果。这个结果非常有趣,要知道目前最好的架构搜索方法使用的是不可微搜索方法,如基于强化学习(Zoph et al., 2017)或进化(Real et al., 2018; Liu et al., 2017b)的方法。

  • 达到了优秀的架构搜索效率(使用 4 块 GPU:经过 1 天训练之后在 CIFAR-10 上达到了 2.83% 的误差;经过六小时训练后在 PTB 达到了 56.1 的困惑度,研究者将其归功于基于梯度的优化方法)。

  • 展示了 DARTS 在 CIFAR-10 和 PTB 上学到的架构分别可迁移至 ImageNet 和 WikiText-2。


图 1:DARTS 概述:(a)一开始并不知道对边缘的操作。(b)通过在每个边缘放置各种候选操作来连续放宽搜索空间。(c)通过求解二级(bilevel)优化问题,联合优化混合概率和网络权重。(d)从学习到的混合概率中归纳出最终的架构。

图 3:CIFAR-10 卷积单元和 Penn Treebank 循环单元的 DARTS 搜索进展。随着时间的推移,该方法会持续追踪最新的架构。每个架构的瞬象(snapshot)都使用训练集从头开始重新训练(CIFAR-10 上的 100 个 epoch 和 PTB 上的 300 个 epoch),然后在验证集上进行评估。对于每个任务,我们用不同的随机种子重复实验 4 次,并随着时间的推移报告架构每次运行的中值和最佳验证性能。作为参考,我们还报告了(在相同的评估设置下;具有可比较数量的参数)通过进化或使用强化学习发现的最佳已有单元的结果,包括 NASNet-A(Zoph 等,2017)(1800 个 GPU 工作天数),AmoebaNet-A(3150 个 GPU 工作天数)(Real 等,2018)和 ENAS(0.5 个 GPU 工作天数)(Pham 等,2018b)。

架构评估

为了选择要评估的架构,研究者使用不同的随机种子运行了四次 DARTS,基于验证性能选择了最好的单元。这对循环单元来说尤其重要,因为优化结果与初始化有较大关联(图 3)。

图 4:在 CIFAR-10 上习得的 normal 单元。

图 5:在 CIFAR-10 上习得的 reduction 单元。

图 6:在 PTB 上得习的循环单元。

为了评估选择的架构,研究者对架构权重进行随机初始化(在搜索过程中习得的权重被丢弃),从头训练架构,并在测试集上测试其性能。测试集未用于架构搜索或架构选择。

表 1:当前最优图像分类器在 CIFAR-10 上的对比结果。带有 † 标记的结果是使用本论文设置训练对应架构所得到的结果。

表 2:当前最优语言模型在 Penn Treebank 上的对比结果。带有 † 标记的结果是使用本论文设置训练对应架构所得到的结果。

论文:DARTS: Differentiable Architecture Search

论文链接:https://arxiv.org/abs/1806.09055

摘要:本论文用可微的方式重构架构搜索任务,解决了该任务的可扩展性难题。与在离散和不可微搜索空间中使用进化算法或强化学习的传统方法不同,我们的方法基于架构表征的连续松弛,利用梯度下降实现架构的高效搜索。我们在 CIFAR-10、ImageNet、Penn Treebank 和 WikiText-2 上进行了大量实验,结果表明我们的算法在发现高性能的图像分类卷积架构和语言建模循环架构中表现优异,且该算法的速度比之前最优的不可微方法快了几个数量级。

理论深度神经网络架构搜索梯度下降CMU
2
相关数据
权重技术

线性模型中特征的系数,或深度网络中的边。训练线性模型的目标是确定每个特征的理想权重。如果权重为 0,则相应的特征对模型来说没有任何贡献。

机器学习技术

机器学习是人工智能的一个分支,是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、计算复杂性理论等多门学科。机器学习理论主要是设计和分析一些让计算机可以自动“学习”的算法。因为学习算法中涉及了大量的统计学理论,机器学习与推断统计学联系尤为密切,也被称为统计学习理论。算法设计方面,机器学习理论关注可以实现的,行之有效的学习算法。

重构技术

代码重构(英语:Code refactoring)指对软件代码做任何更动以增加可读性或者简化结构而不影响输出结果。 软件重构需要借助工具完成,重构工具能够修改代码同时修改所有引用该代码的地方。在极限编程的方法学中,重构需要单元测试来支持。

参数技术

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

验证集技术

验证数据集是用于调整分类器超参数(即模型结构)的一组数据集,它有时也被称为开发集(dev set)。

神经网络技术

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

梯度下降技术

梯度下降是用于查找函数最小值的一阶迭代优化算法。 要使用梯度下降找到函数的局部最小值,可以采用与当前点的函数梯度(或近似梯度)的负值成比例的步骤。 如果采取的步骤与梯度的正值成比例,则接近该函数的局部最大值,被称为梯度上升。

卷积神经网络技术

卷积神经网路(Convolutional Neural Network, CNN)是一种前馈神经网络,它的人工神经元可以响应一部分覆盖范围内的周围单元,对于大型图像处理有出色表现。卷积神经网路由一个或多个卷积层和顶端的全连通层(对应经典的神经网路)组成,同时也包括关联权重和池化层(pooling layer)。这一结构使得卷积神经网路能够利用输入数据的二维结构。与其他深度学习结构相比,卷积神经网路在图像和语音识别方面能够给出更好的结果。这一模型也可以使用反向传播算法进行训练。相比较其他深度、前馈神经网路,卷积神经网路需要考量的参数更少,使之成为一种颇具吸引力的深度学习结构。 卷积网络是一种专门用于处理具有已知的、网格状拓扑的数据的神经网络。例如时间序列数据,它可以被认为是以一定时间间隔采样的一维网格,又如图像数据,其可以被认为是二维像素网格。

规范化技术

规范化:将属性数据按比例缩放,使之落入一个小的特定区间,如-1.0 到1.0 或0.0 到1.0。 通过将属性数据按比例缩放,使之落入一个小的特定区间,如0.0到1.0,对属性规范化。对于距离度量分类算法,如涉及神经网络或诸如最临近分类和聚类的分类算法,规范化特别有用。如果使用神经网络后向传播算法进行分类挖掘,对于训练样本属性输入值规范化将有助于加快学习阶段的速度。对于基于距离的方法,规范化可以帮助防止具有较大初始值域的属性与具有较小初始值域的属相相比,权重过大。有许多数据规范化的方法,包括最小-最大规范化、z-score规范化和按小数定标规范化。

混乱度技术

衡量概率分布或概率模型预测样本能力的一个度量单位,其可以被用来比较概率模型的好坏,值越低表示在预测样本方面的效果越好。

强化学习技术

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

语言模型技术

语言模型经常使用在许多自然语言处理方面的应用,如语音识别,机器翻译,词性标注,句法分析和资讯检索。由于字词与句子都是任意组合的长度,因此在训练过的语言模型中会出现未曾出现的字串(资料稀疏的问题),也使得在语料库中估算字串的机率变得很困难,这也是要使用近似的平滑n元语法(N-gram)模型之原因。

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