为什么人们在卷积神经网络中使用零填充?

机器算法验证 深度学习 卷积 计算机视觉
2022-03-04 20:37:34

我想知道为什么人们通常用零填充而不是使用最小值。我认为,如果您输入的图像的像素范围为 [0, 255] 或 [0, 1](标准化后),则零填充是有意义的。但是,对于隐藏层表示,除非您使用 ReLU 或 Logistic Sigmoid 激活函数,否则对我来说没有多大意义。

例如,如果您按照通常的做法在 [-0.5, 0.5] 范围内对输入图像进行了标准化,那么使用零填充对我来说没有意义(与使用 -0.5 填充相反)。tanH 激活也是如此,因为梯度在 0 处最陡峭。

所以,我想知道为什么人们仍然到处使用零填充?

2个回答

零填充是一种通用方法,用于 (1) 在应用大于 1x1 的过滤器后控制尺寸收缩,以及 (2) 避免在边界处丢失信息,例如当过滤器中的权重迅速远离其中心时。

对于特定的输入、激活函数或损失函数,变体可能表现更好,即利用领域知识。但是,零填充的关键是“通用”。例如,完全不同的填充将是“反射填充”,而不是特定值,而是将输入的镜像放在边界之外。我们可以尝试反射填充,如果它给出更好的结果,那么我们可能会根据任务、激活函数等寻找理由。

作为与评论相关的示例,假设黑白图像具有激活函数(之间-11),我们可以选择(-1)-填充而不是0-填充。如果我们反转图像中的黑白,现在1出于同样的原因,-padding 会更合理。

如果考虑中心极限定理,输入数据将遵循具有恒定均值的正态分布。因此,如果输入数据被归一化,平均值将接近 0。因此填充 0(平均值)不会影响分布。我在研究中做了一些测试,表明批量归一化的输出将遵循均值接近 0 的正态分布。另外,如果您了解传统信号处理中的卷积操作,您会发现零填充只是标准化的方式.