CNN 为什么具有平移等变性?
简化版
理想卷积满足平移等变:输入平移多少,输出特征也相应平移,而不是保持不变。权值共享是根源;stride、边界 padding、池化和离散采样会破坏严格等变,分类中的近似平移不变通常由空间聚合获得。
详细版
-
等变表示
f(Tx)=T f(x),不变表示f(Tx)=f(x),两者不能混用。 -
步幅为 1、无限或周期边界下,离散卷积与整数像素平移严格交换。
-
零填充引入特殊边界,物体移到边缘时上下文改变,严格等变失效。
-
stride>1 的下采样只对步幅整数倍平移较稳定,一像素位移可能改变采样相位。
-
GAP 等聚合把随位置移动的响应汇总,才形成分类所需的近似不变性。
完整版教学
一、共享卷积核让检测器随目标移动
同一个卷积核在每个位置执行相同运算,因此边缘从左移到右时,边缘响应也会跟着移动。
网络不必为每个坐标分别学习一个检测器,这是卷积的数据效率来源。
但数字图像有边界和采样网格,实际 CNN 还包含步幅与池化,所以工程模型只有近似等变。
回答“CNN 天然平移不变”会混淆特征提取与最终分类。
二、底层机制与关键公式
令平移算子 T_delta x[u]=x[u-delta]。
对 stride=1 卷积,把变量索引平移后可得到 Conv(Tx)=T Conv(x);关键是卷积核不依赖绝对位置。
若 stride=2,只保留偶数网格。
输入移动 1 像素会把采样点从偶相位切到奇相位,输出不再只是平移;抗混叠滤波能减轻但不能无条件恢复严格性质。
equivariance: f(T_delta x) = T_delta f(x)
invariance: f(T_delta x) = f(x)
stride=1 convolution: K * (T_delta x) = T_delta (K * x)
三、带数字的推演
长度 6 的信号经过 stride=2 采样,原来取索引 [0,2,4];右移 1 后同一采样器取到原信号的 [-1,1,3]。
它并非把原输出简单右移一格,这就是采样相位导致的破坏。
四、方案对比与选择
| 方案/场景 | 机制或优势 | 主要代价 |
|---|---|---|
| stride=1 卷积 | 整数平移近似等变 | 边界仍会破坏 |
| stride/pooling | 降低分辨率 | 对小位移敏感 |
| GAP | 空间响应求平均 | 获得近似不变但丢位置 |
五、实际执行流程
目标平移 -> 卷积特征峰值随之平移(等变)
-> 下采样可能改变相位 -> 深层响应近似移动
-> GAP/池化汇总位置 -> 分类分数近似不变
六、边界条件与工程代价
padding 类型会改变边缘行为:zero、reflect、circular 对边界外内容的假设不同。
只有周期边界等特定条件能给出整幅有限图像上的严格证明。
数据增强仍有价值,因为真实网络的下采样、裁剪和边界破坏了理想性质;同时增强还能覆盖尺度、光照等卷积本身不提供的变化。
记忆钩子:牢记“卷积响应跟着走”是等变,“分类结果不变”才是不变。
七、常见误区与追问
-
误区:CNN 天生平移不变。 卷积层首先是平移等变,聚合后才可能近似不变。
-
追问:权值共享为何产生等变? 同一局部模式无论位于哪里都经过相同核处理。
-
误区:任何 padding 都保持严格等变。 有限边界引入位置相关上下文,尤其是零填充。
-
追问:stride 为什么破坏一像素等变? 下采样固定采样相位,小位移会换一组采样点。
-
追问:如何改善 shift consistency? 可用抗混叠下采样、更多平移增强或避免过早大步幅。
八、加强记忆
牢记“卷积响应跟着走”是等变,“分类结果不变”才是不变。
证明靠权值共享,破坏点看边界和采样,最终不变性来自池化或 GAP,而不是卷积本身。