据我所了解,所有卷积神经网络(CNN)的构建方式都相似,即由卷积层、池化层和ReLU层组成。有些CNN还包含像FlowNet和Segnet之类的专门层次。我想知道如何决定在神经网络中使用多少层以及如何为每一层设置内核大小。我已经搜索过答案,但是没有找到确切的答案。这个问题是通过试错法来设计网络还是有些我不知道的规则?如果您能澄清这一点,我将非常感激。
据我所了解,所有卷积神经网络(CNN)的构建方式都相似,即由卷积层、池化层和ReLU层组成。有些CNN还包含像FlowNet和Segnet之类的专门层次。我想知道如何决定在神经网络中使用多少层以及如何为每一层设置内核大小。我已经搜索过答案,但是没有找到确切的答案。这个问题是通过试错法来设计网络还是有些我不知道的规则?如果您能澄清这一点,我将非常感激。
简短回答:如果有设计规则,我们还没有发现。
注意,在计算机领域也有类似的问题。例如,请注意,只有少数基本电子逻辑单元,即驱动您的制造技术的门。所有计算设备都使用相同的布尔逻辑;一些具有专业附加功能,例如光电输入或机械输出。
您如何决定如何设计计算设备?
设计取决于CNN的目的。输入特征、准确性、训练速度、评分速度、适应性、计算资源等都会影响设计。即使对于给定的问题(尚未),也没有通用解决方案。
例如,考虑ImageNet分类问题。请注意至今获胜者和候选者之间的结构差异:AlexNet、GoogleNet、ResNet、VGG等。如果您更改输入(比方说到MNIST),那么这些就是过剩的。如果你改变范例,它们可能是无用的。GoogleNet可能是图像处理中的王子,但对于将口语法语翻译成书面英语来说,它是可怕的。如果你想实时跟踪视频屏幕上的曲棍球,完全忘记这些实现方式。
到目前为止,我们是通过经验方法来进行研究的:很多人尝试很多不同的方法,看看哪种方法有效。我们对于如何提高准确性、训练时间或其他想要调整的因素有一些感觉。我们发现什么在总CPU时间中表现良好,或者我们可以并行处理什么。我们更改算法以利用长度为2的次幂的向量数学。我们稍微改变问题,看看学习如何适应其他地方。我们更改领域(例如从图像处理到书面文本),并重新开始——但是有一个模糊的感觉,一旦我们开始考虑某些类型的层,它可能会调整特定的瓶颈。
请记住,CNN还没有流行那么长时间,几乎只有6年。在大多数情况下,我们仍在努力了解可能的重要问题。欢迎加入研究团队。