CNN 和任何多层神经网络的概念问题(第 2 部分)

数据挖掘 神经网络 美国有线电视新闻网 图像分类 自习
2022-02-21 11:48:01

我已经阅读了许多教程和在线讲座(https://ujjwalkarn.me/2016/08/11/intuitive-explanation-convnets/),但没有一个提到选择特定设计的理由。我们如何决定以下设计方面?

1) 是否有决定层数的经验法则?还是纯粹基于反复试验?

2)有人可以解释一下为这个例子设计CNN架构的直觉和基本原理——考虑到一个二元分类问题。对于大小为 500*500*3 的输入 RGB 图像,您将如何设计架构——有多少层、过滤器的数量、过滤器的大小、步幅是多少等。

2个回答

您可以参考 Francois Chollet 的一本很棒的书,名为“使用 Python 进行深度学习”。要回答您的问题:

  1. 您通常会添加大量层并检查验证准确性停止的位置以及训练损失迅速减少的位置。这意味着您的网络开始过度拟合,并且很容易在正则化的帮助下从那里微调您的网络。
  2. 您可以根据问题的复杂性和图像的分辨率来确定网络的层数。更大的图片需要更大的网络。随着网络的增加,过滤器需要增加,并且特征图的大小在理想网络中应该减小。不过,我对跨步了解不多。Max_Pooling 是最常见的解决方案,而不是 strides。

我可以继续讨论 Max_Pooling 但这不会回答你的问题。

我知道发布答案可能为时已晚,但仍在回答,以便它可能会帮助偶然发现这个问题的人。

考虑到我们可能需要从验证集中学习大量的超参数,实际上从头开始设计一个特定的架构可能非常困难,更不用说训练这么多深度模型所需的计算资源了(在最坏的情况下,每个超参数组合一个案子)。

针对您的情况,一般的解决方法是进行迁移学习,它以计算机视觉任务的预训练模型的形式出现。由于在一项任务的图像上学习的过滤器通常可以非常成功地应用于另一项任务的图像以进行特征提取,因此这些预训练模型是首选解决方案。之后,您可以对手头的任务进行一些微调,并在必要时从那时起稍微更改架构。这些完善的架构至少可以作为您设计的起点。您还可以深入研究提出这些架构的论文,以获得关于为什么采用不同架构选择的基本直觉,如果需要,可以以合理的方式组合以设计新颖的架构。

您可以查看这篇文章以供进一步参考。