对池化层感到困惑,它是否可训练?

机器算法验证 卷积神经网络 汇集
2022-03-22 08:34:38

我在很多地方读过,例如斯坦福大学在CS231n上的卷积神经网络课程笔记(以及这里这里这里),池化层没有任何可训练的参数!
然而今天有人告诉我,在一些论文中(这里是)他们说,我引用:

S1 层用于子采样,包含六个特征图,每个特征图包含 14 x 14 = 196 个神经元。子采样窗口为 2 x 2 矩阵,子采样步长为 1,因此 S1 层包含 6 x 196 x (2 x 2 + 1) = 5880 个连接。S1 层中的每个特征图都包含一个权重和偏差,因此在 S1 层中总共可以训练 12 个参数。

这是什么 ?
有人可以请教我吗?

3个回答

在你阅读的论文中

S1层一共可以训练12个参数

表示池化层中输出平面的数量,而不是权重矩阵中的参数数量。通常,我们在神经网络模型中训练的是权重矩阵中的参数。我们不在输入平面或输出平面训练参数。所以写论文的同学没有表达清楚,这让你对池化层到底是什么感到困惑。

最大池化层中没有可训练的参数。在前向传递中,它将每个矩形内的最大值传递到下一层。后向传递中,它将下一层中的错误传播到取最大值的地方,因为那是错误的来源。


例如,在forward pass中,您有一个图像矩形:

1 2
3 4

你会得到:

4

在下一层。

向后传递中,您有错误:

-0.1

然后你将错误传播回你得到它的地方:

0 0 
0 -0.1

因为从前传中的那个位置取数字 4。

深度学习没有固定的标准模型。这就是为什么有许多不同的 CNN 模型的原因。有时,池化可以起到一些学习的作用,如Here我看过很多论文,他们应用了激活函数或向池化层添加了一些偏差项。池化可以是平均池化、最大池化、L2-范数池化,甚至是其他一些减小数据大小的函数。CIFAR 10 上的最新成果在这里 使用了称为 Fractional Max-Pooling 的新颖池化方法。

如果池化操作是平均池化(参见Scherer、Müller 和 Behnke,2010 年),那么它将是可学习的,因为存在可训练的偏差项:

取输入的平均值,乘以可训练的标量β,增加一个可训练的偏差b, 并通过非线性传递结果

但最近的许多论文提到,与最大池化相比,它已经失宠,而最大池化在实践中效果更好。

参考