基于连接重要性的稀疏剪枝

"SNIP: single shot network pruning based on connection sensitivity" 这篇文章提出了基于权重连接重要性(saliency)的剪枝方法,能够在深度模型训练之前(初始化阶段),通过mini-batch的多次采样,决定不同权重连接的重要性,进而根据剪枝目标生成剪枝模板(prunning mask)、应用于稀疏剪枝,从而节省了相对耗时的剪枝-微调迭代周期。

通常,深度网络的稀疏剪枝可以视作如下优化问题,即通过对参数集合的L0 范数施加不等式约束,确保模型收敛:

基于连接重要性的稀疏剪枝_第1张图片

网络中第个权重连接的重要性(saliency)记作sj,则可按权重wj 的幅度或Hessian矩阵元素决定sj 的大小: 

此外,文章提出了一种新的saliency 衡量准则,即损失函数关于权重连接的梯度。首先,剪枝优化问题重新定义如下:

基于连接重要性的稀疏剪枝_第2张图片

其中矩阵c 表示深度网络的连接模板,数值1表示连接,数值0表示断接。cj 从1变为0所引起的loss变化,可以反映权重连接的重要性,并进一步等价于loss关于cj 的梯度:

在剪枝阶段,为了跨层比较sj,梯度gj 的大小需要做标准化处理,然后根据剪枝目标可决定剪枝模板:

基于新定义的saliency,整体剪枝流程如下图所示。在初始化阶段完成单次操作之后,便可以按照常规方式训练剪枝后模型,避免了耗时的剪枝-微调迭代过程:

基于连接重要性的稀疏剪枝_第3张图片

文章最后在Tiny-ImageNet等数据集上做了实验验证,具体见实验部分

Paper地址:https://arxiv.org/abs/1810.02340

GitHub地址:https://github.com/gahaalt/ICLR-SNIP-pruning

GitHub地址:https://github.com/mi-lad/snip

你可能感兴趣的:(深度学习,模型压缩,优化加速)