本篇论文参考B站博主同济子豪兄视频进行撰写:Mnasnet论文精读_哔哩哔哩_bilibili
这是我的第2篇论文精读总结,解释了文章中出现的专业名词和较难理解的内容。
标题 | MnasNet: Platform-Aware Neural Architecture Search for Mobile |
---|---|
作者 | Mingxing Tan, Bo Chen, Ruoming Pang, Vijay Vasudevan, Mark Sandler, Andrew Howard, Quoc V. Le |
机构 | Google Brain, Google Inc. |
论文 | CVPR 2019 Open Access Repository (thecvf.com) |
邮箱 | {tanmingxing, bochen, rpang, vrv, sandler, howarda, qvl}@google.com |
代码 | https://github.com/tensorflow/tpu/tree/master/models/official/mnasnet |
目录
MnasNet是针对移动端边缘计算场景,以真实设备运行速度作为优化目标,通过神经网络架构搜索得到的轻量化卷积神经网络。
核心点:
1、NAS:
通过人工智能去设计人工智能的网络结构,而不是人工去手动设计(Neural Architecture Search),通过搜索神经网络的结构和超参数来找到最佳的网络架构。
2、引入多目标的优化函数:
兼顾了速度和精度为目标,所以他是一个多目标,并且在谷歌的pixel one手机上得到的latency是真实手机实测的速度(以真实平台真实算力受限的设备上真实实测的速度作为基准的)。
3、引入分层的搜索结构:
以前的神经架构搜索里面,用人工智能它不是设计出整个网络,它是设计一个模块,类似之前讲的inception模块,Xception模块或者深度可分离卷积模块。整个网络是由很多这样的模块推跌起来的。
引入分层搜索结构:把网络分成若干个block,从浅到深,每一个block里面可以有很多层,而且这些层的结构都差不多,每个block里面的层数可以有很多个。 人工智能搜索就是每一个block各自搜索各自的结构,比如底层的block,深层的block。 如果传统的每一层单独去搜索的话,搜索空间可能会很大。 分层搜索结构兼顾了各层的多样性和搜索空间的有限性。
从数值分析、数值计算角度思考加速卷积运算:MATLAB里边的矩阵加速的库,TensorFlow和pytorch底层的这些数值运算的库;可以加速卷积本身的运算,矩阵的乘法和对卷积进行分解。
论文精读
摘要
为移动的设备设计卷积神经网络(CNN)具有挑战性,因为移动模型需要小而快速,但仍然准确。虽然已经投入了大量的努力来设计和改进移动的CNN在所有维度上,这是非常困难的手动平衡这些权衡时,有这么多的架构可能性考虑。在本文中,我们提出了一种自动移动的神经架构搜索(MNAS)的方法,明确地将模型延迟到主要目标,使搜索可以识别一个模型,实现了良好的平衡精度和延迟。与先前的工作不同,其中经由另一个通常不准确的代理(例如,FLOPS),我们的方法直接测量现实世界的推理延迟,通过在移动的上执行模型。为了进一步达到灵活性和搜索空间大小之间的平衡,我们提出了一种新的因子分解分层搜索空间,鼓励整个网络的层多样性。实验结果表明,我们的方法始终优于国家的最先进的移动的CNN模型在多个视觉任务。在ImageNet分类任务中,我们的MnasNet在Pixel手机上实现了75.2%的top-1准确率,延迟78 ms,比MobileNetV 2 [29]快1.8,准确率高0.5%,比NASNet [36]快2.3,准确率高1.2%。我们的MnasNet在COCO对象检测方面也实现了比MobileNets更好的mAP质量。代码位于
https://github.com/tensorflow/tpu/tree/master/models/official/mnasnet.
总结: 移动设备上的模型具有小型、高速、准确的特点,然而传统人工设计模型时具有耗时、平衡困难等问题。为解决在移动设备上设计高效卷积神经网络(CNN)的难题,作者提出了一种自动移动的神经架构搜索(MNAS)方法,明确将模型延迟到主要目标,实现较好的平衡精度和延迟。同时MNAS不用代理指标(如FLOPS)来估计模型性能,直接在真实移动设备中进行推理延迟测量。表明模型的选择基于实际的性能度量,不是间接指标。为达到灵活性与搜索空间大小之间的平衡,作者提出了一种新的因子分解分层搜索空间的方法,促进网络层的多样性。 实验结果和优势: (1)MnasNet在多个视觉任务中表现出色,始终优先国际领先的移动CNN模型。 (2)MnasNet在Pixel手机上实现了75.2%的top-1准确率,延迟78ms。相较于MobileNetV2与NASNet,MnasNet在延迟和准确性均由提升。 (3)在COCO对象监测方面,Mnasnet表现的mAP质量优于MobileNets. 思考: mAP质量是什么? mAP(mean Average Precision)是一种常用于评估目标检测算法性能的指标,用于衡量模型在不同类别的目标上的精确度和召回率之间的平衡。mAP越大,表示算法在不同类别监测上的性能越好
1.介绍
卷积神经网络(CNN)在图像分类、目标检测和许多其他应用方面取得了重大进展。随着现代CNN模型变得越来越深,越来越大[31,13,36,26],它们也变得越来越慢,需要更多的计算。这种计算需求的增加使得在资源受限的平台上部署最先进的CNN模型变得困难例如移动的或嵌入式设备。
鉴于移动的设备上可用的计算资源有限,最近的许多研究都集中在通过减少网络深度和利用较便宜的操作(如深度卷积[11]和分组卷积[33])来设计和改进移动CNN模型。然而,设计资源受限的移动的模型具有挑战性:必须仔细地平衡精确度和资源效率,这导致相当大的设计空间。
在本文中,我们提出了一种用于设计移动的CNN模型的自动神经架构搜索方法。图1显示了我们的方法的概述,其中与以前的方法的主要区别是延迟感知多目标奖励和新颖的搜索空间。我们的方法基于两个主要思想。首先,我们将设计问题表述为一个多目标优化问题,该问题同时考虑了CNN模型的准确性和推理延迟。与之前使用FLOPS来近似推理延迟的工作[36,26,21]不同,我们通过在真实移动的设备上执行模型来直接测量真实世界的延迟。我们的想法受到FLOPS通常是不准确的代理的观察的启发:例如,MobileNet [11]和NASNet [36]具有相似的FLOPS(575 M对564 M),但它们的延迟显著不同(113 ms vs. 183 ms,详情见表1)。其次,我们观察到以前的自动化方法主要搜索几种类型的模块,然后通过网络重复堆叠相同的模块。这简化了搜索过程,但也排除了对计算效率很重要的层分集。为了解决这个问题,我们提出了一种新的因式分解的分层搜索空间,它允许层的架构不同,但仍然罢工之间的灵活性和搜索空间大小的正确平衡。
总结: 介绍移动设备上部署CNN模型所面临的挑战,指出了现代CNN模型的深度和计算需求增加的趋势。作者们集中于设计轻量级移动CNN模型,使用多目标优化和真实移动设备推理延迟的测量。另外,通过引入分层搜索空间,以平衡灵活性和搜索空间大小。
总结: 神经架构搜索的方法就是一个强化学习的Agent,让他从搜索空间里面去采样得到一个模型,然后根据这个模型结构把模型训练出来,一方面是平均它的精度,另一方面是拿到真实的手机上去测试它的速度。并根据精度和测试速度得到一个多目标的目标函数;然后把这个目标函数奖励反馈给这个强化学习agent,并不停循环下去。 思考: 1.强化学习Agent:在NAS中,强化学习Agent是一个智能体,它根据一定的策略在预定义的网络结构搜索空间中采样不同的模型结构。 2.奖励反馈:训练过程中,根据模型在验证集上的性能(精度和速度),计算多目标目标函数的值。然后,这个值被用作强化学习Agent的奖励,以指导它在搜索空间中采样更有可能优化性能的模型结构。 3.强化学习Agent的奖励是什么意思? 在强化学习中,奖励(Reward)是一种反馈信号,用于指导智能体(也称为Agent)在环境中采取不同的动作。奖励可以是正值、负值或零,用于衡量智能体的行为在某个状态下是好还是坏。智能体的目标是通过采取不同的动作,最大化在长期内累积的奖励总和。
我们将我们提出的方法应用于ImageNet分类[28]和COCO对象检测[18]。图2总结了我们的MnasNet模型和其他最先进的移动的模型之间的比较。与MobileNetV 2 [29]相比,我们的模型将ImageNet的准确性提高了3.0%,并且在Google Pixel手机上具有类似的延迟。另一方面,如果我们限制目标准确度,那么我们的MnasNet模型比MobileNetV 2快1.8,比NASNet快2.3 [36],准确度更高。与广泛使用的ResNet-50 [9]相比,我们的MnasNet模型实现了略高(76.7%)的准确率,参数减少了4.8,乘加运算减少了10。通过将我们的模型作为特征提取器插入SSD对象检测框架,我们的模型在MobileNetsV 1和MobileNetV 2上改善了COCO数据集的推理延迟和mAP质量,并实现了与SSD 300 [22]相当的mAP质量(23.0 vs 23.2),其中乘法-加法运算减少了42次。
概括起来,我们的主要贡献如下:
1.我们引入了一种多目标神经架构搜索方法,该方法优化了移动的设备上的准确性和真实世界的延迟。
2.我们提出了一种新的因式分解的分层搜索空间,使层的多样性,但仍然罢工之间的灵活性和搜索空间大小的正确平衡。
3.在典型的移动的延迟约束下,我们在ImageNet分类和COCO对象检测方面展示了新的最先进的准确性。
主要贡献: 1.引入多目标神经架构搜索方法 2.提出分层搜索架构空间 SSD330是什么?
介绍部分总结: 介绍部分先说明卷积神经网络的现状和存在什么问题,为此本文提出了什么方法,设计了什么概念,并通过实验验证表明提出的方法是有效的,是优于原来的模型。
2.相关工作
相关工作部分总结: 一般来说Related Work部分不仅仅是对论文的堆砌,需要做一个总结
提高CNN模型的资源效率是近几年来一个活跃的研究课题。 一些常用的方法包括:1)将基线CNN模型的权重和/或激活量化为低比特表示[8,16],或2)根据FLOPS[6,10],或根据平台感知的度量,例如在[32]中引入的延迟,修剪不太重要的滤波器。 然而,这些方法是绑定在一个基线模型,并不侧重于学习CNN操作的新成分。
总结: 提升CNN模型效率资源的一种方法是在已有模型基础上做压缩操作,操作比较复杂。 思考: 提升CNN模型资源常用的方法: 1.量化:量化是一种降低模型计算和存储开销的方法。在CNN模型中,权重和激活值通常使用浮点数表示,但会消耗大量的计算资源。量化通过将浮点数转换为低位数的整数或固定点数,进而减少内存占用和计算需求。例如将权重和激活值从32位浮点数量化为8位整数,可以显著减少模型的存储需求和计算开销,同时在一定程度上保持模型性能。 2.剪枝:剪枝是通过删除模型中的冗余连接或神经元来减少模型的参数数量和计算量。在CNN模型中,一些权重可能对最终输出的影响较小,可以通过剪枝技术将这些权重设置为零,从而减少模型的参数量。此外,可以通过删除不活跃的神经元来进一步减少计算量。剪枝技术可以在训练后应用,也可以与微调(fine-tuning)结合使用,以保持模型性能。
另一个常见的方法是直接手工制作更高效的移动架构:ChiceZenet[15]通过使用低成本的1x1卷积和减小滤波器大小来减少参数和计算量; MobileNet[11]广泛使用深度可分卷积来最小化计算密度; ShuffleNets[33,24]利用低成本组卷积和通道重排; 冷凝网[14]学会跨层连接群卷积; 最近,MobileNetv2[29]通过使用资源有效的反向残差和线性瓶颈,在移动规模模型中取得了最优的结果。 不幸的是,考虑到潜在的巨大设计空间,这些手工制作的模型通常需要大量的人工努力。
反向残差和线性瓶颈:先升维再降维 人工设计效率低
近年来,越来越多的人开始对使用神经网络架构搜索自动化模型设计的方法产生兴趣。这些方法主要基于强化学习[35、36、1、19、25]、进化搜索[26]、可微分搜索[21]或其他学习算法[19、17、23]。尽管这些方法可以通过多次堆叠几个搜索到的单元来生成移动尺寸的模型,但它们没有将移动平台的限制纳入搜索过程或搜索空间。与我们的工作密切相关的是MONAS [12]、DPP-Net [3]、RNAS [34]和Pareto-NASH [4],它们试图在搜索CNN时优化多个目标,如模型大小和准确性,但它们的搜索过程优化的是像CIFAR这样的小任务。相比之下,本文的目标是针对真实世界的移动延迟约束,并专注于像ImageNet分类和COCO对象检测这样更大的任务。
real-word:真实世界是一个热点 部分人使用生成对抗网络去生成数据用这个生成数据去训练,但是这个生成对抗网络生成出来的若干图片,不能覆盖真实世界可能遇到的场景(例如极度恶劣的天气的无人驾驶车的画面)。 总结: 本段说明近几年神经网络架构搜索自动化模型设计不断增加,常用的方法基于强化学习、进化搜索、可微分搜索等技术,但是这些方法并没有考虑移动平台的资源约束。一些其他模型主要针对较小的任务(CIFAR),并没有考虑真实世界中移动设备延迟约束。 思考: 1、什么是强化学习? 一种机器学习方法,通过代理在环境中进行交互并采取行动,以最大化累积奖励,从而学习如何做出决策。 2、什么是进化搜索? 一种基于生物进化原理的搜索方法,通过对候选解进行变异、交叉等操作来逐步优化解的质量。 3、什么是可微分搜索? 通过对搜索过程进行参数化,使得搜索过程能够通过梯度下降等优化方法进行训练。 4、数据集解释? CIFAR:加拿大计算机和人工智能研究所(Canadian Institute for Advanced Research)的计算机和人工智能研究项目,也指CIFAR-10和CIFAR-100数据集,用于图像分类任务。 ImageNet:一个大规模的图像数据集,用于图像分类、目标检测等计算机视觉任务。 COCO:指的是Common Objects in Context,一个广泛用于目标检测和分割的图像数据集。
3.问题表述
我们将设计问题描述为一个多目标搜索问题,旨在找到既有高精度又有低推理延迟的CNN模型。 与以往的架构搜索方法不同,通常针对间接度量进行优化,如FLOPS,我们通过在真实的移动设备上运行CNN模型,然后将真实世界的推理延迟合并到我们的目标中,来考虑直接的真实世界的推理延迟。 这样做可以直接衡量实际情况:我们的早期实验表明,由于移动硬件/软件特性的多样性,近似真实世界的延迟是很有挑战性的
给定模型M,设ACC(M)表示其在目标任务上的精确度,LAT(M)表示在目标移动平台上的推理时延,T表示目标时延。 一种常见的方法是将T视为硬指标,并在此约束下最大化精确度:
公式的含义:在保证LAT(m)<=T的情况下,使得ACC(m)的值最大,找到对应的m ACC(m)目标任务的精确度 LAT(m)目标移动平台的时延,T表示一个固定的目标时延数值
然而,这种方法只最大化单个度量,没有提供多个帕累托最优解。 非正式地,一个模型称为帕累托最优[2],如果它在不增加延迟的情况下具有最高的精确度,或者它在不降低精确度的情况下具有最低的延迟。 考虑到执行体系结构搜索的计算成本,我们更感兴趣的是在单个体系结构搜索中找到多个帕累托最优解。
虽然文献[2]中有许多方法,但我们使用自定义加权乘积方法1来逼近帕累托最优解,优化目标定义为:
帕累托最优解:相同预算下性能最优,相同性能下预算最低
其中α和β是特定于应用程序的常量。 选择α和β的经验规则是确保帕累托最优解在不同的精度-延迟权衡下具有相似的奖励。 例如,我们根据经验观察到,将延迟增加一倍通常会带来大约5%的精确度提升。 给出两个模型:(1)M1具有延迟l和精确度a; (2)M2的时延为2l和准确率提升了5%的准确率a·(1+5%),两者应具有相似的奖励:Reward(M2)=a·(1+5%)·(2l/T)^·β≈Reward(M1)=a·(l/T)^β。 解出这个值为β=-0.07。 因此,除非明确说明,否则我们在实验中使用β=α=0.07。
图3展示了两个典型(α,β)值下的目标函数。在顶部图中,当测得的延迟小于目标延迟T时,我们简单地将准确率作为目标值;否则,我们会严格惩罚目标值,以防止模型违反延迟约束。底部图(α=β=-0.07)将目标延迟T视为一个软约束,并根据测得的延迟平滑地调整目标值
图3:由方程2定义的目标函数,假设准确率ACC(m)=0.5和目标延迟T=80ms: (顶部)展示了在将延迟视为硬约束时的目标值;(底部)展示了在将延迟视为软约束时的目标值。
(硬指标)在顶部的图形中,(α=0,β=-1),当测得的延迟小于目标延迟T时,目标值直接使用准确率。然而,如果测得的延迟超过了目标延迟T,那么会严重惩罚目标值,以避免模型违反延迟约束。这种方法可以视为一种硬约束,即如果延迟超过目标,则目标函数的值会被大幅惩罚,鼓励模型遵守延迟约束。 (软指标)在底部的图形中,(α=β=-0.07),作者将目标延迟T视为软约束,即目标函数在延迟超过目标时仍允许有一定的值。在这种情况下,目标函数会根据测得的延迟值平滑地调整,而不是严格地进行惩罚。这种方法更加灵活,允许在一定范围内进行一些延迟的牺牲,以换取更高的准确率。
4. 移动神经架构搜索
在本节中,我们首先将讨论我们提出的新颖因式分解分层搜索空间,然后总结我们基于强化学习的搜索算法。
4.1. 因式分解分层搜索空间
正如最近的研究所示[36, 20],一个明确定义的搜索空间对于神经架构搜索非常重要。然而,大多数先前的方法[35, 19, 26]仅搜索了少数复杂的单元,然后重复堆叠相同的单元。这些方法不允许层的多样性,而我们展示了这对于实现高准确率和较低延迟至关重要。
与以前的方法相反,我们引入了一种新颖的因式分解分层搜索空间,将CNN模型分解成独特的块,然后分别搜索块中的操作和连接,从而允许不同块中有不同的层结构。我们的直觉是,我们需要基于输入和输出形状来搜索最佳操作,以获得更好的准确率-延迟权衡。例如,CNN的较早阶段通常处理更大量的数据,因此对推理延迟的影响要比后期阶段大得多。形式上,考虑一个广泛使用的深度可分离卷积[11]核,表示为四元组(K,K,M,N)【卷积核】,它将大小为(H,W,M)²的输入转换为大小为(H,W,N)的输出,其中(H,W)为输入的长宽,M、N为输入/输出的滤波器大小。总的乘加操作数可以描述为:
K:卷积核的大小(尺寸) H:输入图像的高度 W:输入图像的宽度 M:输入滤波器的数量(即输入通道数) N:输出滤波器的数量(即输出通道数)
在这里,如果总计算量受到限制,我们需要仔细平衡卷积核大小 K 和滤波器大小 N。例如,通过在一层中增加更大的卷积核大小 K 来扩大感受野,必须在同一层减少滤波器大小 N,或从其他层计算中进行平衡。
图4展示了我们搜索空间的基准结构。我们将一个 CNN 模型分成一系列预定义的块,逐渐减小输入分辨率并增加滤波器大小,就像许多 CNN 模型中常见的那样。每个块都有一系列相同的层,其操作和连接由每个块的子搜索空间确定。具体来说,块 i 的子搜索空间包括以下选择:
-
卷积操作 ConvOp:普通卷积(conv),深度可分离卷积(dconv)和移动倒置瓶颈卷积[29]。
-
卷积核大小 KernelSize:3x3、5x5。
-
挤压-激励 [13] 比例 SERatio:0,0.25。
-
跳跃操作 SkipOp:池化、恒等残差或无跳跃。
-
输出滤波器大小 Fi。
-
每个块的层数 Ni。
对于因式分解分层搜索架构,将一个模型分成不同的层,每一个块的子搜索可以包括下列几种方式: 卷积方式、卷积核大小、SE模块注意力机制、跨层连接方式、输出层卷积核大小、每个block中的layer个数。 ("layer个数"指的是神经网络中每个"block"或"层块"内重复的层的数量)
图4:因式分解分层搜索空间。 网络层根据其输入分辨率和滤波器大小被分组成一些预定义的骨架,称为块。每个块包含一个可变数量的重复相同的层,只有第一层在输入/输出分辨率不同时具有步长2,而其他所有层都具有步长1。对于每个块,我们为单个层搜索操作和连接,以及层数N,然后相同的层重复N次(例如,Layer 4-1 到 4-N4 是相同的)。来自不同块的层(例如,Layer 2-1 和 4-1)可以不同。
ConvOp、KernelSize、SERatio、SkipOp、Fi决定了一个层的架构,而Ni决定了该层在块中将被重复多少次。例如,在图4中,块4的每个层都具有一个倒置瓶颈5x5卷积和一个恒等残差跳跃路径,相同的层会被重复N4次。我们使用MobileNetV2作为参考,将所有的搜索选项进行离散化:对于每个块中的#layers,我们基于MobileNetV2搜索{0、+1、-1};对于每层的滤波器大小,我们搜索相对大小在{0.75、1.0、1.25}到MobileNetV2 [29]之间。
在深度学习中,滤波器(也称为卷积核或卷积矩阵)是用来在输入数据上执行卷积操作的小矩阵。卷积操作是神经网络中常用的一种操作,用于从输入数据中提取特征。滤波器通过在输入数据上滑动并逐元素相乘,然后将乘积求和得到一个新的值
我们的因式分解分层搜索空间在平衡层的多样性和总搜索空间大小方面具有明显的优势。假设我们将网络分为B个块,每个块具有大小为S的子搜索空间,每个块平均具有N个层,那么我们的总搜索空间大小将为S^B,与每层搜索空间大小为S^(BxN)的平面搜索空间相比。一个典型的情况是S=432,B=5,N=3,这种情况下我们的搜索空间大小约为10^13,而每层搜索空间大小为10^39。
对上述内容进行解释: 1.网络被分为B个块,每个块拥有大小为S的子搜索空间。这意味着每个块可以选择不同的操作和连接方式来构建层,从而形成不同的神经网络结构。 2.每个块平均具有N个层,这表示每个块内会重复使用相同类型的层N次,从而增加了网络的深度。 3.根据上述设置,总的搜索空间大小为S^B,即每个块的子搜索空间大小的乘积。与此相对比,如果每层搜索空间大小为S^(BxN),则是将每个块内每一层的搜索空间大小相乘得到的结果。 4.作者提供了一个典型的情况,其中S=432,B=5,N=3,这导致总的搜索空间大小约为10^13,而每层搜索空间大小为10^39。
4.2. 搜索算法
受到最近的工作 [35, 36, 25, 20] 的启发,我们使用强化学习方法来寻找我们多目标搜索问题的 Pareto 最优解。我们选择强化学习是因为它方便且奖励可以轻松自定义,但我们也预期其他方法如进化算法 [26] 也可以使用。
具体来说,我们遵循与 [36NasNet] 相同的思路,将搜索空间中的每个 CNN 模型映射到一系列tokens。这些tokens由强化学习代理基于其参数 θ 的一系列动作 a1:T 确定。我们的目标是最大化预期奖励:
强化学习的过程:期望是Ep;奖励是蓝色的方括号,表示目标函数;m是选出来的模型,由一系列的token决定的;θ是智能体的参数。就是让这个模型通过1系列选择,采取1系列动作,然后每一个动作都能生成一个模型,每一个模型都能算出速度和精度进而计算出多目标的目标函数。让目标函数最大化,让期望最大化,这就是强化学习的过程。
其中,m 是由动作 a1:T 确定的采样模型,R(m) 是由方程 2 定义的目标值。
如图1所示,搜索框架包括三个组件:基于循环神经网络(RNN)的控制器、用于获取模型准确性的训练器,以及基于移动手机的推理引擎,用于测量延迟。我们遵循众所周知的样本-评估-更新循环来训练控制器。在每个步骤中,控制器首先使用当前参数 θ 采样一批模型,通过从其 RNN 得到的 softmax logits 预测一系列token。对于每个采样的模型 m,我们在目标任务上对其进行训练,以获得其准确性 ACC(m),然后在真实手机上运行以获得其推理延迟 LAT(m)。然后,我们使用方程 2 计算奖励值 R(m)。在每个步骤的末尾,通过使用 Proximal Policy Optimization [30openAI提出的算法] 最大化方程 5 定义的预期奖励,更新控制器的参数 θ。样本-评估-更新循环会重复进行,直到达到最大步数或参数 θ 收敛
神经网络架构搜索框架及训练过程: 1、基于循环神经网络(RNN)的控制器:本组件用于生成一系列操作序列,这些操作构成了每个采样模型的架构。控制器的参数由θ表示。通过使用RNN,控制器预测一系列token,其中token对应神经网络中的操作、连接方式等选择。 2、训练训练器:该组件用于训练采样的模型,以评估模型在目标任务上的准确性。每个模型m在目标任务数据上进行训练,然后计算其准确性ACC(m). 3、样本-评估-更新循环:这是训练控制器的主要过程。控制器先根据当前参数θ生成一批模型采样。每个模型进行训练并在移动设备上进行推理,以获得其准确性和延迟信息。使用方程2计算奖励值R(m),并使用PPO算法最大化预期奖励,更新控制器的参数θ。这样样本-评估-更新循环一直重复,直到达到最大步数或参数θ收敛。 ("收敛"是指一个算法或模型逐渐趋向于稳定状态或最优解的过程) 通过使用基于RNN的控制器、训练器和移动设备推理引擎来进行神经网络架构搜索的过程。整个过程通过采样、评估和参数更新的循环来优化网络架构,以达到在给定资源限制下获得高准确性和低延迟的目标 思考:神经网络架构搜索中什么是采用模块? "采样模块"指的是从搜索空间中选择一个模型或网络结构的过程。这个过程涉及选择一系列操作、连接方式以及其他架构相关的决策,以构建一个完整的神经网络。采样模块的目标是在给定的搜索空间内,生成不同的网络架构,以便后续进行训练和评估。
5. 实验设置
在大型任务(如ImageNet或COCO)上直接搜索CNN模型是昂贵的,因为每个模型需要数天的时间来收敛。尽管之前的方法主要在较小的任务(如CIFAR-10)上进行架构搜索 [36, 26],但我们发现在考虑模型延迟时,这些小型代理任务并不适用,因为在解决更大的问题时通常需要扩展模型。在本文中,我们直接在ImageNet训练集上进行架构搜索,但训练步数较少(5个epoch。表示5次训练集)。作为常见做法,我们从训练集中随机选择了50,000张图像作为固定的验证集。为确保准确性的改善来自我们的搜索空间,我们使用了与NASNet [36] 相同的RNN控制器,尽管它并不高效,每个架构搜索在64个TPUv2设备上耗时4.5天。在训练过程中,我们通过在Pixel 1手机的单线程大型CPU核心上运行每个采样的模型来测量每个模型的实际延迟。总计,在架构搜索期间,我们的控制器采样了约8,000个模型,但只有15个表现最佳的模型被转移到完整的ImageNet数据集中,而只有1个模型被转移到COCO数据集中。
对于完整的ImageNet训练,我们使用RMSProp优化器,衰减率为0.9,动量为0.9。在每个卷积层之后添加批归一化,动量为0.99,权重衰减为1e-5。最后一层应用0.2的丢弃率。遵循[7]的方法,学习率在前5个epoch中从0增加到0.256,然后每2.4个epoch衰减0.97。我们使用批量大小为4K,并使用尺寸为224x224的Inception预处理。对于COCO训练,我们将我们学习到的模型嵌入到SSD检测器 [22] 中,并使用与[29]相同的设置,包括输入尺寸为320x320。
总结: 在文章中提到的衰减率为0.9,是指在学习率调度中每个epoch中,学习率会按照0.9的衰减率进行更新,即每个epoch后的学习率等于前一个epoch的学习率乘以0.9。 而权重衰减为1e-5,是指在每个卷积层之后的权重更新中,会添加一个正则化项,这个正则化项的系数就是1e-5,它控制了权重衰减的强度。权重衰减的作用是惩罚较大的权重,从而防止模型过度拟合训练数据。 实验环境配置: ImageNet训练配置: 优化器:PMSPpro 衰减率:0.9 动量:0.9 每个卷积层后添加批归一化,动量为0.99,权重衰减为1e-5 学习率调度:前5个epoch中,学习率从0增加到0.256,然后每2.4个epoch衰减0.97 批量大小:4k(一般批量大小16、24、32、64、256) 预处理:使用224x224的Inception预处理 COCO训练配置: 将学习到的模型嵌入SSD检测器中 使用与29号文献[MobileNetV2]相同的设置 输入尺寸:320x320 思考: 1.衰减率和权重衰减的区别? 衰减率(Decay Rate): 衰减率通常是指在优化算法中用来调整学习率的参数。学习率衰减是一种在训练过程中逐渐降低学习率的策略,有助于模型在训练后期更稳定地收敛。衰减率是一个介于0和1之间的数值,表示每个epoch(或一定步骤)中学习率的衰减程度。一般来说,衰减率越大,学习率下降得越快。 权重衰减(Weight Decay): 权重衰减是一种正则化技术,用于减小模型的复杂度,防止过拟合。它通过在损失函数中加入正则化项来实现,这个正则化项与模型的权重有关。权重衰减在训练过程中会使权重趋向于较小的值,从而降低模型的复杂度,有助于提高泛化能力。 专业名词解释: 1.TPUv2设备:Tensor Processing Unit(TPU)是一种专门为机器学习加速而设计的硬件设备。 2.RMSProp优化器:一种用于训练神经网络的优化算法,用于调整模型的权重以最小化损失函数。基于梯度的平方指数移动平均值来自适应调整学习率。 3.批归一化:一种常用的技术,用于在神经网络的训练过程中调整输入数据的分布,以提高训练的稳定性和速度。动量0.99用于计算均值和方差的移动平均值。 4.衰减率和动量:在RMSProp优化器中,衰减率用于控制历史梯度的权重,动量用于控制权重更新的速度。 5.权重衰减:一种正则化技术,通过在损失函数中添加权重的平方来惩罚大的权重值,以防止过拟合。 6.丢弃率:在训练过程中,将一定比例的神经元输出设置为零,以减少过拟合。 7.Inception预处理:一种图像预处理方法,通常在图像输入神经网络之前应用,以改善训练效果。
6.结果
本节中,我们研究了我们的模型在ImageNet分类和COCO目标检测上的性能,并与其他最先进的移动模型进行了比较。
6.1. ImageNet分类性能
表格1显示了我们的模型在ImageNet [28]上的性能。我们将目标延迟设置为T = 75毫秒,类似于MobileNetV2 [29],并在架构搜索期间使用方程式2与α=θ=-0.07作为我们的奖励函数。之后,我们从同一搜索实验中选择了三个性能最佳的MnasNet模型,它们在不同的延迟-准确性权衡下表现出色,并与现有的移动模型进行了比较。
如表所示,我们的MnasNet A1模型在78毫秒的延迟下实现了75.2%的top-1准确率和92.5%的top-5准确率,具有3.9M的参数/312M的乘加操作数。这为典型的移动延迟限制下实现了新的最高准确率。特别是,MnasNet在相同的Pixel手机上以1.8倍速度运行,比MobileNetV2(1.4)[29]快,准确率更高0.5%。与自动搜索的CNN模型相比,我们的MnasNet在与移动尺寸的NASNet-A [36]相比,运行速度提高了2.3倍,top-1准确率提高了1.2%。值得注意的是,稍大一些的MnasNet-A3模型在比ResNet-50 [9]更好的准确率下,参数少了4.8倍,乘加成本少了10倍。
表1:ImageNet分类任务的性能结果[28]。我们将我们的MnasNet模型与手动设计的移动模型和其他自动化方法进行了比较,MnasNet-A1是我们的基准模型;MnasNet-A2和MnasNet-A3是两个具有不同推理延迟的模型(用于比较),它们来自同一架构搜索实验; #参数:可训练参数的数量;#乘加操作:每个图像的乘加操作次数;Top-1或者5准确性:在ImageNet验证集上的top-1或top-5准确性; 推理延迟是在Pixel 1手机的大CPU核上使用批大小1进行测量的。
总结: 上述内容与表1中说明了MnasNet的效果优于其他模型,MnasNet A1模型在相同的延迟下,实现了较高的top-1和top-5准确率,显示出优秀的性能。 对比MobileNetV2(1.4)模型,MnasNet在同样的Pixel手机上以1.8倍的速度运行,同时准确率高出0.5%。 对比自动搜索的CNN模型,MnasNet在与移动尺寸的NASNet-A模型比较中,提高了2.3倍的运行速度,并提高了1.2%的top-1准确率。 稍大一些的MnasNet-A3模型比ResNet-50准确性更高,参数减少4.8倍,乘加操作数减少10倍。 思考: 准确率解释,什么是top-1准确率和top-5准确率? Top-1准确率:在预测结果中,模型的首选预测与实际标签匹配的比例。例如一张猫的图片被正确预测为猫,这个预测就被认为是top-1准确的。 Top-5准确率:在预测结果中,模型的前五个预测中至少有一个与实际标签匹配的比例。例如一张猫的图片在前五个预测结果中至少有一个是被正确预测为猫的。
考虑到挤压激活(SE [13])相对较新,许多现有的移动模型没有这种额外的优化,我们还在表格2中显示了不包含SE在搜索空间中的搜索结果。我们的自动化方法仍然显著优于MobileNetV2和NASNet。
6.2. 模型的尺度性能
考虑到现实世界中存在的各种应用要求和设备异构性,开发人员通常会根据准确性、延迟或模型大小的权衡来调整模型的尺度。一种常见的尺度技术是使用深度乘数来修改滤波器大小[11]。例如,深度乘数为0.5会将每个层中的通道数减半,从而降低延迟和模型大小。另一种常见的尺度技术是在不改变网络的情况下减小输入图像的大小。
图5通过改变深度乘数和输入图像的大小来比较MnasNet和MobileNetV2的模型尺度性能。当我们将深度乘数从0.35变化到1.4时,推理延迟也从20毫秒变化到160毫秒。如图5a所示,我们的MnasNet模型在每个深度乘数下始终比MobileNetV2实现更好的准确性。类似地,我们的模型对输入尺寸的变化也很稳健,在所有输入图像尺寸从96到224的情况下,始终表现优于MobileNetV2(准确率提高了最多4.1%),如图5b所示。
除了模型尺度的调整,我们的方法还允许为任何延迟目标搜索新的架构。例如,某些视频应用可能需要尽低至25毫秒的延迟。我们可以将基线模型进行缩减,或者专门为这种延迟限制搜索新的模型。表4对这两种方法进行了比较。为了公平比较,我们对所有的模型都使用了相同的224x224图像尺寸。尽管我们的MnasNet已经在相同的尺度参数下优于MobileNetV2模型,但我们可以通过针对22毫秒的延迟约束进行新的架构搜索,进一步提高准确性。
实验表明用搜索的方法寻找模型更科学,比生硬的、粗暴的缩放模型效果更好 总结: 由于应用需求和设备异构性多样,人们需要根据准确性、延迟和模型大小的权衡调整模型的尺度。其中深度乘数与输入图像大小是常见的尺度调整技术。作者进行了MnasNet与MobileNetV2的性能比较,最终在深度乘数与不同尺寸的输入图像中表现均优于MobileNetV2。并且为延迟目标进行架构搜索,MnasNet准确性也得到相应提升。
6.3. COCO目标检测性能
对于COCO目标检测[18],我们选择表2中的MnasNet模型,并将它们用作SSDLite的特征提取器,这是SSD的一种修改版,用于资源高效的版本[29]。与[29]类似,我们将我们的模型与其他移动大小的SSD或YOLO模型进行比较。
表3显示了我们的MnasNet模型在COCO上的性能。YOLO和SSD的结果来自[27],MobileNets的结果来自[29]。我们在COCO trainval35k上训练模型,并通过将结果提交到COCO服务器在test-dev2017上对其进行评估。如表中所示,我们的方法显著提高了MobileNet V1和V2的准确性。与标准的SSD300检测器[22]相比,我们的MnasNet模型在参数减少7.4倍和乘法加法减少42倍的情况下,实现了相当的mAP质量(23.0对23.2)。
表3:COCO目标检测性能结果 - #Params:可训练参数数量;#Mult-Adds:每张图像的乘加操作数量;mAP:在test-dev2017上的标准平均精度;mAPS、mAPM、mAPL:小、中、大目标的平均精度;Inference Latency:在Pixel 1手机上的推理延迟。
实验环境: 数据集: COCO数据集,该数据集包含大量的图像以及相应的物体标注信息,适用于目标检测任务。 模型架构: 在这个实验中,使用了MnasNet模型作为SSDLite的特征提取器,其中SSDLite是对SSD模型的一种资源高效修改版本。 其他模型比较: MobileNet V1和V2、标准的SSD300检测器、YOLO模型。 实验结果: 作者在COCO trainval35k数据集上进行模型训练,并将结果提交到COCO服务器进行评估(test-dev2017)。 参数和计算复杂度:通过对比参数数量和乘法加法操作数的减少,表明MnasNet模型在性能和模型复杂度方面的优势。 实验结果分析: 在COCO数据集上,相较于MobileNet V1和V2,MnasNet模型表现更好。 MnasNet模型相对于标准的SSD300检测器,在大幅减少参数和计算复杂度的情况下,仍能保持相近的mAP质量(23.0对23.2)。
7.消融研究与讨论
在本节中,我们将研究延迟约束和搜索空间的影响,并讨论MnasNet架构细节以及层的多样性的重要性。
7.1. 软约束 vs. 硬约束
我们的多目标搜索方法允许我们通过在奖励公式2中设置不同的α和β值来处理硬约束和软约束。图6展示了典型α和β值的多目标搜索结果。当α=0,β= -1时,将延迟视为硬约束,因此控制器倾向于更关注更快的模型,以避免延迟惩罚。另一方面,通过设置α = β= -0.07,控制器将目标延迟视为软约束,并尝试在更广泛的延迟范围内搜索模型。它会在目标延迟值75毫秒附近采样更多的模型,同时也会探索延迟小于40毫秒或大于110毫秒的模型。这使我们能够从单次架构搜索中选择Pareto曲线上的多个模型,如表1所示。
图6:基于方程2的多目标搜索结果,其中(a)α=0,β=-1;以及(b)α=β=-0.07。目标延迟为T=75毫秒。顶部图显示了3000个抽样模型(绿色点)的帕累托曲线(蓝线);底部图显示了模型延迟的直方图。
总结: 多目标搜索是在不同条件下寻找最佳性能的模型。调整α,β参数,以达到硬约束与软约束的平衡。图6表示通过不同的α、β值进行多目标搜搜的结果。在硬约束条件下,更快的模型将由于延迟较高的模型。在软约束条件下,在更广泛的延迟范围内搜索模型。
7.2. 解开搜索空间与奖励之间的联系
为了分解我们的两个关键贡献的影响:多目标奖励和新的搜索空间,图5对它们的性能进行了比较。从NASNet [36]开始,我们首先采用相同的基于单元的搜索空间[36],并使用我们提出的多目标奖励简单地添加延迟约束。结果显示,这产生了一个通过权衡准确性和延迟来提高速度的模型。然后,我们同时应用了我们的多目标奖励和新的分解搜索空间,既实现了更高的准确性,又降低了延迟,表明了我们搜索空间的有效性。
总结: 表5表示添加多目标优化函数后,延迟降低,精准度减少部分。添加多目标优化函数和分层的搜索空间后,延迟和精准度都得到提升。
7.3. MnasNet 架构与层次多样性
图7(a)展示了我们通过自动化方法找到的 MnasNet-A1 模型。正如预期的那样,在整个网络中它包含了各种不同的层次架构。一个有趣的观察是,我们的 MnasNet 同时使用了 3x3 和 5x5 的卷积,这与之前所有只使用 3x3 卷积的移动模型不同。
图7:MnasNet-A1 架构 – (a) 为从表1中选择的代表性模型; (b) - (d) 分别为几个对应的层结构。MBConv 表示移动倒置瓶颈卷积,DWConv 表示深度卷积,k3x3/k5x5 表示卷积核大小,BN 表示批归一化,HxWxF 表示张量形状(高度、宽度、深度),而x1/2/3/4 表示块内重复层的数量。
两层3x3卷积可以代替一个5x5卷积,三层3x3卷积可以代替一个7x7卷积,3x3卷积可以节省参数量、节省计算量,同时3x3还是最小的一个有中心点对称的单位。 本文值的注意的是使用了5x5卷积,那么5x5卷积和3x3卷积有什么不一样(有的时候深度学习如同炼丹一样,实验科学通过实验测试出来,不好理论解释)。
为了研究层次多样性的影响,表6将 MnasNet 与仅重复单一类型层次的变体进行了比较(固定的卷积核大小和扩展比)。我们的 MnasNet 模型在准确性和延迟之间具有更好的权衡,相较于那些变体,突显了在资源受限的 CNN 模型中层次多样性的重要性。
表格6:MnasNet及其变种的性能比较 - MnasNet-A1表示图7(a)中显示的模型;其他模型是通过在整个网络中重复单个类型的层而形成的变种。所有模型在层数和每层的过滤器尺寸方面都相同。
8.结论
本文提出了一种使用强化学习进行自动神经架构搜索的方法,用于设计资源高效的移动 CNN 模型。我们的主要思想是将平台感知的实际延迟信息纳入搜索过程,并利用一种新颖的分解层次搜索空间来寻找在准确性和延迟之间具有最佳权衡的移动模型。我们证明了我们的方法可以自动找到比现有方法显著更好的移动模型,并在常见的移动推理延迟约束下,在 ImageNet 分类和 COCO 物体检测方面取得了新的最先进结果。MnasNet 架构的产生还提供了关于层次多样性重要性的有趣发现,这将指导我们设计和改进未来的移动 CNN 模型。
9.致谢
我们感谢 Barret Zoph、Dmitry Kalenichenko、Guiheng Zhou、Hongkun Yu、Jeff Dean、Megan Kacholia、Menglong Zhu、Nan Zhang、Shane Almeida、Sheng Li、Vishy Tirumalashetty、Wen Wang、Xiaoqiang Zheng 以及更大的设备自动化平台团队、TensorFlow Lite 团队和 Google Brain 团队。