patch/kernel 的大小如何影响卷积网络的结果?

How does the size of the patch/kernel impact the result of a convnet?

我在家里用 tensorflow 玩卷积神经网络(顺便说一句,我已经完成了 udacity 深度学习课程,所以我有理论基础)。 运行卷积时,补丁的大小有什么影响?当图像为 bigger/smaller?

时,这样的大小是否必须更改?

我做的其中一个练习涉及图像的 CIFAR-10 数据库(32x32 像素),然后我使用 3x3 的卷积(填充为 1),得到了不错的结果。

但是现在假设我想玩比那个更大的图像(比如 100x100),我应该把我的补丁更大吗?我让他们保持 3x3 吗?此外,制作一个非常大的补丁会产生什么影响? (比如 50x50)。

通常我会直接在家测试,但是运行在我的电脑上这个有点慢(没有nvidia GPU!)

所以问题应该总结为

  1. 当我的输入图像是 bigger/smaller 时,我应该 increase/decrease 我的补丁的大小吗?
  2. increasing/decreasing 我的路径大小有什么影响(根据 performance/overfitting)?

如果不使用padding,内核越大,下一层的神经元数量越少。

示例:大小为 1x1 的内核为下一层提供相同数量的神经元;大小为 NxN 的内核在下一层中只给出一个神经元。

大内核的影响:

  • 计算时间更快,内存占用更小
  • 丢失了很多细节。想象一下 NxN 输入神经元,内核大小也是 NxN,那么下一层只给你一个神经元。丢失大量细节会导致欠拟合。

答案:

  1. 这取决于图像,如果您需要图像中的大量细节,则无需增加内核大小。如果你的图像是 1000x1000 像素的大版本 MNIST 图像,我会增加内核大小。
  2. 较小的内核会给你很多细节,它会导致你过度拟合,但较大的内核会给你很多细节,它会导致你欠拟合。您应该调整模型以找到最佳尺寸。有时,应考虑时间和机器规格

如果你使用padding,你可以调整使得卷积后的神经元结果相同。我不能说它会比不使用填充更好,但与使用较小的内核相比,仍然会丢失更多细节

更多的取决于你想要检测的物体的大小或者说你想要的感受野的大小。然而,选择内核大小始终是一个具有挑战性的决定。这就是创建使用不同内核大小(1x1、3x3、5x5)的 Inception 模型的原因。该模型的创建者还更深入地尝试将卷积层分解为具有更小块大小的卷积层,同时保持相同的感受野以尝试加速训练(例如 5x5 被分解为两个 3x3 和 3x3 被分解为 3x1 和1x3) 创建不同版本的初始模型。

您还可以查看 Inception V2 论文了解更多详情https://arxiv.org/abs/1512.00567