Auto Byte

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

微信扫一扫获取更多资讯

Science AI

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

微信扫一扫获取更多资讯

Luo Sainan作者

寻找最佳的神经网络架构,韩松组两篇论文解读

MIT 韩松组一直走在深度模型剪枝,压缩方向的前沿。最近他们也开始尝试运用 NAS 神经框架搜索技术来推进研究。

这里整理了两篇文章:

论文如下:

  • ProxylessNAS: Direct Neural Architecture Search on Target Task and Hardware

  • HAQ: Hardware-Aware Automated Quantization with Mixed Precision

第一篇是利用 NAS 技术直接为特定的硬件在特定的任务上搜索最优的网络框架结构。

第二篇则是利用强化学习自动寻找在特定 latency 标准上精度最好的量化神经网络结构,它分别为网络的每一层搜索不同 bit 的权值和激活,得到一个经过优化的混合精度模型。两篇文章的相同之处在于,都直接从特定的硬件获得反馈信息,如 latency,energy 和 storage,而不是使用代理信息,再利用这些信息直接优化神经网络架构 (或量化 bit 数) 搜索算法。这也许会成为工业界未来的新范式。

第一篇:

PROXYLESSNAS: DIRECT NEURAL ARCHITECTURE SEARCH ON TARGET TASK AND HARDWARE

论文链接:

  • v1: _https://arxiv.org/pdf/1812.00332v1.pdf

  • v2: _https://arxiv.org/pdf/1812.00332v2.pdf

2018 年 12 月份在 arxiv 上发布 v1 版本时,之心就已经出过一篇本论文的讲解啦,2019 年 2 月份作者上传了 v2 版本,最终该论文收录于 ICLR2019。相比于 v1 版本,v2 版本在 4.2 节中增加了部分 CNN 架构和多目标 NAS 任务的文献引用,在附录部分增加了基于梯度的算法的实现说明。2019 年 8 月 10 日,训练代码新鲜出炉,已上传至 Github 中。让我们再来重温一下韩松组所做的工作吧~

一、NAS 是什么?此前的研究有哪些待解决的问题?

神经结构搜索 (NAS) 是一种自动化设计人工神经网络 (ANN) 的技术,被用于设计与手工设计的网络性能相同甚至更优的网络。目前 NAS 已经在图像识别和语言模型等任务的自动化神经网络结构设计中取得了显著成功。

但传统的 NAS 算法需要消耗极高的计算资源,通常需要在单个实验中训练数千个网络模型进行学习从而完成目标任务。虽然在小型数据集上有较好表现,但直接在大规模任务(如 ImageNet)上自动设计体系结构仍旧非常困难。

随后的 NAS 算法广泛采用了在代理任务 (训练更少的 epoch,使用更小的数据集,学习更少的 block) 上搜索 building block 的思想。将表现最好的 block 堆叠起来,然后迁移到大规模目标任务中。但是在代理任务上优化的体系结构无法保证在目标任务上是最优的,尤其是在考虑到延迟等硬件指标时。并且,为了实现可迁移性,这种方法仅搜索少数结构模式,重复堆叠相同的结构,限制了 block 的多样性,从而对性能造成了影响。

图 1 :基于 proxy 的方法和本文 proxyless 方法对比示意图

专业用户独享

本文为机器之心深度精选内容,专业认证后即可阅读全文
开启专业认证
理论韩松MITNAS剪枝神经计算
7
相关数据
韩松人物

2017 年斯坦福大学电子工程系博士毕业,师从 NVIDIA 首席科学家 Bill Dally 教授。他的研究也广泛涉足深度学习和计算机体系结构,他提出的 Deep Compression 模型压缩技术曾获得 ICLR'16 最佳论文,ESE 稀疏神经网络推理引擎获得 FPGA'17 最佳论文,对业界影响深远。他的研究成果在 NVIDIA、Google、Facebook 得到广泛应用,博士期间创立了深鉴科技,现为麻省理工学院电气工程和计算机科学系的助理教授。

池化技术

池化(Pooling)是卷积神经网络中的一个重要的概念,它实际上是一种形式的降采样。有多种不同形式的非线性池化函数,而其中“最大池化(Max pooling)”是最为常见的。它是将输入的图像划分为若干个矩形区域,对每个子区域输出最大值。直觉上,这种机制能够有效的原因在于,在发现一个特征之后,它的精确位置远不及它和其他特征的相对位置的关系重要。池化层会不断地减小数据的空间大小,因此参数的数量和计算量也会下降,这在一定程度上也控制了过拟合。通常来说,CNN的卷积层之间都会周期性地插入池化层。

权重技术

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

机器学习技术

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

二值化技术

二值化是将像素图像转换为二进制图像的过程。

感知技术

知觉或感知是外界刺激作用于感官时,脑对外界的整体的看法和理解,为我们对外界的感官信息进行组织和解释。在认知科学中,也可看作一组程序,包括获取信息、理解信息、筛选信息、组织信息。与感觉不同,知觉反映的是由对象的各样属性及关系构成的整体。

参数技术

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

剪枝技术

剪枝顾名思义,就是删去一些不重要的节点,来减小计算或搜索的复杂度。剪枝在很多算法中都有很好的应用,如:决策树,神经网络,搜索算法,数据库的设计等。在决策树和神经网络中,剪枝可以有效缓解过拟合问题并减小计算复杂度;在搜索算法中,可以减小搜索范围,提高搜索效率。

有向无环图技术

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

量化神经网络技术

网络量化通过减少表示每个权重所需的比特数来压缩原始网络。Gong et al. 对参数值使用 K-Means 量化。Vanhoucke et al. 使用了 8 比特参数量化可以在准确率损失极小的同时实现大幅加速。Han S 提出一套完整的深度网络的压缩流程:首先修剪不重要的连接,重新训练稀疏连接的网络。然后使用权重共享量化连接的权重,再对量化后的权重和码本进行霍夫曼编码,以进一步降低压缩率。

验证集技术

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

神经网络技术

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

梯度下降技术

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

准确率技术

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

正则化技术

当模型的复杂度增大时,训练误差会逐渐减小并趋向于0;而测试误差会先减小,达到最小值后又增大。当选择的模型复杂度过大时,过拟合现象就会发生。这样,在学习时就要防止过拟合。进行最优模型的选择,即选择复杂度适当的模型,以达到使测试误差最小的学习目的。

动量技术

优化器的一种,是模拟物理里动量的概念,其在相关方向可以加速SGD,抑制振荡,从而加快收敛

强化学习技术

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

堆叠技术

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

深度神经网络技术

深度神经网络(DNN)是深度学习的一种框架,它是一种具备至少一个隐层的神经网络。与浅层神经网络类似,深度神经网络也能够为复杂非线性系统提供建模,但多出的层次为模型提供了更高的抽象层次,因而提高了模型的能力。

语言模型技术

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

机器之心机构

机器之心,成立于2014年,是国内最具影响力、最专业、唯一用于国际品牌的人工智能信息服务与产业服务平台。目前机器之心已经建立起涵盖媒体、数据、活动、研究及咨询、线下物理空间于一体的业务体系,为各类人工智能从业者提供综合信息服务和产业服务。

https://www.jiqizhixin.com/
神经结构搜索技术

神经结构搜索(NAS)表示自动设计人工神经网络(ANN)的过程。

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