池化与特征图
池化用局部窗口的最大值或均值替代该窗口。步幅大于一时,它降低空间分辨率并保留通道分离,减少存储值,也丢失位置细节。响应跨过窗口边界后,输出仍可能改变。
最大值告诉你区域里最强响应是多少,单凭结果不能还原它在窗口内的位置。需要精确坐标时,应保留原特征图。本例把 72 个值变成 18 个,并展示一像素移动如何在结果中不可区分。
特征图、通道与聚合
一张特征图记录一个滤波器在各位置的响应。两个滤波器即使结果相似,也属于独立通道。这里通道代表滤波器,不是预测类别,也不一定是 RGB 分量。
输入为 8×8 图,只有零基坐标 (3,2) 的像素为 8。两个固定 3×3 核测相反的水平亮度差:
右减左 左减右
0 0 0 0 0 0
−1 0 1 1 0 −1
0 0 0 0 0 0
不填充、不翻转核,滑动计算后做 ReLU,得到两张 6×6 图。通道 0 在 (2,0) 为 8,通道 1 在 (2,2) 为 8,其余全零。它们来自实际计算的手选滤波器,不是虚构的分类激活。
池化在每个通道内进行。k×k 最大池化取最大值;平均池化把包括零在内的 k² 项相加除以 k²。例如 [[8,0],[0,0]] 的最大值是 8,均值是 2。前者强调峰值,后者表示区域平均;二者都不知道响应是有用特征还是噪声。
步幅决定窗口起点的距离。这里窗口和步幅都是 2,互不重叠;6×6×2 → 3×3×2(高×宽×通道),从 72 个值减到 18,通道数不变。
逐步演示
默认最大池化、2×2 窗口、步幅 2、无填充。
- 计算一个窗口:选通道 0 的行 2–3、列 0–1,值为
[[8,0],[0,0]],最大值 8 写到输出(1,0)。原特征图不变,生成新图。 - 分别完成通道:通道 0 其余八窗均为零;通道 1 的
(2,2)属于从(2,2)开始的窗口,写 8 到(1,1)。
通道 0 通道 1
0 0 0 0 0 0
8 0 0 0 8 0
0 0 0 0 0 0
回到同一窗口比较聚合规则,最大值为 8,均值 (8+0+0+0)/4 = 2。对照节拍不改变当前选中的最大池化输出;手动选平均后,两处非零值才变 2,窗口、位置、通道数不变。
- 输入右移一像素:亮点从
(3,2)到(3,3),重新过滤。通道 0 响应(2,0) → (2,1),通道 1(2,2) → (2,3)。都没离开原池化窗口,结果与上图完全相同。这证明只给池化张量无法区分两张不同的特征图,窗口内位置已经丢失。 - 跨窗口:从原位置右移两像素,到
(3,4)。两通道响应分别到(2,2)和(2,4),进入下一窗:
通道 0 通道 1
0 0 0 0 0 0
0 8 0 0 0 8
0 0 0 0 0 0
每个通道旧位置 8 → 0,新位置 0 → 8,改变两个存储值,合计 4 个。一次移动不等于只改一个格。三个源位置均在 valid 支持内,变化不是图像边缘裁剪造成的。
大小、细节与成本
无填充、无膨胀,输入 H×W、窗口 k、步幅 s 时:
H_out = floor((H − k) / s) + 1
W_out = floor((W − k) / s) + 1
C_out = C_in
本课可选 k = s = 1、2、3,都整除 6。任意大小可能留下最后一个 valid 窗口未覆盖的边缘。公式见 PyTorch 最大池化定义与平均池化定义。
| 窗口与步幅 | 输出高×宽×通道 | 存储值 | 孤立峰值:最大/平均 | 右移 +1/+2 后变化值数 |
|---|---|---|---|---|
| 1 | 6×6×2 | 72 | 8/8 | 4/4 |
| 2 | 3×3×2 | 18 | 8/2 | 0/4 |
| 3 | 2×2×2 | 8 | 8/(8/9 ≈ 0.889) | 2/2 |
大窗口不保证小移动无影响。大小为 3 时,通道 1 从列 2 到列 3 就跨界,旧、新输出各变一格,必须同时考虑窗口对齐。
直接计算时间为 O(C × H_out × W_out × k²),输出空间为 O(C × H_out × W_out)。本课不重叠且铺满,每个输入只参与一次归约,时间简化为 O(CHW)。后层可能因值变少而省计算,但元素数减少 75% 不等于信息量减少 75%,也不保证运行时间减少 75%。
边界情况
- 1×1、步幅 1:最大与平均都返回原值,无下采样和位置损失。
- 全零或并列最大:最大值有定义,但不能指出唯一坐标;讲解会描边所有并列项。
- 平均下的孤峰:窗口扩大使值
8 → 2 → 8/9。固定0–8色标展示衰减,不按各图最大值重缩放。 - 填充或重叠:本例不包含,其边界和计数规则需另行明确,不能套用“不重叠、无填充”的简化结论。
常见错误
- 认为池化可逆。默认设置下,原图与右移一像素的特征图产生相同输出,单凭输出无法恢复来源。
- 跨通道池化。空间池化保留滤波器身份,合并通道是另一种操作。
- 把结果当类别概率。这里是局部响应摘要,没有预测标签。
- 认为最大池化会去噪。强噪声也可能成为最大值,操作不识别原因。
- 声称完全平移不变。变化与窗口归属有关,跨界对照就是机制的一部分。
模型范围
合成灰度图、两个固定对比核、ReLU、不重叠池化,没有训练、学习滤波器组、归一化、填充变体、梯度或后续分类。池化只是下采样方法之一,CNN 不一定包含它。可在 CNN中修改滤波器,在图像分类中观察真实模型如何依赖输入裁剪。