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.