参与路 王淑婷 张倩

韩松、李佳等人提出AMC:用于移动端模型压缩与加速的AutoML

移动设备的计算资源和能耗预算都很有限,因此模型压缩对于在移动设备上部署神经网络模型至关重要。传统的模型压缩技术依赖手工设计的启发式和基于规则的策略,需要领域专家探索较大的设计空间,在模型大小、速度和准确率之间作出权衡。本论文提出了适用于模型压缩的 AutoML(AMC),利用强化学习提供模型压缩策略,优化传统的基于规则的压缩策略。

在许多机器学习应用(如机器人学自动驾驶及广告排名)中,深度神经网络受到延迟、能耗及模型大小等因素的限制。人们提出了很多模型压缩方法来提高神经网络的硬件效率 [26 ,19 ,22]。模型压缩技术的核心是决定每一层的压缩策略,因为各层的冗余情况不同,通常需要手工设计的启发方法和领域专业技术来探索模型尺寸、速度及准确率之间的大型设计空间权衡。设计空间如此之大,以至于手工设计的方法通常不是最优解,手动模型压缩也非常耗时。为了解决这一问题,本文旨在为任意网络自动寻找压缩策略,以达到优于基于规则的手工模型压缩方法的性能。

当前已有许多基于规则的模型压缩启发方法 [20,16]。例如,在抽取低级特征且参数最少的第一层中剪掉更少的参数;在 FC 层中剪掉更多的参数,因为 FC 层参数最多;在对剪枝敏感的层中减掉更少的参数等。然而,由于深度神经网络中的层不是孤立的,这些基于规则的剪枝策略并不是最优的,也不能从一个模型迁移到另一个模型。神经网络架构发展迅速,因此需要一种自动方法对其进行压缩,以提高工程效率。随着神经网络逐渐加深,设计空间的复杂度可达指数级,因此利用贪婪、基于规则的方法解决这一问题并不可行。所以,本文提出了针对模型压缩的 AutoML(AutoML for Model Compression,AMC),该方法利用强化学习自动采样设计空间并提高模型压缩的质量。图 1 展示了 AMC 引擎。压缩网络时,AMC 引擎通过基于学习的策略将此过程自动化,而不是依赖基于规则的策略和经验丰富的工程师。

图 1:AMC 引擎图示。左:AMC 取代人类,使模型压缩完全自动化,而且表现优于人类。右:将 AMC 构造成强化学习问题。作者逐层处理了一个预训练网络(即 MobileNet)。强化学习智能体(DDPG)从 t 层接收嵌入 s_t,输出稀疏比率 a_t。用 a_t 对层进行压缩后,智能体移动到下一层 L_t+1。评估所有层都被压缩的修剪后模型的准确率。最后,奖励 R 作为准确率和 FLOP 的函数被返回到强化学习智能体。

在本文中,压缩模型的准确率对每一层的稀疏性非常敏感,需要细粒度的动作空间。因此,作者没有在离散空间中搜索,而是提出了一种带有 DDPG[32] 智能体的连续压缩比控制策略,通过试验和误差来学习:在鼓励模型收缩和加速的同时惩罚准确率损失。行为-评判结构也有助于减少差异,促进更稳定的训练。具体来说,该 DDPG 智能体逐层处理网络。对于每层 L_t,智能体接收一层嵌入 s_t,s_t 编码该层的有用特性,然后输出精确的压缩比 a_t。用 a_t 压缩 L_t 层后,智能体移动到下一层 L_t+1。所有压缩层修剪模型的验证准确率是在没有微调的情况下进行评估的,该准确率可有效代表微调准确率。这种简单的近似可以减少搜索时间,而不必重新训练模型,并提供高质量的搜索结果。策略搜索完成后,对最佳探索模型进行微调,以获得最佳性能。

本文针对不同的场景提出了两种压缩策略搜索协议。针对受延迟影响较大的人工智能应用(如移动 APP、自动驾驶汽车和广告排名),本文提出了资源受限的压缩,以便在给定最大量硬件资源(如 FLOP、延迟和模型大小)的情况下实现最佳准确率;对于质量至上的人工智能应用(如 Google Photos),本文提出了保证准确率的压缩,以便在不损失准确率的情况下得到最小的模型。

作者通过限制搜索空间来实现资源受限的压缩,在搜索空间中,动作空间(剪枝率)受到限制,使得被智能体压缩的模型总是低于资源预算。对于保证准确率的压缩,作者定义了一个奖励,它是准确率和硬件资源的函数。有了这个奖励函数,作者能够在不损害模型准确率的前提下探索压缩的极限。

为了证明其广泛的适用性,作者在多个神经网络上评估了该 AMC 引擎,包括 VGG [45], ResNet [21], and MobileNet [23],并测试了压缩模型从分类到目标检测的泛化能力。大量实验表明,AMC 提供了比手工设计的启发式策略更好的性能。对于 ResNet-50,作者把专家调优的压缩比 [16] 从 3.4 倍提高到了 5 倍而不损失准确率。此外,该研究将 MobileNet 的 FLOP 减少了 2 倍,使最高准确率达到了 70.2%,这一数字的曲线比 0.75 MobileNet 的帕累托曲线(Pareto curve)更好。在 Titan XP 和安卓手机上,分别实现了 1.53 倍和 1.95 倍的加速。

论文:AMC: AutoML for Model Compression and Acceleration on Mobile Devices

论文链接:https://arxiv.org/pdf/1802.03494.pdf

摘要:移动设备的计算资源和能耗预算都很有限,因此模型压缩对于在移动设备上部署神经网络模型至关重要。传统的模型压缩技术依赖手工设计的启发式和基于规则的策略,需要领域专家探索较大的设计空间,在模型大小、速度和准确率之间作出权衡,而这通常是次优且耗时的。本论文提出了适用于模型压缩的 AutoML(AMC),利用强化学习提供模型压缩策略。这一基于学习的压缩策略优化传统的基于规则的压缩策略,因其具备更高的压缩率,能够更好地维持准确率,免除人类的手工劳动。在 4 倍每秒浮点运算次数缩减的情况下,在 ImageNet 上对 VGG-16 进行压缩时,使用我们的压缩方法达到的准确率比使用手工设计的模型压缩策略的准确率高 2.7%。我们将该自动、一键式压缩流程应用到 MobileNet,在安卓手机上得到了 1.81 倍的推断延迟速度提升,在 Titan XP GPU 上实现了 1.43 倍的速度提升,而 ImageNet Top-1 准确率仅损失了 0.1%。

表 1:模型搜索强化学习方法对比(NAS:神经架构搜索 [57]、NT:网络变换(Network Transformation)[6]、N2N:Network to Network [2] 和 AMC:AutoML for Model Compression。AMC 与其他方法的区别在于它无需微调和连续搜索空间控制即可获取奖励,且能够生成兼具准确率和适应有限硬件资源的模型。

3.3 搜索协议

资源受限的压缩。通过限制动作空间(每一层的稀疏率(sparsity ratio)),我们能够准确达到目标压缩率。我们使用下列奖励函数:

通过调整奖励函数获得保证准确率的压缩,我们可以准确找到压缩的极限而不损失准确率。我们凭经验观察到误差与 log(FLOP s) 或 log(#Param) [7] 成反比。受此启发,我们设计了以下奖励函数:

4 实验

表 2:Plain-20、ResNet [21] 在 CIFAR-10 [28] 上的剪枝策略对比。R_Err 指使用通道剪枝的限制 FLOP 压缩,R_Param 指使用微调剪枝的保证准确率压缩。对于浅层网络 Plain-20 和较深层的网络 ResNet,AMC 显著优于手动设计的策略。这说明无需微调也能实现高效压缩。尽管 AMC 在模型架构上做了很多尝试,但本文使用的是单独的验证集和测试集。实验中未观察到过拟合现象。

图 2:在 2 倍每秒浮点运算次数的情况下,Plain-20 的剪枝策略对比。统一策略为每个层统一设置相同的压缩率。浅层和深层策略分别大幅修剪较浅和较深的层。AMC 给出的策略看起来像锯齿,类似于瓶颈结构 [21]。AMC 给出的准确率优于手工策略。

图 4:本文中的强化学习智能体(AMC)可以在不损失准确率的前提下将模型修剪为与人类专家相比密度较低的模型(人类专家:在 ResNet50 上压缩 3.4 倍。AMC:在 ResNet50 上压缩 5 倍)。

表 3:基于学习的模型压缩(AMC)优于基于规则的模型压缩。基于规则的启发方法不是最优方法。(参考信息:VGG-16 的基线 top-1 准确率是 70.5%,MobileNet 是 70.6%,MobileNet-V2 是 71.8%)。

图 5:(a)比较 AMC、人类专家、未修剪的 MobileNet 之间的准确率和 MAC 权衡。在帕累托最优曲线中,AMC 遥遥领先人类专家。(b)比较 AMC、NetAdapt、未修剪 MobileNet 之间的准确率和延迟权衡。AMC 大幅改善了 MobileNet 的帕累托曲线。基于 AMC 的强化学习在帕累托曲线上超越了基于启发方法的 NetAdapt(推断时间都是在谷歌 Pixel 1 上测量的)。

表 4:AMC 加速 MobileNet。之前利用基于规则的策略修剪 MobileNet 导致准确率大幅下降 [31],但 AMC 利用基于学习的修剪就能保持较高的准确率。在谷歌 Pixel-1 CPU 上,AMC 实现了 1.95 倍的加速,批大小为 1,同时节省了 34 % 的内存。在英伟达 Titan XP GPU 上,AMC 实现了 1.53 倍的加速,批大小为 50。所有实验中的输入图像大小为 224×224,苹果与苹果的比较不采用量化。

表 5:在 PASCAL VOC 2007 上用 VGG16 压缩 Faster R-CNN。与分类任务一致,AMC 在相同压缩比的情况下,在目标检测任务上也能获得更好的性能。

理论MIT谷歌
3
相关数据
人工智能技术
Artificial Intelligence

在学术研究领域,人工智能通常指能够感知周围环境并采取行动以实现最优的可能结果的智能体(intelligent agent)

自动驾驶汽车技术
Autonomous cars

自动驾驶汽车,又称为无人驾驶汽车、电脑驾驶汽车或轮式移动机器人,是自动化载具的一种,具有传统汽车的运输能力。作为自动化载具,自动驾驶汽车不需要人为操作即能感测其环境及导航。

神经网络技术
Neural Network

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

深度神经网络技术
Deep neural network

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

图网技术
ImageNet

机器学习技术
Machine Learning

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

过拟合技术
Overfitting

过拟合是指为了得到一致假设而使假设变得过度严格。避免过拟合是分类器设计中的一个核心任务。通常采用增大数据量和测试样本集的方法对分类器性能进行评价。

策略搜索技术
policy search

策略搜索是强化学习中的一个子领域,其重点是为给定的策略找到合适的表示参数。它非常适合机器人学,因为它可以处理高维状态和动作空间这类机器人学习中的主要挑战。

参数技术
parameter

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

自动驾驶技术
self-driving

从 20 世纪 80 年代首次成功演示以来(Dickmanns & Mysliwetz (1992); Dickmanns & Graefe (1988); Thorpe et al. (1988)),自动驾驶汽车领域已经取得了巨大进展。尽管有了这些进展,但在任意复杂环境中实现完全自动驾驶导航仍被认为还需要数十年的发展。原因有两个:首先,在复杂的动态环境中运行的自动驾驶系统需要人工智能归纳不可预测的情境,从而进行实时推论。第二,信息性决策需要准确的感知,目前大部分已有的计算机视觉系统有一定的错误率,这是自动驾驶导航所无法接受的。

剪枝技术
Pruning

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

强化学习技术
Reinforcement learning

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

机器人学技术
Robotics

机器人学(Robotics)研究的是「机器人的设计、制造、运作和应用,以及控制它们的计算机系统、传感反馈和信息处理」 [25] 。 机器人可以分成两大类:固定机器人和移动机器人。固定机器人通常被用于工业生产(比如用于装配线)。常见的移动机器人应用有货运机器人、空中机器人和自动载具。机器人需要不同部件和系统的协作才能实现最优的作业。其中在硬件上包含传感器、反应器和控制器;另外还有能够实现感知能力的软件,比如定位、地图测绘和目标识别。之前章节中提及的技术都可以在机器人上得到应用和集成,这也是人工智能领域最早的终极目标之一。

验证集技术
Validation set

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

准确率技术
Accuracy

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

机器之心
机器之心

机器之心编辑

推荐文章
返回顶部