深度学习之卷积神经网络(7)池化层
在卷积层中,可以通过调节步长参数s实现特征图的高宽成倍缩小,从而降低了网络的参数量。实际上,处理通过设置步长,还有一种专门的网络层可以实现尺寸缩减功能,它就是这里要介绍的 池化层(Pooling Layer)。
池化层同样基于局部相关性的思想,通过从局部相关的一组元素中进行采样或信息聚合,从而得到新的元素值。特别地,最大池化层(Max Pooling)从局部相关元素集中选取最大的一个元素值,平均池化层(Average Pooling)从局部相关元素集中计算平均值并返回。以
5
×
5
5×5
5×5输入
X
\boldsymbol X
X的最大池化层为例,考虑池化感受野窗口大小为
k
=
2
k=2
k=2,步长
s
=
1
s=1
s=1的情况,如下图所示。
绿色方框代表第一个感受野的位置,感受野元素集合为:
{
1
,
−
1
,
−
1
,
−
2
}
\{1,-1,-1,-2\}
{1,−1,−1,−2}
在最大池化采样的方法下,通过
x
′
=
max
(
{
1
,
−
1
,
−
1
,
−
2
}
)
=
1
x'=\text{max}(\{1,-1,-1,-2\})=1
x′=max({1,−1,−1,−2})=1
计算出当前位置的输出值为1,并写入对应位置。
若采用的是平均池化操作,则此时的输出值应为
x
′
=
avg
(
{
1
,
−
1
,
−
1
,
−
2
}
)
=
−
0.75
x'=\text{avg}(\{1,-1,-1,-2\})=-0.75
x′=avg({1,−1,−1,−2})=−0.75
计算完当前位置的感受野后,与卷积层的计算步骤类似,将感受野按着步长向右移动若干单位,此时的输出
x
′
=
max
(
−
1
,
0
,
−
2
,
2
)
=
2
x'=\text{max}(-1,0,-2,2)=2
x′=max(−1,0,−2,2)=2
同样的方法,逐渐移动感受野窗口至最右边,计算输出
x
′
=
max
(
2
,
0
,
3
,
1
)
=
1
x'=\text{max}(2,0,3,1)=1
x′=max(2,0,3,1)=1,此时窗口已经到达输入边缘,按照卷积层同样的方式,感受野窗口向下移动一个步长,并回到行首,如下图所示:
循环往复,直至最下方、最右边,获得最大池化层的输出,长宽为
4
×
4
4×4
4×4,略小于输入X的高宽,如下图所示:
由于池化层没有需要学习的参数,计算简单,并且可以有效减低特征图的尺寸,非常适合图片这种类型的数据,在计算机视觉相关任务中得到了广泛的应用。
通过精心设计池化层感受野的高宽
k
k
k和步长
s
s
s参数,可以实现各种降维运算。比如,一种常用的池化层设定是感受野大小
k
=
2
k=2
k=2,步长
s
=
2
s=2
s=2,这样可以实现输出只有输入高宽一半的目的。如下两图所示,感受野大小
k
=
3
k=3
k=3,步长
s
=
2
s=2
s=2,输入
X
\boldsymbol X
X高宽为
5
×
5
5×5
5×5,输出
O
\boldsymbol O
O高宽只有
2
×
2
2×2
2×2。