标签:mob jade exp int erb nbsp ips 复杂 基本
一、背景
深度学习让计算机视觉任务的性能到达了一个前所未有的高度。但,复杂模型的同时,带来了高额的存储空间、计算资源消耗,使其很难落实到各个硬件平台。
为了解决这些问题,压缩模型以最大限度地减小模型对于计算空间和时间的消耗。
二、理论基础
必要性:目前主流的网络,如VGG16,参数量1亿3千多万,占用500多MB空间,需要进行300多亿次浮点运算才能完成一次图像识别任务。
可行性:在深度卷积网络中,存在着大量冗余地节点,仅仅只有少部分(5-10%)权值参与着主要的计算,也就是说,仅仅训练小部分的权值参数就可以达到和原来网络相近的性能。
三、目前方法
从数据,模型和硬件多维度的层面来分析,压缩和加速模型的方法
1、压缩已有的网络,包含:张量分解,模型剪枝,模型量化;(针对既有模型)
1.1、张量分解
定义:将网络权值当满秩矩阵,可以用多个低秩矩阵来逼近该矩阵。
目的:降低时间复杂度。
优点:适合模型压缩
缺点:实现并不容易,涉及计算成本高昂的分解操作,且需要大量的重新训练来达到收敛。
对于二维矩阵运算,SVD是个好方法。
SVD分解:
对于多维矩阵运算,涉及到Tensor,主要是CP分解,Tucker分解,Tensor Train分解,Block Term分解。
CP分解:
1.2、模型剪枝
将权重矩阵中相对不重要的权值剔除,然后再重新精修(finetune)网络进行微调。
1.2.1 广义修剪
1、正则化:修改目标函数,得到一个参数较少的网络,如添加L1Norm在损失函数;
2、修剪:删除冗余的特征和参数
1.2.2 基本流程
1、分析神经元重要程度
2、移除不重要的神经元
3、对网络进行微调
4、重新执行第一步,下一轮迭代
1.2.3 核心问题
1.2.3.1 剪什么?
1、细粒度剪枝:保留模型精度,但依赖硬件设备
2、粗粒度剪枝:模型速度和大小都有效提升,但精度会大幅下降。
1.2.3.2 怎么剪?
1、权重衰减法:属正则化方法
1.2.3.3 什么时候剪?
迭代式剪枝:训练权重----》剪枝-----》训练权重
1.3、网络量化
一般,神经网络模型的参数都是32bit长度的浮点数表示。很多时侯不需要这么高的精度,可以通过量化,用如用8bit来表示。通过牺牲精度来降低每个权值所需要的空间。SGD所需要的精度仅为6-8bit,合理的量化可保证精度的情况下减小模型的存储体积。根据量化方法不同,可分为2值量化,3值量化,多值量化。
3个问题:如何量化?如何计算梯度?如何保证准确率?
1.3.1、二值量化
将权值矩阵中的单精度浮点数用两个值来表示。一般使用符号函数或加入线性化的符号函数来近似。
[2017,Zhou,ICLR]Incremental network quantization:Towards lossless cnns with low-precision weights:给定任意结构的全精度浮点神经网络模型,能将其转换成无损的低比特二进制模型。增量式网络量化方法,三种独立操作:权重划分、分组量化、再训练。
1.3.2、 三值量化
改进的二值量化,在二值网络函数(-1,+1)的基础上,显式地增加0这个量化值。
2016,Fengfu,CVPR]Ternary weight networks:三值化
1.3.3、 多值量化
使用8big或16bit定点数来表示。
[2016,DETTMERS]8-bit approximations for parallelism in deep learning:开发并测试8bit近似算法,将32bit的梯度和激活值压缩到8bit,通过 GPU集群测试模型和数据的并行化性能,在保证模型预测精度的条件下,提出的方法取得两倍的数据传输加速。
2、构建新的小型网络,包含:知识蒸馏,紧凑网络设计;(针对新模型)
2.1、迁移学习/知识蒸馏
采用预训练好的复杂模型的输出作为监督信号去训练另外一个简单的网络。
2017,Romero,ICLR]Hints for the deep nets:设计了更深的更窄的学生模型,同时保证两者的网络参数相同,采用Hints方式。
2.2、紧凑网络设计
1、MobileNet系列:采用深度可分离卷积来构建卷积。
2、ShuffleNet:
3、SqueezeNet
3、计算加速(针对硬件)
Faster CNNs with direct sparse convolutions and guided pruning:提出一种基于向量形式的乘法,实现密集矩阵与稀疏矩阵之间的高效乘法运算。
[2017,ICML]MEC: Memory-efficient Convolution for Deep Neural Network:内存利用率高且速度较快的卷积计算方法
4、对数据进行变换(针对数据源)
WAE-Learning a Wavelet-like Auto-Encoder to Accelerate Deep Neural Networks:WAE借助小波分解得思想,将原图分解成两个低分辨率图像,以达到网络加速的目。
标签:mob jade exp int erb nbsp ips 复杂 基本
原文地址:https://www.cnblogs.com/jimchen1218/p/11957885.html