填充-机器学习/神经网络


机器学习/神经网络 中,填充(Padding) 是一种在输入数据(如图像、序列等)周围添加额外“虚拟值”的技术,主要用于控制卷积操作后输出数据的空间尺寸,并减少信息丢失。以下是详细解释:


1. 为什么需要填充?

  • 保持空间维度:卷积操作(如卷积神经网络中的卷积层)会缩小输入数据的尺寸。例如,输入图像尺寸为 (5 \times 5),使用 (3 \times 3) 的卷积核后,输出尺寸会变为 (3 \times 3)。填充可以通过在边缘添加额外像素,使输出尺寸与输入一致。
  • 保留边缘信息:不加填充时,图像边缘的像素在卷积中参与计算的次数较少,可能丢失重要特征。
  • 适应深层网络:在深层网络中,多次卷积可能导致特征图尺寸过小,填充可缓解这一问题。

2. 填充的常见类型

(1) 有效填充(Valid Padding)

  • 不添加任何填充,直接进行卷积,输出尺寸会缩小。
  • 公式:若输入尺寸为 (W \times H),卷积核尺寸为 (K \times K),则输出尺寸为 ((W-K+1) \times (H-K+1))。
  • 示例:输入为 (5 \times 5),卷积核 (3 \times 3) → 输出为 (3 \times 3)。

(2) 相同填充(Same Padding)

  • 在输入周围添加填充,使输出尺寸与输入尺寸一致
  • 填充量计算:若卷积核尺寸为 (K),步幅(Stride)为 (1),则填充数 (P = (K-1)/2)(仅当 (K) 为奇数时成立)。
  • 示例:输入为 (5 \times 5),卷积核 (3 \times 3),填充 (1) → 输出仍为 (5 \times 5)。

3. 填充的实现方式

  • 零填充(Zero Padding):最常见的方式,在输入周围补零(例如图像填充黑色像素)。
  • 反射填充(Reflection Padding):通过镜像边缘像素来填充(如 [1, 2, 3] → 填充为 [3, 2, 1, 2, 3, 2, 1])。
  • 重复填充(Replication Padding):复制边缘像素的值。

4. 示例与公式

假设输入尺寸为 (W \times H),卷积核尺寸 (K \times K),步幅 (S),填充数 (P),则输出尺寸为: [ \text{输出宽度} = \left\lfloor \frac{W + 2P - K}{S} \right\rfloor + 1 ] - 无填充(Valid):(P=0) → 输出缩小。 - 有填充(Same):调整 (P) 使输出尺寸等于输入尺寸。


5. 应用场景

  • 图像处理:在卷积神经网络(CNN)中广泛使用,如 ResNet、VGG 等。
  • 自然语言处理(NLP):在序列数据(如文本)中填充零,使批次内的样本长度一致。
  • 语音信号处理:对齐不同长度的音频片段。

总结

填充是神经网络中平衡计算效率和特征保留的关键技术,尤其在卷积神经网络中,它通过控制特征图尺寸,帮助模型更有效地学习边缘和细节信息。 🚀