标准的卷积层表现出一种奇特的“平等主义”。它堆叠了数十个——有时是数百个——特征检测器,然后对每一个都一视同仁。一个学会识别对角线边缘的通道,与一个检测蓝天像素的通道获得了同样的权重。在猫的照片中对毛发纹理产生响应的通道,与被背景噪声激活的通道一样,被同等权重地向前传播。这种一致性正是其弱点所在。并非每个通道对每张图像都同等重要,而深度网络在历史上一直缺乏表达这一点的机制。

由 Hu 及其同事提出的 Squeeze-and-Excitation 机制通过一个非常小的改进解决了这个问题。它在任何卷积块上附加一个可学习的门控机制,使网络能够动态地重新校准每个通道的贡献程度,并且这种校准针对每个输入都是全新的。其额外成本微乎其微——在 ResNet-50 上增加后参数量仅增加约 2.5%——但其带来的表征能力提升非常显著,以至于 SE 模块帮助赢得了 ILSVRC 2017 冠军,并被广泛应用于 MobileNetV3 和 EfficientNet 等生产级架构中。

这个想法非常简单,可以分为三个阶段从零开始构建。

Squeeze:为网络提供广角镜头

卷积在设计上是局部的。一个 3×3 的卷积核在图像上滑动,只能看到其紧邻的邻域。虽然堆叠足够的层数可以扩大感受野,但没有任何单一操作能通过一眼观察到整个特征图。这意味着一个通道可能在狗或汽车的整个空间范围内被强烈激活,但下一层永远不会收到一个明确的总结,告诉它“这个检测器在到处都触发了”。

Squeeze 步骤通过全局平均池化(global average pooling)弥补了这一差距。对于每个通道,H×W 空间网格中的每个值都被平均为一个单一的数值。如果你有 512 个通道,你现在就拥有 512 个标量。每个标量都编码了该通道所学习检测到的任何内容的全局存在感——无论是轮毂、一条草带,还是皮肤色块。它是对整个场景的通道级总结。

这一点至关重要,因为上下文会改变含义。一个水平线检测器在某张图像中可能很有用,因为它识别出了地平线;但在另一张图像中却毫无用处,因为它捕捉到的是森林树冠中的噪声。如果没有空间聚合,网络就缺乏一个清晰的信号来做出这种区分。

Excite:迫使协作的瓶颈结构

一旦 Squeeze 步骤生成了全局通道描述符向量,Excite 步骤就会学习如何处理这些向量。这是一个微小的两层 MLP。它接收该向量,将其压缩到一个瓶颈(bottleneck)中,然后将其重新扩展回原始的通道维度。

典型的实现使用 16 的缩减比例(reduction ratio)。如果输入有 512 个通道,第一个线性层将 512 个标量投影到 32 个,中间夹着一个 ReLU,然后第二个层将 32 个映射回 512 个。这种压缩是有意为之的。它起到了漏斗的作用:网络不能简单地原封不动地传递原始值,它必须学习一种压缩的、共享的表示,来描述通道之间是如何相互关联的。瓶颈结构迫使通道间的依赖关系显现出来。例如,模型可能会学习到,当“树皮纹理”通道很强时,应该同时强调“树干轮廓”通道,而应该抑制“水面反射”通道。

这里的最终激活函数至关重要,也是直觉容易出错的地方。许多人会本能地选择 softmax,因为直觉上认为注意力应该是一个概率分布。但 softmax 会迫使所有通道相互竞争,直到它们的权重之和为 1。如果一个通道的权重上升,其他通道必须下降。这对于这项任务来说是完全错误的。一张日落的照片可能需要橙色光晕通道和云朵纹理通道同时以全强度运行。门控应该像独立的调光开关,而不是一个零和博弈的预算。

Sigmoid 解决了这个问题。它将每个标量压缩到零到一之间的值,但每个通道都可以独立移动。模型可以调高任何子集的权重,让其他通道保持中性,并抑制其余通道,而无需进行人为的竞争。

Scale:应用门控并继续

最后一步几乎平淡无奇,而这正是其优雅之处。每个原始特征图都与其对应的 sigmoid 激活门控值相乘。如果门控值接近 1,则该通道原封不动地通过;如果门控值接近 0,则整个特征图会被静音,趋于静默。结果被输入到网络的下一层。

由于这只是在空间图上进行纯粹的乘法运算,因此在推理时增加的计算开销极小。繁重的工作已由全局池化和两个小型投影完成,与周围的 3×3 卷积相比,这些开销几乎可以忽略不计。

为什么这种设计能够经久不衰

除了简洁的数学逻辑外,Squeeze-and-Excitation 之所以能经受住时间的考验,是因为它尊重工程约束。

参数成本低。 在 ResNet-50 中添加 SE 模块仅增加约 2.5% 的参数。MLP 层很小,不会使模型臃肿。在精度提升往往依赖于模型规模翻倍的时代,SE 提供了一份难得的“免费午餐”。

模块化。 SE 不是一种需要你重新设计流水线的新型骨干架构。它是一个即插即用的模块。你可以在 ResNet、DenseNet 或自定义堆栈的任何卷积块之后插入它,而无需重写周围的逻辑。这种灵活性使其能够迅速被采用,最初是在研究领域,随后是在移动端优化网络中。

输入自适应行为。 与训练期间学习并冻结的静态通道权重不同,SE 门控是在每次前向传播时实时计算的。如果给网络输入一片平坦、毫无特征的天空,相关的通道就会保持低调;如果展示一个包含行人、标志和车辆的繁忙街道场景,门控就会重新校准,以增强对该特定图像重要的检测器。同一个网络可以根据不同的场景调整自身的敏感度。

从竞赛冠军到日常部署

SE 模块曾在 ILSVRC 2017 中夺得冠军,但其真正的价值验证是在后来实现的。它们被整合进 MobileNetV3,帮助轻量级模型在不消耗过多移动端电池的情况下,实现超越其量级的性能。它们也出现在 EfficientNet 的复合缩放方案中,证明了通道注意力机制并非重量级服务器的奢侈品,而是高效设计的实用工具。

如果你想看看这实际需要多少代码,在线演示将该模块逐行进行了拆解:

如果你想加入社区一起构建:https://t.me/GyaanSetuAi

核心启示

更优秀的视觉模型并不总是需要更深的堆栈或更宽的滤波器。有时,它们只需要片刻时间来询问哪些通道对眼前的图像真正重要。Squeeze-and-Excitation 仅通过一个池化平均值、一个压缩的 MLP 和一个 sigmoid 门控,就给了它们这个机会。其结果是,网络不再以相同的音量大声喊出每一个特征,而是学会了在场景需要时,精准地对每个通道进行低语、强调或静音。