有人可以解释什么是全局最大池化层以及我们为什么以及何时使用它来训练神经网络。与普通的最大池化层相比,它们有什么优势吗?
什么是全局最大池化层,它比最大池化层有什么优势?
全局最大池化 = 池大小等于输入大小的普通最大池化层(准确地说是减去过滤器大小 + 1)。你可以看到它MaxPooling1D
需要一个pool_length
参数,而GlobalMaxPooling1D
没有。
例如,如果最大池化层的输入是, 全局最大池输出,而池大小等于 3 个输出的普通最大池化层(假设步幅=1)。
这可以在代码中看到:
class GlobalMaxPooling1D(_GlobalPooling1D):
"""Global max pooling operation for temporal data.
# Input shape
3D tensor with shape: `(samples, steps, features)`.
# Output shape
2D tensor with shape: `(samples, features)`.
"""
def call(self, x, mask=None):
return K.max(x, axis=1)
在某些领域,例如自然语言处理,通常使用全局最大池化。在其他一些领域,例如计算机视觉,通常使用非全局的最大池化。
如本文所述,提出了全局平均池化 (GAP):
传统的卷积神经网络在网络的较低层执行卷积。对于分类,最后一个卷积层的特征图被矢量化并输入到全连接层,然后是一个 softmax 逻辑回归层。这种结构将卷积结构与传统的神经网络分类器联系起来。它将卷积层视为特征提取器,并以传统方式对生成的特征进行分类。
然而,全连接层容易过拟合,从而阻碍了整个网络的泛化能力。Dropout 由 Hinton 等人提出作为正则化器,它在训练期间将全连接层的一半激活随机设置为零。它提高了泛化能力,并在很大程度上防止了过拟合。
在本文中,我们提出了另一种称为全局平均池化的策略,以取代 CNN 中传统的全连接层。想法是在最后一个 mlpconv 层中为分类任务的每个对应类别生成一个特征图。我们没有在特征图之上添加全连接层,而是取每个特征图的平均值,并将结果向量直接馈送到 softmax 层。全局平均池在全连接层上的一个优点是,它通过强制特征图和类别之间的对应关系,更适合卷积结构。因此,特征图可以很容易地解释为类别置信度图。另一个优点是在全局平均池中没有要优化的参数,因此在这一层避免了过度拟合。此外,全局平均池化汇总了空间信息,因此它对输入的空间转换更加稳健。我们可以将全局平均池化视为一种结构正则化器,它明确地将特征图强制为概念(类别)的置信度图。这是通过 mlpconv 层实现的,因为它们比 GLM 更接近置信度图。
编辑: 正如@MaxLawnboy 所建议的,这是关于同一主题的另一篇论文。