内容简介:信道裁剪是深度模型压缩的主要领域之一。现存的裁剪方法有的用信道的稀疏约束来训练模型,有的用最小化预训练模型和压缩模型间的特征图重建误差。两种策略都有一些限制:前者计算代价高而且难以收敛,后者优化重建误差但忽视了信道的识别能力。本文介绍的方法是开源模型压缩框架PocketFlow的裁剪方法之一。相关研究
信道裁剪是深度模型压缩的主要领域之一。现存的裁剪方法有的用信道的稀疏约束来训练模型,有的用最小化预训练模型和压缩模型间的特征图重建误差。两种策略都有一些限制:前者计算代价高而且难以收敛,后者优化重建误差但忽视了信道的识别能力。 本文提出了一个简单而有效的方法,称作识别感知信道裁剪,用于选择真正对识别能力有贡献的信道。
本文介绍的方法是开源模型压缩框架PocketFlow的裁剪方法之一。
相关研究
网络量化
Rastegari等人提出将网络中的参数量化为+1/-1。所提出的BWN和XNOR-Net可以在大规模数据集上达到能和对应全精度相媲美的准确度。在Dorefa-net中,CNN的高精度权重,激活和梯度被量化为低比特位版本,带来了资源和硬件能力需求的大量减少。通过引入0作为第三个量化值,三元权重网络TWNs能达到比二元神经网络更高的精度。
稀疏或低等级连接
为了减少神经网络存储需求。Han等人提出零输入或输出连接的神经元能从神经网络中安全的移除。通过L1/L2正则化的帮助,权重在训练中被推向0。随后AlexNet的压缩率通过剪枝、量化、哈夫曼编码能达到1/35。考虑到参数重要性在剪枝过程中被改变,Guo等人提出动态网络手术。通过之后提出的使用稀疏约束训练能达到更高的压缩率。
信道裁剪
对比网络量化和稀疏连接,信道裁剪同时从网络中移除信道和相关过滤器。因此只需要一点工作就能很好地被现存深度学习库支持。 信道裁剪的关键问题是评估信道重要性。 Li等人提出通过计算权重绝对值之和来测量信道重要性。Hu等人定义APoZ测量神经元的激活。通过目标函数的稀疏正则化,基于训练的方法能在训练阶段学习到压缩模型。考虑到效率,重建方法将信道选择问题转换为重建损失的优化问题,并通过贪婪策略或LASSO回归来解决。
方法
使 为训练样本,N代表样本数量。给定一个L层CNN模型M,使 为模型第l卷积层的参数。 和 为过滤器的高和宽;c和n代表输入和输出的信道数。 和 代表输入的特征图和相应输出特征图。 为第i个样本第k个信道的特征图。 记为第k个输入信道和第j个输出信道对应的参数。第i个样本第j个信道对应的特征图 为: 给定预训练模型M,信道裁剪的任务是裁剪W的冗余信道,从而减少模型大小,加速运算。
为了选择信道,本文介绍 的变体:
如果 则 , 则 。||·||F代表Frobenius正则化。
动机
给定一个预训练模型M,现存方法最小化M和裁剪模型的重建误差:
为了增加中间层的识别能力,介绍对于深度网络中间层的额外损失。在本文中,我们均匀地插入P个识别感知损失 。使 为插入损失的层。
LP+1为最后一层L。对于第p个损失,我们在 层中做信道裁剪,当p=1时 。
构建识别感知损失
如图1所示,每一个损失使用 的输出作为输入特征。为了使损失的计算更容易,本文在特征图上使用平均池化,为了加速收敛,在平均池化前使用batchnorm和ReLU,最终计算对于在 层输入特征图的损失 。
代表 层的输出特征图, 为第i个样本的特征图。关于第p个loss的识别感知损失为:
I{·}是指示器函数。通过同时考虑交叉熵损失和重建损失,我们得到联合损失函数:
最后对于识别感知的信道裁剪优化问题描述为:
识别感知的信道裁剪
通过在中间层加入P个损失 ,被提出的识别感知信道裁剪算法如算法1所示。从预训练模型M开始,执行P+1个阶段的信道裁剪。
用于信道选择的贪婪算法:
直接优化问题(7)是非常困难的,本文提出贪婪算法解决。具体而言,首先移除所有信道,然后选择真正对深度网络识别能力有贡献的信道。使 为被选择信道的索引,期初未空集。如算法2所示,一旦A被决定,根据被选择的信道优化W,通过最小化如下问题:
通过 优化 。
停止条件
由于L是凸函数,L(Wt)将随着算法2中的迭代索引t单调下降。因此可以采取如下停止条件:
实验
这一部分,本文经验性的评价识别感知的信道裁剪。使用几个state-of-the-art方法来作为基准,包括ThiNet、Channel pruning和Slimming。此外,对于提出的方法其他几个变体也做了比较,包括DCP(使用裁剪率n的识别感知信道裁减),DCP-Adapt(使用停止条件的DCP),Random DCP(随机选择信道代替基于梯度测策略)。
本文在Pytorch上实现提出的方法。基于预训练模型,应用本文方法选择信道。在实践中,通过网络深度选择额外损失的数量P。具体的,在ResNet-50中插入3个损失,在VGG和ResNet-18中插入2个损失。
使用添加nesterov的SGD作为优化器,momentum和权重衰减设置为0.9和0.0001。设置为1.0。在CIFAR-10,使用大小为128的mini-batch微调400个epochs。学习率初始化为0.1,在epoch160和240处除以10。在ILSVRC-12我们微调60个epochs,mini-batch为256,学习率从0.01开始,在epoch36,48,54处除以10。
在CIFAR-10上的比较:
本文提出的方法在相同加速率上有最好的表现,DCP-Adapt裁剪的VGG网络比原与训练模型降低了0.58%的测试误差,并获得了15.58倍的尺寸减少。
在ILSVRC-12上的比较:
为了验证再大型数据集的有效性,本文使用该方法在ILSVRC-12数据集ResNet-50网络中实现2倍加速。本文方法比ThiNet在top-1中低0.81%误差,在top-5中低0.51%误差。对比channel pruning,降低了0.79%的top-5误差。
以上所述就是小编给大家介绍的《模型压缩:识别感知的深度神经网络信道裁剪 | 论文分享》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- Go 并发 -- 信道
- 调查:工控系统设备面临边信道严重威胁
- SSH加入抵御边信道攻击的功能
- CVE-2018-3639 | 最新侧信道攻击详细分析
- Golang学习笔记之并发.协程(Goroutine)、信道(Channel)
- 基于时延的盲道研究:受限环境下的内容回传信道
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
数据结构与算法分析
[美]Mark Allen Weiss / 张怀勇 / 人民邮电出版社 / 2007年 / 49.00元
《数据结构与算法分析:C++描述(第3版)》是数据结构和算法分析的经典教材,书中使用主流的程序设计语言C++作为具体的实现语言。书的内容包括表、栈、队列、树、散列表、优先队列、排序、不相交集算法、图论算法、算法分析、算法设计、摊还分析、查找树算法、k-d树和配对堆等。《数据结构与算法分析:C++描述(第3版)》适合作为计算机相关专业本科生的数据结构课程和研究生算法分析课程的教材。本科生的数据结构课......一起来看看 《数据结构与算法分析》 这本书的介绍吧!