神经网络模型剪枝
深度神经网络(DNN)模型剪枝是通过去除DNN中冗余的参数和结构来降低DNN的计算量,可分为非结构化剪枝和结构化剪枝。非结构化剪枝将DNN中每个独立的连接看作一个可裁剪的对象,可实现很高的裁剪率,但是其剪枝结果必须存储为稀疏矩阵,需要定制加速器才能完成相应的计算加速,这在一定程度上限制了DNN在通用体系结构下的计算加速。非结构化剪枝的研究则可追溯到20世纪90年代的OBD(OptimalBrainDamage)算法和OBS(Optiaml Brain Surgeon)算法,二者都是利用损失函数的二阶泰勒展开来计算连接的重要性,但是求解二阶导数非常耗时。近年来涌现出诸多DNN模型剪枝的相关研究,比如深度压缩(Deep Compression)提出剪去网络中绝对值量级比较小的参数来实现一种高度压缩的DNN模型;Data-free算法则提出可于多次迭代过程中删除冗余参数;HashedNets利用哈希函数将连接权重随机分组实现参数共享,从而减少了参数数量。结构化剪枝关注于相对完整的网络结构的裁剪,比如某一特征通道或者整个卷积核。Adam等人提出了一种粗粒度的基于显著性度量的通道剪枝算法。RNP中提出了一种运行时神经网络剪枝框架,在运行时根据输入图像和当前特征图,动态地判断每个卷积核的重要性并进行删减。StructuredPruning提出了包括特征映射剪枝、卷积核剪枝以及细粒度的核定长剪枝方法,通过显著性度量来删除DNN模型中的一部分网络结构,同时保持剩余结构的相对完整性。ThiNet中利用下一层的输入信息来指导上一层的通道剪枝以保证剪枝过程的安全性,并基于逐层剪枝和微调的方法,实现DNN模型的结构化剪枝。相比于非结构化剪枝,结构化剪枝则按照不同的粒度将DNN权值或特征张量划分为不同大小的结构进行裁剪,可在通用体系结构下实现加速,但是剪枝率往往偏低。
此文由 怡心湖 编辑,若您觉得有益,欢迎分享转发!:首页 > 常识论 » 深度神经网络的剪枝和量化方法