(cnn-ablation-intro)=
# 引言：消融研究的科学方法论

在 {doc}`../neural-network-basics/cnn-basics` 中，我们学习了 CNN 的各个组件——卷积层、池化层、激活函数、批归一化、Dropout。我们知道每个组件"是什么"和"为什么用"，但还有一个关键问题没回答：**每个组件的贡献有多大？**

要回答这个问题，需要一套系统的方法——这就是消融研究要做的事。

## 消融研究的核心思想

消融研究起源于神经科学：通过移除大脑的某个区域，观察行为变化，推断该区域的功能。深度学习借用了这个思路——**移除模型的某个组件，观察性能变化，推断该组件的重要性**。

```{note}
**消融研究的逻辑链条**：

基线模型（含所有组件）→ 移除组件X → 性能下降量 = 组件X的贡献
```

但这个逻辑有一个关键前提：**每次只改一个变量**。如果你同时改了卷积核大小和是否使用批归一化，性能变化就不知道归因于谁。

## 消融研究在深度学习中的应用

消融研究是深度学习论文的**标准工具**，几乎所有重要的工作都包含消融实验：

```{list-table} 经典论文中的消融研究案例
:header-rows: 1
:widths: 25 40 35

* - **论文**
  - **消融了什么**
  - **发现了什么**
* - AlexNet {cite}`krizhevsky2012imagenet`
  - 激活函数（ReLU vs tanh）
  - ReLU 加速训练，准确率更高
* - ResNet {cite}`he2016deep`
  - 残差连接（有 vs 无）
  - 残差连接是训练152层网络的关键
* - Yosinski et al. {cite}`yosinski2014transferable`
  - 逐层特征可迁移性
  - 浅层特征通用，深层特征任务特定
* - Dropout {cite}`srivastava2014dropout`
  - Dropout 比例（0.5 vs 其他）
  - p=0.5 在大多数任务上最优
```

这些消融实验的共同特点是：**控制变量，量化贡献**。正是通过系统消融，我们才理解了为什么残差连接如此重要，为什么 ReLU 如此有效。

## 如何进行消融研究？

一个完整的消融研究包含四个步骤：

### 第一步：确定基线

建立一个包含了所有组件的完整模型，作为对比基准。这个模型应该在任务上表现合理——如果基线本身就不好，消融没有意义。

### 第二步：设计消融方案

决定要消融哪些组件、如何消融：

| 消融方式 | 含义 | 示例 |
|---------|------|------|
| **完全移除** | 去掉整个组件 | 删除 Dropout 层 |
| **替换** | 用更简单版本替代 | ReLU → 线性激活 |
| **修改参数** | 改变组件的关键参数 | 卷积核 3×3 → 1×1 |
| **改变位置** | 移动组件的位置 | BatchNorm 放在激活前 vs 后 |

### 第三步：控制变量执行实验

关键规则：
1. **每次只改一个组件**——否则结果无法归因
2. **保持其他条件不变**——同样的数据划分、学习率、训练轮数
3. **多次重复**——同配置跑 3-5 次取平均，排除随机性

### 第四步：分析结果

将实验结果整理成表格，比较各组件对性能的影响：

| 变体 | 准确率 | 相对基线变化 | 结论 |
|------|--------|-------------|------|
| 基线（完整模型） | 92.3% | — | 参考标准 |
| 移除 Dropout | 91.8% | -0.5% | 影响不大 |
| 移除 BatchNorm | 87.1% | -5.2% | 非常重要 |
| ReLU → Sigmoid | 84.6% | -7.7% | 影响显著 |

## 认知陷阱：为什么"直觉"常常出错？

消融研究之所以必要，是因为很多关于"哪个组件更重要"的直觉是错的：

```{admonition} 常见错误直觉
:class: caution

**错误直觉1**："参数越多的层越重要"
- 全连接层参数量最大，但换成全局平均池化后性能反而提升 {cite}`lin2014network`

**错误直觉2**："新提出的组件一定有用"
- 很多论文提出的新架构，消融后才发现提升来自更优的超参数而非新组件

**错误直觉3**："所有组件同等重要"
- 实际消融实验往往发现：20% 的组件贡献了 80% 的性能——其他可能是冗余的
```

这就是为什么**不能靠猜**，必须靠实验。

## 本章剩余内容

- {doc}`experiment-design`：设计具体的消融实验方案，包括基线 CNN 模型、实验参数、评估指标
- {doc}`implementation`：完整的 PyTorch 代码实现，可以直接运行和修改

---

## 参考文献

```{bibliography}
:filter: docname in docnames
```
