一句话定义
全局平均池化(Global Average Pooling,GAP)就是把卷积网络输出的每张特征图“整张取一个平均数”——把一个通道里 H×W 个数字压成 1 个数字,最后得到一个长度等于通道数的向量,用来替代分类头里的全连接层。
它是怎么做的
特征图的形状是 C×H×W:C 个通道,每个通道是 H 行 W 列的一张响应图。GAP 对每个通道单独操作,把这 H×W 个数加起来除以 H×W,得到一个平均值;C 个通道得到 C 个数,拼成 C 维向量,直接送进 softmax 做分类。这个层没有任何需要学习的参数。
打个比方:一个班每科一份成绩单,每个通道是一个科目,H×W 是班上的几十个学生。全连接层相当于给“每个学生的每道题”都单独配一个可学习权重,参数爆炸,还容易把某几个学生的偶然高分当成规律(过拟合)。GAP 相当于只算每科平均分,再根据各科平均分判断这是文科班还是理科班——要判断“班级风格”,平均分往往就够了。
和相邻概念的区别
和普通平均池化(Average Pooling)比:普通池化有窗口和步长,比如 2×2 窗口,输出仍然是 H/2 × W/2 的图,空间结构还在;GAP 的“窗口”就是整张特征图,输出不再有高和宽。
和全局最大池化(Global Max Pooling)比:一个取平均、一个取最大。最大池化更像在问“这个特征出现过没有、最强有多强”,平均池化更像在问“整体上这个特征有多普遍”。
和全连接层(Fully Connected, FC)比,核心差别是位置:
| 对比项 | 全连接层(FC) | 全局平均池化(GAP) |
|---|---|---|
| 参数量 | 与 C×H×W 成正比,通常很大 | 0 |
| 位置信息 | 每个位置权重不同,知道“哪里响应强” | 所有位置权重相同(1/(H×W)),被平均掉 |
| 输入尺寸 | 固定 | 任意,输出恒为 C 维 |
| 适合的任务 | 需要空间信息的下游任务 | 只关心“有什么”的分类任务 |
对实际工作的意义
GAP 由 Network in Network 这类工作推广开来,如今是分类网络的标配头:省参数、抗过拟合,还让模型能接受任意分辨率输入,是全卷积网络(FCN)思路的关键一环。
但它的代价恰恰是丢位置。分类只关心“图里有没有猫”,猫在左上角还是右下角无所谓,GAP 很合适;检测、分割、关键点定位要回答的正是“在哪里”,把带空间维度的结构换成 GAP,等于主动把坐标信息平均掉,精度通常会明显下降。这类任务一般保留特征图的高宽(空洞卷积、上采样、特征金字塔等),或者额外引入位置编码、坐标注意力把位置信息找回来。
所以换网络头之前先问一句:这个任务需不需要知道“在哪”。需要,就别随手换成 GAP。
