为什么我们称 CNN 中的全连接层为 "the Top Layers"?
Why do we call the fully connected layers in CNN "the Top Layers"?
我看了一些关于卷积神经网络的论文,发现几乎所有的论文都在普通的 CNN 中调用全连接层 "the Top Layers"。
然而,正如大多数论文所示,典型的 CNN 具有自上而下的结构,并且通常后面跟着 softmax 分类器的全连接层位于网络的底部。那么,为什么我们称它们为 "Top layers"?这是一种约定还是有其他一些我不知道的注意事项?
我认为这只是一个品味问题,但说 "top layers" 与神经网络中 "head" 的概念相关。人们说 "classification head" 和 "regression head" 表示神经网络的输出层(这个术语在 tf.estimator.Estimator
, also see some discussions here and here 中使用)。如果你这样看,就在头部之前的层是 top 层,而输入层是 bottom 层。无论如何,您应该仔细检查被称为 "top".
的特定层的含义
有充分的理由将它们与其他层区分开来,远远超出 "convention"。
CNN 有很多层,每一层都关注不同的抽象层次。它从非常简单的形状和边缘开始,然后学习例如识别眼睛和其他复杂特征。在典型的设置中,顶层将是一层或两层深度全连接网络。现在,重要的是:顶层权重最直接受标签影响。那是有效地做出决定(或者更确切地说产生概率)某物是猫的层。
想象一下,现在您想建立自己的模型来识别可爱的猫咪,而不仅仅是猫咪。如果您从头开始,则必须提供大量训练示例,以便模型首先学会识别猫的构成。通常您没有那么多的数据或足够的处理能力。你可能会做什么:
- 采用一个现有的、性能良好的模型,该模型已经学习了权重,例如图片网。有一些令人惊叹的、最先进的模型,经过数百万张图像的训练。 ILSVRC 竞赛的优胜者你将很难击败。
- 删除顶层。您对原始模型学到的所有标签都不感兴趣。
- 修正你借用的模型的权重。它在识别猫方面已经很出色了,你不想通过训练来搞砸重量。
- 添加您自己的顶层并在可爱的猫咪上训练模型。
背后的想法是,原始模型已经学会识别 CNN 层中的通用特征,并且可以重复使用这些特征。顶层已经超出了通用性,进入了训练集中的特定部分——这些可以被丢弃。那里没有可爱的猫。
我看了一些关于卷积神经网络的论文,发现几乎所有的论文都在普通的 CNN 中调用全连接层 "the Top Layers"。
然而,正如大多数论文所示,典型的 CNN 具有自上而下的结构,并且通常后面跟着 softmax 分类器的全连接层位于网络的底部。那么,为什么我们称它们为 "Top layers"?这是一种约定还是有其他一些我不知道的注意事项?
我认为这只是一个品味问题,但说 "top layers" 与神经网络中 "head" 的概念相关。人们说 "classification head" 和 "regression head" 表示神经网络的输出层(这个术语在 tf.estimator.Estimator
, also see some discussions here and here 中使用)。如果你这样看,就在头部之前的层是 top 层,而输入层是 bottom 层。无论如何,您应该仔细检查被称为 "top".
有充分的理由将它们与其他层区分开来,远远超出 "convention"。
CNN 有很多层,每一层都关注不同的抽象层次。它从非常简单的形状和边缘开始,然后学习例如识别眼睛和其他复杂特征。在典型的设置中,顶层将是一层或两层深度全连接网络。现在,重要的是:顶层权重最直接受标签影响。那是有效地做出决定(或者更确切地说产生概率)某物是猫的层。
想象一下,现在您想建立自己的模型来识别可爱的猫咪,而不仅仅是猫咪。如果您从头开始,则必须提供大量训练示例,以便模型首先学会识别猫的构成。通常您没有那么多的数据或足够的处理能力。你可能会做什么:
- 采用一个现有的、性能良好的模型,该模型已经学习了权重,例如图片网。有一些令人惊叹的、最先进的模型,经过数百万张图像的训练。 ILSVRC 竞赛的优胜者你将很难击败。
- 删除顶层。您对原始模型学到的所有标签都不感兴趣。
- 修正你借用的模型的权重。它在识别猫方面已经很出色了,你不想通过训练来搞砸重量。
- 添加您自己的顶层并在可爱的猫咪上训练模型。
背后的想法是,原始模型已经学会识别 CNN 层中的通用特征,并且可以重复使用这些特征。顶层已经超出了通用性,进入了训练集中的特定部分——这些可以被丢弃。那里没有可爱的猫。