← 返回笔记列表
深度学习 第 33 / 49 篇

深度学习:1×1 卷积与全局平均池化 — 干掉全连接层的两个利器

查看“深度学习”专题目录(33/49)
本文目录 16 个小节

1. 动机:全连接层是参数大户

1023.png

上一节的 CNN 里,全连接层占了 88% 的参数。

以卷积最后输出 5×5×32 为例,Flatten 后是 800 维,接 64 维全连接层:

参数量=800×64+64=51,264\text{参数量} = 800 \times 64 + 64 = 51{,}264

这个 800(= 25×32)是被 Flatten 硬撑大的。今天的两个方法就是为了降低这个被撑大的维度。


2. 1×1 卷积

2.1 单通道上”没用”,多通道上”大有用处”

1024.png

对单通道图,1×1 卷积可做逐像素仿射变换,配合激活、扩展通道或步长仍有用途;它本身不会混合相邻位置。

但 1×1 卷积真正的作用是在多通道上——跨通道融合。

2.2 本质:一个”跨通道的全连接神经元”

1025.png

对一个 2×2×4 的输入,1×1 卷积核对某位置(如左上角)的计算:

把 4 个通道在该位置的值,加权求和 → 一个全连接操作

1026.png

所以 1×1 卷积 = 一个共享参数的全连接神经元,专门融合同一位置上的多个通道特征,生成新特征。

2.3 最重要的作用:改变通道数

输入:W × H × C1
定义 C2 个 1×1 卷积 Filter
输出:W × H × C2   ← 尺寸不变,通道数从 C1 变 C2
特点值
Padding0
步长1
尺寸变化不变
通道变化C1 → C2

2.4 降维示例

上一节卷积输出 5×5×32,用 4 个 1×1 卷积:

5×5×32 → (4 个 1×1 卷积) → 5×5×4
Flatten 后 = 25×4 = 100 维
全连接层参数 = 100×64 = 6400  ← 原来的 1/8

2.5 使用位置

1×1 卷积一般用在网络深层,对已经提取好的特征做融合,也可直接作用于原始输入,位置取决于网络设计。


3. 全局平均池化(GAP)

3.1 操作

对每个通道的整个空间维度取平均:

输入:W × H × C
GAP:每个通道求平均
输出:1 × 1 × C

例:5×5×32 → GAP → 1×1×32(每个通道的 25 个值求平均成一个值)。

3.2 特点

  • 不引入任何参数
  • 直接压缩掉空间维度

3.3 降维效果

上例 5×5×32 → GAP → 1×1×32,再接 64 维全连接:

参数=32×64+64=2,112(仅权重部分缩小为原来的 1/25)\text{参数} = 32 \times 64 + 64 = 2{,}112 \quad (\text{仅权重部分缩小为原来的 } 1/25)

4. 两者配合:彻底去掉全连接层

手写数字分类(10 类)的高级用法:

卷积最后输出:5×5×32
    ↓ 10 个 1×1 卷积(通道数 = 类别数)
5×5×10
    ↓ GAP
1×1×10
    ↓ Flatten + Softmax
分类结果

1027.png

  • 1×1 卷积把通道数调整为类别数(10)
  • GAP 把每个通道压缩成一个值 → 恰好是每类的”得分”
  • 直接 Softmax,完全省去全连接层

5. 去掉全连接层的好处

5.1 减少参数

全连接层是参数大头,去掉后模型显著变小。

5.2 支持任意尺寸输入

这是更重要的好处。

全连接层:参数在定义网络时就固定(如 36×8)
         → 反向锁死了输入尺寸必须 6×6

卷积 / 1×1 / GAP:对输入尺寸没有要求
         → 7×7、8×8、任意尺寸都能处理

因为卷积核只工作在小窗口上,图片大就多算几次;GAP 也是取平均,不依赖具体尺寸。所以这类 CNN 的分类头可适应多种空间尺寸;输入仍须满足前面卷积和池化的最小尺寸、下采样及批处理约束,不能按字面理解为任意大小。


6. 总结

问题:全连接层参数爆炸(占 88%)

方案一:1×1 卷积
  ├── 跨通道融合(= 共享参数的全连接神经元)
  ├── 改变通道数:W×H×C1 → W×H×C2
  └── 用于深层降维,如 32 → 4,参数减到 1/8

方案二:全局平均池化 GAP
  ├── 每个通道整体取平均
  ├── W×H×C → 1×1×C
  └── 无参数,如 5×5×32 → 32 维,参数减到 1/25

最强组合:1×1 + GAP + Softmax
  → 彻底移除全连接层
  → 参数大减 + 支持任意尺寸输入
继续学习本专题