CNN 中的注意力机制#
摘要#
还记得 实验设计 中的消融实验吗?我们发现不同通道和空间位置的特征重要性差异很大。但 CNN 有一个根本局限:它对所有输入特征一视同仁。
卷积核滑过图像时,无论当前区域是背景还是关键目标,都使用相同的权重计算。这就像阅读时每个字都用同样的精力,不分重点——显然效率低下。
本章要回答的核心问题是:如何让网络动态地知道"哪些特征更重要"?
卷积神经网络 中讨论的 归纳偏置(Inductive Bias) 告诉我们,好的架构设计能把先验知识内置到网络中。注意力机制正是这种思想的延续——通过增加"动态权重"组件,让网络学会关注重要特征、抑制无关特征。它不替换现有的卷积或池化,而是在它们之上叠加一层"可学习的放大镜"。
学习目标
完成本章后,你将能够:
理解为什么需要注意力:解释 CNN 平等对待所有特征的局限性
掌握通道注意力:理解 SE-Net 的 Squeeze-Excitation 机制及其实现
掌握空间注意力:理解空间注意力的作用"哪里重要"和实现方式
理解 CBAM:掌握通道与空间注意力的组合策略
学会选择:根据任务特点选择适合的注意力模块
本章概览#
章节 |
内容 |
与前面章节的联系 |
|---|---|---|
为什么 CNN 需要注意力? |
实验设计 的问题驱动 |
|
通道注意力(SE-Net) |
压缩→激励→缩放的直觉 |
|
空间注意力 |
关注"哪里重要" |
|
通道+空间注意力(CBAM) |
两种注意力的组合策略 |
|
选择与应用 |
不同注意力的适用场景和性能数据 |
|
实践指南 |
超参数调优、常见陷阱 |
学习路径#
本章是在 CNN 基础上的能力增强:
核心认知:注意力不是替代 CNN,而是让 CNN "学会看重点"的可学习组件。
本章定位#
前面章节我们学习了 CNN 的工作原理和各组件的贡献——卷积核提取特征、池化降维、激活函数引入非线性、批归一化加速训练。但所有这些组件都有一个共同点:它们对所有输入特征一视同仁。
注意力机制的解决方案:
通道注意力:让网络学会"哪些特征通道更重要"(SE-Net)
空间注意力:让网络学会"图像的哪些位置更重要"
组合注意力:同时关注"什么"和"哪里"(CBAM)
学习路径:理解局限 → 掌握机制 → 动手实现 → 学会选择
前置章节 |
本章应用 |
|---|---|
各组件贡献分析 → 注意力能进一步提升 |
|
卷积特征提取 → 通道/空间的重要性差异 |
|
nn.Module 实现注意力模块 |
前置要求#
学习本章前,请确保你已经掌握
本章假设你已掌握以下内容:
CNN 基础知识:卷积层、池化层、全连接层的作用(卷积神经网络)
CNN 各组件的贡献:通过消融研究理解每个组件的重要性(CNN 消融研究:理解卷积神经网络各组件的作用)
PyTorch 基础:能独立搭建和训练模型(神经网络模块:搭建计算图)
还没掌握?
建议先完成 CNN 消融研究:理解卷积神经网络各组件的作用 的学习,理解为什么不同特征的重要性会有差异。
目录#
贡献者与修订历史
查看详细修订记录
-
bba351e2026-04-29 - Heyan Zhu: docs: update chapter summaries and learning paths for consistency -
22312762026-04-28 - Heyan Zhu: feat(attention-mechanisms): restructure and enhance attention mechanisms documentation -
0c291d72025-12-10 - Heyan Zhu: docs: restructure course materials and add new content