谷歌提出移动端AutoML模型MnasNet:精度无损速度更快

目前开发者可以使用非常多的移动端 CNN 架构,也可以在机器上训练新颖的视觉模型并部署到手机端。但各种各样的移动端任务可能并不能借助已有的 CNN 架构达到非常好的效果,因此谷歌近日将神经架构搜索方法引入了轻量级的 CNN 网络,并提出基于强化学习的 MnasNet 以自动设计移动端模型。

卷积神经网络(CNN)已被广泛用于图像分类、人脸识别、目标检测和其他领域。然而,为移动设备设计 CNN 是一项具有挑战性的工作,因为移动端模型需要体积小、速度快,还要保持精准。尽管人们已经做了大量努力来设计和改进移动端模型,如 MobileNet 和 MobileNetV2,但手动创建高效模型仍然是一项挑战,因为要考虑的因素太多。从最近 AutoML 神经架构搜索方面的进展受到启发,我们在想移动端 CNN 模型的设计是否也能受益于 AutoML 方法。

在《MnasNet: Platform-Aware Neural Architecture Search for Mobile》一文中,我们探索了一种使用强化学习设计移动端模型的自动化神经架构搜索方法。为了处理移动端速度限制,我们明确地将速度信息纳入搜索算法的主要奖励函数中,以便搜索可以识别一个在准确率和速度之间实现良好平衡的模型。如此,MnasNet 能够找到运行速度比 MobileNet V2(手工制造的最先进水平)快 1.5 倍、比 NASNet 快 2.4 倍的型号,同时达到同样的 ImageNet top-1 准确率

不同于以前的架构搜索方法,在这种方法中,模型速度是通过另一个替代品(如 FLOPS)来考虑的。我们的方法通过在特定平台上执行模型来直接测量模型速度,例如本研究中使用的 Pixel 手机。通过这种方式,我们可以直接测量现实世界中可以实现的指标,因为每种类型的移动设备都有自己的软件和硬件特性,并且可能需要不同的架构来在准确率和速度之间做出最佳权衡。

我们方法的总体流程主要包括三个部分:一个基于 RNN 的学习和采样模型架构控制器,一个建立和训练模型以获得准确率的训练器,以及一个使用 TensorFlow Lite 测量真实手机上模型速度的推理引擎。我们制定了一个多目标优化问题,旨在实现高准确率和高速,并利用带有定制奖励函数的强化学习算法来寻找帕累托最优解 (例如,具有最高准确率但速度不变的模型)。

移动端自动神经架构搜索方法的整体流程图

为了在搜索灵活性与搜索空间大小之间取得适当的平衡,我们提出了一种新型因子化的层级搜索空间,它将卷积神经网络分解为一个由模块组成的序列,然后使用层级搜索空间决定每一个模块的层级结构。通过这种方式,我们的方法允许不同的层级使用不同的运算与连接。同时,我们强制每一个模块共享相同的结构,因此与逐层搜索相比搜索空间要显著地小几个数量级。

我们的 MnasNet 网络从新型因子化层级搜索空间中采样,上图展示了网络架构中的不同层级。

我们在 ImageNet 分类和 COCO 目标检测任务上测试了该方法的有效性。我们的实验在典型的移动端资源下实现了新的当前最优准确度。特别地,下图展示了该网络在 ImageNet 上的结果。

ImageNet 准确率和推理延迟的对比。

在相同的准确率下,MnasNet 模型的速度比手工调参得到的当前最佳模型 MobileNet V2 快 1.5 倍,并且比 NASNet 快 2.4 倍,它也是使用架构搜索的算法。在应用压缩和激活(squeeze-and-excitation)优化方法后,MnasNet+SE 模型获得了 76.1% 的 ResNet 级别的 top-1 准确率,其中参数数量是 ResNet 的 1/19,且乘法-加法运算量是它的 1/10。在 COCO 目标检测任务上,我们的模型族获得了比 MobileNet 更快的速度和更高的准确率,并在 1/35 的计算成本下获得了和 SSD300 相当的准确率

我们很高兴看到该自动化架构搜索方法可以在多个复杂移动设备视觉任务上取得当前最佳性能。在未来,我们计划把更多的运算和优化方法整合到搜索空间中,并将其应用到更多的移动设备视觉任务上,例如语义分割。

原文地址:https://ai.googleblog.com/2018/08/mnasnet-towards-automating-design-of.html

理论架构搜索AutoML移动端
4
相关数据
卷积神经网络技术
Convolutional neural network

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

人脸识别技术
Facial recognition

广义的人脸识别实际包括构建人脸识别系统的一系列相关技术,包括人脸图像采集、人脸定位、人脸识别预处理、身份确认以及身份查找等;而狭义的人脸识别特指通过人脸进行身份确认或者身份查找的技术或系统。 人脸识别是一项热门的计算机技术研究领域,它属于生物特征识别技术,是对生物体(一般特指人)本身的生物特征来区分生物体个体。

推理引擎技术
Inference engine

推理机是实施问题求解的核心执行机构,常见于专家系统。它是对知识进行解释的程序,根据知识的语义,对按一定策略找到的知识进行解释执行,并把结果记录到动态库的适当空间中去。

参数技术
parameter

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

强化学习技术
Reinforcement learning

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

张量技术
Tensor

张量是一个可用来表示在一些矢量、标量和其他张量之间的线性关系的多线性函数,这些线性关系的基本例子有内积、外积、线性映射以及笛卡儿积。其坐标在 维空间内,有 个分量的一种量,其中每个分量都是坐标的函数,而在坐标变换时,这些分量也依照某些规则作线性变换。称为该张量的秩或阶(与矩阵的秩和阶均无关系)。 在数学里,张量是一种几何实体,或者说广义上的“数量”。张量概念包括标量、矢量和线性算子。张量可以用坐标系统来表达,记作标量的数组,但它是定义为“不依赖于参照系的选择的”。张量在物理和工程学中很重要。例如在扩散张量成像中,表达器官对于水的在各个方向的微分透性的张量可以用来产生大脑的扫描图。工程上最重要的例子可能就是应力张量和应变张量了,它们都是二阶张量,对于一般线性材料他们之间的关系由一个四阶弹性张量来决定。

TensorFlow技术
TensorFlow

TensorFlow是一个开源软件库,用于各种感知和语言理解任务的机器学习。目前被50个团队用于研究和生产许多Google商业产品,如语音识别、Gmail、Google 相册和搜索,其中许多产品曾使用过其前任软件DistBelief。

准确率技术
Accuracy

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

推荐文章