type
status
date
slug
summary
tags
category
icon
password
Property
处理图像时,我们希望逐渐降低隐藏表示的空间分辨率、聚集信息,这样随着在神经网络中层叠的上升,每个神经元对其敏感的感受野(输入)就越大。而机器学习任务通常会跟全局图像的问题有关(例如,“图像是否包含一只猫呢?”),所以最后一层的神经元应该对整个输入的全局敏感。通过逐渐聚合信息,生成越来越粗糙的映射,最终实现学习全局表示的目标,同时将卷积图层的所有优势保留在中间层。
此外,当检测较底层的特征时(例如边缘),我们通常希望这些特征保持某种程度上的平移不变性。例如,如果我们拍摄黑白之间轮廓清晰的图像
X
,并将整个图像向右移动一个像素,即Z[i, j] = X[i, j + 1]
,则新图像Z
的输出可能大不相同。而在现实中,随着拍摄角度的移动,任何物体几乎不可能发生在同一像素上。即使用三脚架拍摄一个静止的物体,由于快门的移动而引起的相机振动,可能会使所有物体左右移动一个像素(除了高端相机配备了特殊功能来解决这个问题)。池化(pooling)层,它具有双重目的:
- 降低卷积层对位置的敏感性
卷积层对位置敏感,比如之前的边缘检测,一个像素移位可能导致边缘的输出。但在实际的图像里,我们感兴趣的物体,不会总出现在固定位置:即使连续拍摄同一个物体也既有可能出现像素位置上的偏移。这会导致同一个边缘对应的输出可能出现在卷积输出Y中的不同位置,进而对后面的模式识别造成不便。
假设使用池化层,例如:最大值池化,最大值的话就是把上一层几个特征的最大值输入给下一层,也就是说上一层几个特征位置在哪里都没关系,都会给到下一层的同样的位置,属于特征位置上的合并,所以实现了平移不变性
- 降低对空间降采样表示的敏感性
最大池化层和平均池化层
与卷积层类似,池化层运算符由一个固定形状的窗口组成,该窗口根据其步幅大小在输入的所有区域上滑动,为固定形状窗口(有时称为池化窗口)遍历的每个位置计算一个输出。 然而,不同于卷积层中的输入与卷积核之间的互相关计算,池化层不包含参数。 相反,池运算是确定性的,我们通常计算池化窗口中所有元素的最大值或平均值。这些操作分别称为最大池化层(maximum pooling)和平均池化层(average pooling)
在这两种情况下,与互相关运算符一样,池化窗口从输入张量的左上角开始,从左往右、从上往下的在输入张量内滑动。在池化窗口到达的每个位置,它计算该窗口中输入子张量的最大值或平均值。计算最大值或平均值是取决于使用了最大池化层还是平均池化层
下面这个例子采用取最大值的池化方法。同时采用的是2x2的池化。步幅为2。
首先对红色2x2区域进行池化,由于此2x2区域的最大值为6,那么对应的池化输出位置的值为6,由于步幅为2,此时移动到绿色的位置去进行池化,输出的最大值为8。同样的方法,可以得到黄色区域和蓝色区域的输出值。最终输入4x4的矩阵在池化后变成了2x2的矩阵,进行了压缩。
填充和步幅
与卷积层一样,池化层也可以通过填充和步幅以获得所需的输出形状。
默认情况,深度学习框架中的步幅与池化窗口的大小相同
多个通道
在处理多通道输入数据时,汇聚层在每个输入通道上单独运算,而不是像卷积层一样在通道上对输入进行汇总。 这意味着汇聚层的输出通道数与输入通道数相同
卷积是为了提取出原始特征中的各个重要部分,而池化是为了压缩抽象,这样得到的特征泛化能力更强,更具有普适性。而权重体现了提取以及抽象出来的特征的各个维度的重要程度。
1. 在图像处理里, 卷积意味着对图像进行滤波,抽取某个角度的图像特征,而池化意味着压缩,抽象,即对图像或者图像特征进行进一步的压缩,使之更加抽象简洁。
2. 在NLP中,也是类似的,卷积意味着对对句子中邻近的词向量进行过滤,抽取某种隐含语义的特征, 而池化意味着对这些隐含语义的进一步压缩抽象,使之变成更加通用的语义特征。