惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Hugging Face - Blog
Hugging Face - Blog
量子位
H
Help Net Security
Microsoft Azure Blog
Microsoft Azure Blog
MongoDB | Blog
MongoDB | Blog
小众软件
小众软件
爱范儿
爱范儿
博客园 - 【当耐特】
Vercel News
Vercel News
S
SegmentFault 最新的问题
M
MIT News - Artificial intelligence
F
Fortinet All Blogs
Apple Machine Learning Research
Apple Machine Learning Research
GbyAI
GbyAI
博客园 - 叶小钗
博客园_首页
V
Visual Studio Blog
宝玉的分享
宝玉的分享
B
Blog
MyScale Blog
MyScale Blog
C
Check Point Blog
博客园 - 三生石上(FineUI控件)
L
LangChain Blog
V
V2EX

博客园_首页

Plist 二进制格式 Milvus 和 PGVector,哪个更好? OpenClaw 已过时?在 VS Code 中运行 Hermes Agent! 第30篇文章:一个大三计科生的自白 Manim如何在数学公式中完美显示中文? Docker 部署 RocketMQ 5 并发编程核心概念辨析 C#事务处理最佳实践:别再让“主表存了、明细丢了”的破事发生 CLI 是什么?为什么大厂突然集体卷命令行? 【从0到1构建一个ClaudeAgent】协作-自主Agent UIImageView 设置图片不生效的原因排查 最小二乘问题详解20:无先验约束下的增量式SFM自由网平差 痞子衡嵌入式:大话双核i.MXRT1180之XIP应用里借助MU实现可靠Flash IAP的方法 AI Chat 封装, SemanticKerne.AiProvider.Unified 已发布 Windows下右键编辑js文件无法打开记事本——在注册表中使用环境变量 在后台服务中使用 Scoped 服务,为什么总是报错? H200 安装驱动并使用sglang启动模型 wireshark 抓包Trap上报告警内容 我用 AI 辅助开发了一系列小工具(2):图片压缩工具 [A Primer On MC and CC] 2.1 Memory Consistency 1 - 指令重排序和 SC 模型 Oracle数据库SCN推进技术详解与实践指南 玩转控件:封装个带图片的Label控件 Claude Code 4.7 真正该升级的不是模型,而是你的工作流 前端小白一句话,AI 帮我做了个颜值拉满的桌面媒体播放器。当代码不再是门槛,一句话编程就是现实。 5. WorkBuddy: 小龙虾的灵魂三件套,让你的小龙虾不只是工具 SQLite 分片方案实战:三种分片策略的深度对比 告别简陋 UI!一款基于 Fluent Design 和基于 WinUI 的开源免费、现代化的 Avalonia UI 控件库 关于二进制排列组合枚举的总结 AI开发-python-LangGraph框架(3-27-LangGraph从零实现大模型智能决策工作流) ElasticSearch主分片和副本分片概念详解
深度学习进阶(十七)高效通道注意力 ECA
哥布林学者 · 2026-05-05 · via 博客园_首页

上一篇我们介绍了 CBAM,它在 SE 的基础上加入了空间注意力,形成了"通道 + 空间"的混合注意力机制。
我们发现,无论是 SE 还是 CBAM,它们的通道注意力子模块都采用了一个 bottleneck 结构的 MLP,即先将通道维度从 \(C\) 压缩到 \(C/r\),再升维回 \(C\)
这种设计合理且常见:降维可以控制参数量,同时低维空间迫使网络保留最重要的信息。

但 20 年的论文 ECA-Net: Efficient Channel Attention for Deep Convolutional Neural Networks 却打破常规,对此提出了质疑:

降维操作虽然减少了参数量,但也破坏了通道与其权重之间的直接对应关系,造成了不必要的信息损失。通道注意力完全可以通过一种更简单、更高效的方式来实现。

由此,论文提出了 ECA 模块,其设计在更加轻量化的同时,在 ImageNet 分类和 COCO 目标检测任务上均优于 SE 和 CBAM 。

1. ECA 的提出动机

这部分我们先回到 SE 的 Excitation 步骤,重新审视这里的 bottleneck 结构:

\[\mathbf{s} = \sigma\left( \mathbf{W}_2 \cdot \delta(\mathbf{W}_1 \mathbf{z}) \right) \]

其中 \(\mathbf{W}_1 \in \mathbb{R}^{\frac{C}{r} \times C}\)\(\mathbf{W}_2 \in \mathbb{R}^{C \times \frac{C}{r}}\)

这里我们展开一下变换逻辑:\(\mathbf{W}_1\)\(\mathbf{W}_2\) 是两个全连接矩阵,这意味着降维后的低维空间中,每个元素都是所有 \(C\) 个通道的线性组合。随后升维时,每个通道的权重又是所有低维元素的线性组合。
换句话说,这是一种全通道混合建模

按常理来说,在减少参数的同时仍然实现了全通道建模,这应该是一种优秀的设计。
但 ECA 的作者提出了一个不同的观点:

通道注意力不需要全局的通道交互。每个通道只需要与它的"邻居通道"进行局部交互就足够了。

而这种想法也有其合理之处:

因为图像数据的局部性和梯度传播的逻辑,在卷积网络中,相邻的通道往往编码了相关的特征模式(例如同一层中不同方向的边缘检测器),而相距较远的通道之间的直接关联性则弱得多。

为了验证这个想法,作者做了一个简单的对照实验:去掉 bottleneck 中的降维,直接用一层全连接矩阵 \(\mathbf{W} \in \mathbb{R}^{C \times C}\) 来生成通道权重。结果发现,没有降维的版本反而效果更差

这似乎矛盾了,如果降维有害,为什么去掉它效果反而不好?

作者的答案是:

\(\mathbf{W}\) 是一个稠密全连接矩阵时,每个通道试图同时和所有通道交互,这导致严重的过拟合,尤其在 \(C\) 较大时。

也就是说,问题不在于"不需要降维",而在于"全连接本身用力过猛了"。真正需要的是一种轻量级的局部通道交互机制

这便是 ECA 的提出动机,下面就来展开其具体改进。

2. ECA 的具体改进

继续上节分析,ECA 提出了一个极其简洁的改进方案:

在 GAP 之后,直接用一个一维卷积来捕获局部通道交互,取代 MLP bottleneck。

具体来说,ECA 的结构如下:

  1. GAP:与 SE 完全相同,将 \(H \times W \times C\) 的特征图压缩为 \(1 \times 1 \times C\) 的通道描述向量。
  2. 1D 卷积:在通道维度上施加一个 kernel size 为 \(k\) 的一维卷积,每个通道只与它相邻的 \(k\) 个通道交互。
  3. Sigmoid + Scale:与 SE 相同,将卷积输出通过 Sigmoid 得到权重,再逐通道乘回原始特征图。

image.png

用公式表达,ECA 的通道权重 \(\mathbf{s}\) 计算过程为:

\[\mathbf{s} = \sigma\big( \text{Conv1D}_k(\mathbf{z}) \big) \]

其中 \(\mathbf{z} \in \mathbb{R}^{C}\) 是 GAP 后的通道描述向量,\(\text{Conv1D}_k\) 表示 kernel size 为 \(k\) 的一维卷积。

对比 SE 的参数量 \(2C^2 / r\),ECA 的参数量仅常数级的 \(k\),当 \(C\) 较大时,ECA 的轻量优势极为明显。

但这又引出了一个新的问题:\(k\) 取多少?

3. 自适应核函数

继续刚刚问题:\(k\) 决定了局部跨通道交互的范围:太小会让感受野局限,无法捕获足够的通道间信息;太大又会退化为近似全连接,失去局部性的优势。
直觉上,通道数越多,需要的交互范围也应该越大。因为更大的 \(C\) 意味着更多的特征模式,通道间的潜在依赖关系也更多,需要更大的 \(k\) 来覆盖。

因此,论文同时提出了一种自适应确定 \(k\) 的方法:

\(k\) 设计为通道数 \(C\) 的函数

具体形式如下:

\[k = \psi(C) = \left| \frac{\log_2(C)}{\gamma} + \frac{b}{\gamma} \right|_{\text{odd}} \]

其中 \(|\cdot|_{\text{odd}}\) 表示取最近的奇数\(\gamma\)\(b\) 是超参数,论文中设定 \(\gamma = 2\)\(b = 1\)
代入后得到实际使用的公式:

\[k = \psi(C) = \left| \frac{\log_2(C)}{2} + \frac{1}{2} \right|_{\text{odd}} \]

例如,当 \(C = 256\) 时:

\[k = \left| \frac{8}{2} + 0.5 \right|_{\text{odd}} = |4.5|_{\text{odd}} = 5 \]

而且,当 \(C = 1024\) 时:

\[k = \left| \frac{10}{2} + 0.5 \right|_{\text{odd}} = |5.5|_{\text{odd}} = 5 \]

你会发现,\(k\)\(C\) 的增长是非常缓慢的,这种刻意设计是因为通道间的有效交互并不需要很大的感受野。

由此,我们就完成 ECA 的完整逻辑,它去掉了 SE 中的全连接层和降维操作,用局部一维卷积直接建模通道间的依赖关系,用更少的参数实现了更好的性能。

这一发现不仅简化了模型设计,也对后续注意力机制的研究方向产生了重要影响,它证明了好效果不一定需要复杂的设计,有时简单到极致的方案反而更优。