深度学习
池化(pooling)
/ POOL-ing /
池化,是网络「拉远镜头」的那一步。在某一层产出了细致的特征图之后,池化把它们缩小——做法是把每一小片邻域归纳成一个数,留下要旨,扔掉细枝末节。这就像给一张照片做缩略图:你失去了像素级的细节,但整体形状还在,文件也小了很多、处理起来更快。
最常见的一种是「最大池化」:把一个小窗口(常是 2×2)滑过特征图,每停一处,只保留窗口里最大的那个值。既然大的值意味着「这一小片里某处强烈地出现了这种特征」,最大池化便记下了「这个特征出现过」,却忘掉了它具体在哪个像素。「平均池化」则保留窗口里的平均值——是更温和的一种归纳。无论哪种,特征图都会变小,通常宽高各减一半,于是更深的层做的活更少,还能一眼看到图像更宽的范围。
池化换来两样东西。它让网络更省,并赋予一点「平移不变性」:哪怕猫往左挪了几个像素,池化后的归纳几乎不变,识别因此更稳。要老实说出的代价是:池化是故意丢掉空间精度的——对「这里有没有猫?」无妨,可一旦你需要精确知道每条边缘究竟落在哪里(比如像素级的任务),就成了问题。正因如此,许多现代结构少用池化,或者用「带步幅的卷积」来取代它:既缩小了特征图,又能学会该怎么去做这个归纳。
对小块 [ [1, 5], [3, 2]] 做 2×2 最大池化,只留下 5。一张 4×4 的特征图会变成 2×2,缩小到四分之一,只保留每个角落里最强的那个信号。
最大池化:保留最强的,丢掉其余——一种刻意的、有损的缩小。
池化没有要学的数字——它是一条固定的归纳规则,而不是一个可训练的层。它的活儿是缩小、再为位置添一点容差;网络的知识并不存放在这里。
又称
另见