在大屏或电脑上体验更佳——动画和操作区域更宽敞。
输入

池化与特征图

池化用局部窗口的最大值或均值替代该窗口。步幅大于一时,它降低空间分辨率并保留通道分离,减少存储值,也丢失位置细节。响应跨过窗口边界后,输出仍可能改变。

最大值告诉你区域里最强响应是多少,单凭结果不能还原它在窗口内的位置。需要精确坐标时,应保留原特征图。本例把 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、无填充。

  1. 计算一个窗口:选通道 0 的行 2–3、列 0–1,值为 [[8,0],[0,0]],最大值 8 写到输出 (1,0)。原特征图不变,生成新图。
  2. 分别完成通道:通道 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,窗口、位置、通道数不变。

  1. 输入右移一像素:亮点从 (3,2) 到 (3,3),重新过滤。通道 0 响应 (2,0) → (2,1),通道 1 (2,2) → (2,3)。都没离开原池化窗口,结果与上图完全相同。这证明只给池化张量无法区分两张不同的特征图,窗口内位置已经丢失。
  2. 跨窗口:从原位置右移两像素,到 (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 后变化值数
16×6×2728/84/4
23×3×2188/20/4
32×2×288/(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中修改滤波器,在图像分类中观察真实模型如何依赖输入裁剪。