结构化剪枝综述数据派THU共 1987字,需浏览 4分钟 ·2021-11-24 03:44 来源:专知本文附论文,建议阅读6分钟本文为结构化剪枝综述。卷积神经网络(Convolutional Neural Networks)特别是深度神经网络(Deep Neural Networks)在计算机视觉任务上发挥着愈发重要的作用。在一个神经网络模型中,通常 包含卷积层、汇合层、全连接层、非线形层等基本结构,通过这些基本结构的堆叠,最 终形成我们所常用的深度神经网络。早在 1998 年,LeCun 等人使用少数几个基本结构组 成 5 层的 LeNet-5 网络[1],并在 MNIST 数据集上得到了 98.9%的分类精度,但此时的深 度神经网络还相对简单,并且只能用于简单的任务上;在 2012 年的 ImageNet 图像分类 竞赛中,AlexNet[2]将深度提高到了 8 层,并且达到了远超传统方法的结果;此后,VGG 团队提出的 VGG-Net[3]进一步加深了网络,使网络最高达到了 19 层。虽然增加网络的 深度能够带来性能的提升,但也不能无限制的增加网络深度,随着网络的加深,梯度消 失会愈发严重,并且模型会变得愈发难以训练。因此在 2016 年,He 等人提出 ResNet[4], 在模型中加入残差结构,并一举将网络的深度提高到 152 层。至此,随着深度学习的研 究逐步推进,神经网络可以变得更宽更深更复杂,与此同时带来更好的表示能力和性能 表现。当一些研究者将模型变得更大、更深时,另一些则考虑在保持模型精度的同时使模 型变得更小、更快,其中一类重要的方法为模型压缩。模型压缩大致上可以分为四类:模型量化、模型剪枝、低秩近似和知识蒸馏。通常来说我们用 32 位浮点数来保存模型,模型量化主要考虑用更小位数来保存模型 参数,通常使用的有 16 位浮点数和 8 位整数,其参数量和计算量都会相应地随着存储位 数而成倍降低;更有甚者,将模型量化成二值网络[5],三元权重[6]或者同或网络[7]。例 如,经过简单量化之后的 MobileNetV1[8]仅仅只有 4-5MB,能够轻松部署在各种移动平台上。https://cs.nju.edu.cn/wujx/模型剪枝[9,10,11,12]主要分为结构化剪枝和非结构化剪枝,非结构化剪枝去除不重 要的神经元,相应地,被剪除的神经元和其他神经元之间的连接在计算时会被忽略。由 于剪枝后的模型通常很稀疏,并且破坏了原有模型的结构,所以这类方法被称为非结构 化剪枝。非结构化剪枝能极大降低模型的参数量和理论计算量,但是现有硬件架构的计 算方式无法对其进行加速,所以在实际运行速度上得不到提升,需要设计特定的硬件才 可能加速。与非结构化剪枝相对应的是结构化剪枝,结构化剪枝通常以滤波器或者整个 网络层为基本单位进行剪枝。一个滤波器被剪枝,那么其前一个特征图和下一个特征图 都会发生相应的变化,但是模型的结构却没有被破坏,仍然能够通过 GPU 或其他硬件来 加速,因此这类方法被称之为结构化剪枝。低秩近似[13,14,15]将一个较大的卷积运算或者全连接运算替换成多个低维的运算。常用的低秩近似方法有 CP 分解法[13],Tucker 分解[14]和奇异值分解[15]。例如,一个 𝑀 × 𝑁的全连接操作若能近似分解为𝑀 × 𝑑和𝑑 × 𝑁(其中𝑑 ≪ 𝑀, 𝑁)那么这一层全连接 操作的计算量和参数量将被极大地缩减。知识蒸馏(Knowledge Distillation)[16]通过使用一个足够冗余的教师模型,来将其 知识 “传授”给紧凑的学生模型。在训练时同时使用教师模型的软标签和真实标记的硬 标签来共同训练学生模型,从而能够使学生模型达到接近教师模型的性能,也因此能够 降低达到目标精度所需的计算量和模型大小。上述模型压缩方法能配合使用,一个模型经过结构化剪枝之后,由于其结构没有发 生重要变化,所以能紧接着进行低秩近似以减少参数量和计算量,最后再通过参数量化 进一步减少参数量并加速。近些年来,随着物联网的发展,企业将深度学习模型部署在 嵌入式设备的需求在快速增长,而嵌入式设备计算能力有限,并且由于成本原因希望部 署的模型尽可能地小。模型压缩的意义在于保证精度的同时尽可能减少计算量和参数量, 因此对于嵌入式设备的部署有切实的价值。模型压缩包含很多内容,这里我们将主要关 注剪枝算法中的结构化剪枝。在本章的剩余部分,我们将首先介绍结构化剪枝的一些基本方式,然后介绍一些经典的和最新的结构化剪枝算法,最后对结构化剪枝的应用和未 来发展进行总结和展望。 浏览 61点赞 评论 收藏 分享 手机扫一扫分享分享 举报 评论图片表情视频评价全部评论推荐 ThiNet:模型通道结构化剪枝GiantPandaCV0基于一阶泰勒展开式的结构化剪枝GiantPandaCV0结构化思维不止dotNET0TheBigDB结构化数据库TheBigDB 是一个非常松散的结构化数据库软件。其 API 是基于 HTTP 的 GET 和 PTheBigDB结构化数据库0结构化查询语言结构化查询语言0结构化查询语言 结构化查询语言(Structured Query Language)简称SQL,是一种特殊目的的结构化查询语言0puppy-language结构化脚本语言puppy是一种解释型的结构化脚本语言。puppy的语法十分简单,关键字也较少(14个),适合非专业puppy-language结构化脚本语言0puppy-language结构化脚本语言puppy是一种解释型的结构化脚本语言。puppy的语法十分简单,关键字也较少(14个),适合非专业编程人员使用,譬如游戏开发过程中某些逻辑的编写,或为应用程序提供脚本支持,由用户为软件编写各种扩展。puppy-language结构化脚本语言0TheBigDB结构化数据库TheBigDB是一个非常松散的结构化数据库软件。其API是基于HTTP的GET和POST请求。示例JavaScript代码:varthebigdb=newTheBigDB;thebigdb.StatTheBigDB结构化数据库0结构化计算机组成AndrewcS.Tanenbaum获得过美国麻省理工学院的理学学士学位和加利福尼亚大学伯克利分校的结构化计算机组成0点赞 评论 收藏 分享 手机扫一扫分享分享 举报