深入理解卷积层,全连接层的作用意义

有部分内容是转载的知乎的,如有侵权,请告知,删除便是,但由于是总结的,所以不一一列出原作者是who。

再次感谢,也希望给其他小白受益。

首先说明:可以不用全连接层的。

理解1:

卷积取的是局部特征,全连接就是把以前的局部特征重新通过权值矩阵组装成完整的图。

因为用到了所有的局部特征,所以叫全连接。

理解2:

从卷积网络谈起,卷积网络在形式上有一点点像咱们正在召开的“人民代表大会制度”。卷积核的个数相当于候选人,图像中不同的特征会激活不同的“候选人”(卷积核)。

池化层(仅指最大池化)起着类似于“合票”的作用,不同特征在对不同的“候选人”有着各自的喜好。

全连接相当于是“代表普选”。所有被各个区域选出的代表,对最终结果进行“投票”,全连接保证了receiptive field 是整个图像,既图像中各个部分(所谓所有代表),都有对最终结果影响的权利。

理解3:

假设你是一只小蚂蚁,你的任务是找小面包。你的视野还比较窄,只能看到很小一片区域。当你找到一片小面包之后,你不知道你找到的是不是全部的小面包,所以你们全部的蚂蚁开了个会,把所有的小面包都拿出来分享了。全连接层就是这个蚂蚁大会~

理解4:

例如经过卷积,relu后得到3x3x5的输出。

它是怎么样把3x3x5的输出,转换成1x4096的形式?

很简单,可以理解为在中间做了一个卷积。

从上图我们可以看出,我们用一个3x3x5的filter 去卷积激活函数的输出,得到的结果就是一个fully connected layer 的一个神经元的输出,这个输出就是一个值。因为我们有4096个神经元。我们实际就是用一个3x3x5x4096的卷积层去卷积激活函数的输出。

以VGG-16再举个例子吧,

对224x224x3的输入,最后一层卷积可得输出为7x7x512,如后层是一层含4096个神经元的FC,则可用卷积核为7x7x512x4096的全局卷积来实现这一全连接运算过程。

它把特征representation整合到一起,输出为一个值。

这样做,有一个什么好处?就是大大减少特征位置对分类带来的影响。

举个简单的例子:

从上图我们可以看出,猫在不同的位置,输出的feature值相同,但是位置不同。

对于电脑来说,特征值相同,但是特征值位置不同,那分类结果也可能不一样。

这时全连接层filter的作用就相当于

喵在哪我不管,我只要喵,于是我让filter去把这个喵找到,

实际就是把feature map 整合成一个值,这个值大,有喵,这个值小,那就可能没喵

和这个喵在哪关系不大了,鲁棒性有大大增强。

因为空间结构特性被忽略了,所以全连接层不适合用于在方位上找Pattern的任务,比如segmentation。

全连接层中一层的一个神经元就可以看成一个多项式,

我们用许多神经元去拟合数据分布

但是只用一层fully connected layer 有时候没法解决非线性问题,

而如果有两层或以上fully connected layer就可以很好地解决非线性问题了

我们都知道,全连接层之前的作用是提取特征

全理解层的作用是分类

我们现在的任务是去区别一图片是不是猫

假设这个神经网络模型已经训练完了

全连接层已经知道

当我们得到以上特征,我就可以判断这个东东是猫了。

因为全连接层的作用主要就是实现分类(Classification)

从下图,我们可以看出

红色的神经元表示这个特征被找到了(激活了)

同一层的其他神经元,要么猫的特征不明显,要么没找到

当我们把这些找到的特征组合在一起,发现最符合要求的是猫

ok,我认为这是猫了

当我们把这些找到的特征组合在一起,发现最符合要求的是猫

ok,我认为这是猫了

猫头有这么些个特征,于是我们下一步的任务

就是把猫头的这么些子特征找到,比如眼睛啊,耳朵啊

道理和区别猫一样

当我们找到这些特征,神经元就被激活了(上图红色圆圈)

这细节特征又是怎么来的?

就是从前面的卷积层,下采样层来的

全连接层参数特多(可占整个网络参数80%左右)

那么全连接层对模型影响参数就是三个:

  1. 1,全接解层的总层数(长度)
  2. 2,单个全连接层的神经元数(宽度)
  3. 3,激活函数

首先我们要明白激活函数的作用是:

增加模型的非线性表达能力

在PyTorch中,前馈全连接层是**构建神经网络的基本组件之一**。以下是有关PyTorch前馈全连接层的详细介绍: 1. **定义**:前馈全连接层(Feed-Forward Linear Layer)是由多个神经元组成的层,其中每个神经元都与前一层的所有神经元相连接。在这种结构中,信息从输入层流向隐藏层,最后流向输出层,过程中没有回路,即不包含任何形式的反馈或循环。 2. **创建**:在PyTorch中,可以通过`torch.nn.Linear`类来创建一个全连接层。这个类接受两个参数:输入特征的数量和输出特征的数量。例如,`nn.Linear(10, 5)`会创建一个接受10个输入特征并输出5个特征的全连接层。 3. **作用**:全连接层的主要作用是进行特征的线性变换。它通过将输入数据与权重矩阵相乘,并添加一个偏置项来进行计算。这种变换可以帮助网络学习输入和输出之间的复杂映射关系。 4. **激活函数**:为了引入非线性特性,通常会在全连接层之后添加激活函数,如ReLU、Sigmoid或Tanh等。这样可以使网络能够捕捉到更加复杂的数据模式。 5. **训练**:在训练过程中,全连接层的权重和偏置会根据反向传播算法和优化器(如SGD、Adam等)来更新,以最小化损失函数,从而提高网络的预测性能。 6. **应用**:前馈全连接层广泛应用于各种类型的神经网络中,无论是用于回归问题还是分类问题,它们都是构建深层网络的基础。 此外,在搭建一个简单的前馈全连接层网络时,通常需要定义网络的架构,包括各层的节点数、激活函数类型等,然后通过数据进行训练,最终得到一个可以用于预测或分类的模型。 总的来说,前馈全连接层是神经网络中不可或缺的一部分,它们负责处理信息的传递和转换,是深度学习模型的核心组成部分。
评论 43
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

向阳+

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值