为什么我们在CNN末端使用全连接层?

时间:2017-02-18 15:45:47

标签: machine-learning neural-network computer-vision deep-learning conv-neural-network

我搜索了很多原因,但我没有说清楚,有人可以更详细地解释一下吗?

5 个答案:

答案 0 :(得分:4)

每个完全连接(FC)层都有一个等效的卷积层(但反之亦然)。因此,不必添加FC层。它们总是可以被卷积层替换(+重塑)。请参阅details

为什么我们使用FC层?

因为(1)我们习惯它(2)它更简单。 (1)可能是(2)的原因。例如,如果使用卷积层而不是FC层,则需要调整损耗函数/标签的形状/添加重塑添加结尾。

答案 1 :(得分:3)

从理论上讲,你没有拥有来连接一个完全连接的层,只要(由于自定义尺寸/填充)你最终会有一堆完整的卷积直到最后具有正确数量的输出神经元(通常是类的数量)。

那么为什么人们通常不这样做呢?如果一个人通过数学计算,那么每个输出神经元(因此 - 某些类的预测值)仅取决于仅取决于输入维度(像素)的子集。这将是模型行中的某些内容,它仅根据前几个“列”(或者,取决于体系结构,行或图像的某些补丁)来决定图像是否是第1类的元素,然后是否这是几个下一列(可能重叠)的第2类,......,最后是一些类K,取决于最后几列。通常数据没有这个特性,你不能根据几个第一列分类猫的图像而忽略其余的。

但是,如果你引入完全连接层,你可以为你的模型提供混合信号的能力,因为每个神经元都有一个连接到下一个神经元。图层,现在每个输入维度(像素位置)和每个输出类之间都有一条信息流,因此决策基于整个图像。

直观地说,您可以根据信息流来考虑这些操作。卷积是本地操作,汇集是本地操作。完全连接的层是全局的(它们可以引入任何类型的依赖)。这也是为什么卷积在图像分析等领域中运作良好的原因 - 由于它们的局部性质,它们更容易训练,即使数学上它们只是完全连接的层可以代表的子集。

注意 我在考虑CNN的典型用法,其中内核很小。通常,人们甚至可以将MLP视为CNN,其中内核具有特定间距/填充的整个输入的大小。然而,这些只是极端情况,在实践中并没有真正遇到,并没有真正影响推理,因为它们最终成为MLP。这里的重点很简单 - 引入全球关系,如果可以通过以特定方式使用CNN来实现 - 那么就不需要MLP。 MLP只是一种引入这种依赖性。

答案 2 :(得分:1)

卷积和合并图层从图像中提取特征。所以这一层做了一些"预处理"数据的。完全连接的层面基于此提取的特征执行分类。

答案 3 :(得分:1)

我在Anil-Sharma QuoraVOC找到了这个答案。

我们可以将整个网络(用于分类)分为两部分:

  • 功能提取: 在传统的分类算法中,如SVM,我们习惯从数据中提取特征以使分类工作。卷积层用于特征提取的相同目的。 CNN捕获更好的数据表示,因此我们不需要进行特征工程。

  • <强>分类: 在特征提取之后,我们需要将数据分类为各种类,这可以使用完全连接的(FC)神经网络来完成。代替完全连接的层,我们也可以使用像SVM这样的传统分类器。但我们通常最终添加FC层以使模型端到端可训练。

答案 4 :(得分:0)

CNN为您提供输入图像的表示。要学习示例类,您应该使用分类器(例如逻辑回归,SVM等)来学习学习特征和样本类之间的关系。完全连接的层也是线性分类器,例如用于此原因的逻辑回归。