动态卷积学习n个静态卷积核的线性混合,加权使用它们输入相关的注意力,表现出比普通卷积更优越的性能。然而,它将卷积参数的数量增加了n倍,因此并不是参数高效的。这导致不能探索n>100的设置(比典型设置n<10大一个数量级),推动动态卷积性能边界提升的同时享受参数的高效性。为此,论文提出了KernelWarehouse,通过利用卷积参数在同一层内部以及邻近层之间的依赖关系重新定义了“卷积核”、“组装卷积核”和“注意力函数”的基本概念。
论文地址:https://arxiv.org/abs/2406.07879
论文代码:https://github.com/OSVAI/KernelWarehouse
Introduction
卷积是卷积神经网络(ConvNets)中的关键操作。在卷积层中,普通卷积
通过由—组卷积滤波器定义的相同卷积核
应用于每个输入样本
来计算输出
。为简洁起见,将"卷积核"简称为"核"并省略偏置项。尽管常规卷积的有效性已经通过在许多计算机视觉任务上通过各种 ConvNet 架构进行广泛验证,但最近在高效 ConvNet 架构设计方面的进展表明,被称为 CondConv 和 DY-Conv 的动态卷积取得了巨大的性能提升。
动态卷积的基本思想是用
个相同维度的卷积核的线性混合来取代常规卷积中的单个核,
,其中
是由一个依赖于输入的注意力模块生成的标量注意力。受益于
的加法性质和紧凑的注意力模块设计,动态卷积提高了特征学习能力,而与普通卷积相比只增加了少量的乘加成本。然而,它将卷积参数的数量增加了
倍,因为现代 ConvNet 的卷积层占据了绝大部分参数,这导致了模型大小的大幅增加。目前还很少有研究工作来缓解这个问题。DCD 通过矩阵分解学习基础核和稀疏残差,以逼近动态卷积。这种逼近放弃了基本的混合学习范式,因此当
变大时无法保持动态卷积的表征能力。ODConv 提出了一个改进的注意力模块,沿不同维度动态加权静态卷积核,而不是单个维度,这样可以在减少卷积核数量的情况下获得具有竞争力的性能。但是,在相同的
设置
下,ODConv 的参数比原始动态卷积多。最近,有研究直接使用了流行的权重修剪策略,通过多个修剪和重新训练阶段来压缩 DY-Conv。
简而言之, 基于线性混合学习范式的现有动态卷积方法在参数效率方面存在局限。受此限制, 卷积核数量通常设置为
或
。然而, 一个显而易见的事实是, 采用动态卷积构建的 ConvNet 的增强容量来源于通过注意机制增加每个卷积层的卷积核数量
。这导致了所需模型大小和容量之间的基本冲突。因此, 论文重新思考了动态卷积的设计, 旨在协调这种冲突, 使其能够在参数效率的同时探索动态卷积性能边界, 即能够设置更大的核数
(比典型设置
大一个数量级)。需要注意的是, 对于现有的动态卷积方法,
意味着模型大小将大约比使用普通卷积构建的基础模型大 100 倍以上。
为了实现这一目标,论文提出了一种更通用的动态卷积形式,称为KernelWarehouse,主要受到现有动态卷积方法的两个观察的启发:(1)它们将常规卷积层中的所有参数视为静态核,将卷积核数量从1增加到
,并使用其注意模块将
个静态核组装成线性混合核。虽然直观有效,但它们没有考虑卷积层内部静态核之间的参数依赖关系;(2)它们为ConvNet的各个卷积层分配不同的
个静态核集合,忽略了相邻卷积层之间的参数依赖关系。与现有方法形成鲜明对比的是,KernelWarehouse的核心理念是利用ConvNet中同一层和相邻层的卷积参数依赖关系,重新构成动态卷积,以实现在参数效率和表示能力之间取得大幅度改进的权衡。
KernelWarehouse 由三个组件组成, 分别是核分区、仓库的构建与共享和对比驱动的注意函数, 它们之间紧密相互依赖。核分区利用同一卷积层内的参数依赖关系, 重新定义了线性混合中的"核",以较小的局部尺度而不是整体尺度来定义。仓库构建与共享利用相邻卷积层之间的参数依赖关系, 重新定义了跨同一阶段卷积层的"组装核",并生成了一个包含
个局部核 (例如
)的大型仓库,用于跨层线性混合共享。对比驱动的注意函数用于解决在具有挑战性的
设置下, 跨层线性混合学习范式下的注意力优化问题, 重新定义了"注意力函数"。在给定不同的卷积参数预算下, KernelWarehouse 提供了很高的灵活性, 允许以足够大的
值来很好地平衡参数效率和表示能力。
作为普通卷积的即插即用替代品,KernelWarehouse可以轻松应用于各种类型的ConvNet架构,通过对ImageNet和MS-COCO数据集进行大量实验证实了KernelWarehouse的有效性。一方面,轮你问展示了与现有动态卷积方法相比,KernelWarehouse实现了更优越的性能(例如,在ImageNet数据集上,使用KernelWarehouse训练的ResNet18|ResNet50|MobileNetV2|ConvNeXT-Tiny模型达到了76.05%|81.05%|75.92%|82.55%的top-1准确率,为动态卷积研究创造了新的性能纪录)。另一方面,论文展示了KernelWarehouse的三个组件对于模型准确性和参数效率的性能提升至关重要,而且KernelWarehouse甚至可以在减小ConvNet的模型大小同时提高模型准确性(例如,论文的ResNet18模型相对于基准模型减少了65.10%的参数,仍实现了2.29%的绝对top-1准确率增益),并且也适用于Vision Transformers(例如,论文的DeiT-Tiny模型达到了76.51%的top-1准确率,为基准模型带来了4.38%的绝对top-1准确率增益)。
Method
Motivation and Components of KernelWarehouse
对于一个卷积层, 设
为输入, 具有
个特征通道,
为输出, 具有
个特征通道, 其中
表示通道大小。普通卷积
使用一个静态卷积核
,包含
个具有空间大小
的卷积滤波器。动态卷积通过一个由注意力模块
生成的
权重的
个相同维度的静态卷积核
的线性混合取代普通卷积中的
定义为:
正如之前讨论的那样, 由于参数效率的缺点, 通常将核数量
设置为
。论文的主要动机是重新制定这种线性混合学习范式, 使其能够探索更大的设置, 例如
(比典型设置
大一个数量级),以推动动态卷积性能边界的提升,同时享受参数效率。为此, KerneIWarehouse 具有三个关键组成部分:核分区、仓库的构建与共享和对比驱动的注意力函数。
Kernel Partition
核分区的主要思想是通过利用同一个卷积层内的参数依赖性来减少核维度。具体而言, 对于一个普通的卷积层, 将静态卷积核
沿着空间和通道维度依次划分为
个不相交的部分
, 称为"核单元", 其具有相同的维度。为简洁起见, 在这里省略了定义核单元维度的过程。核分区可以被定义为:
在核分区之后, 将核单元
视为"局部核",并定义一个包含
个核单元
的"仓库",其中
的维度与
相同。然后,每个核单元
都可以视为仓库
的一个线性混合:
其中,
是由注意力模块
生成的依赖于输入的标量注意力。最后,普通卷积层中的静态卷积核
被其对应的
个线性混合所取代。
由于核分区的存在, 核单元
的维度可以远小于静态卷积核
的维度。例如, 当
时, 核单元
中的卷积参数数量仅为静态卷积核
的
。在预定的卷积参数预算
下, 相比于现有的将线性混合定义为
(例如
)的"整体核"的动态卷积方法, 这使得仓库很容易设置更大的
值(例如
)。
Warehouse Construction-with-Sharing
仓库的构建与共享的主要思想是通过简单地利用相邻卷积层之间的参数依赖关系, 进一步改进基于仓库的线性混合学习公式,图 2 展示了核分区和仓库构建与共享的过程。具体而言, 对于 ConvNet 的同阶段的
个卷积层, 通过使用相同的核单元维度来构建一个共享仓库
进行核分区。这不仅允许共享仓库具有较大的
值(例如
),与层特定的仓库(例如
)相比,还可以提高表示能力。由于 ConvNet 的模块化设计机制(即可通过简单的值设定来控制阶段整体维度的缩放), 可以简单地为所有同阶段的
个静态卷积核使用公共的维度除数(类似公约数的概念),作为统一的核单元维度来进行核分区。从而自然地确定了同阶段每个卷积层的核单元数量
, 以及在给定期望的卷积参数预算
时共享仓库的
。
-
Convolutional Parameter Budget
对于普通的动态卷积, 相对于正常卷积来说, 卷积参数预算
始终等于核数量。即
, 且
。当设置一个较大的
值, 例如
时, 现有的动态卷积方法得到的
,导致 ConvNet 主干模型大小增加约 188 倍。而对于 KerneWWarehouse,这些缺点得到了解决。设
为 ConvNet 同阶段的
个卷积层中核单元的总数(当
时,
。那么, 相对于正常卷积, KernelWarehouse 的卷积参数预算可以定义为
。在实现中, 使用相同的
值应用于 ConvNet 的所有卷积层, 这样 KerneLWareho use 可以通过改变
值来轻松调整 ConvNet 的模型大小。与正常卷积相比:(1)当
时,KernelWarehouse 倾向于减小模型大小;(2)当
时,KernelWarehouse 倾向于获得相似的模型大小;(3)当
时, KernelWarehouse 倾向于增加模型大小。
-
Parameter Efficiency and Representation Power
有趣的是, 通过简单地改变
(由核分区和仓库构建与共享控制), 可以得到适当且较大的
值, 以满足所需的参数预算
, 为 KerneLWarehouse 提供表示能力保证。由于这种灵活性, KerneLWarehouse 可以在不同的卷积参数预算下, 在参数效率和表示能力之间取得有利的权衡。
Contrasting-driven Attention Function
在上述的表述中, KernelWarehouse 的优化与现有的动态卷积方法在三个方面有所不同: (1)使用线性混合来表示密集的局部核单元,而不是整体的核(2)仓库中的核单元数量显著较大(
vs.
)(3)一个仓库不仅被共享用于表示 ConvNet 的特定卷积层的
个核单元, 还被共享用于表示其他
个相同阶段的卷积层的每个核单元。然而,对于具有这些优化特性的 KernelWarehouse, 论文发现常见的注意力函数失去了其效果。因此, 论文提出了对比驱动的注意力函数(CAF)来解决 KerneLWarehouse 的优化问题。对于静态核
的第
个核单元, 设
为由紧凑型 SE 注意力模块
的第二个全连接层生成的特征 logits, 则 CAF 定义为:
其中,
是一个从 1 线性减少到 0 的温度参数, 在训练初期阶段使用;
是一个二元值 ( 0 或 1 )用于初始化注意力;
是一个归一化函数。
CAF 依赖于两个巧妙的设计原则:(1)第一项确保在训练开始时, 共享仓库中的初始有效核单元
被均匀地分配到 ConvNet 的所有
个相同阶段的卷积层的不同线性混合中;(2)第二项使得注意力既可以是负值也可以是正值,不同于常见的注意力函数总是产生正的注意力。这鼓励优化过程学习在共享同一仓库的
个相同阶段卷积层上的所有线性混合中形成对比度和多样性的注意力分布(如图3所示), 从而保证提高模型性能。
在 CAF 初始化阶段,
个相同阶段卷积层中的
的设置应确保共享仓库能够:(1)在
时,对于每个线性混合至少分配一个指定的核单元
在
时,对于每个线性混合至多分配一个特定的核单元
。论文采用一个简单的策略, 在同阶段的
个卷积层的每组线性混合(
个权重)中分配共享仓库中的全部
个核单元之一,且不重复。当 $n
Visualization Examples of Attentions Initialization Strategy
使用
和
的注意力初始化策略来构建 KernelWarehouse 模型。在训练的早期阶段, 这个策略强制标量注意力是 one-hot 的形式,以建立核单元和线性混合之间的一对一关系。为了更好地理解这个策略, 分别提供了 KW (
)、KW (
)和 KW
的可视化示例。
-
Attentions Initialization for KW (
)
在图 4 中展示了 KernelWarehouse
的注意力初始化策略的可视化示例。在此示例中,一个仓库
被共享给 3 个相邻的卷积层,它们的核维度分别为
和
。这些核单元的维度都是
。请注意,核单元
实际上并不存在,它一直保持为一个零矩阵。它仅用于注意力归一化,而不用于汇总核单元。这个核单元主要用于当
时的注意力初始化,不计入核单元数量
。在训练的早期阶段,根据设定的
,明确强制每个线性混合与一个特定的核单元建立关系。如图4所示,将仓库中的
中的一个分配给每个 3 个卷积层中的 6 个线性混合,没有重复。因此,在训练过程的开始阶段,当温度
为 1 时,使用 KW(
)构建的 C onvNet 大致可以看作是一个标准卷积的 ConvNet 。
这里,论文将其与另一种替代方案进行了比较。在这种替代策略中,将所有
设为1,强制每个线性混合与所有核单元均等地建立关系。全连接策略展示了与不使用任何注意力初始化策略的KernelWarehouse相似的表现,而论文提出的策略在top-1增益方面优于它1.41%。
-
Attentions Initialization for KW (
)
对于
的 KerneLWarehouse, 采用与 KW
中使用的相同的注意力初始化策略。图
展示了 KW
的注意力初始化策略的可视化示例。为了建立一对一的关系,将
分配给
, 将
分配给
。当
时, 另一种合理的策略是将多个核单元分配给每个线性混合, 而且不重复分配, 如图 5b 所示。使用基于 KW (
) 的 ResNet18 主干网络来比较这两种策略。根据表 13 中的结果, 可以看到一对一策略表现更好。
-
Attentions Initialization for KW (
)
对于
的 KernelWarehouse,核单元的数量少于线性混合的数量,这意味着不能采用
中使用的相同策略。因此,只将仓库中的总共
个核单元分别分配给
个线性混合,而且不重复分配。将
分配给所有剩余的线性混合。图
展示了 KW
的可视化示例。当温度
为 1 时,使用 KW