在 CNN 中选择过滤器大小、步幅等?

机器算法验证 神经网络 深度学习 卷积神经网络
2022-03-26 20:52:51

我一直在看斯坦福的 CS231N 讲座,我正在努力解决 CNN 架构中的一些问题。我想了解的是,是否有一些关于选择卷积滤波器大小和步幅之类的一般准则,或者这更像是一门艺术而不是一门科学?

我理解的池化主要是为了将某种形式的平移不变性引入模型。另一方面,我对如何选择步幅大小没有很好的直觉。除了尝试压缩当前层大小或尝试为神经元实现更大的感受野之外,还有其他一些指导方针吗?任何人都知道任何讨论这个的好论文或类似的?

2个回答

作为您提到的所有问题的介绍性文本,我会推荐深度学习书它提供了对该领域的广泛概述。它解释了每个参数所起的作用。

在我看来,阅读一些最流行的架构(resnet、inception、alex-net)非常有帮助,并提取导致设计决策的关键思想。在阅读了上述书籍之后。

在你参考的课程大纲中,非常详细地解释了卷积层是如何添加大量参数(权重、偏差)和神经元的。该层一旦经过训练,就能够从图像中提取意义模式。对于较低层,这些过滤器看起来像边缘提取器。对于更高层,将这些原始形状组合起来以描述更复杂的形式。这些过滤器涉及大量参数,以及如何能够描述复杂形式并仍然能够减少参数数量的深度网络设计的一个大问题。

由于相邻像素具有很强的相关性(特别是在最低层中),因此通过对滤波器响应进行二次采样(池化)来减小输出的大小是有意义的。两个像素彼此相距越远,相关性越小。因此,池化层的大跨度会导致高信息丢失。松散地说。池化层的步长为 2 和内核大小为 2x2 是常见的选择。

一种更复杂的方法是 Inception 网络(Going deep with convolutions),其想法是增加稀疏性,但仍然能够通过将卷积层中的参数数量与 inception 模块交换以获得更深的网络来实现更高的准确度。

SqueezeNet:AlexNet-level accuracy with 50x less parameters and <0.5MB model size是一篇很好的论文,它以结构化、系统的方式提供了有关当前架构和某些设计维度的作用的提示它建立在前面提到的模型中引入的想法之上。