深度学习模型的压缩和加速是指利用神经网络参数的冗余性和网络结构的冗余性精简模型,在不影响任务完成度的情况下,得到参数量更少、结构更精简的模型。被压缩后的模型计算资源需求和内存需求更小,相比原始模型能够满足更加广泛的应用需求。在深度学习技术日益火爆的背景下,对深度学习模型强烈的应用需求使得人们对内存占用少、计算资源要求低、同时依旧保证相当高的正确率的“小模型”格外关注。利用神经网络的冗余性进行深度学习的模型压缩和加速引起了学术界和工业界的广泛兴趣,各种工作也层出不穷。
本文参考2021发表在软件学报上的《深度学习模型压缩与加速综述》进行了总结和学习。
相关链接:
总结
模型压缩与加速技术 | 描述 |
---|---|
参数剪枝(A) | 设计关于参数重要性的评价准则,基于该准则判断网络参数的重要程度,删除冗余参数 |
参数量化(A) | 将网络参数从 32 位全精度浮点数量化到更低位数 |
低秩分解(A) | 将高维参数向量降维分解为稀疏的低维向量 |
参数共享(A) | 利用结构化矩阵或聚类方法映射网络内部参数 |
紧凑网络(B) | 从卷积核、特殊层和网络结构3个级别设计新型轻量网络 |
知识蒸馏(B) | 将较大的教师模型的信息提炼到较小的学生模型 |
混合方式(A+B) | 前几种方法的结合 |
A:压缩参数 B:压缩结构
紧凑网络
定义
设计更紧凑的新型网络结构,是一种新兴的网络压缩与加速理念,构造特殊结构的 filter、网络层甚至网络,
特点
从头训练,获得适宜部署到移动平台等资源有限设备的网络性能,不再需要像参数压缩类方法那样专门存储预训练模型,也不需要通过微调来提升性能,降低了时间成本,具有存储量小、计算量低和网络性能好的特点。缺点在于:由于其特殊结构很难与其他的压缩与加速方法组合使用,并且泛化性较差,不适合作为预训练模型帮助其他模型训练。
1.卷积核级别
新型卷积核
- Iandola 等人[124]提出了 Squeezenet,使用 1×1 卷积代替 3×3 卷积,为了减少 feature map 的数量,将卷积层转变成两层:squeeze 层和 expand 层,减少了池化层。
- Howard 等人[125]提出了 MobileNet,将普通卷积拆分成depth-wise 卷积和 point-wise 卷积,减少了乘法次数。
- Sandler 等人[126]提出的 MobileNetV2 相比 MobileNet[125],在depth-wise 卷积之前多加了一个 1×1 expand 层以提升通道数,获得了更多的特征
- Zhang 等人[127]提出了ShuffleNet,为克服 point-wise卷积的昂贵成本和通道约束,采用了逐点组卷积(point-wise group convolution)和通道混洗(channel shuffle)的方式。
- Ma 等人[128]提出的 ShuffleNetV2 相比 ShuffleNet[127],为了减少内存访问成本,提出了通道分割(channel split)这一概念
- Zhang 等人[129]提出了交错组卷积(IGC),引入第 2 次组卷积,其每组输入通道来自于第 1 次组卷积中不同的组,从而与第 1 次组卷积交替互补。
- Xie 等人[130]在文献[129]的基础上进行泛化,提出交错的稀疏化组卷积,将两个结构化稀疏卷积核组成的构建块扩展到多个。
- Wan 等人[131]提出了完全可学习的组卷积模块(FLGC),可以嵌入任何深度神经网络进行加速。
- Park 等人[132]提出了直接稀疏卷积,用于稠密的feature map 与稀疏的卷积核之间的卷积操作。
- Zhang 等人[133]证明:高性能的直接卷积在增加线程数时性能更好,消除了所有内存开销。
简单filter组合
- Ioannou 等人[134]提出了从零开始学习一组小的不同空间维度的基 filter,在训练过程中,将这些基 filter 组合成更复杂的 filter
- Bagherinezhad 等人[135]提出对每层构建一个字典,每个 filter 由字典中的某些向量线性组合得到,将输入向量和整个字典里的向量进行卷积,查表得到该输入向量和 filter 的卷积结果
- Wang 等人[136]提出了构建高效 CNN 的通用 filter,二级 filter 从主 filter 中继承,通过整合从不同感受域提取的信息来增强性能
2.层级别
- Huang 等人[137]提出了随机深度用于类似 ResNet 含残差连接的网络的训练,对于每个 mini-batch,随机删除block 子集,并用恒等函数绕过它们。
- Dong 等人[138]为每个卷积层配备一个低成本协同层(LCCL),预测哪些位置的点经过ReLU后会变成0,测试时忽略这些位置的计算。
- Li等人[139]将网络层分为权重层(如卷积层和全连接层)和非权重层(如池化层、ReLU 层等),提出了将非权重层与权重层进行合并的方法,去除独立的非权重层后,运行时间显著减少。
- Prabhu 等人[140]使用同时稀疏且连接良好的图来建模卷积神经网络 filter 之间的连接。
- Wu 等 人[141]通过平移 feature map 的形式取代传统的卷积,从而减小了计算量。
- Chen 等人[142]引入==稀疏移位层(SSL)==来构造高效的卷积神经网络。在该体系结构中,基本块仅由 1×1 卷积层组成,对中间的 feature map 只进行少量的移位操作
3.网络结构级别
- Kim 等人[143]提出了 SplitNet 自动学会将网络层分成多组,获得一个树形结构的网络,每个子网共享底层权重.
- Gordon 等人[144]提出了 Morphnet,通过收缩和扩展阶段循环优化网络:在收缩阶段,通过稀疏正则化项识别效率低的神经元从网络中去除;在扩展阶段,使用宽度乘数来统一扩展所有层的大小,所以含重要神经元更多的层拥有更多计算资源.
- Kim 等人[145]提出了嵌套稀疏网络 NestedNet ,每一层由多层次的网络组成,高层次网络与低层次网络以 Network in network (NIN)的方式共享参数:低层次网络学习公共知识,高层次网络学习特定任务的知识.
参考文献
主要参考:高晗,田育龙,许封元,仲盛.深度学习模型压缩与加速综述[J].软件学报,2021,32(01):68-92.DOI:10.13328/j.cnki.jos.006096.
[124] Iandola FN, Han S, Moskewicz MW, et al. SqueezeNet: AlexNet-level accuracy with 50x fewer parameters and <0.5MB model size. arXiv Preprint arXiv: 1602.07360, 2016.
[125] Howard AG, Zhu M, Chen B, et al. Mobilenets: Efficient convolutional neural networks for mobile vision applications. arXiv Preprint arXiv: 1704.04861, 2017.
[126] Sandler M, Howard A, Zhu M, et al. Mobilenetv2: Inverted residuals and linear bottlenecks. In: Proc. of the IEEE Conf. on Computer Vision and Pattern Recognition. 2018. 45104520.
[127] Zhang X, Zhou X, Lin M, et al. Shufflenet: An extremely efficient convolutional neural network for mobile devices. In: Proc. of the IEEE Conf. on Computer Vision and Pattern Recognition. 2018. 68486856.
[128] Ma N, Zhang X, Zheng HT, et al. Shufflenet v2: Practical guidelines for efficient CNN architecture design. In: Proc. of the European Conf. on Computer Vision (ECCV). 2018. 116131.
[129] Zhang T, Qi GJ, Xiao B, et al. Interleaved group convolutions. In: Proc. of the IEEE Int’l Conf. on Computer Vision. 2017. 43734382.
[130] Xie G, Wang J, Zhang T, et al. Interleaved structured sparse convolutional neural networks. In: Proc. of the IEEE Conf. on Computer Vision and Pattern Recognition. 2018. 88478856.
[131] Wang X, Kan M, Shan S, et al. Fully learnable group convolution for acceleration of deep neural networks. In: Proc. of the IEEE Conf. on Computer Vision and Pattern Recognition. 2019. 90499058.
[132] Park J, Li S, Wen W, et al. Faster CNNs with direct sparse convolutions and guided pruning. arXiv Preprint arXiv: 1608.01409, \2016.
[133] Zhang J, Franchetti F, Low TM. High performance zero-memory overhead direct convolutions. arXiv Preprint arXiv: 1809.10170, \2018.
[134] Ioannou Y, Robertson D, Shotton J, et al. Training cnns with low-rank filters for efficient image classification. arXiv Preprint arXiv: 1511.06744, 2015.
[135] Bagherinezhad H, Rastegari M, Farhadi A. LCNN: Lookup-based convolutional neural network. In: Proc. of the IEEE Conf. on Computer Vision and Pattern Recognition. 2017. 71207129.
[136] Wang Y, Xu C, Chunjing XU, et al. Learning versatile filters for efficient convolutional neural networks. In: Advances in Neural Information Processing Systems. 2018. 16081618.
[137] Huang G, Sun Y, Liu Z, et al. Deep networks with stochastic depth. In: Proc. of the European Conf. on Computer Vision. Cham: Springer-Verlag, 2016. 646661.
[138] Dong X, Huang J, Yang Y, et al. More is less: A more complicated network with less inference complexity. In: Proc. of the IEEE Conf. on Computer Vision and Pattern Recognition. 2017. 58405848.
[139] Li D, Wang X, Kong D. Deeprebirth: Accelerating deep neural network execution on mobile devices. In: Proc. of the 32nd AAAI Conf. on Artificial Intelligence. 2018.
[140] Prabhu A, Varma G, Namboodiri A. Deep expander networks: Efficient deep networks from graph theory. In: Proc. of the European Conf. on Computer Vision (ECCV). 2018. 2035.
[141] Wu B, Wan A, Yue X, et al. Shift: A zero flop, zero parameter alternative to spatial convolutions. In: Proc. of the IEEE Conf. on Computer Vision and Pattern Recognition. 2018. 91279135.
[142] Chen W, Xie D, Zhang Y, et al. All you need is a few shifts: Designing efficient convolutional neural networks for image classification. In: Proc. of the IEEE Conf. on Computer Vision and Pattern Recognition. 2019. 72417250.
[143] Kim J, Park Y, Kim G, et al. SplitNet: Learning to semantically split deep networks for parameter reduction and model parallelization. In: Proc. of the 34th Int’l Conf. on Machine Learning, Vol.70. JMLR.org, 2017. 18661874.
[144] Gordon A, Eban E, Nachum O, et al. Morphnet: Fast & simple resource-constrained structure learning of deep networks. In: Proc. of the IEEE Conf. on Computer Vision and Pattern Recognition. 2018. 15861595.
[145] Kim E, Ahn C, Oh S. Nestednet: Learning nested sparse structures in deep neural networks. In: Proc. of the IEEE Conf. on Computer Vision and Pattern Recognition. 2018. 86698678.