卷积神经网络中的过滤器和激活图是如何连接的?

机器算法验证 机器学习 深度学习 卷积神经网络
2022-03-16 20:04:46

给定层的激活图如何连接到该层的过滤器?我不是在问如何在过滤器和激活图之间进行卷积操作,而是在问这两者的连接类型。

例如,假设您想做完全连接。在给定的层中有 f 个过滤器和 n 个激活图。您将在下一层获得 f * n 个激活图,并且激活图的数量会随着每个新层的增加而增加。这是我认为它完成的方式。

或者你可以说每个过滤器只连接到一个激活图。在这种情况下,过滤器的数量将等于激活图的数量,并且每一层都将具有相同数量的过滤器和激活图。这是我网络的当前架构,它似乎学得很好。

我困惑的主要来源是查看我在网上看到的卷积网络图。其中一些在过滤器和激活图之间具有“完全连接”,例如 - 在此处输入图像描述 在第一层中,您有 4 个激活图,大概有 2 个过滤器。每个地图都与每个过滤器进行卷积,从而在下一层产生 8 个地图。看起来很棒。

但是这里我们有一个对我来说没有意义的架构—— 在此处输入图像描述 你如何从第一层的 6 个地图到第二层的 16 个?我可以想办法从 6 张地图中获得 16 张地图,但这样做没有任何意义。

2个回答

您发布的第二个卷积神经网络 (CNN) 架构来自这篇论文在论文中,作者描述了 S2 层和 C3 层之间发生的情况。他们的解释虽然不是很清楚。我想说这种 CNN 架构不是“标准的”,作为 CNN 的第一个例子,它可能会让人很困惑。

CNN架构

首先,需要澄清特征图是如何产生的,以及它们与过滤器的关系是什么。特征图是滤波器与特征图卷积的结果。让我们以层 INPUT 和 C1 为例。在最常见的情况下,要在 C1 层的过滤器(图像的过滤器,假设,大小为28×285×5M×MN×NMN(MN+1)×(MN+1). 但是,您可以通过组合由多于或少于 6 个过滤器生成的特征图(例如,将它们相加)来生成 6 个特征图。在论文中,尽管 C1 层没有暗示任何类型的内容。

S2 层和 C3 层之间发生的情况如下。C3 层有 16 个特征图,由 S2 层中的 6 个特征图生成。C3层的过滤器数量确实不明显。事实上,仅从架构图中,我们无法判断产生这 16 个特征图的过滤器的确切数量是多少。该论文的作者提供了下表(第 8 页):

层 S2 和 C3 之间的连接

他们通过表格提供以下解释(第 7 页底部):

C3 层是具有 16 个特征图的卷积层。每个特征图中的每个单元都连接到S2 特征图子集中相同位置的5×5

在表格中,作者展示了 C3 层中的每个特征图都是通过组合 3 个或更多特征图(第 8 页)产生的:

前六个 C3 特征图从 S2 中三个特征图的每个连续子集获取输入。接下来的六个从四个连续子集中获取输入。接下来的三个从四个不连续的子集中获取输入。最后,最后一个从所有 S2 特征映射中获取输入。

现在,C3 层有多少个过滤器?不幸的是,他们没有解释这一点。两种最简单的可能性是:

  1. 每个 C3 特征图的每个 S2 特征图有一个过滤器,即与同一 C3 特征图相关联的 S2 特征图之间没有过滤器共享。
  2. 每个 C3 特征图有一个过滤器,它在 S2 层的(3 个或更多)组合的特征图中共享。

在这两种情况下,“组合”意味着每个 S2 特征图组的卷积结果需要组合以生成 C3 特征图。作者没有具体说明这是如何完成的,但添加是一种常见的选择(例如,请参见本页中间附近的动画 gif 。

不过,作者提供了一些额外的信息,这可以帮助我们破译架构。他们说“C3 层有 1,516 个可训练参数”(第 8 页)。我们可以使用此信息在上述情况(1)和(2)之间做出决定。

在情况 (1) 中,我们有过滤器。过滤器大小为在这种情况下,可训练参数的数量为可训练参数。如果我们假设每个 C3 特征图有一个偏差单元,我们会得到参数,这就是作者所说的。为了完整起见,在情况 (2) 中,我们将有参数,但情况并非如此。(6×3)+(9×4)+(1×6)=60(1410+1)×(1410+1)=5×55×5×60=1,5001,500+16=1,516(5×5×16)+16=416

因此,如果我们再次查看上面的表 I,每个 S2 特征图有 10 个不同的C3 过滤器(因此总共有 60 个不同的过滤器)。

作者解释了这种选择:

[在 C3 层中] 不同的特征图被迫提取不同的(希望是互补的)特征,因为它们得到不同的输入集。

我希望这可以澄清情况。

您确实是正确的,@ 之前的值表示过滤器的数量,而不是特征图的数量(尽管对于第一个卷积层,这些值是一致的)。

关于您的最后一个问题:是的,将第 l 层的每个特征图连接到第 l+1 层的每个过滤器确实有意义。这样做的唯一原因是,这大大增加了网络的表达能力,因为它有更多的方式(路径)来组合特征图,从而使其能够更好地区分输入图像上的任何内容。

最后我不知道你是否通过自己实现它们来练习你的神经网络技能,但如果你只是想将卷积网络应用于特定任务那么已经有几个优秀的神经网络库,如 Theano、Brainstorm、Caffe