一句话定义:感受野(Receptive Field)指的是神经网络中某个神经元(更准确地说,某一层某个位置的输出)在原始输入上所能「看到」的那块区域的大小。
打个比方:层层汇报
把它想成一家公司的汇报链条。最底层员工各自盯着一小块业务,组长综合几个员工的信息,经理再综合几个组长……越往上,领导掌握的情况覆盖的原始业务范围越大。感受野就是这个「往上追溯,最终覆盖了多大范围」。
具体到卷积网络:一个 3×3 卷积核的神经元,只看输入的 3×3 区域。下一层再取 3×3 个上一层神经元,追溯回输入就是 5×5。规则很简单——连续堆叠 stride=1 的 k×k 卷积,每加一层,感受野增加 k−1。池化(pooling)和步长(stride)会让感受野涨得更快,因为它们跳过了一些位置;空洞卷积(dilated convolution)则是在不增加参数量的前提下把感受野撑大,常用于语义分割。
容易混的几个词
| 概念 | 含义 | 一句话区分 |
|---|---|---|
| 卷积核大小 | 单层一次运算覆盖的窗口 | 只管一层 |
| 感受野 | 追溯回原始输入覆盖的范围 | 多层累加的总账 |
| 有效感受野 | 实际对输出影响显著的那部分 | 名义上很大,权重其实集中在中心 |
| 全局感受野 | 等于整张输入 | 靠足够深的网络或全局操作实现 |
这里最值得记的是「有效感受野」(effective receptive field):理论感受野可以算得很大,但实际梯度贡献往往集中在中心一小块,边缘影响很弱。所以「算出来的感受野」和「真正起作用的感受野」是两回事。
对从业者的实际意义
第一,任务决定你要多大的感受野。检测大目标、理解整句话的语义,需要足够大的感受野,否则模型「看不全」;而小目标定位、细粒度分割反而需要小感受野保住空间精度。特征金字塔(FPN)就是在不同层级上同时取大小感受野。
第二,怎么把感受野做大是有取舍的。用一个大卷积核一层到位,参数多、非线性少;堆叠多个小卷积核,参数量更省、非线性更强,感受野还能做到一样大——这是经典网络的设计思路。Transformer 里的自注意力(self-attention)则是第一层就实现全局感受野,代价是计算量随序列长度平方增长,于是又出现了窗口注意力等折中方案。
第三,对非技术岗位也有一层启发:信息在组织里逐层汇总时,「看得更全」和「看得更细」通常是矛盾的。设计汇报层级、设计模型层数,本质上是在解同一道题。
具体的实现细节和最新方案,以官方文档与论文页面为准。
