AI模型压缩算法汇总

AI模型压缩算法汇总

  • 最新新闻
    2019-06-29 新闻原文:CVPR 2019:北邮提出新AI模型压缩算法,显著降低计算复杂度

    论文:http://openaccess.thecvf.com/content_CVPR_2019/papers/Li_OICSR_Out-In-Channel_Sparsity_Regularization_for_Compact_Deep_Neural_Networks_CVPR_2019_paper.pdf

    GitHub: https://github.com/dsfour/OICSR

  • 主要内容
    本研究提出了一种新的结构正则化形式Out-In-Channel Sparsity Regularization (OICSR)来克服分离式结构正则化的缺陷。OICSR充分考虑了网络中连续层之间的关联关系,将结构正则化同时运用于连续网络层中相互对应的out-channels和in-channels,从而可以在更小的精度损失下移除更多的冗余通道。

    Out-In-Channel结构稀疏正则化

    连续两层网络的关联关系如图1所示,本研究用相同的颜色来标识连续层之间相互对应的out-channel和in-channel。

    连续两层网络中相互对应的输入输出通道在网络运行过程中是相互合作相互依赖的,第l层的输入与第l层中第i个out-channel的权重向量共同生成第l层的第i个输出特征图,紧接着第l层的第i个输出特征图和第l+1层中第i个in-channel的权重向量共同生成第l+1层的输出。

    除此之外,在网络通道剪枝过程中连续层之间对应的out-channel和in-channel会被共同保留或者移除。所以,有理由认为在剪枝工作中,连续层之间对应的out-channels和in-channels应该被共同且平等地考虑。
    AI模型压缩算法汇总_第1张图片

    图1 连续层网络的关联关系及Out-In-Channel的定义

    分离式结构正则化的缺陷在于仅仅使得第l层网络的out-channels维度的重要程度分离开来,然而第l+1层中对应的in-channels却被忽略了。存在这样的情况,第l层网络的第i个out-channel因为分离式结构正则化,在训练过程变得冗余,因此在通道剪枝过程中被移除。然而被同时移除的l+1层网络中对应的第i个in-channel可能还是相对重要的,这时网络的能力和精度就被严重的破坏了。

    本研究因此提出在应用结构正则化进行剪枝时,应将连续层之间对应的out-channel和in-channel当成一个正则化组out-in-channel来进行结构化约束。在网络训练过程中,带有OICSR的优化目标如公式2和公式3所示:
    AI模型压缩算法汇总_第2张图片
    其中的符号‘+’表示对第l层和第l+1层中对应输入输出通道的权重向量进行拼接,从而可以对同一个out-in-channel正则化组内的权重向量进行结构化约束。不同于分离式结构正则化,OICSR可以使得神经网络中out-in-channels的重要性分离开来,也就是说,对于连续网络层中共同作用相互对应的out-channels和in-channels,它们将会同时变得重要或者同时变得冗余。因此在对网络进行剪枝时,可以在更小的精度损失下,移除更多冗余的out-in-channels.

    OICSR是一种通用的结构正则化形式,很多结构正则化项GroupLasso [4], GrOWL regularization [5]等都可以拓展OICSR的形式。例如Group Lasso拓展成OICSR的形式如公式4所示:
    AI模型压缩算法汇总_第3张图片

    图2 迭代剪枝流程

    本研究的迭代剪枝流程如图2所示。在通道剪枝过程中,涉及到冗余通道选取的问题。当前的很多工作仅仅使用第l层的统计信息来选择第l层和第l+1层之间的冗余通道,然而第l+1层中的统计信息又被忽略了。沿用out-in-channel的思想,认为应当同时利用连续两层网络的统计信息来选取两层网络间冗余的out-in-channels。为了简洁性表示,本研究使用了通道能量(当然也很有效果)作为通道重要性的评判标准,通道重要性准则如公式5所示:
    AI模型压缩算法汇总_第4张图片

    实际上神经网络中每一层的冗余程度都不同,当前的很多工作为每一层网络设定均等的剪枝比例或者根据经验人为地设定剪枝比例是不够合理的。因此本研究提出一个全局贪婪剪枝算法(Algorithm 1),来全局地决定每一层网络的剪枝比例。首先根据公式8计算出网络中全部out-in-channels的通道能量,接着对这些通道能量进行全局排序,最后根据预先设定的全局目标剪枝比例,来贪婪地选取网络中的冗余通道,最后每层的剪枝比例因此也被确定下来。

  • 深度学习模型压缩方法

    目前深度学习模型压缩方法的研究主要可以分为以下几个方向:

    1、更精细模型的设计。
    目前的很多网络都具有模块化的设计,在深度和宽度上都很大,这也造成了参数的冗余很多,因此有很多关于模型设计的研究,如SqueezeNet、MobileNet等,使用更加细致、高效的模型设计,能够很大程度的减少模型尺寸,并且也具有不错的性能。

    2、模型裁剪。
    结构复杂的网络具有非常好的性能,其参数也存在冗余,因此对于已训练好的模型网络,可以寻找一种有效的评判手段,将不重要的connection或者filter进行裁剪来减少模型的冗余。

    3、核的稀疏化。
    在训练过程中,对权重的更新进行诱导,使其更加稀疏,对于稀疏矩阵,可以使用更加紧致的存储方式,如CSC,但是使用稀疏矩阵操作在硬件平台上运算效率不高,容易受到带宽的影响,因此加速并不明显。

    除此之外,量化、Low-rank分解、迁移学习等方法也有很多研究,并在模型压缩中起到了非常好的效果。

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