0%

CNN中的池化层及全连接层

CNN的基础为卷积层,但为了提升网络的效率和准确度,CNN中也经常包含池化层(Pooling Layer)和全连接层(Fully Connected Layer)

常见的池化层有两种:最大池化(Max Pooling)和平均池化(Average Pooling)

以上是最大池化的范例,最大池化类似于与卷积计算,有类似于过滤器的区域,由两个超级参数(hyperparameter)$f,s$决定性质,其含义与过滤器的大小与步长相同

但与卷积计算不同的是结果不再是乘积和,而是区域内的最大值,其含义为提取出区域内最大的特征,如果该区域不含有特征,则池化后的结果依旧很小。如图,左侧输入图像经过$f=2,s=2$的池化层处理后,池化结果分别为对应区域的最大值。值得注意的是,池化操作与卷积操作最大的区别体现在对多通道输入数据的处理上,在卷积操作中,我们要应用一个$f*f*n_c^{[l-1]}$的过滤器去将多通道信息合一,而$n_c^{[l]}$等于$l$层中过滤器的个数。但在池化操作中,“过滤器”是一维的,它同时在$n_c^{[l-1]}$个通道上进行池化,则$n_c^{[l]}=n_c^{[l-1]}$

在实际应用中常采用$f=2,s=2$这组超级参数,其含义就是将每$4*4$的子图像的最大特征提取出来,并将其$n_h,n_w$都缩小了一倍。除了最大池化,平均池化在实际应用中也有特殊的意义,通常只采用这两种池化方式
对于是否将池化层列为独立的一层还是与前置的卷积层合称为一层因习惯而异,注意论文作者的说明即可

而全连接层出现在将卷积结果展开成$n*1$的向量之后,通过$m*n(m<n)$的全连接层计算,进一步的处理激活值,减少其数量

现在效果较好的CNN都采用了将卷积层,池化层和全连接层这三种组件组合,以下是同时应用三种组件的示例

而下图是在CNN过程中激活值数量的下降情况及每层所需的参数数量

可以发现,激活值的数量随着层数的增加而逐渐减小(下降过快会影响效果),除池化层做区间最大操作没有参数外,卷积层的参数其实很小,大部分的参数都集中在全连接层中($m*n$的权重矩阵)