Page 8 - 《软件学报》2020年第9期
P. 8

葛道辉  等:轻量级神经网络架构综述                                                               2629


         的规模,进一步地降低对存储设备和计算资源的需求,实现在便携式设备上应用深度神经网络.根据神经网络中
         每层的冗余程度,通过将网络权重的全精度的浮点数进行裁剪、对网络中间的特征输出进一步进行量化,以及
         剪枝、权值共享、低秩分解、知识蒸馏等方法实现神经网络模型的压缩.通过压缩神经网络模型,降低了占用
         的存储空间,满足功耗的限制,嵌入到便携式设备的芯片上,实现实时的运行.
             人工设计的神经网络模型压缩技术依赖启发式和基于规则的策略,算法设计者需要探索较大的设计空间,
         以及在模型大小、速度和准确率之间权衡,而这通常是次优的且耗时的.自动机器学习(automated machine
         learning,简称 AutoML)通过结合强化学习等方法,将特征提取、模型选择、超参优化等步骤实现自动化的学习,
         提高模型的压缩比,在更好地保持神经网络模型性能的同时,减少人为因素的干扰.
             随着轻量级神经网络的不断发展,提出了越来越多的设计方法,已经被成功地用于解决各类问题,在图像分
         类问题上已经超过了人工设计的方法,并广泛应用于目标检测、图像分割、智能问答等不同领域.本文首先概
         括性介绍轻量级神经网络.第 1 节介绍人工设计轻量级神经网络方法.第 2 节详细介绍基于规则和基于自动机
         器学习的神经网络模型压缩算法.第 3 节总结基于神经网络架构搜索的自动化轻量级网络设计.最后展开讨论
         并对未来的研究方向给出建议.

         1    人工设计的轻量级神经网络模型

             在本节中,我们将介绍人工设计的高效的轻量化网络结构及其背后的原理.随着模型参数量的增加,模型的
         准确率和复杂度也逐步增加,但同时,神经网络中存在较大冗余.设计更加高效的网络结构.对于压缩模型大小、
         加快运行速度以及减轻训练难度都有重要的作用.本节将从减少卷积核的冗余、减少输入特征的通道数、设计
         更加高效的模块 z23 个方面介绍如何设计轻量级的神经网络.
         1.1   使用小卷积核代替大卷积

                                                                                           [1]
             利用多层小卷积核替代一层大卷积核,可以有效地减少网络的参数.在 Simonyan 等人提出的 VGG 网络
         中,使用 3×3 卷积核代替 5×5 和 7×7 大小的大卷积核:对于一个大小 5×5 的感受野,可以通过两层 3×3 大小的卷
         积实现;对于一个 7×7 的卷积核,可通过 3 层 3×3 卷积实现.如图 1(a)所示.














                             (a) 5×5 卷积分解为两层 3×3 卷积     (b) 3×3 卷积分解为连续的 1×3 和 3×1 的卷积
                                                   Fig.1
                                                   图 1
             在参数量上,5×5 大小的卷积核参数量为 25,而两层 3×3 的卷积核参数量为 18,相比减少了 28%的参数量.
         从浮点运算数(FLOPs)角度,对于输入大小为 H×W×C in 的特征,输出为 H×W×C out 大小的特征图时,FLOPs 5×5 =H×
                    2
         W×C in ×C out ×5 ,而两层卷积的 FLOPs (3×3)×2 =2×H×W×C in ×C out ×3,计算量也相应地减少.并且两层 3×3 卷积可以合
         并两层非线性层,比一层大卷积核更能增加非线性能力.
             类似地,Jaderberg 等人 [16] 提出将一个 3×3 的卷积操作分解为连续的 1×3 和 3×1 的卷积,如图 1(b)所示,分解
         之后,参数量和 FLOPs 都下降了 33%.Chao       [17] 提出使用大的 k×k 卷积核可以增加感受野,同时为了减少计算量,
         可以使用两层 1×k 和 k×1 的卷积代替,这样参数量和 FLOPs 都变为之前的 2/k.
   3   4   5   6   7   8   9   10   11   12   13