Page 44 - 《软件学报》2020年第9期
P. 44
张政馗 等:面向实时应用的深度学习研究综述 2665
(1) 深度学习模型压缩技术
将现有神经网络模型部署在资源受限的实时嵌入式系统的主要挑战之一是同时满足严格的运行时限要求
和受限的 SWaP(size,weight,and power)要求 [64] ,该问题尚未得到有效解决.近年来,许多研究机构从软件层面研
究复杂深度学习网络的精简问题,提出了一些轻量化的神经网络模型.DNN 轻量化技术是指采用模型的近似化
技术保证网络输出精度不损失或损失在可接受范围内的情况下,使得网络结构和网络参数尽可能的精简,实现
系统模型的轻量化 [65] .网络模型近似操作常采用的 3 种方式是:模型压缩、剪枝、矩阵分解.经过模型近似技术
处理过的模型称为近似模型,该模型在许多实际环境中已被证明表现出足够的精度 [66,67] .
模型近似操作的目标是为了探索更高效的基础架构.已有的工作聚焦于剪枝、压缩以及低比特方法来表示
基本的网络架构 [68−71] .Denil 等学者 [72] 证明了深度学习模型的参数存在明显的冗余,并且参数值可以通过预测
得到.在 MNIST 数据集上测试,该方法在最好情况下可以预测出多层神经网络的 95%的参数,同时验证了网络
模型参数的冗余性.Han 等学者 [17] 提出使用 10%的精度关键数据快速训练 DNN,可以实现网络 98%的精度.这个
结论再次证明了 DNN 网络存在一定的冗余性,说明了 DNN 模型压缩技术具有一定的可行性.Han 等学
者 [73,74] 尝试将训练好的模型通过剪枝和权重共享增加权重稀疏性、降低存储量的方法,使得神经网络的存储需
求减少 35 倍~49 倍却不损失网络的准确性.Jaderberg 等学者 [69] 尝试使用降秩技术来加速卷积神经网络,并且在
场景字符分类数据集上训练的 4 层 CNN 精度下降不到 1%,却获得了 4.5 倍的加速.Zhang 等学者 [70] 提出了一种
多层逼近时减小累积误差的算法,将非线性响应的重构误差降至最小,并采用低秩约束来降低了滤波器的复杂
度. ImageNet 数据集上的标准测试结果表明:通过该算法压缩 SPPNet 得到的加速模型,比原 SPPNet 的推理速度
快了 4 倍.虽然加速模型的 top-5 误差率比原模型增加了 0.9%,但是其推理精度相比 AlexNet 还是提高了 4.7%.
在 DNN 网络参数的线性量化方面,二值化神经网络(binary neural network,简称 BNN) [75] 具有高模型压缩率
和极快计算速度的优点,近几年格外受到重视,成为深度学习的热门研究方向.二值化网络方法通过将单精度浮
点型权重矩阵二值化,其中一个权重值只用一个比特来表示.二值化方法根据权重值和激活函数值的符号决定
在{+1,−1}取值:数值大于等于 0 则取+1,否则取为−1.对于原来 32 位浮点型数的乘加运算,二值化之后的权重值
和激活函数值可以通过一次异或运算(xnor)和一次 POPCNT 位运算指令实现.二值化方法在网络模型的内存消
耗理论上能减少 32 倍,可以看出,二值化神经网络在模型压缩上具有很大的优势.研究二值化神经网络对解决
当前浮点型神经网络应用到实时嵌入式系统中存在的模型过大、计算密度过高等问题,具有很重大的意义.
(2) 神经网络轻量化设计
然而,上述在已训练模型上进行因式分解和稀疏卷积技术没有从根本上实现网络的高效轻量化.研究者们
从网络结构设计出发,设计出了适用于移动设备的轻量级神经网络.表 3 中,最早于 2016 年 2 月,加州大学伯克
利分校和斯坦福大学提出轻量化网络 SqueezeNet [65] 模型.该模型具有新的网络结构,通过降低大型卷积核的输
入通道数量,新的网络结构实现了不同大小卷积核的通道连接来特征提取.同年 10 月,Google 提出了 Xception
模型.2017 年 4 月,Google 提出的 MobileNet [76] 模型具有一种新颖的卷积结构,其特点是在保证特征的非线性表
示情况下,深度分离卷积式的卷积结构,充分解耦了传统卷积模型,将卷积分为深度卷积和逐点卷积.这种卷积
改进方式可以极大降低计算量和参数量,并且适配于移动设备.2018 年,Google 和 Face++分别相继发布
MobileNetV2 和 ShuffleNetV2,两个轻量化网络均是在之前模型的改进模型.轻量化网络极大地降低了深度学习
模型的参数量和计算量,同时,在很大程度上保证了特征的高度抽象提取,在一定程度上保证了模型的精确度.
Table 3 Lightweight network development timeline
表 3 轻量化网络发展时间轴
时间 提出单位 轻量化模型
2016.02 UC Berkeley & Stanford University SqueezeNet [65]
2016.10 Google Xception [77]
2017.04 Google MobileNet [76]
2017.07 Face++ ShuffleNet [78]
2018.01 Google MobileNet V2 [79]
2018.07 Face++ ShuffleNet V2 [80]