杂七杂八
论文阅读笔记-剪枝
剪枝入门
模型剪枝算法综述-李屹
剪枝、量化、低秩分解与知识蒸馏
主流的剪枝流程主要包括衡量神经元的重要性和去除不重要的神经元2个步骤,对网络进行微调后返回第1步进行下一轮剪枝。终止标准为剪枝后模型的准确度与原始网络准确度差值高于一定阈值或是剪枝后所得模型减小的运算量达到一定数值。
对于现有剪枝算法的研究主要归纳为以下3个方面:
- 确定关于剪枝的粒度,即剪权重、剪通道、剪卷积核;
- 关于剪枝的方法,包括如何评价神经元的重要性以及如何确定神经网络每层的裁减比例;
- 关于剪枝的时机即剪枝与训练交替进行或是剪枝与训练同时进行。
深度神经网络压缩与加速综述-曾焕强
本文回顾了近年来的深度神经网络压缩和加速技术。这些技术分为四类:参数量化、模型剪枝、轻量型卷积核设计和知识蒸馏。
其中,基于参数量化的方法是降低权重参数的存储位数;基于参数剪枝的方法是通过去除权重参数中的非关键冗余部分来减少参数量;基于轻量型卷积核设计的方法从滤波结构乃至卷积方式的层面进行改进设计,从而降低计算复杂度;基于知识蒸馏的方法利用知识迁移来训练一个紧凑的网络模型且能复现大型网络的性能。
| 压缩方法 | 方法描述 | 适用层级 | 优劣分析 |
|---|---|---|---|
| 参数量化 | 基于权值共享、矩阵近似,减少参数及激活值的存储位数,降低内存开销 | 卷积层 全连接层 |
能够显著减少模型占用的存储空间;二值化伴随着网 络表达能力衰减,精度骤降 |
| 模型剪枝 | 判断参数、通道、滤波、卷积层的显著性,并剪除不重要的部分 | 卷积层 全连接层 |
鲁棒性强,性能良好,支持从头训练与预训练模型;人 工方法设计较复杂;自动搜索方法消耗计算资源大 |
| 轻量型卷积核设计 | 使用轻量型卷积核替代原有卷积核,或采用非标准卷积方式 | 卷积层 | 容易部署在移动端,性能较好;设计难度高,且不易与 其他方法结合使用 |
| 知识蒸馏 | 将softmax分类器输出作为软知识,作为训练学生网络的先验知识 | 卷积层 全连接层 |
在中小型数据集上性能优越,泛化能力强;压缩后模型 性能对教师/学生网络的结构十分敏感;只能从头训练 |
另外,由于ResNet系列模型具有复杂的分支结构,虽然其参数量相较于具有平坦结构的VGG模型更小,但在实际训练和推理中耗时更长。可见,主流深度学习模型的存储和计算成本对于具有严格时延约束条件的实时应用来说过于高昂。
随着移动端设备的普及和市场规模的扩大,工业界迫切需要将深度学习模型部署到资源有限的边缘设备上。
大多数研究都是采用每轮(epoch)训练的平均训练时间来衡量运行时间。对于不同的训练集,一般都采用Top-1正确率和Top-5正确率两种分类精度,其中Top-1正确率指概率最大的预测结果对应正确标签的概率,Top-5正确率指概率最大的5个预测结果中包含正确标签的概率
深度神经网络压缩与加速综述-纪荣嵘
深度神经网络在人工智能的应用中,包括计算机视觉、语音识别、自然语言处理方面,取得了巨大成功.但这些深度神经网络需要巨大的计算开销和内存存储,阻碍了在资源有限环境下的使用,如移动或嵌入式设备端为解决此问题,在近年来产生大量关于深度神经网络压缩与加速的研究工作对现有代表性的深度神经网络压缩与加速方法进行回顾与总结,这些方法包括了参数剪枝、参数共享、低秩分解、紧性滤波设计及知识蒸馏具体地,将概述一些经典深度神经网络模型,详细描述深度神经网络压缩与加速方法,并强调这些方法的特性及优缺点此外,总结了深度神经网络压缩与加速的评测方法及广泛使用的数据集,同时讨论分析一些代表性方法的性能表现最后,根据不同任务的需要,讨论了如何选择不同的压缩与加速方法,并对压缩与加速方法未来发展趋势进行展望。
一般情况下,压缩和加速深度神经网络是2个不同的任务,两者之间存在区别,但又紧密联系例如卷积神经网络(convolutionalneuralnetworks,CNNs)分2种类型计算层,即卷积层和全连接层.1)卷积层,它是计算耗时最大的层,也是卷积神经网络能够获得高层语义信息重要层在卷积层内,可以通过权值共享减少了对权值的大量存储.2)全连接层,不同于卷积层的局部感知,在全连接层中,每一个输出单元都与所有输入单元相关,通过密集的权值进行连接,因此需要大量的参数因为卷积层与全连接层内在的本质区别,通常把卷积层的计算加速和全连接层的内存压缩认为是2种不同的任务.这2类计算层之间又是紧密联系的,卷积层为全连接层提供分层的高层特征,全连接层通过分类指导卷积层的高判别力特征提取.在本文中,我们总结与回顾近几年来压缩和加速深度神经网络方面的相关工作,相关算法与解决方案涉及多门学科,包括机器学习、参数优化、计算架构、数据压缩、索引、硬件设计等.
主流的压缩与加速神经网络的方法可以分成5种:
1)参数剪枝(parameter pruning);
2)参数共享(parameter sharing);
3)低秩分解(low-rank decomposition);
4)紧性卷积核的设计(design compact convolution filters);
5)知识蒸馏(konwledge distillation)

深度学习模型压缩与加速综述-高 晗
摘要:随着训练可用数据量的增长与计算平台处理能力的增强,基于深度学习的智能模型能够完成越来越复杂的任务,其在计算机视觉、自然语言处理等人工智能领域已经取得重大的突破.然而,这些深度模型具有庞大的参数规模,与此相伴的可畏的计算开销与内存需求使其在计算能力受限平台(例如移动嵌入式设备)的部署中遇到了巨大的困难与挑战.因此,如何在不影响深度学习模型性能的情况下进行模型压缩与加速成为研究热点.首先对国内外学者提出的经典深度学习模型压缩与加速方法进行分析,从参数剪枝、参数量化、紧凑网络、知识蒸馏、低秩分解、参数共享和混合方式这7个方面分类总结;其次,总结对比几种主流技术的代表性方法在多个公开模型上的压缩与加速效果;最后,对于模型压缩与加速领域的未来研究方向加以展望。
解决的问题:当前的综述论文较为不全,切对应的文章不是十分新颖的文章。
意义:本文提出的技术分类更加齐全,收录的文章更新颖、热门,对于主流研究方向进行了重点介绍和分析
深度学习模型压缩与加速方法总结
| 类别 | 技术 | 描述 |
|---|---|---|
| 压缩参数 | 参数剪枝、参数量化、低秩分解、参数共享 | 设计关于参数重要性的评价准则,基于该准则判断网络参数的重要程度,删除冗余参数 将网络参数从 32 位全精度浮点数量化到更低位数 将高维参数向量降维分解为稀疏的低维向量 利用结构化矩阵或聚类等方法映射网络内部参数 |
| 压缩结构 | 紧凑网络、知识蒸馏 | 从卷积核、特殊层和网络结构这 3 个级别设计新型网络 将较大的教师模型的信息提炼到较小的学生模型 |
| 混合方式 | 混合方式 | 组合使用前述几种方法 |
自写综述:随着数据量的增长、计算能力的提升,现在的神经网络变得愈加复杂、尤其是对于机器视觉、自然语言处理等领域取得重大突破相应的参数量计算量都有着更高的要求。然而对于边缘设备、嵌入式设备等,在其部署与运行是一个较大的挑战。因此需要对模型进行压缩、去除神经网络的冗余性。,不影响精度的情况下,尽量减少参数量。本文将模型压缩与加速从参数剪枝、参数量化、紧凑网络、知识蒸馏、低秩分解、参数共享和混合方式这7个方面分类总结。其次是比较各类压缩与加速技术中一些代表性方法的压缩效果。最后为探讨模型压缩与加速领域未来的发展方向。
轻量级神经网络架构综述-葛道辉
摘要:深度神经网络已经被证明可以有效地解决图像、自然语言等不同领域的问题.同时,伴随着移动互联网技 术的不断发展,便携式设备得到了迅速的普及,用户提出了越来越多的需求.因此,如何设计高效、高性能的轻量级神 经网络,是解决问题的关键.详细阐述了 3 种构建轻量级神经网络的方法,分别是人工设计轻量级神经网络、神经网 络模型压缩算法和基于神经网络架构搜索的自动化神经网络架构设计;同时,简要总结和分析了每种方法的特点,并 重点介绍了典型的构建轻量级神经网络的算法;最后,总结现有的方法,并给出了未来发展的前景.
人工设计的轻量级神经网络模型(我们将介绍人工设计的高效的轻量化网络结构及其背后的原理.)
使用小卷积核代替大卷积(使用 3×3 卷积核代替 5×5 和 7×7 大小的大卷积核:对于一个大小 5×5 的感受野,可以通过两层 3×3 大小的卷 积实现;对于一个 7×7 的卷积核,可通过 3 层 3×3 卷积实现)

参数量也会减少,计算量也会减少,还可以增强非线性能力(两层33可以合并里两层非线性层),之后也有人提出将33分解成连续的1* 3和3* 1卷积
限制中间特征的通道数量
对于标准的不带 bias 的卷积操作 FLOPs=H×W×Cin×Cout×k2,运算量受到输入通道数 Cin 和卷积核数量 Cout 的影响.一般来说,卷积核数量代表提取的特征数量,减少会影响网络的准确率,因此可以选择降低输入通道数 Cin 来减少运算量.
分解卷积运算
标准的卷积操作是将一个卷积核用在输入特征的所有通道上.一方面,模型的参数量较大;另一方面,合并 所有通道的卷积运算存在很大冗余.通过分组卷积,ResNeXt[19]将多个分支合并为一个分支.与 ResNet[2]同等计 算消耗的情况下,有着更高的准确率
深度卷积对于每个输入通道采用不 同的卷积核,即一个通道对应一个卷积核,卷积操作是按照通道进行分解的;逐点卷积是卷积核大小为 1×1 的标 准卷积,作用在输入的所有通道上,将来自不同通道的特征进行融合.
.

标准卷积的计算量为 Dk×Dk×M×N×H×W, 而两步的深度可分离卷积的计算量为 Dk×Dk×M×H×W+ M×N×H×W,与标准卷积的运算量相比:
$$
\frac{D_k\times D_k\times M\times D_F\times D_F+M\times N\times D_F\times D_F}{D_k\times D_k\times M\times N\times D_F\times D_F}=\frac{1}{N}+\frac{1}{D_k^2}
$$
一般常用的卷积核大小为 3×3,即,一个深度可分离卷积的 FLOPs 为 3×3× M×H×W+1×1×M×N×H×W,M 为输 入特征通道数,H,W 为输入特征高和宽,N 为当前层卷积核数量.一般来说 N 要远大于 9,此时,深度卷积的主要计 算量集中在 1×1 的逐点卷积上.为解决这个问题,ShuffleNet[9]提出了 Group 逐点卷积,将逐点卷积进行分组卷积 操作,以降低在逐点卷积操作方面的计算消耗,如图 4 所示.图 4(a)为一般分组卷积,造成分组之间信息无法流通; 图 4(b)和图 4(c)为通道混洗(channel shuffle)操作.
卷积神经网络的压缩算法
基于规则的神经网络模型压缩
- 权重裁剪(权重裁剪是指对网络结构中的权重进行删减,从而达到压缩网络的目的.)
- 权重量化(16 位的定点数作为权重、8 位定点量化、二值权重网络(只有-1,1)、二值神经网络(1,0))
- 低秩分解(卷积层的卷积核 W∈Rw×h×c×n 是一个 4D 的张量,低秩分解的方法主要是将卷积核进行分解以减少冗余,低秩 分解的关键在于如何对卷积核的参数进行排列,以及要在哪个维度上进行秩的约束.)
- 知识蒸馏(知识蒸馏是创建一个“学生”网络,然后让其去拟合“教师”网络分布的方 法,使得小型网络能够学习到大型网络的知识)
基于自动机器学习的自动神经网络模型压缩
自动机器学习算法(AutoML)受到学术界和工业界的广泛关注,可以看作是设计一系列的控制器 操作机器学习模型,使得模型可以自动地学习到合适的参数和网络架构而不需人工的干预,减少对专业知识和 领域知识的要求,从而降低设计机器学习算法的难度.AMC
基于神经网络架构搜索的自动化轻量级神经网络设计
人工设计轻量级神经网络需要考虑层间的连接方式、网络的深度、卷积计算方式等大量的影响因素,同时 需要根据模型的性能不断的调整网络的结构.不仅需要设计者具有丰富的专业知识和领域知识,同时非常依赖 设计者的经验,需要耗费大量的训练时间和计算资源评估神经网络的性能.因此,人工设计轻量级神经网络需要 大量的时间、人力和物力,这些影响因素严重限制了轻量级神经网络在便携式设备上的应用与发展.
为了减轻对设计者的要求,神经网络架构搜索(neural architecture search,简称 NAS)是指根据某种搜索策略, 在特定的搜索空间内,自动设计出解决特定任务的高性能神经网络架构.到目前为止,NAS 在图像分类[54]、语 义 分割[55]等视觉任务上的性能已经超过了手工设计的神经网络架构.NAS 由 3 部分构成,分别是搜索空间、搜索 策略和性能评估策略
- 搜索空间定义了构建神经网络的基本架构单元,将适合特定任务的典型网络架构作为先验知识,可以 有效地减少搜索空间的大小.但是该过程往往会引入人为因素的干扰,可能会影响不同类型的神经网 络架构的搜索
- 搜索策略决定了如何在通常为指数级甚至是无限大的搜索空间内搜索用于解决特定任务的神经网络 架构,并决定网络中不同层/模块的连接方式和参数等.一方面,需要快速找到性能良好的神经网络架 构;另一方面,需要避免过早的收敛到次优架构
- 性能评估策略是指准确、高效地度量神经网络的性能
搜索空间
分为
1,直接搜索整个神经网络架构的全局搜索空间,包括链式架构搜索空间和多分支架构搜索空间。
2,通过重复某些特定结构构建神经网络架构的局部搜索空间,代表性方法是基于块的搜索空间。
搜索空间的类型和大小决定了网络架构搜索的难度.需要注意的是:不管采用哪种类型的搜索空间,都具有 不连续性和相对高维的问题.与链式和多分支等的全局搜索空间相比,基于块局部搜索空间具有以下 3 个优点.
- 显著降低了搜索空间的规模
- 通过堆 叠块结构创建神经网络架构已经被证明是一个非常有效的设计原则
- 通过简单地改变块结构中卷积核的数量和大小,采用块结构创建的神经网络架构更容易迁移到其他任务或数据集中
搜索策略
基于强化学习的优化策略
强化学习通过代理与环境进行交互,其目标是获得最大化的未来奖励,常用于顺序决策任务中.在每次迭代过程中,一方面代理执行动作,观察环境的状态变化并接收奖励;另一方面,环境根据代理发出的动作,转换到下 一个状态,并且根据新的状态产生奖励

强化学习通常被定义为一个四元组(S,A,ρ,f),其中
- S 表示所有环境状态的集合.st∈S 表示代理在 t 时刻所处的状态;
- A 为代理可执行动作的集合.at∈A 表示代理在 t 时刻所采取的动作;
- ρ:S×A→R 为反馈函数.ri~ρ(st,at)表示代理在状态 st 执行动作 at 获得的实时反馈;
- f:S×A×S→[0,1]为状态转移概率分布函数.st+1~f(st,at)表示代理在状态 st 执行动作 at 转移到下一状态 st+1 的概率
基于进化算法的优化策略
进化算法(evolutionary algorithm,简称 EA)是基于种群的全局优化算法,包括初始化、父选择[73]、重组和突 变、种群选择等基本组件.初始化定义了如何生成初始种群,初始化后,优化器通过反复迭代以下步骤直到种群 收敛
- 从种群中选择父节点进行迭代
- 应用重组和变异操作来创建新的个体;
- 评估新个体的适应度
- 选择合适的个体
下图表示了进化算法的基本流程:在进化算法中,变异、重组和父节点的选择决定了整个搜索过程,通过变 异和重组权衡种群的多样性和相似性,适应性函数反映了优化目标,并且个体选择保证了种群中不同个体间的 竞争

不同搜索策略的比较
不同的方法在搜索空间、搜索时 间和数据扩充等方面有着很大的差异,缺乏统一的可比较的基准.虽然 NAS 可以被视为优化超参数的一种特殊 方法,但大多数相关工作都被忽略了.NasNet 搜索空间是最常用的,这是因为引入的先验知识有利于发现性能良 好的神经网络架构.类似地,参数重用策略、功能保持策略在提高搜索效率方面是有效的
轻量级神经网络搜索
MnasNet 算法[7]提出了一种用于移动神经网络模型设计的自动神经结构搜索方法,其中,与以前方法的主 要区别是延迟感知多目标奖励和新的搜索空间.MnasNet[7]算法基于两个主要思想.
- 将搜索问题表示为一个多目标优化问题,同时考虑神经网络模型的准确性和推理延迟;
- 与以前使用 FLOPs 来近似推断延迟的工作[62,68,85]不同,直接通过在实际移动设备上执行模型来测量 实际的延迟
总结与展望
目前存在 3 种构建轻量级神经网络的主流方法,分别是人工设计轻量级神经网络、神经网络模型压缩算法 和基于神经网络架构搜索的自动化神经网络架构设计
人工设计依赖人的专业性,经验
如何有效地将针对特定问题的先验知识加入到模型构建过程中,是未来研究的重点方向
自动机器学习技术是未来研究的热点
未来方向:
- 如何更有效地将针对特定任务的先验知识融入人工设计的轻量级神经网络中。
- 对于模型压缩,如何进一步提升自动化程度,减少对设计者经验的依赖。
- 对于NAS,如何利用跨数据集知识加速优化过程,以及如何实现深度神经网络流程的全面自动化。
自写摘要:随着深度学习的发展,模型精度有了较大的提升,同时带来了网络复杂度的提升,然而对于普遍使用的手机等移动终端来说部署运行大型网络模型存在算力不够、能耗较高、参数量大等问题。因此,设计高效、精简且准确的网络模型是一个较为热门的方向。本文将轻量级神经网络架构分为三个方面:分别是人工设计轻量级神经网络、神经网络模型压缩算法和基于神经网络架构搜索的自动化神经网络架构设计。并且将各个方法进行简要的总结,最后,总结文章并提出未来的的发展方向。
V2:随着深度学习与移动互联网技术的日益普及,模型精度虽有显著提升,但随之带来的网络复杂度提升却给普遍使用的手机等移动终端带来部署难题,表现为算力不足、能耗较高、参数量庞大等挑战。因此,针对移动设备特性设计高效、精简且准确的网络模型成为一个备受关注的研究方向。本文聚焦于轻量级神经网络架构的设计策略,将其细分为人工设计轻量级神经网络架构、神经网络模型压缩算法以及基于神经网络架构搜索的自动化神经网络架构设计这三个核心路径。在对各方法进行简要总结后,本文还探讨了轻量级神经网络架构未来的研究趋势,包括如何更有效地将任务先验知识融入人工设计中、提升模型压缩的自动化水平以及利用跨数据集知识加速神经网络架构搜索等前沿课题。
论文
硕士论文
基于剪枝的卷积神经网络压缩方法研究(硕士毕业论文)
论文工作:
提出了一种基于改进权重剪枝的动态剪枝方法
深度卷积神经网络中存在巨大的参数冗余,权重剪枝能有效减少网络中的冗余参数。该方法对小于设定阈值的权重进行剪枝,但是这种方法对于误剪的权重无法恢复,这会对最后的模型识别精度产生一定的影响。针对该问题,提出了一种基于改进权重剪枝的动态剪枝方法。首先对原始网络中权重绝对值小于阈值的权重进行剪枝,然后动态更新权重的重要性系数,对误剪的权重进行动态恢复。实验结果表明所提方法在LeNet-5和VGG-16网络上的识别精度损失值与权重剪枝相比分别减少了0.11%和0.25%。
提出了一种结合动态剪枝和卷积核剪枝的混合剪枝方法
在模型压缩中,单独使用动态剪枝或卷积核剪枝对卷积神经网络进行压缩,压缩后的模型中仍然存在较多冗余参数。针对这一问题,提出了一种结合动态剪枝和卷积核剪枝的混合剪枝方法。首先,修剪对卷积神经网络整体精度贡献较小的卷积核;其次,对剪枝过的模型再进行动态剪枝实现进一步的模型压缩。在MNIST和CIFAR-10数据集上的实验表明,与只进行动态剪枝或卷积核剪枝相比,混合修剪方法可以达到更高的模型压缩比。所提出的混合剪枝方法将LeNet-5网络压缩了12.90倍,识别精度仅损失了0.99%;将VGG-16网络压缩了19.13倍,识别精度仅损失了1.32%。
论文中的基础知识
正则化
Dropout
在网络训练过程中,Dropout[63]技术按照一定概率将网络中的神经元暂时停止工作。当网络参数太多,而训练样本又太少时,训练出来的模型容易过拟合,此时使用Dropout能够有效缓解过拟合的问题,一定程度上可达到正则化的效果。Dropout只发生在卷积神经网络的训练阶段,CNN的预测和测试阶段则不使用Dropout。如图2-5所示为标准的神经网络与使用Dropout的神经网络模型。

数据增强
在图像分类任务中,增加样本的方法之一是图像数据增强。如果初始数据集较小,就不能准确地进行网络训练,会对模型最后的识别精度产生一定的影响。图像数据增强就是对原始图像进行某种处理,让有限的图像数据产生更多的等价数据,在一定程度上提升模型的性能。常用的图像数据增强方法有图像翻转、平移、旋转、缩放等。
L1和L2正则化
常用的正则化项包括L1和L2正则化项,都有防止过拟合的作用。
对模型参数w的L2正则项为:
其中,
为权重参数的平方和,
的值一般为1/2。L2正则也经常被称作权重衰减。L2正则化使得参数变小,所以它的抗扰动能力比较强。带L2正则化项的损失函数:
使用L2正则项的解不具有稀疏性(sparsity)。在求解过程中,L2正则化对最后性能贡献不大的权重有抑制作用,使其变小,因此网络的复杂度变低,实现了正则化,可避免过拟合。权重w的L1正则项为:
带L1正则化的损失函数:
其中,
为权重参数的绝对值。使用L1正则化,最后得到的解有很大概率为0,因此具有稀疏性。L1正则化使得网络中的权重w尽可能为0,适用于选择出重要的特征。L1范数,也称为“L1正则化”,是一种用来衡量向量中元素绝对值之和的方法。说得简单点,就是把向量中每个元素的绝对值加起来。
举个例子,假设有一个向量 [3, -1, 2],那么它的L1范数就是把这些数字的绝对值加起来,得到:|3| + |-1| + |2| = 3 + 1 + 2 = 6。
在机器学习和优化问题中,L1范数常常被用来作为正则化项,用来帮助模型变得更简单或者稀疏。简单地说,L1正则化的作用就是让模型更倾向于产生一些系数为0的特征,从而达到简化模型或者特征选择的目的。
所以,当你听到”L1范数”或者”L1正则化”时,可以想象成是对一个向量中所有数字的绝对值进行求和,用来帮助机器学习模型更好地学习和泛化。
卷积神经网络网络压缩
简要介绍五类方法的基本思想:新型网络模块设计、知识蒸馏、低秩分解、网络量化和网络剪枝。
知识蒸馏的主要思想是:通过采用预先训练好的复杂模型(Teachermodel)的输出作为监督信号去训练另外一个简单模型(Studentmodel),从而在减小模型大小和计算量的同时,使简单网络能够具备与复杂网络近似的性能。
低秩分解把一个卷积神经网络的参数矩阵通过张量分解,用它的低秩特性做逼近。目前低秩分解方法有:奇异值分解(SVD)、CP分解、Tucker分解、TensorTrain分解和BlockTerm分解。
网络量化的主要思想是:用更少的比特数近似表示权重所用的比特数,以实现卷积神经网络的压缩。
网络剪枝的主要思想是通过一定的评判标准,将比较重要的权重、通道或卷积核保留下来,并将不重要的部分剪掉,得到压缩的网络。然后,微调剪枝后的网络以恢复模型的准确率。目前剪枝方法主要有DeepCompression、APoZ、ThiNet等。如图所示,按照剪枝粒度(从左到右,从粗到细)分类,网络剪枝主要有以下四类:层间剪枝、通道剪枝、卷积核剪枝、权重剪枝。

- 层间剪枝是修剪完整的隐藏层(图2(a)的中间层部分),层间剪枝会影响网络的深度,使深层网络转换为浅层网络。
- 特征图剪枝(即通道剪枝)会删除大量卷积核,并且可能会影响网络的性能。如图(c)所示,卷积核剪枝是修剪对最后贡献不大的卷积核,将其整个移除。
- 如图(d)所示,卷积核中部分值为零。权重剪枝通过修剪不重要的权重,即将对最后结构贡献不大的小权重置为零,以得到稀疏化的网络。
残差网络
随着网络深度的增加,准确率变得饱和,然后迅速下降,也就是说在深度适当的模型中添加更多层会导致更高的训练错误率。
如图显示了ResNet[4]的残差模块,这种残差学习结构通过前向神经网络与跳跃连接(shortcutconnections)实现。
参考https://zhuanlan.zhihu.com/p/514752578

DiracNets网络
具有跳跃连接的ResNet应用在图像识别、目标检测等诸多领域,并表现出优异的性能,证明了ResNet残差学习框架的有效性。但ResNet也存在一些问题:首先是特征重用问题,上层激活后可能无法学习到有用的表示;另外,把ResNet变深比变宽更有效,但网络到达一定的深度后,无法再提升识别精度;最后,网络实际的深度不明确,可能由最短路径决定。因此,使用Dirac权重参数化的方法代替跳跃连接,它可以在没有跳跃连接的情况下训练非常深的普通网络,并实现几乎相同的性能。
模型重参数化(re-parametrization)针对现有的某种建模方法,采用一种近似等价的新方法来进行替代。因为神经网络及其常见的buildingblock是参数化模型,所以针对它们的近似等价替换的方法就称为重参数化。
基于变分自编码器的可微模型压缩方法研究与实现(硕士论文)
方法
提出了一种基于变分自编码器的可微模型剪枝算法,利用变分推理来近似整个网络所有滤波器软掩码的后验分布,通过编码器学习得到概率性软掩码。与传统剪枝方法中的确定性软掩码不同,概率性软掩码可以动态感知不同的样本数据对滤波器重要性的影响,因此使用概率性软掩码比确定性软掩码来表示滤波器的重要性更加可靠,对网络的精度影响更小。此外,为有效解决现有方法难以找到合适阈值的问题,本文使用两极化正则化将概率性软掩码推向0或1,不需要人为选取阈值,从而可以直接安全地删除软掩码接近0的滤波器。同时,在剪枝过程中不依赖真实标签,通过最小化基线网络和剪枝网络输出特征之间的差异来优化网络参数。
网络剪枝、低秩分解、参数量化、知识蒸馏、轻量级网络模型设计以及混合方式
关于1*1卷积核
1.卷积核(convolutionalkernel):可以看作对某个局部的加权求和;它是对应局部感知,它的原理是在观察某个物体时我们既不能观察每个像素也不能一次观察整体,而是先从局部开始认识,这就对应了卷积。卷积核的大小一般有1x1,3x3和5x5的尺寸(一般是奇数x奇数)。
卷积核的个数就对应输出的通道数(channels),这里需要说明的是对于输入的每个通道,输出每个通道上的卷积核是不一样的。比如输入是28x28x192(WxDxK,K代表通道数),然后在3x3的卷积核,卷积通道数为128,那么卷积的参数有3x3x192x128,其中前两个对应的每个卷积里面的参数,后两个对应的卷积总的个数(一般理解为,卷积核的权值共享只在每个单独通道上有效,至于通道与通道间的对应的卷积核是独立不共享的,所以这里是192x128)。
2.池化(pooling):卷积特征往往对应某个局部的特征。要得到global的特征需要将全局的特征执行一个aggregation(聚合)。池化就是这样一个操作,对于每个卷积通道,将更大尺寸(甚至是global)上的卷积特征进行pooling就可以得到更有全局性的特征。这里的pooling当然就对应了crossregion。
与1x1的卷积相对应,而1x1卷积可以看作一个crosschannel的pooling操作。pooling的另外一个作用就是升维或者降维,后面我们可以看到1x1的卷积也有相似的作用。
1x1卷积核,又称为网中网(NetworkinNetwork)
参考https://zhuanlan.zhihu.com/p/40050371
基于剪枝与量化的卷积神经网络压缩方法
主要工作
(1)将权重剪枝与量化感知(quantization-aware-training)结合,从网络的结构和参数两方面对卷积神经网络进行压缩。
(2)通过判断权重对卷积神经网络结果的影响程度来对权重进行剪枝,去除卷积神经网络中的冗余连接,从而得到稀疏的网络结构。
(3)对卷积神经网络的权重与激活值进行量化,并将模型分别量化到16bit,8bit,4bit,将其结果与基线结果进行比较,引入参数τ并比较τ的大小,得到最优的量化比特数。
(4)通过实验验证,在经过权重剪枝与量化感知后,卷积神经网络得到了进一步的压缩。
基于模型剪枝的神经网络压缩技术研究
摘要
最近一些研究基于权重的绝对值(L1范数)进行剪枝,可以在不损失过多精度的情况下有效地压缩模型。本文在此基础上结合了权重的变化程度进行迭代剪枝,能够对网络模型进一步压缩。文章提出的重要性评估方法分别在结构化与非结构化剪枝策略中在全连接网络以及卷积网络进行了实验,结果表明均优于仅依靠权重绝对值的剪枝方法。
对于权重
(1)对于每一个权重j,计算它们的重要性;

(2)根据sj大小对每个权重进行排序;
(3)根据剪枝的比例确定阈值k,将低于阈值k的权值全都置零。
对于卷积核
(1)对于每一个卷积核Fi,计算它们的重要性

(2)根据sj大小对所有卷积核进行排序;
(3)逐层移除一定比例不太重要的卷积核,同时下一层受到影响的卷积核也要被移除。
迭代剪枝
如果我们要移除p%的参数,一共迭代n轮,按照一般的思路,可以每一轮都等量地移除一定比例,也就是每一轮剪枝的比例都是
。
但是考虑到在剪枝的初期,网络中的冗余参数明显要比后期多,自然可以想到可以在早期增大剪枝的比例,随着迭代的进行不断减小比例。这里我们采用了一种渐进式的迭代剪枝策略:
其中,pi代表第i轮剪枝,n代表总的迭代次数,pf代表最终达到的剪枝比例,k是一个用来调整初始剪枝速度的参数(k>1,k越大初始剪枝的初始速度越快)
资源受限场景下的遥感目标检测模型轻量化 方法研究(知识蒸馏、量化感知)
摘要
近年来,遥感技术已在灾害监测、军事侦察等重要领域得到广泛应用。实时目 标检测作为确保遥感应用时效性和准确性的关键技术,可以迅速识别地表的动态 变化,从而为快速响应和决策制定提供支持。为降低数据传输过程中的延迟和不稳 定性对实时检测的影响,边缘设备凭借其接近数据源的优势,成为模型部署的理想 平台。然而,边缘设备有限的计算和存储能力限制了复杂目标检测模型的部署与执 行效率。鉴于此,本文提出了一种结合知识蒸馏与参数量化的轻量化方法,旨在为 资源受限条件下的遥感目标检测提供一种通用的模型轻量化方案,以满足边缘设 备的模型部署与推理需求,缓解资源限制与推理效率之间的矛盾。 在知识蒸馏方面,本文针对遥感图像固有的目标尺寸多样性和前景背景相似 性,提出了一种基于局部注意力和上下文关系的方法。该方法通过前背景分离加权 模块在多尺度特征图上分离出前景与背景区域特征,并为不同尺寸目标动态分配 权重掩码。之后,使用局部注意力机制引导学生模型学习教师模型的关键特征,从 而在特征幅值上进行约束。再通过权重掩码加权前景特征损失,进一步强化学生模 型对不同尺寸目标的检测能力。最后,通过分别构建师生模型的两种不同的特征关 系矩阵并施加关系约束,确保学生模型准确模仿教师模型的上下文信息组织方式。
在参数量化方面,由于遥感目标检测任务的复杂性,后训练量化常导致显著的 精度损失。本文基于上述知识蒸馏方法和量化感知训练,提出了一种结合教师微调 和阶梯位宽调整策略的量化感知蒸馏方法。通过双循环机制,实现高精度教师模型 对低精度学生模型学习能力的动态感知并据此做出及时调整。阶梯位宽调整策略 则分阶段调整学生模型的量化位宽,使其逐渐适应来自教师模型的知识。
为验证所提出方法的有效性,本文在 RK3588 芯片上构建了一个具有图形用 户界面的实时遥感目标检测系统。经轻量化处理的 YOLOv8n 模型在检测分辨率为 512×512 的遥感图像时实现了平均 7.91ms/张的推理速度,相较于量化前推理时间 降低约 58%,精度损失仅为 0.2%。此外,通过开发高效的后处理逻辑和使用多线 程技术,完整检测流程的平均处理时间缩短至 6.25ms/张,相当于每秒处理 160 帧 图像。这一成果不仅展示了本文方法的高效性,也证明了其在实际应用中的价值。
总之,结合使用知识蒸馏和参数量化的轻量化方案为开发高效、 紧凑且计算成本低的遥感目标检测模型提供了一条切实有效的路径。
这种方案充分利用了知识蒸馏在提升模型性能方面的潜力,同时借助参数量化实现了存储和 计算成本方面的优化。然而,尽管这种综合策略增强了模型在资源受限环境下的实 用性,但将知识蒸馏应用于遥感目标检测任务时仍然存在问题。另一方面,参数量 化作为一种通用的轻量化方法,在许多任务中已证明其有效性。
主要问题:
- 将现有基于图像分类的知识蒸馏方法直接应用于目标检测 任务往往不能取得理想效果。基于目标检测任务的知识蒸馏方法虽然也取 得了一定进展,但鲜有工作考虑到遥感图像所具有的特性。遥感图 像中常见的目标尺寸差异较大以及前景与背景之间存在相似性等问题并未得到足 够关注。
- 在遥感目标检测中,由于需要识 别大量尺寸相异且分布密集的目标以及处理多变的背景环境,这些因素增加了任 务的复杂度。即使采用了 Q AT 方法,仍然存在不容忽视的量化性能下降。
综上所述,知识蒸馏和参数量化在遥感目标检测任务中仍需做出针对性调整。 本文首先提出了一种知识蒸馏方法,它结合了局部注意力驱动的特征蒸馏与综合 上下文信息的关系蒸馏。
其次,本文提出了一种基于教师调节和阶梯调节策略的参量调节方法。
本文专注于如何 在量化感知蒸馏场景下实现高精度教师模型指导效果的即时反馈以及如何减轻师 生间的性能差距所带来的影响,这也正是现有研究亟需解决的问题。
贡献
- 针对遥感目标检测模型的知识蒸馏方法
(1)提出了一种前背景分离加权方法,以实现在特征层面使用掩码区分前景 与背景的同时按照目标大小赋予不同前景区域以不同权重。此举旨在实现对遥感 图像中不同尺寸目标的区分化处理,确保它们在之后的蒸馏过程中得到不同程度 关注。
(2)采用局部注意力机制优化特征蒸馏过程,使得学生模型在特征幅值上分 别保持对教师模型中前景和背景关键特征的学习。通过将蒸馏损失与前景目标权 重掩码相乘,进一步强化了对不同尺寸目标区域的蒸馏效果。
(3)提出基于上下文信息的关系蒸馏。该方法先通过余弦相似度分别构建不 同样本之间的前景目标特征间的关系以及单个样本内前景目标与背景特征之间的 关系。之后,通 过比较教师和学生模型中相应关系矩阵之间的差异来鼓励学生模型 在特征关系上学习教师模型对于上下文信息的组织方式。
- 针对遥感目标检测的参数量化方法
1)提出了一种基于教师微调的参数量化方法。在此框架下,将上述提出的 知识蒸馏方法与量化感知训练相结合,令同一个模型的高精度版本作为教师,低精 度版本作为学生,并基于模型无关元学习中的内外循环思路对教师和学生模型进行协同优化,实现教师指导效果的即时反馈,使得高精度模型更有效地指导低精度 模型的量化感知蒸馏过程。
2)为解决量化场景下师生性能差距扩大导致蒸馏效益降低的问题,引入了 阶梯位宽调整策略。该策略通过分阶段降低表示参数所需位宽使得低精度学生模 型平滑过渡至目标量化水平。与直接量化到目标位宽相比,这种渐进式方法更有助 于保持师生之间知识迁移的效率和紧密协同。
- 针对实时遥感目标检测系统的搭建
(1)将 YOLOv8n 模型使用本文提出知识蒸馏、参数量化方法进行轻量化处 理并转换为 RK3588 兼容的模型格式,之后成功部署在搭载 RK3588 芯片的 ITX 3588J 开发版上。通过上述转换过程实现了模型推理速度的显著提升,并在性能损 失约 0.2%的前提下,推理耗时相比于量化前减少了约 58%。
(2)基于 NumPy 的批处理操作实现了高效的检测结果后处理逻辑。与传统 的非批处理后处理逻辑相比,速度提升了约 96%。
(3)使用多线程技术充分利用 RK3588 芯片中的 NPU(Neural Processing Unit), 将整体检测速度相比单线程提升了约 65%。
(4)基于 PyQt5 设计并实现了一个简单易用的前端界面,使用户能够方便地 对遥感数据进行目标检测。
知识蒸馏算法

基于响应的知识蒸馏
基于响应的知识蒸馏是一种比较直观的蒸馏方法,所谓“响应”就是模型的最 终预测结果。所以基于响应进行知识蒸馏就是使得学生模型在输出层面向教师模型学习。
基于特征的知识蒸馏
基于特征的知识蒸馏是一种较为深层次的蒸馏方法,其核心思想在于挖掘教 师模型内部中间层的特征知识并传递给学生。这种方法认为,学生模型能够学习到 教师模型在处理数据时形成的高维特征映射,从而更好地捕捉输入数据的内在结 构和分布。
基于关系的知识蒸馏
基于关系的知识蒸馏策略着重于模型内部表示之间的相互作用与依赖性,这 一方法强调的是样本间关系的动态交互,而非仅仅追求师生特征在幅值上的一致 性。其核心理念在于转移教师模型内部特征在不同样本之间所蕴含的结构化关系, 以此来提升学生模型。通过这种策略,知识蒸馏不再局限于单个特征层面的对齐, 而是拓展到了更为丰富的特征关联维度。
参数量化算法
参数量化是深度模型轻量化的重要方法之一,该方法通过减少 表示每个模型参数所需的比特数(位宽)来降低模型的存储容量和计算复杂度。
- 后训练量化
- 量化感知训练
目标检测算法
- 双阶段目标检测算法
- 单阶段目标检测算法
基于局部注意力与上下文关系的知识蒸馏
前背景分离加权模块(提出了一种前背景分离加权模块,旨在精确地区分和 处理前景与背景特征)
理解:首先确定l(第 𝑖个目标所分配的多尺度特征图层级 𝑙)==》𝐿 为当前检测模型的多尺度特征图层级数目+log:它将目标面积与图像面积的比例 关系转换为表示多尺度特征层级分配决策的数值范围。
$$
l=\left\lfloor L+log_2\left(\sqrt{\frac{w_i\cdot h_i}{W\cdot H}}\right)\right\rfloor
$$
在确定了 𝑙 之后,即可生成目标对应的前景掩码。
$$
l_l(a,b)=\begin{cases}1,&\text{如果 }a_i^{1^{\prime}}\leq a\leq a_i^{2^{\prime}}\text{ 且 }b_i^{1^{\prime}}\leq b\leq b_i^{2^{\prime}}\\epsilon,&\text{除此之外}\end{cases}for i=1,…,N
$$
之后提出加权掩码机制,对于某个训练数据x,计算其中所有目标的平均面积 $A_{avg}$ 及每个目标的权重$w_i=\frac{A_{avg}}{A_i}$最终,特征图 𝐹𝑙 中目标区 域的掩码值设置为权重 𝑤n,而非目标区域继续保持为极小值 ε,形成前景权重掩 码
$$
W_l^{fg}(a,b)=\begin{cases}w_i,&\text{如果 }a_i^{1^{\prime}}\leq a\leq a_i^{2^{\prime}}\text{ 且 }b_i^{1^{\prime}}\leq b\leq b_i^{2^{\prime}}\\epsilon,&\text{除此之外}\end{cases}fori=1,…,N
$$基于局部注意力的特征幅值蒸馏
首先得到前景掩码、背景掩码。之后对前景中的各个目标及背景特征分别计算局部注意力图Al(定义教师模型与学生模型对于 𝑥 的第 𝑙 层多尺度特征图分别为 $F_l^S$ 与 $F_l^T$)
$$
A_l=\sigma(\mathrm{AvgPool}(F_l)+\mathrm{MaxPool}(F_l))
$$
然后。将注意力图应用于前景和背景特征上,即可得到加权后的每层特征图。前景与背景损失
$$
\begin{aligned}&L_{l,b}^{fg}=\frac{(W_{l,b}^{fg}\cdot SE(\tilde{F}{l,b}^{T,fg},\tilde{F}{l,b}^{S,fg}))}{P_{l,b}^{fg}},\&L_{l,b}^{bg}=\frac{SE\left(\tilde{F}{l,b}^{T,bg},\tilde{F}{l,b}^{S,bg}\right)}{P_{l,b}^{bg}}\end{aligned}for i=1,…,N
$$
最后,通过对所有图象在所有层级多尺度特征的前景和背景随时进行求和,便得到总体特征幅度蒸馏损失
$$
L_{kd}^{magnitude}=\sum_b^B\sum_l^L(L_{l,b}^{fg}+L_{l,b}^{bg})
$$
总体而言,局部注意力机制有效地增强了学生模型对教师模型中前景和背景关键 特征的学习能力,前景权重掩码则进一步提升了模型对不同尺度目标的区分学习能力。基于上下文联系的特征关系蒸馏
这种方法致力于传递教师模型中目标特征之间 以及目标与背景特征之间的关系,从而实现更深层次的知识传递。
首先得到每张输入图像的每个目标 计算得到独立的掩码$I_{l,b}^{obj,i}$随后,对于每个图像索引 𝑏 和每个多尺度特征层级 𝑙 , 通过应用目标独立掩码及背景掩码,分别提取出当前训练批次内所有目标的特征 和每张图像的背景特征.
$$
\begin{aligned}&F_{l,b}^{obj,i}=F_{l,b}\odot I_{l,b}^{obj,i},\&F_{l,b}^{bg}=F_{l,b}\odot I_{l,b}^{bg}\end{aligned}
$$
建立关系矩阵
$$
R^{obj}=\frac{v^{obj,j}\cdot v^{obj,k}}{\parallel v^{obj,j}\parallel_2\parallel v^{obj,k}\parallel_2},\quad\mathrm{for}j,k=1,…,M\R^{obj-bg,b}=\frac{v_b^{obj,i}\cdot v_b^{bg}}{\parallel v_b^{obj,i}\parallel_2\parallel v_b^{bg}\parallel_2},\quad\mathrm{for}i=1,…,N_b;b=1,…,B
$$
使得学生模型不再局限于在特征幅值上模仿教师,同时也在特征关系上学习教师模型对不同目标间以及目标与背景间复杂联系的理解,实现了在多尺度特征层面上的全面知识蒸馏
基于教师微调与阶梯位宽的参数量化
基于教师微调的量化感知蒸馏
量化感知训练过程被划分为两个阶段:外循环和内循环。在内循环阶段,主要任务是对 教师模型进行微调,此过程中引入了伪低精度模型与质询集的概念。伪低精度模型 用于检验高精度教师模型的指导效果,而质询集则用于提供即时反馈,以便实现对 教师模型的有效微调。随后,在外循环阶段,利用经过微调的高精度教师模型执行 标准的量化感知蒸馏。在上述过程中,内循环可以被视作高精度教师模型对低精度 学生模型能力的初步适应,而外循环则是对学生模型进行正式蒸馏训练,此时教师 模型已经适应了学生模型的能力,从而相较于传统量化感知蒸馏,实现更优的训练 效果。
基于阶梯策略的量化位宽调整
该策略的核心思想是通过逐步 降低低精度学生模型的量化位宽,以平滑地缩小与高精度教师模型之间的性能差 异,而不是直接将低精度学生模型量化到目标位宽。
自写摘要:随着神经网络的发展,出现了越来越多的大型网络,性能得到巨大提升但伴随而来的是巨量的参数以及计算复杂度提升,并且有着不少网络对实时性有着较高的要求。为了解决这个问题便有不少学者提出了网络轻量化以适应在边缘设备上的应用与部署、本文主要从知识蒸馏与参数量化入手,将二者相结合进行模型轻量化。对于知识蒸馏,从局部注意力与上下文关系两个方向开展实验,通过获取背景掩码与目标区域的掩码,有效地增强了学生模型对教师模型中前景和背景关键特征的学习能力。通过上下文关系实现了在多尺度特征层面上的全面知识蒸馏。对于参数量化,通过将模型参数 的高精度表示映射为低精度表示,以减少存储需求并加速推理过程,确保遥感目标 检测模型能在边缘计算设备上高效运行,满足实时处理的要求。并在RK3588 边缘芯片搭建了遥感目标检测系统,以可视化界面来直观展示了目标检测。有效的证明了方案的可行性与应用价值。
剪枝
Learning Efficient Convolutional Networksthrough Network Slimming(17-24.4.26)
摘要:深度卷积神经网络(CNN)在许多现实世界应用中的部署在很大程度上受到其高计算成本的阻碍。在本文中,我们提出了一种新颖的CNN学习方案,以同时1)减小模型大小;2)减少运行时内存占用;3)在不影响精度的情况下减少计算操作的数量。这是通过以简单但有效的方式在网络中强制执行通道级稀疏性来实现的。与许多现有方法不同,所提出的方法直接适用于现代CNN架构,在训练过程中引入最小的开销,并且不需要特殊的软件/硬件加速器来生成模型。我们将我们的方法称为网络瘦身,它采用宽而大的网络作为输入模型,但在训练过程中,不重要的通道会被自动识别并修剪,从而产生具有相当精度的瘦而紧凑的模型。我们通过多种最先进的CNN模型(包括VGGNet、ResNet和DenseNet)在各种图像分类数据集上凭经验证明了我们的方法的有效性。对于VGGNet,网络瘦身的多通道版本可将模型大小减少20倍,并将计算操作减少5倍。
BN层:BatchNorm先取均值再求方差
本文提出了“网络瘦身”技术,这是一种针对深度卷积神经网络(CNNs)的新型学习方案,旨在在不影响模型精度的前提下,显著降低其模型大小、运行时内存占用及计算操作数量。网络瘦身通过在批量归一化(BN)层中对缩放因子施加L1正则化,鼓励这些因子接近零值,从而标识出对网络贡献较小的通道(或全连接层中的神经元),便于后续进行通道剪枝。由于仅需添加正则化项而不改变现有CNN架构,该方法易于实施且对训练过程影响轻微。在实践中,网络瘦身可实现高达20倍的模型压缩率和5倍的计算操作减少,同时在多种基准数据集和不同网络结构(如VGGNet、ResNet、DenseNet)上的实验表明,压缩后的模型不仅保持甚至提高了原始模型的测试准确率。
网络瘦身过程中,随着正则化强度λ的增大,BN缩放因子分布愈发集中于零附近,可视作深度网络中间层进行特征选择的过程,仅保留显著非零缩放因子对应的通道。这一过程通过热力图直观呈现,显示了训练过程中某个VGGNet卷积层通道缩放因子的动态变化,亮线表示被“选中”的通道(即保留的通道),暗线表示可被剪除的通道。
此外,网络瘦身适用于具有跨层连接和预激活设计(如ResNet、DenseNet)的网络,通过在接收端实现稀疏性(即层选择性地使用接收到的部分通道),并在推理阶段插入通道选择层以屏蔽已识别的不重要通道,从而实现测试时的参数和计算节省。
实验结果在CIFAR-10、CIFAR-100、SVHN和ImageNet等多个数据集上验证了网络瘦身的有效性。例如,在CIFAR-10上对VGGNet进行70%的剪枝后,模型大小减小至原来的2.3%,计算操作减少51%,测试误差仅从6.34%微增至6.20%,展现出显著的压缩效果和良好的精度保持能力。同样地,对DenseNet-40和ResNet-164进行不同程度的剪枝,也取得了类似的模型压缩、计算量减少以及精度无明显损失或略有提升的结果。
缩放因子和稀疏引起的惩罚。我们的想法是为每个通道引入一个缩放因子 γ,该因子乘以该通道的输出。然后,我们联合训练网络权重和这些缩放因子,并对后者进行稀疏正则化。最后,我们用小因素修剪这些通道,并对修剪后的网络进行微调。具体来说,我们方法的训练目标由下式给出
$$
L=\sum_{(x,y)}l(f(x,W),y)+\lambda\sum_{\gamma\in\Gamma}g(\gamma)
$$
利用 BN 层中的缩放因子。批量归一化 [19] 已被大多数现代 CNN 采纳作为实现快速收敛和更好泛化性能的标准方法。 BN 标准化激活的方式促使我们设计一种简单而有效的方法来合并通道缩放因子。特别是,BN 层使用小批量统计数据对内部激活进行标准化。设zin和zout为BN层的输入和输出,B表示当前的minibatch,BN层执行以下变换:
$$
\hat{z}=\frac{z_{in}-\mu_{\mathcal{B}}}{\sqrt{\sigma_{\mathcal{B}}^2+\epsilon}};z_{out}=\gamma\hat{z}+\beta
$$
为什么在BN层后加入?
若不在BN层之后附加缩放层,那么单纯在卷积层外另加缩放层无法有意义地评估通道的重要性,因为卷积层和缩放层都是线性变换,可以通过调整其中一个层的参数抵消另一个层的效果。若在BN层之前插入缩放层,则缩放层的效果会被BN层的标准化过程完全消除。只有在BN层之后使用缩放因子,才能确保每个通道有两个连续作用的缩放系数,并且这些系数能在训练过程中通过L1正则化得到有效控制,使不重要的通道对应的缩放因子趋向于零值,进而实现通道级别的稀疏性和模型的精简。
尽管卷积神经网络(CNN)在诸多领域取得了显著性能提升,但其在资源有限的边缘设备上的部署依然面临显著挑战,如模型尺寸过大、运行内存占用过高及计算需求过强等问题。为应对这些挑战,本文提出了一种创新的CNN学习策略,旨在实现以下三重目标:
- 模型尺寸缩减:显著降低网络模型的存储需求。
- 内存占用削减:减少网络运行期间所需的内存资源。
- 计算效率优化:在保证预测精度不变的前提下,大幅减少计算操作的数量。
本方法的关键在于对每个通道引入一个可学习的缩放因子,并在批量归一化(BN)层中对其进行L1正则化处理。这一策略促使那些对整体网络贡献较小的通道对应的缩放因子逐渐逼近零值,从而标识出潜在的冗余通道。在训练完成后,依据这些缩放因子的大小,对值接近于零的通道进行剪枝操作,有效地“瘦身”网络结构。
为进一步确保模型性能,剪枝后的网络会经历一个恢复训练阶段,通过微调剩余通道的参数以补偿因剪枝可能造成的精度损失。这一系列操作最终生成一个更为精简、高效的CNN模型,既满足了轻量化部署的要求,又保持了原始网络的预测能力。
实验证明,该网络瘦身方法在多个基准数据集(包括CIFAR-10、CIFAR-100、SVHN和ImageNet)上均展现出了强大的有效性。无论是在简化模型架构、减少内存占用,还是在降低计算复杂度的同时保持高精度方面,实验结果均证实了该方法的有效性和适用性,为CNN在资源受限环境下的高效部署提供了切实可行的解决方案。
自写摘要:卷积神经网络取得显著的进步,然而其在边缘设备的部署仍存在一定的挑战,本文提出了新的CNN学习方案1)减小模型大小。2)减少运行内存占用。3)在不影响精度的情况下减少计算量。本文将每个通道引入一个缩放因子,之后进行L1正则化,将所有bn层的缩放因子接近于0的进行剪枝操作,到达网络瘦身的目的,最后进行恢复训练,恢复网络精度。实验结果在CIFAR-10、CIFAR-100、SVHN和ImageNet等多个数据集上验证了网络瘦身的有效性。
Auto Compress:An Automatic DNN Structured Pruning Frameworkfor Ultra-High Compression Rates(19-24.4.26)
结构化权重剪枝是DNN的代表性模型压缩技术,可减少存储和计算要求并加速推理。由于大量灵活的超参数,自动超参数确定过程是必要的。这项工作提出了AutoCompress,一种自动结构化剪枝框架,具有以下关键性能改进:(i)在自动过程中有效地结合结构化剪枝方案的组合;(ii)采用最先进的基于ADMM的结构化权重剪枝作为核心算法,并提出一种创新的附加纯化步骤,以在不损失精度的情况下进一步减少权重;(iii)开发基于经验的引导搜索增强的有效启发式搜索方法,取代现有的与目标剪枝问题根本不兼容的深度强化学习技术。在CIFAR-10和ImageNet数据集上的大量实验表明,AutoCompress是在权重数量和FLOP上实现超高剪枝率的关键,这是以前无法实现的。例如,在相同精度下,AutoCompress的剪枝率比之前的自动模型压缩工作高出33倍(实际参数数量减少120倍)。在智能手机上的实际测量中,我们观察到AutoCompress框架的推理速度显着加快。我们通过匿名链接发布了本作品的所有模型:http://bit.ly/2VZ63dS。
这项工作在 DNN 结构化剪枝的自动超参数确定过程中做出了以下创新贡献。首先,我们详细分析这种自动过程并提取通用流程,分为四个步骤:(i)动作采样,(ii)快速动作评估,(iii)决策制定,以及(iv)实际修剪和结果生成。
贡献是什么?
我们采用基于 ADMM 的结构化权重剪枝算法作为核心算法,并提出了一种创新的附加纯化步骤,以在不损失精度的情况下进一步减少权重。此外,我们发现 DRL 框架与目标剪枝问题的特征存在根本的不兼容性,并得出结论,可以使用基于经验的引导搜索增强的有效启发式搜索方法同时缓解这些问题。
DNN 中的 CONV 运算通常通过将权重张量和特征图张量转换为矩阵来转换为矩阵乘法(Wen 等人,2016),称为通用矩阵乘法(GEMM)。结构化剪枝的主要优点是,在降维的情况下,GEMM 中将维护一个完整的矩阵,而不需要索引,从而有利于硬件实现。
ADMM:乘子交替方向法 (ADMM) 是一种强大的数学优化技术,通过将原始问题分解为两个可以单独有效解决的子问题(Boyd 等人,2011)。考虑一般优化问题 minx f (x) + g(x)。在ADMM中,它被分解为x和z(z是辅助变量)上的两个子问题,迭代求解直至收敛。第一个子问题在给定 z 的情况下导出 x:minx f (x) + q1(x|z)。第二个子问题在给定 x 的情况下导出 z:minz g(z) + q2(z|x)。 q1 和 q2 都是二次函数。
改进的动力:
现有方法的局限性:
- 早期权重剪枝技术:之前的方法如基于固定正则化的早期权重剪枝技术,虽能实现一定的剪枝,但存在明显局限,如剪枝率较低、仅考虑过滤器剪枝等。
- 深度强化学习(DRL)框架的不兼容性:已有的基于DRL的自动模型压缩(AMC)方法在确定每层剪枝率时表现出与目标问题的根本性不兼容,导致其难以达到高剪枝率(例如,最大报告的剪枝率仅为5倍,且是非结构化剪枝)。DRL在高剪枝率场景下表现不佳,甚至在较小剪枝率下也难以超越手动过程。
基于通用流程,与之前的工作相比,我们确定了性能改进的三个来源(在剪枝率、准确性等方面)。第一个是结构化修剪方案。我们的观察是,与单独的过滤器剪枝(如 AMC 中使用的那样(He et al. 2018))相比,过滤器剪枝(与通道剪枝相关)和列剪枝的有效组合将表现更好。比较结果显示在评估部分。这是因为列修剪的高度灵活性,同时保持了 GEMM 中硬件友好的全矩阵格式。第二个是步骤(iv)中结构化权值剪枝的核心算法。在此步骤中,我们采用最先进的基于 ADMM 的权重剪枝算法。此外,我们建议利用 ADMM 正则化后的特殊特性,进一步改进基于 ADMM 的算法的纯化步骤。在下面的两小节中,我们将分别讨论核心算法和提出的纯化步骤。
步骤就是先剪枝再纯化。
- 自动超参数确定流程:
- 动作采样:AutoCompress采用启发式搜索方法(如模拟退火或遗传算法的增强版本)从可能的超参数组合(即不同层的剪枝率)中采样。
- 快速动作评估:对于每个采样到的超参数组合,通过一种快速的近似方法(如基于权重绝对值的启发式剪枝)估计其对模型性能的影响。
- 决策制定:基于采样动作集合及其快速评估结果,使用启发式搜索算法的决策规则(如接受、拒绝或调整)决定是否接受这些超参数。
- 实际剪枝与结果生成:对于接受的超参数组合,应用它们进行实际的结构化剪枝(如过滤器剪枝),生成剪枝后的模型。
- ADMM-based剪枝:
- 迭代优化:使用交替方向乘子法(ADMM)进行结构化权重剪枝。ADMM将原始的非凸优化问题分解为两个子问题:一个是带有动态正则化项的DNN训练,另一个是满足组合约束的权重剪枝。这两个子问题在迭代过程中交替求解,直到达到预设的收敛标准。
纯化步骤
- 过滤器与对应通道的联动去除:
- 观察:作者注意到,DNN中特定层的某个过滤器负责生成下一层中的一个特定通道。
- 操作:因此,当在某层中移除一个过滤器时(实际上包括移除与之相关的批标准化结果),相应地也会移除下一层中由该过滤器生成的通道。这样,通过过滤器剪枝自然引出了下一层通道的剪枝,实现额外的权重减少。
- 基于ADMM特性的非零小权重去除:
- ADMM正则化特征:ADMM正则化本质上是一种动态的、基于L2范数的正则化过程。在正则化后,权重矩阵中会出现大量非零但数值很小的权重。
- 非凸性与权重去除:由于ADMM正则化的非凸性质,作者观察到移除这些小权重往往不会降低模型准确性,有时甚至能轻微提升准确性。这源于这些小权重对模型输出的影响相对微弱,且可能反映了模型中潜在的冗余或噪声。
- 阈值设定与操作:为此,为每个DNN层定义了两个阈值:列阈值和过滤器阈值。如果一个权重列(或过滤器)的L2范数低于对应的阈值,则整列(或过滤器)将被移除。同样,当下层过滤器被移除时,其对应上层的通道也可随之移除。
- 结构保持:
- 保持层间连接:尽管进行了上述权重的进一步剔除,但每个DNN层的结构(即层间的连接模式)在纯化步骤后仍得以维持,确保了剪枝后的模型仍具备可执行的网络拓扑。
- 层特定阈值设定:
- 阈值选择:这两个阈值(列阈值和过滤器阈值)是层特定的,取决于各层相对权重值及其对整体准确性的影响敏感度。
- 超参数确定:它们作为超参数,在AutoCompress框架中针对每一层单独确定,目标是在不损失准确性的情况下最大化权重和FLOPs(浮点运算次数)的减少。
ADMM好在哪里?
- 作为核心算法的优越性:
- 状态-of-the-art(最先进的): 文章指出,AutoCompress采用了当前最先进的基于ADMM的结构化权重剪枝算法作为其核心算法,表明ADMM在该领域的研究前沿地位。
- 高剪枝率:ADMM能够实现非常高的剪枝率(如文中提到的33倍),显著减少模型的权重数量和FLOPs(浮点运算次数),从而极大地压缩模型大小和降低计算需求。
- 结构化剪枝的有效性:
- 组合剪枝方案:文章中提到,ADMM能够有效地结合过滤器剪枝和列剪枝两种结构化剪枝方案,这种组合策略优于仅使用过滤器剪枝的方法,因为列剪枝提供了更高的灵活性,同时保留了对硬件友好的完整矩阵格式(GEMM),有利于加速推理。
- 额外纯化步骤的创新:
- 进一步减重:AutoCompress在ADMM基础上提出了一项创新的纯化步骤,利用ADMM正则化后模型的特殊性质,能够在不损害模型准确性的情况下进一步减少权重数量。
基于 ADMM 正则化的特性还有进一步的减重余量。由于ADMM正则化本质上是一个动态的、基于L2范数的正则化过程,因此正则化后存在大量非零、小的权重值。由于 ADMM 正则化的非凸性质,我们的观察是,删除这些权重可以保持精度,甚至偶尔可以稍微提高精度。因此,我们为每个 DNN 层定义两个阈值,即列阈值和过滤阈值。当权重列(或过滤器)的 L2 范数低于阈值时,该列(或过滤器)将被删除。此外,在移除层 i 中的滤波器后,也可以移除层 i+1 中的相应通道。在此纯化步骤之后,每个 DNN 层中的结构将得到保留。
总结
这项工作提出了 AutoCompress,一种自动结构化剪枝框架,具有以下关键性能改进:(i)在自动过程中有效地结合结构化剪枝方案的组合; (ii)采用最先进的基于ADMM的结构化权重剪枝作为核心算法,并提出一种创新的附加纯化步骤,以在不损失精度的情况下进一步减少权重; (iii)开发基于经验的引导搜索增强的有效启发式搜索方法,取代现有的与目标剪枝问题根本不兼容的深度强化学习技术。在 CIFAR-10 和 ImageNet 数据集上的大量实验表明,AutoCompress 是在权重数量和 FLOP 上实现超高剪枝率的关键,这是以前无法实现的。
自写摘要:
模型压缩的发展从人工设计的剪枝策略,逐步发展到了自动化剪枝,老的剪枝策略存在一定的局限性如剪枝率较低、仅考虑过滤器剪枝等,即本文在前人的基础上提出了AutoCompress,使用交替方向乘子法(ADMM)进行结构化权重剪枝,并进行纯化操作。在 CIFAR-10 和 ImageNet 数据集上的大量实验表明该方法取得较好的成绩。
v2:
模型压缩的发展从人工设计的剪枝策略,逐步发展为自动化剪枝,传统的剪枝方法存在一定的局限性如剪枝率较低、仅考虑过滤器剪枝等,因此,本文在前人研究的基础上提出了AutoCompress,使用交替方向乘子法(ADMM)进行结构化权重剪枝,并进行纯化操作。在 CIFAR-10 和 ImageNet 数据集上的大量实验表明该方法获得了令人满意的结果。
能耗
能耗优化的神经网络轻量化方法研究进展-郭朝鹏
摘 要 近来,神经网络在语音识别、计算机视觉、自然语言处理等领域都取得了良好的进展。大量的神经网络被部署于诸如手机、摄像头等依赖电池或太阳能供电的小型设备。但神经网络参数量大,计算复杂,需要占用大量的计算资源和消耗电能,从而限制了其在资源设定平台上的应用。学术界和工业界逐渐关注神经网络的高湿度问题。神经网络轻量化方法可以有效地减少参数数量、降低参数精度或优化计算过程,从而降低神经网络参数。本文从张力优化的角度优化了神经网络的张力调整方法和神经网络轻量化方法的基本思路,综述了近年来该神经网络领域的主要研究研究成果,并提出了张力优化的网络轻量化方法量化方法存在的挑战及进一步研究的方向。其中神经网络能消耗提示方法包括测量法、分析法和提示法。参数优化的神经网络轻量化方法包括剪枝、量化、张量拆分和知识蒸馏。对于进一步的研究方向,我们认为,首先需要建立可自适应网络类型的适配器模型;然后需要考虑平衡精度和适配器的轻量化方法。其次需要实现硬件平台可泛化的轻量化方法;最后开发搜索空间可约束的轻量化方法。
本文重点关注能耗优化的神经网络轻量化方法,从神经网络能耗估算方法和网络轻量化方法两个方面出发,概述优化思路,叙述具体方法,总结当前能耗优化的神经网络轻量化方法的研究进展并 提出进一步研究问题与挑战.
关注能耗估算方法的设计思路. 在 当前研究中,能耗估算方法可以大致归结为 3 类:
- 测量法. 属于硬件层的能耗估算方法,使用功率计等测量设备直接测量能耗.
- 分析法. 属于系统层面的估算方法,通过分析产生能耗的直接因素,如网络计算次数和数据存取次数等,计算神经网络运行时的能耗
- 估计法. 属于应用层的估算方法,通过分析神经网络结构和产生能耗相关的特征,利用机器学习、 深度学习等方法,预测网络运行时的能耗.
测量法的一般步骤是:(1)使用功率计测量运 行设备的待机功率 Pstandby;(2)使用功率计测量 T 时间段内 n 次网络运行的实时功率 P(t);(3)由式 (1)计算 1 次神经网络运行能耗.
$$
E=\frac{\int_0^TP\bigl(t\bigr)\mathrm{d}t-P{\mathrm{standby}}\times T}{n}
$$
分析法
计算能耗:由计算产生的能耗. 在分析法中通 常根据不同层的结构参数,如神经元个数、权值个数 等,统计每秒执行的浮点运算次数(FLOPs, FLoating point Operations)或乘积累加运算数(MAC,Multiply and Accumulate)等硬件参数进行估算.
步骤为(1) 以层为单位估算计算能耗和数据访问能耗;(2)汇总所有层的能耗.
Han 等人[11]考虑了神经网络的计算能耗,同时 引入通信能耗、反向传播能耗等,提出了一种自适 应能耗限制的 DNN 训练框架. 能耗表达式如式(2)韩松
其中:bs 为推理的数据批量大小,S 为隐藏层 数量,ns 为第 n 个隐层神经元数量,αflop 为 1 次 MAC 操作产生的能耗;αact 为 1 次非线性激活操作产生的 能耗. 通过结合 MAC 次数、非线性激活操作次数和 相应操作的单位能耗可以算得总推理能耗.
$$
E=b_s\Bigg(\alpha_\text{flop}\sum_{s=1}^{S-1}n^sn^{s-1}+\alpha_\text{act}\sum_{s=1}^sn^s\Bigg)\quad
$$
估计法
现有估计法研究的一般目标为非线性神经网络。将模型神经网络串联成方向层、池化层、全连接层后分别提取特征,再训练预测模型。估计法一般包包括以下步骤:(1)抽取层的初始结构参数,如输入通道数、波形核大小等;(2)根据初始结构参数进一步提取特征;(3)训练稀疏预测模型; (4)计算所有层的蒸发,并汇总结果得到总的推理蒸发。
T 表示推理时 间预测误差,MAC 表示 MAC 预测误差,E 表示能 耗估计误差.

能耗优化神经网络轻量化方法
- 剪枝
- 量化
- 张量分解
- 知识蒸馏
自写摘要:神经网络、机器视觉、自然语言处理有了巨大的发展,由于神经网络存在参数量大、耗能高、需要高算力等要求,即对于低能耗设备如手机、平板等运行现在的大型神经网络任存在一定的挑战。于是便有了神经网络轻量化、模型压缩等方向。许多综述都是关注参数量、模型大小的问题,作者主要聚焦的方向为能耗方面,将能耗估算与神经网络轻量化相关联并将能耗估计归纳为三个方向:测量法、推测法、估计法。对于网络轻量化主要分为剪枝、量化、张量分解、知识蒸馏。作者认为进一步的研究方向首先是实现可自适应网络类型的能耗模型、再为平衡精度和能耗的轻量化方法、实现平台可泛化的轻量化方法、最后实现搜索空间可约束的轻量化方法。
Energy-BasedCNNPruningforRemoteSensingSceneClassification
摘要:采用卷积神经网络(CNN)对遥感场景图像进行分类。然而,由于计算资源有限,这些复杂网络在卫星平台上的应用很困难。因此,我们提出了一种基于能量的滤波器剪枝框架(EFPF)来减小原始模型的大小。通过奇异值分解(SVD)可以通过每个权张量的特征值获得能量。具体来说,我们通过低于指定截断参数的特征值的比率来计算每层的能量,然后根据能量的程度从原始层中删除滤波器。EFPF是可靠的,因为SVD技术可以从原始权重张量中捕获所有滤波器之间的协方差,因此,特征值的能量可以反映滤波器的冗余度(即,如果特征值的分布是尖锐的,那么能量滤波器之间的值会更低,冗余度会更高)。令人惊讶的是,当采用VGG-16和ResNet-50对AID、NWPU45、PatternNet和WHU19数据集进行分类时,EFPF可以减少浮点运算(FLOP)和参数,并显着提高top1精度。此外,EFPF在原始模型完全训练(收敛)和欠训练(In-converge)时都可以达到类似的剪枝结果,这意味着我们可以节省原始模型的训练计算资源。
遥感场景数据集的EFPF的核心在于通过从每个卷积层的特征值中获得的能量来测量滤波器的冗余性。
svd矩阵分解:https://zhuanlan.zhihu.com/p/29846048
每个卷积层的权值张量都打包成四维张量,很难进行直接分解。因此,我们将使用两种方法,即参数平均分布(a-pd)和最大参数分布(m-PD),将4-D张量折叠成一个二维矩阵。这里的a-PD策略是指我们将原始的权值张量沿滤波器宽度和高度的维数以平均值折叠,而m-PD意味着我们将根据滤波器维数沿宽度和高度折叠原始矩阵的最大值。
三个共享:
- 我们提出了带a-pd和m-PD的EFPF来度量每个卷积层滤波器的冗余度,当原始层的权值张量被投影到低秩空间时,通过调节截断参数来实现全局剪枝。EFPF的性能优于经典的全局滤波器剪枝方法,并以较低的搜索代价取得了与基于nas的方法相当的结果
- 我们的方法在对原始模型进行少量的时间训练时,可以获得相似的剪枝效果;然后,在卫星平台上使用EFPF对CNN进行压缩时,可以节省原始模型的训练计算资源。
- AID[22]、NWPU45[21]、Patter-Net[23]和WHU19[24]在VGG-16和ResNet-50上实现了令人印象深刻的修剪结果,包括FLOPs和参数的减少,以及top1精度的提高。
普遍认为权值参数分布越清晰,层的能量越低,因为只有少数几个参数占据了大部分有用信息。然后确认更多的冗余,因为每个卷积层的表示能力都与滤波器[58]的参数分布有关。基于此,我们尝试设计一种基于能量的剪枝机制,从每个权值张量内参数分布的角度对模型进行压缩。应该注意的是,权值张量的直接分析是困难的,因为有太多的参数。相反,当原始权值张量通过SVD分解时,我们通过特征值在低秩空间的强度来度量滤波器的冗余度。
SVD的作用:SVD可以得到滤波器之间的协方差,然后通过特征值在低秩空间的强度度量冗余度
层剪枝
DEEPREBIRTH: A GENERAL APPROACH FOR ACCEL- ERATING DEEP NEURAL NETWORK EXECUTION ON MOBILE DEVICES(17-24.4.26)
摘要:
由于计算复杂性和内存强度,在移动设备上部署深度神经网络是一项具有挑战性的任务。现有的工作通过使用基于降维的权重压缩方法(即 SVD、Tucker 分解和量化)来减小模型大小来解决这个问题。然而,这些压缩模型的执行速度仍然远远低于移动业务的实时处理要求。为了解决这个限制,我们提出了一种新颖的加速框架:DeepRebirth,通过将无参数层与其相邻卷积层合并到单个密集层来探索深度学习模型参数稀疏性。 DeepRebirth 的设计受到关键观察的启发:深度学习模型中的某些层(即归一化和池化)实际上消耗了大量计算时间,即使涉及很少的学习参数,并且这些层的加速有可能提高处理速度显着。本质上,几个合并层的功能被新的密集层——DeepRebirth 中的重生层——所取代。为了保留相同的功能,重生层模型参数被重新训练为与原始几个合并层等效的功能。使用多种流行的移动设备在 ImageNet 上进行的大量实验表明,DeepRebirth 不仅在模型部署方面提供了巨大的加速并显着节省了内存,而且还保持了模型的准确性,即在 GoogLeNet 上实现了 3 至 5 倍的加速和节能ImageNet 中前 5 名分类的准确率仅下降 0.4%。此外,通过与其他模型压缩技术相结合,DeepRebirth 在使用三星 Galaxy S6 的单张图像上提供平均 65 毫秒的模型转发时间,准确率仅下降 2.4%。此外,通过重生层实现了 2.5 倍的运行时内存节省。
问题:越来越多的移动应用需要深度学习技术来提供准确、智能、有效的服务。然而,由于模型尺寸大、网络结构深、模型参数复杂,深度学习模型在移动设备上的执行速度成为许多应用的瓶颈,阻碍了实时部署。
创新:对于通常用于加速网络训练和获得更好泛化性能的非张量层(例如归一化层和池化层),据我们所知,没有人讨论如何加速执行过程。
为了弥补这些差距,本文提出了 DeepRebirth,一种新的深度学习模型加速框架,通过探索深度神经网络层的稀疏性来加速非张量层和张量层的两种重生:流式合并和分支合并。在流式合并中,新的张量层是通过将前馈结构中的非张量层与其相邻的稀疏张量层合并来生成的,如图 2 所示,而在分支合并中,新的张量层是通过融合非张量来创建的banches 与稀疏张量分支(在同一级别)如图 3 所示,即 GoogLeNet 中的 inception 模块(Szegedy 等人(2014))。

暂时得到的结论是加速模型主要是解决这些非张量运行较慢的问题。 优化非张量层有巨大潜力!
理想情况下,我们可以将非张量层和张量层优化结合在一起,进一步减少延迟和模型大小。
贡献:
我们的方法是第一个优化非张量层并显着加速 CPU 上的深度学习模型的工作,同时减少所需的运行时内存,因为重构的深度学习模型中的层数较少。
我们基于旧层的原始结构进行流合并和分支合并,而新的张量层是通过将非张量层与其相邻稀疏张量层垂直和水平合并而生成的。(怎么合并?)
通过分析当前层和之前层(或并行层)的相关性,我们可以合并高度相关的层并将其替换为新的“重生”层。
流式合并
合并方法:流线合并通过将前馈结构中的非张量层与其底部张量单元合并来重新生成新的张量层(即重生层)。逐层再生后,我们通过微调新生成层的参数来重新训练深度神经网络模型。所提出的方案中有两个简化的合并操作。合并操作的选择取决于非张量层的类型。
合并池化层:池化层对从先前层学习到的特征图进行下采样。因此,为了将池化层合并到卷积层,我们删除池化层并将“合并”的卷积层的步长值设置为原始池化层和卷积层的步长值的乘积。新的“合并”卷积层具有更大的步幅值,进一步减少了执行新模型所需的计算量。
合并非池化层:对于非池化层,例如LRN 和批量归一化,我们直接从原始深度神经网络中修剪这些层。

分支合并
探索张量层分支减少和合并的稀疏性
减少:对于具有并行分支的深层网络架构,每个分支的输出构成特征图的一部分作为下一层的输入。我们识别出具有较大延迟的非张量分支(例如图 3 中的池化分支)。与流线合并类似,如果我们可以使用更快的张量分支通过重新学习其参数来模拟非张量分支的功能,我们可以实现明显的加速。

合并:内核尺寸较小的卷积分支可以合并到内核尺寸较大的卷积分支。该方法类似于非张量层的合并。为了保持网络中其他层的结构不变,我们删除了小核卷积分支并增加了大核卷积层生成的特征图的数量。例如,对于层 inception 3a/3x3 reduce,我们删除了 1 × 1 卷积分支,并将 3 × 3 卷积生成的特征图数量从 128 增加到 196(但是图上是192?)
总结
我们提出了 DeepRebirth 加速框架,可以以令人满意的精度加速神经网络。我们的方法通过优化非张量层及其相邻单元来重新生成新的张量层。此外,作为一种通用方法,DeepRebirth 与 GoogleNet 和 ResNet 等最先进的深度模型兼容,而大多数参数权重压缩方法在这些模型中都失败了。通过在不同的深度学习架构上应用 DeepRebirth,我们在不同的处理器上获得了显着的加速,特别是在移动 CPU 上。这将极大便利深度学习模型在手机上的部署,并使得在新的AI浪潮中提供更加智能、智能化的服务成为可能。
自写摘要
在移动设备上部署运行大型模型仍存在一定的挑战,传统模型压缩方案通过低秩分解、SVD等来量化分解,对于移动设备,压缩之后的模型还是运行较慢。因此,本文提出了一种加速框架DeepRebirth,通过将无参数层与其相邻卷积层合并到单个密集层来探索深度学习模型参数稀疏性。主要分为流式合并、分支合并两种方式。经过实验表明,提出的框架在不同的处理器上获得显著的加速,有助于将深度学习模型在移动设备上的部署。
V2
在移动平台上部署大型深度学习模型仍面临诸多挑战,尽管传统的模型压缩技术,如低秩分解和SVD,旨在减小模型体积,但在移动设备上,即使经过压缩的模型有时运行效率仍然不理想。鉴于此,本文介绍了一种创新的加速框架——DeepRebirth,该框架通过探索模型参数的稀疏特性,实现无参数层与相邻卷积层的集成,具体策略包括流式合并与分支合并两种方法。实验证明,DeepRebirth能够在多种处理器架构上显著提升运行速度,极大促进了深度学习模型在移动设备上的高效部署。
多任务学习+剪枝
DiSparse: Disentangled Sparsification for Multitask Model Compression
摘要:
尽管模型压缩和多任务学习很流行,但由于参数空间中任务的纠缠具有挑战性,如何有效地压缩多任务模型的分析还不够彻底。在本文中,我们提出了 DiSparse,一种简单、有效且首创的多任务剪枝和稀疏训练方案。我们通过解开重要性度量来独立考虑每个任务,并在执行参数修剪和选择时在所有任务之间做出一致的决定。我们的实验结果表明,与流行的稀疏训练和修剪方法相比,在各种配置和设置上都有优越的性能。除了压缩的有效性之外,DiSparse 还为多任务学习社区提供了强大的工具。令人惊讶的是,尽管 DiSparse 强制执行了高模型稀疏性,但在某些情况下,我们甚至观察到比一些专用多任务学习方法更好的性能。我们分析了使用 DiSparse 生成的修剪掩码,甚至在训练开始之前就观察到每个任务识别出的惊人相似的稀疏网络架构。我们还观察到存在一个“分水岭”层,其中任务相关性急剧下降,这意味着持续的参数共享没有任何好处。我们的代码和模型将在以下位置提供:https://github.com/SHILabs/DiSparse-Multitask-Model-Compression
问题:随着对更复杂、更困难的视觉任务的探索,人们投入了大量的努力来将深度卷积网络扩展到巨大的尺寸。许多模型的参数多达数十亿,这对那些针对边缘设备应用的模型提出了巨大的挑战。
个人总结,基本上对于模型压缩的方法来说,都会说由于网络发展中变得越来越巨大,参数量剧增,致使在边缘设备上无法部署使用。所以对于网络模型的压缩是一件十分重要的事情。对于模型压缩的类型可以分为:剪枝、量化、低秩分解、知识蒸馏。基本上在综述中也是说的这几种方向。
解决方案:我们提出了首个修剪方案,通过考虑多任务网络特征的纠缠性质来增强多任务网络的稀疏性。我们认为,正确压缩多任务模型的关键是正确识别共享空间中每个任务的显着性分数,因此以解缠结的方式进行稀疏化(DiSparse)。我们在所有任务中采取一致的选择决策,这意味着只有当参数被证明对任何任务都不重要时才会被删除。这可以防止某些任务由于稀疏而导致性能极度下降,从而形成更加平衡的网络。
贡献总结:
- 通过解开任务之间的重要性测量,提出一种简单、有效且首创的多任务网络剪枝和稀疏训练方案,从而形成更加平衡的网络
- 对多个视觉任务和数据集进行了广泛的实证研究,这证明了 DiSparse 与流行的剪枝和稀疏训练算法甚至几种专用的多任务学习方法相比的优越性
- 使用 DiSparse 研究和讨论任务相关性和多任务模型架构设计,从压缩的角度为多任务学习社区提供了一个有价值的工具。
DiSparse 是一项针对多任务模型压缩的创新方法,它通过分离(Disentangled)任务重要性度量并采用一致决策的方式,有效地对多任务模型进行剪枝与稀疏训练。尽管模型压缩和多任务学习广泛流行,但由于任务在参数空间中相互交织的特性,如何有效压缩多任务模型的研究尚不充分。DiSparse 提供了一种简单且有效的方案,首次实现了多任务剪枝和稀疏训练的分离化处理。
算法流程:
- 初始化空列表 ( $B_{cs}$ ) 存储每个任务的共享掩码子集。
- 对于每个任务 ( k ):
- 计算任务 ( k ) 的敏感度得分(saliency)。
- 根据稀疏率 ( S ) 和参数总数确定阈值 ($\gamma$)。
- 使用阈值 ($\gamma$) 生成任务 ( k ) 的掩码 ($B_{kc}$)。
- 提取任务私有掩码 ( $B_k$ )。
- 将 ( $C(B_{kc})$ ) 添加到 ( $B_{cs}$)。
- 应用“仲裁器”函数 ( A ) 综合所有任务的共享掩码子集 ( $B_{cs}$ ),得到共享参数掩码 ( $B_c$ )。
- 结合所有任务私有掩码 ( $B_k$ ) 和共享掩码 ( $B_c$ ) 构建全局掩码 ( B )。
- 返回全局掩码 ( B )。

稀疏训练与剪枝策略
DiSparse 支持三种流行的稀疏训练和剪枝场景,分别采用不同的敏感度得分标准:(区分的标准,三种方式适合什么)
静态稀疏训练:
- 从 SNIP 方法借鉴了数据驱动的敏感度度量方法,并进行适应性修改。
- 通过梯度 ( $g_{kc_j}(\Theta_{kc}$; D) ) 计算任务 ( $T_k$ ) 中参数 ( $\Theta_{kc_j}$ ) 的敏感度 ( $s_{kc_j}$ )。
- 使用阈值 ( $\gamma$ ) 生成任务 ( $T_k$ ) 的掩码 ( $B_{kc}$ )。
- 最终掩码 ( B ) 可以根据 ( $B_{kc}$ ) 计算得出。
动态稀疏训练:
- 跟随 RigL 方法的剪枝和生长准则,但进行了适应性修改。
- 剪枝时执行标准的按绝对值大小剪枝。
- 生长阶段,同样计算任务 ( $T_k$ ) 中参数 ( $\Theta_{kc_j}$ ) 的敏感度 ( $s_{kc_j}$ )。
- 使用衰减函数 ( $f_{decay}(t; \alpha, T_{end})$ ) 更新每轮迭代中剪枝和生长的比例,以及剩余活跃连接集 ( $\Theta_{kc}\setminus I_{active}$ )。
- 计算任务 ( $T_k$ ) 的生长掩码 ( $B_{kc}$ )。
- 最终掩码 ( B ) 可以根据 ( $B_{kc}$ ) 计算得出。
预训练模型剪枝:
- 借鉴 GF 方法的剪枝准则,并进行适应性修改。
- 计算任务 ( $T_k$ ) 中参数 ( $\Theta_{kc_j}$ ) 的敏感度 ( $s_{kc_j}$ )。
- 使用阈值 ( $\gamma$ ) 生成任务 ( $T_k$ ) 的剪枝掩码 ( $B_{kc}$ )。
- 最终掩码 ( B ) 可以根据 ( $B_{kc} $) 计算得出。
仲裁器函数
“仲裁器”函数 ( A ) 负责综合所有任务对共享参数的掩码决策。DiSparse 提供了两种选择:
- 元素级逻辑或(Element-wise Logical OR):
对每个任务计算出的共享参数掩码执行逻辑或操作。只有当所有任务都认为某个参数不重要时,该参数才会被剪枝。
自写摘要:随着深度神经网络的发展,模型大小、参数量激增,虽然精度有所上升但是对于条件受限的边缘智能设备(手机、无人机等)仍存在无法部署、或运行较慢的问题。于是模型压缩与轻量化变得愈加重要,在这里作者提出了一种DiSparse多任务模型稀疏化方案,对每个任务分别获得私有掩码与共享掩码,再通过仲裁器函数进行逻辑或操作,对不重要的参数进行剪枝。DiSparse是一个简单有效的方法,使用 DiSparse 研究和讨论任务相关性和多任务模型架构设计,从压缩的角度为多任务学习社区提供了一个有价值的工具。
Disentangling Redundancy for Multi-Task Pruning *(没读懂)
摘要:在先前的网络剪枝策略中,可以消除多个相关的预训练深度神经网络中的冗余吗?如果首先将多个网络合并,然后进行剪枝,似乎是肯定的答案。然而,我们认为任意组合的网络可能会导致剪枝性能不佳,因为它们的内部和外部冗余可能无法同时最小化,同时保持每个任务中的推理准确性。在本文中,我们从信息论的角度定义和分析了多任务网络中的冗余,并确定了现有剪枝方法在多任务剪枝方面有效工作的挑战。我们提出了冗余解耦网络(Redundancy-Disentangled Networks,简称RDNet),它解耦了内部和外部冗余,以便通过先前的网络剪枝方案抑制所有冗余。一个剪枝的RDNet还确保在任何任务子集中的计算最小化,这是一种对选择性任务执行非常有用的特性。此外,还提出了一种启发式方法,用于从多个预训练网络构建RDNet。在CelebA数据集上的实验表明,相同的剪枝方法在RDNet上实现了至少1.8倍的内存使用率和1.4倍的计算成本,比基于现有最先进的网络合并方案构建的多任务网络要低。
多任务剪枝的直观解决方案是“合并和剪枝”。也就是说,首先通过在任务之间强制共享层来合并多个网络,然后通过现有的网络剪枝方案压缩合并模型中的冗余。这种“合并和剪枝”看起来是可行的,原因如下:(i) 最近已经利用了在相关任务之间共享层来减少多个预训练模型的内存占用[2, 9],这在多任务学习(MTL)中是一个长期存在的主题,它同时学习多个任务以提高它们的泛化性[28]。(ii) 最先进的剪枝提案[3, 5, 7]能够在一个过参数化的单任务网络中显著降低操作数量,而不损失准确性。
后面话锋一转修剪任意组合的多任务网络的挑战在于,在保持每个任务的推理准确性的同时,可能无法同时最小化它们的内部和相互之间的冗余。例如,一项任务的冗余参数可能对另一项任务来说是必需的。消除这些参数将减少一项任务中的冗余,但也会降低另一项任务中的推理准确性。
贡献
在这篇论文中,我们从信息论的角度看待多任务剪枝,并分析了单网络剪枝方法在一个合并模型中能够抑制任务内和任务间冗余的条件。我们还提出了一种启发式方法,可以从多个预训练的单任务神经网络构建这样的网络。我们的主要贡献和结果如下:
- 我们从信息论的角度定义和分析了任务间和任务内的冗余,并展示了在不损失任务准确性的情况下同时减少任务间和任务内冗余可能会存在冲突。这种冲突给现有网络剪枝方法在多任务剪枝中有效运作提出了挑战。据我们所知,这是首次探索将单任务剪枝方法应用于多任务剪枝的研究。
- 我们提出了冗余解耦网络(Redundancy-Disentangled Networks,简称RDNets),它们最小化了这种冲突,使得可以通过单任务剪枝来抑制任务内和任务间的冗余。我们还设计了一种启发式网络合并方案,用于从预训练网络构建RDNet。在CelebA [16](LFW [11])数据集上的实验表明,将相同的单任务剪枝方法应用于RDNet,其内存使用率至少降低了1.8倍(1.3倍),计算成本降低了1.4倍(1.8倍),相比于由最先进的网络合并方案[9]构建的多任务网络。
单任务修剪。网络剪枝是减少深度神经网络中操作数量而不损失准确性的事实上的方法。
举例子
神经网络从输入中提取和处理信息。直观地说,有些信息只与任务A相关,我们称之为任务A独占信息。同样地,有任务B独占信息。此外,如果任务A和任务B相关联,那么应该存在对这两个任务都相关的任务共享信息。
考虑一个具有两个输出层的联合多任务网络架构,分别用于任务A和B。它可以分为三个部分:一个连接到输出A的任务A独占子网络,一个连接到输出B的任务B独占子网络,以及一个连接到两个输出的共享子网络。当应用单任务剪枝来减少冗余时,任意的多任务网络架构可能会遇到以下问题。
- 如果任务A独占子网络和任务B独占子网络中包含一些任务共享信息,这些信息可能对两个任务都是必要的,因此不能通过对每个任务进行单任务剪枝而删除。然而,这种任务共享信息是多余的,因为在联合多任务网络中它被重复了。因此,在这种情况下,单任务剪枝无法减少多任务网络中的所有冗余。
- 如果共享子网络包含任务独占信息,而这些信息又没有被两个任务独占子网络捕获,那么这些信息对其中一个任务是必要的,但对另一个任务是多余的。在一个任务上进行单任务剪枝可能会移除对另一个任务重要的信息,从而降低其推理准确性。
定义
一组神经元输出 T 相对于任务 A 的冗余度是输出彼此完全独立时所包含的信息量减去它们实际拥有的任务 A 相关信息量。这可以通过以下方式测量$\mathcal{R}A(\mathbf{T})=\sum{T_i\in\mathbf{T}}H(T_i)-I(\mathbf{T};\mathbf{Y}^A)$
根据这个定义我们有
$$
\mathcal{R}A(\mathbf{T})=\sum{T_i\in\mathbf{T}}H(T_i)-\left(H(\mathbf{T})-H(\mathbf{T}|\mathbf{Y}^A)\right)=C(\mathbf{T})+H(\mathbf{T}|\mathbf{Y}^A)
$$
其中 C(T) = Σ Ti∈T H(Ti) − H(T) 是总相关性 [25]。方程可以解释为:神经元输出集中与任务相关的冗余由自冗余(用 C(T) 测量)和任务的不必要信息(用 H(T|YA) 测量)组成。请注意,对于任何 A 和 T,RA(T) ≥ 0
解释:
- **H(Ti)**:单个神经元输出Ti的信息熵,表示这个神经元输出包含的信息量。
- **∑ Ti∈T H(Ti)**:组合T中所有神经元输出的信息熵之和,表示这些输出的总信息量。
- **H(T)**:组合T的信息熵,表示这些输出一起的总信息量。
- **H(T|YA)**:组合T在已知任务A输出YA的条件下的条件熵,表示这些神经元输出对于任务A的贡献程度。
- **C(T)**:这是一个新的概念,被称为总相关性(total correlation),表示组合T中神经元输出之间的总相关性。公式为C(T) = ∑ Ti∈T H(Ti) − H(T),即所有神经元输出的信息熵之和减去组合T的信息熵。
- **Eq.(2)**:这个公式解释了冗余量RA(T)的计算方式,它等于总相关性C(T)加上在已知任务A输出YA的条件下,组合T的条件熵H(T|YA)。
- 解释:公式的解释是,在一个神经元输出组合T中,任务相关的冗余量包括两部分:
- 自身冗余(C(T)):表示组合T中神经元输出之间的相关性或重复信息。
- 对于任务的不必要信息(H(T|YA)):表示即使已经知道任务A的输出YA,组合T中仍然包含的额外信息。
- RA(T) ≥ 0:这个公式告诉我们,对于任何任务A和神经元输出组合T,冗余量RA(T)都应该大于等于0。也就是说,这个冗余量不能是负数,因为它衡量的是神经元输出组合中的信息是否重复或者多余。
论文中涉及的公式主要用来定量衡量和分析神经网络中关于任务的冗余,以及在多任务剪枝过程中如何进行有效的优化。以下是关键公式的解释:
**公式1 (RA(T))**:
[ $RA(T) = \sum_{Ti \in T} H(T_i) - I(T; YA)$ ]
此公式定义了神经网络中一组神经元输出 ( T ) 对于任务 ( A ) 的冗余度 ( RA(T) )。其中:
- ( $H(T_i)$ ) 是对单个神经元输出 ( $T_i$ ) 的熵,衡量其不确定性或信息含量。
- ( $I(T; YA)$ ) 是 ( T ) 与任务相关输出 ( YA ) 的互信息,表示 ( T ) 中与任务 ( A ) 相关的信息量。
冗余度 ( RA(T) ) 可理解为如果 ( T ) 中各输出完全独立时它们应包含的信息量减去实际与任务 ( A ) 相关的信息量。这包括了自身冗余(由 ( C(T) ) 表示)和对任务而言不必要的信息(由 ( $H(T|YA)$ \)表示)。
**公式2 (RA(T)的分解)**:
[ $RA(T) = C(T) + H(T|YA)$ ]
这里引入了总相关性 ( C(T) )(total correlation):
[ $C(T) = \sum_{Ti \in T} H(T_i) - H(T)$ ]
总相关性衡量了 ( T ) 中各神经元输出之间的相关性导致的信息冗余。整个公式说明了任务相关冗余由两部分构成:神经元输出之间的自我冗余(( C(T) ))和对任务无用的信息(条件熵 ( H(T|YA) ),即在已知任务输出 ( YA ) 的情况下,( T ) 中额外包含的无关信息)。
**公式3 (单任务剪枝优化目标)**:
[ $\text{minimize } RA(GA) - \xi \cdot \sum_{i=1}^{N} I(LA_i; YA)$ ]
这是一个优化问题的目标函数,旨在最小化神经网络 ( GA ) 中针对任务 ( A ) 的冗余 ( $RA(GA)$ ),同时考虑保持任务相关的推理准确度。参数 ( $\xi$ ) 控制推理准确度与效率之间的权衡。这里:
- ( $I(LA_i; YA)$ ) 表示第 ( i ) 层输出 ( $LA_i$ ) 与任务 ( A ) 之间的互信息,代表该层传递给任务的相关信息量。度量了两个变量之间相互依赖的程度
**公式4 (两组神经元输出冗余的联合)**:
[ $RA(T_1 \cup T_2) = RA(T_1) + RA(T_2) + I(T_1; T_2; YA) - \sum_{Ti \in T_1 \cap T_2} H(T_i)$ ]
此公式给出了两组神经元输出 ( T_1 ) 和 ( T_2 ) 关于任务 ( A ) 的冗余之和的计算方式,其中:
- ( $I(T_1; T_2; YA)$ ) 是 ( $T_1$ ) 和 ( $T_2$ ) 之间的共信息(co-information),反映了它们共同携带的任务相关信息减去在已知任务输出 ( $YA$ ) 时它们之间的多余关联。
**公式5 (网络整体冗余的分层表示)**:
[ $RA(GA) = \sum_{i=1}^{N} (RA(LA_i) - \sum_{Ti \in LA_{i-1} \cap LA_i} H(Ti)) + \sum_{i=2}^{N} I(LA_i; YA)$ ]
该公式将整个神经网络 ( GA ) 的冗余度 ( RA(GA) ) 分解为各层冗余及其相互关系的组合,便于逐层分析和优化。
这些公式构成了评估和优化神经网络冗余的基础,特别是在多任务剪枝场景下,有助于识别和去除冗余,同时保证模型性能,降低计算和存储成本。
在本文中,我们从信息论的角度定义和分析多任务网络中的冗余,并确定单任务剪枝在多任务剪枝中有效发挥作用的挑战。我们提出了冗余解缠网络(RDNet),它将内部和内部冗余解耦,以便可以通过以前的网络修剪方案来抑制所有冗余。修剪后的 RDNet 还确保任何任务子集中的计算量最少,这是选择性任务执行的理想功能。我们还提出了一种启发式方法,从多个预训练网络构建 RDNet。在 CelebA (LFW) 数据集上的实验表明,与由状态构建的多任务网络相比,在 RDNet 上采用相同的剪枝方法,内存使用量至少降低 1.8× (1.3×),计算成本降低至少 1.4× (1.8×)最先进的网络合并方案
自写摘要:论文详细讨论了如何从信息论角度量化冗余,并以单任务剪枝优化为起点,分析了多组神经网络冗余计算,并表示了网络整体冗余的分层表示。最后提出了冗余纠缠网络(RDNet),从而简化优化问题并确保同时执行多个任务或单独执行任一任务时都能达到最小的计算和内存开销。在实验中RDNet 上采用相同的剪枝方法,内存使用量至少降低 1.8× (1.3×),计算成本降低至少 1.4× (1.8×)最先进的网络合并方案。
Multi‑task Pruning via Filter Index Sharing: A Many‑Objective Optimization Approach
摘要
最先进的深度神经网络在人工智能中发挥着越来越重要的作用,而网络中大量的参数带来了高昂的内存成本和计算复杂度。为了解决这个问题,滤波器剪枝被广泛用于神经网络压缩和加速。然而,现有算法主要集中于单一模型的剪枝,而能够剪枝多模型并提升学习性能的多任务剪枝却鲜有成果。通过利用过滤器共享技术,本文旨在建立一个多任务剪枝框架,用于在多任务网络中同时剪枝和合并过滤器。通过开发多目标优化算法来解决选择重要滤波器的优化问题,其中采用三个标准作为多目标优化问题的目标。为了保持网络结构,引入索引矩阵来调节多任务训练过程中的信息共享。所提出的多任务剪枝算法非常灵活,可以使用自适应或预先指定的剪枝率来执行。进行了大量的实验来验证所提出的方法在单任务和多任务剪枝上的适用性和优越性。
提出
我们打算提出一个统一的多任务过滤索引共享(MFIS)框架,该框架可以系统地处理单任务和多任务剪枝。
贡献
i)与大多数仅适用于单个任务的传统剪枝技术不同,我们提出了一个更通用的框架MFIS,它能够处理多任务剪枝和单网络剪枝。
ii)不同网络中所提出的 FIS 能够选择重要的过滤器并为每个过滤器确定最合适的操作(修剪、合并或保留)。同时,FIS中的索引矩阵可以在多任务训练中保持网络结构。
iii)提出了选择目标重要滤波器的三个标准,以进一步适当地表征随后通过 MOP 方法优化的 MFIS 的性能。
iv)所提出的算法非常灵活,采用两种剪枝率策略,即针对不同任务的自适应率和针对单个任务的固定率,来平衡学习速度和准确性。
v) 通过广泛的实验,MFIS 的有效性和效率在不同的网络和数据库上得到了证明。我们证明,与单任务剪枝方法和多任务剪枝方法相比,MFIS 的性能更好。
选择标准
以两个任务为例,过滤器集合VA和VB分别包含模型A和模型B中的原始过滤器。过滤器候选集合C初始化为包含V的所有过滤器。我们的首要任务是从C中获取一个重要的过滤器集合CE。为了将选择重要过滤器CE的问题转化为多目标优化问题(MOP),我们为C中的每一个过滤器fi引入了一个二值超参数αi,其取值范围为{0, 1}。当αi等于1时,表示fi属于CE。因此,由所有这些超参数构成的决策变量集合记为α=(α1, α2, …, αm)。接下来,我们可以根据以下标准来设计MOP的目标函数:
Loss of Replacing: 这一标准旨在确保模型中每个原始过滤器fi与候选重要过滤器集合CE中的一个成员有适当的较小的替换损失。具体来说,对于任务A,计算过滤器fi与CE中每个候选过滤器的替换损失,并选取其中最小值作为fi在任务A上的最优替换损失;同样,对任务B进行相同的操作。目标函数**F1(⋅)和F2(⋅)**分别代表任务A和任务B上所有原始过滤器最优替换损失之和的最小化。
该标准旨在确保 V 中的每个滤波器对于 CE 中的候选滤波器具有适当小的 δE:
$$
\begin{aligned}\forall f_i\in V:&&\exists f_j\in C^E,\&\mathrm{s.t.}\delta E(i,j)<\epsilon\end{aligned}
$$
其中δE(i,j)表示用fj替换fi的损失。在这里,我们计算在任务 A 上用 fj ∈ C 替换 fi ∈ V 的损失:
$$
\delta\hat{E^A}(i,j)=\left{\begin{matrix}+\infty&\alpha_j=0\wedge f_i\in V_A\\delta E^A(i,j)&\alpha_j=1\wedge f_i\in V_A\0&f_i\in V_B\end{matrix}\right.
$$
在这里还有一个任务B的损失函数和A的差不多那么,相应的目标函数定义如下:
$$
\mathcal{F}1(\boldsymbol{\alpha})=\sum{f_i\in V}\min_{f_j\in C}{\delta\hat{E}^A(i,j)}
$$$$
\mathcal{F}{2}(\boldsymbol{\alpha})=\sum{f_{i}\in V}\min_{f_{j}\in C}{\delta\hat{E}^{B}(i,j)}
$$F1(⋅) 和 F2(⋅) 分别描述网络 A 和 B 的替换损失。在CE大小的限制下,F1(·)和F2(·)将从CE中剔除不合适的候选者,从而以最小的损失减少任务内冗余和任务间冗余。
The Diversity of Selected Candidates: 该标准旨在保证所选候选过滤器在CE中的多样性。为此,定义多样性度量为将CE中每个fi用其他所有CE中的过滤器替换时损失之和,表示为D。目标函数**F3(⋅)**为D的负值,即最大化多样性度量,以确保所选过滤器集合具备广泛的代表性。
$$
\mathcal{D}=\sum_i^{\alpha_i=1}\sum_j^{\alpha_j=1}\delta E(i,j)
$$
然后,相应的目标函数 F3(⋅) 定义为:
$$
\mathcal{F}_3(\alpha)=-\mathcal{D}
$$The Entropy of Weights: 权重熵被用来评估过滤器权重分布的不确定性。高熵意味着权重的高变化。这有助于捕捉输入数据中的重要信息。对于一个过滤器层,其熵可以基于权重向量的离散概率分布来计算。目标函数**F4(⋅)**定义为该层的负熵,旨在最大化权重熵,促进权重分布的多样性,进而保留有用的信息
没有变化的过滤器可能无法从输入数据中捕获重要信息[28]。这里引入层熵来评估滤波器权重的变化,计算公式如下:
$$
\mathcal{I}=-\sum_{k=1}^np_k\log p_k
$$
其中n是采样权重的类别数,pk是类别k的概率。滤波器的高熵意味着权重的高变化。然后,相应的目标函数 F4(⋅) 定义为
$$
\mathcal{F}_4(\boldsymbol{\alpha})=-\mathcal{I}
$$
F1(·)和F2(·)控制任务内冗余和任务间冗余; F3(·)保证多样性,寻找与聚类中心更加相似、支持者接近但又相互不可替代的候选者;标准 F4(⋅) 更关注候选者对保留有用信息的贡献。每个标准都与其他标准相冲突,并且是为了不同的目的而选择的。值得注意的是,尽管小 L2 范数剪枝是滤波器剪枝的主要使用标准 [15, 16],但“较小范数不那么重要”在一些文献中已被重新考虑[29]。对于多任务剪枝,搜索具有可共享(在多网络中)或替换(在单网络中)的相似信息的过滤器对于设计标准更为重要。
过滤器共享
Filter Sharing 是论文中提出的一种策略,用于处理多任务神经网络中过滤器(filter)的剪枝(pruning)和合并(merging)。这一策略的核心思想是识别并收集那些在不同任务中共享相似信息的过滤器,以便在不影响网络整体性能的前提下,减少参数数量、降低计算成本并加速推理过程。
以下是Filter Sharing策略的主要步骤和特点:
- 重要过滤器集(Important Filter Set, CE)的选择:首先,从所有过滤器集合(如VA和VB)中确定出一个重要的过滤器子集(CE)。CE中的过滤器被认为是具有关键作用且不易被其他过滤器替代的。这一选择过程通过多目标优化算法完成,该算法考虑了诸如替换损失、多样性、权重熵等多个指标,以确保选出的过滤器既减少冗余又保持网络性能。
- 过滤器支持关系的建立:对于每个过滤器fi,如果存在候选重要过滤器fj∗ ∈ CE,使得fi与fj∗之间的替换损失达到最小,那么称fi为fj∗的一个支持者(supporter)。这意味着fi可以有效地支持(或近似)fj∗的任务功能,而不会导致显著的性能下降。
- 过滤器的共享与合并:Filter Sharing策略的关键在于识别和收集具有相同候选过滤器(即支持同一个重要过滤器fj∗)的过滤器集合。这些过滤器可能来自同一任务(如VA中的绿色过滤器或VB中的蓝色过滤器),它们的剪枝有助于减少网络参数并加速推理;也可能来自不同任务(如VA和VB中的青色过滤器),它们的合并能够实现跨任务信息的共享。
- 剪枝(Pruning):对于在同一任务中工作且支持同一候选过滤器的过滤器,可以选择其中一部分进行剪枝,去掉多余的重复功能,从而减少网络参数。
- 合并(Merging):对于支持同一候选过滤器但服务于不同任务的过滤器,可以将它们的功能合并,形成一个新的过滤器,该过滤器能够同时处理两个任务的输入,实现跨任务信息的融合与共享。
- 结构维护与信息共享调节:为了保持网络结构的完整性并在后续的多任务训练中有效调控信息共享,论文引入了一个索引矩阵(index matrix)。该矩阵记录了剪枝和合并操作的结果,使得经过剪枝和合并后的网络在进行多任务学习时仍能保持合理的结构,并确保信息在不同任务间有序、有效地传递。
多任务剪枝的 MOP模型
MOP模型建立为
$$
\begin{aligned}\min_{\alpha}\mathcal{F}(\boldsymbol{\alpha})\\mathcal{F}&={\mathcal{F}{1}(\boldsymbol{\alpha}),\mathcal{F}{2}(\boldsymbol{\alpha}),\mathcal{F}{3}(\boldsymbol{\alpha}),\mathcal{F}{4}(\boldsymbol{\alpha})}\end{aligned}
$$
其中,决策变量向量 $(\alpha = (\alpha_1, \alpha_2, …, \alpha_m)),(\alpha_i)$ 为二值变量,表示第 (i) 个过滤器是否被选入重要过滤器集合 CE。
优化方法:
为了解决上述MOP,论文采用了多目标演化算法设计($MOEA/D$)。这是一种基于分解的多目标优化算法,能够有效地处理多个互相冲突的目标。具体优化过程中,MOEA/D采用了以下策略:
变异策略:在搜索过程中,不是随机改变决策变量 ($\alpha$),而是施加概率约束。首先移除当前解(CE)中最接近其他解的过滤器,然后添加一个不在当前解中的过滤器。这种策略旨在引导搜索向更具潜力的解空间移动,同时保持解集的多样性。
解的选择:由于多目标优化通常产生的是 Pareto 前沿(PF),即一系列非劣解(无一解能在所有目标上同时优于其他解),而非单一最优解。因此,需要根据实际需求从PF中选择合适的解。
- 优化目标:寻找能使所有目标函数总和最小化的决策变量 a。这意味着,a 应当使所有目标在某种意义上达到最佳折衷,因为多目标优化问题通常不存在一个解能够同时使所有目标达到各自最优。
$$
\begin{aligned}\alpha^{*}&=\arg\min_{\alpha}\sum f_{i}(\alpha)\&\mathrm{s.t.~}\sum\alpha_{i}=N^{E}\end{aligned}
$$
综上所述,MOP Model for Multi-task Pruning 是一个多目标优化框架,它将选择重要过滤器、保持任务性能、确保多样性及权重分布合理等多个目标融入同一个优化模型中。通过使用多目标演化算法进行求解,能够在多任务神经网络剪枝的过程中找到一组平衡各种目标的过滤器子集,从而实现网络的有效压缩、加速,同时保持甚至提升多任务学习的性能。
更新权重
误差近似:假设δE(i,j)是fi的原始输出结果与fj替换的对应结果之间的差值。我们应用[5, 31]中介绍的另一种方法通过泰勒级数展开来近似误差函数,如下所示:
$$
\begin{aligned}
\delta E_{l}(i,j)& =E_{l}(j)-E_{l}(i) \
&=(\frac{\partial E_{l}}{\partial\theta_{l}})^{T}\delta\theta_{l}+\frac{1}{2}\delta\theta_{l}^{T}\mathbf{H}{l}\delta\theta{l}+O(|\delta\theta_{l}|^{3})
\end{aligned}
$$
误差函数的简化:
在特定情况下(如所有过滤器具有相同的输入),可以进一步简化误差函数。通过应用拉格朗日乘子法,可以得到最优权重更新结果。
如果直接计算赫塞尔矩阵 Hl 较为困难(例如在某些数据库中),可以转而计算两个过滤器权重向量之间的距离(如欧氏距离),作为替换损失的度量。(其中 H(n) 表示 fn 的 Hessian 矩阵。)
权重更新策略:
- 为了在合并过滤器时尽可能减少损失,论文提出了优化一个误差函数来更新权重 f*′。这个误差函数反映了在剪枝和合并操作后网络性能的变化,目标是通过优化该函数来找到新的权重配置,以最大程度地保持原始网络的性能。
自写摘要
随着结构变得更深、更大,网络参数的数量将大幅增加,导致 DNN 使用过程中的计算成本急剧上升。因此,当今迫切需要计算成本相对较低、精度较高的DNN,从而催生了网络剪枝技术的发展,以简化结构、减少参数。本文提出一种名为“Multi-task Pruning via Filter Index Sharing”(MFIS)的多任务神经网络剪枝框架。该框架结合多目标优化,通过构建候选过滤器集合、智能选择重要过滤器、实施过滤器共享策略及引入索引矩阵,有效压缩网络、减少冗余、加速计算,同时保持或提升多任务学习性能。并在实验中展现出较高的普适性、结构保持能力及剪枝率灵活性,为多任务深度学习模型的高效部署提供了新方法,有较好的性能表现。
Task’s Choice: Pruning-Based Feature Sharing (PBFS) for Multi-Task Learning
摘要在大多数现有的多任务学习(MTL)模型中,多个任务的公共信息是通过跨隐藏层共享参数来学习的,例如硬共享、软共享和分层共享。一种有前途的方法是将模型剪枝引入信息学习中,例如稀疏共享,这被认为在知识转移方面表现出色。然而,上述方法在冲突任务中执行效率低下,对任务私人信息的学习不充分,或者遭受负迁移。在本文中,我们提出了一种多任务学习模型(基于剪枝的特征共享,PBFS),它将软参数共享结构与模型剪枝相结合,并在不同任务特定子网之间添加可剪枝共享网络。这样,每个任务都可以根据自己的要求在共享子网中选择参数。在三个基准公共数据集和一个综合数据集上进行了实验;分析了不同子网的稀疏性和任务相关性对模型性能的影响。结果表明,该模型的信息共享策略有助于迁移学习,并且优于几种比较模型。
transfomer
sequence:”sequence”(序列)是指模型处理的基本数据结构。
红外小目标检测
transformer方法
SCTransNet: Spatial-Channel Cross Transformer Network for Infrared Small Target Detection、
摘要:红外小目标检测(IRSTD)最近从 U 形神经模型中受益匪浅。然而,在很大程度上忽视了有效的全局信息建模,当目标与背景高度相似时,现有技术就会陷入困境。我们提出了一种空间通道交叉变压器网络(SCTransNet),它利用远程跳跃连接(SK)之上的空间通道交叉变压器块(SCTB)来解决上述挑战。在所提出的 SCTB 中,所有编码器的输出与交叉变换器交互以生成混合特征,这些特征被重新分配给所有解码器,以有效地增强全级别目标和杂波之间的语义差异。具体来说,SCTB包含以下两个关键要素:1)空间嵌入的单头通道交叉注意(SSCA),用于交换局部空间特征和全级全局通道信息,以消除编码器之间的歧义并促进编码器之间的高级语义关联。图像和2)互补的前馈网络(CFN),用于通过多尺度策略和跨空间通道信息交互来增强特征辨别力,以促进有益的信息传递。我们的 SCTransNet 有效地编码了目标和背景之间的语义差异,以增强其内部表示,从而准确地检测小型红外目标。对三个公共数据集 NUDT-SIRST、NUAA-SIRST 和 IRSTD-1K 的广泛实验表明,所提出的 SCTransNet 优于现有的 IRSTD 方法。我们的代码将在 https://github.com/xdFai/SCTransNet 上公开。


上采样换成Dysample
SCTB融合Mamba的SS2D
MiM-ISTD: Mamba-in-Mamba for Efficient Infrared Small Target Detection
• 据我们所知,我们是第一个将 Mamba 成功应用于 ISTD 的公司,为未来高效、有效的基于 Mamba 的方法的进步提供了新的基准和宝贵的见解。
• 为了将Mamba 应用于ISTD 领域,我们定制了Mambain-Mamba (MiM-ISTD) 结构,以保证更高的效率,同时充分提取本地和全局信息。
• 在两个公共 ISTD 数据集 NUAA-SIRST 和 IRSTD-1k 上进行的实验证明了我们方法的卓越准确性和效率。具体来说,MiM-ISTD 比 SOTA 方法实现了 8 倍的加速,同时在推理过程中每个 2048 × 2048 图像的 GPU 内存使用量减少了 62.2%。
一般来说,现有的 ISTD 网络可以分为两类:基于 CNN 的网络和混合网络。基于CNN的网络主要关注局部特征提取
模型图

