首页 > 编程知识 正文

如何理解全连接层,全连接层作用

时间:2023-05-04 13:27:22 阅读:229638 作者:4227

概念

什么是全连接层(fully connected layers,FC) ?
全连接层(fully connected layers,FC)在整个卷积神经网络中起到“分类器”的作用。如果说卷积层、池化层和激活函数层等操作是将原始数据映射到隐层特征空间的话,全连接层则起到将学到的“分布式特征表示”映射到样本标记空间的作用。在实际使用中,全连接层可由卷积操作实现:对前层是全连接的全连接层可以转化为卷积核为1x1的卷积;而前层是卷积层的全连接层可以转化为卷积核为hxw的全局卷积,h和w分别为前层卷积结果的高和宽。

全连接的核心操作就是矩阵向量乘积

本质就是由一个特征空间线性变换到另一个特征空间。目标空间的无语的黄豆——也就是隐层的一个 cell——都认为会受到源空间的每一维的影响。不考虑严谨,可以说,目标向量是源向量的加权和。

在 CNN 中,全连接常出现在最后几层,用于对前面设计的特征做加权和。比如 mnist,前面的卷积和池化相当于做特征工程,后面的全连接相当于做特征加权。(卷积相当于全连接的有意弱化,按照局部视野的启发,把局部之外的弱影响直接抹为零影响;还做了一点强制,不同的局部所使用的参数居然一致。弱化使参数变少,节省计算量,又专攻局部不贪多求全;强制进一步减少参数。少即是多) 在 RNN 中,全连接用来把 embedding 空间拉到隐层空间,把隐层空间转回 label 空间等。

看不懂?太抽象了?或者还不不太明白全连接层干啥的,没关系,下面进行通俗讲解。

理解1

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

理解2

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

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

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

理解3

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

理解4

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

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


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

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

以VGG-16再举个例子吧,

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

它把特征representation整合到一起,输出为一个值。
这样做,有一个什么好处?就是大大减少特征位置对分类带来的影响。

举个简单的例子:

从上图我们可以看出,猫在不同的位置,输出的feature值相同,但是位置不同。
对于电脑来说,特征值相同,但是特征值位置不同,那分类结果也可能不一样。这时全连接层filter的作用就相当于
喵在哪我不管,我只要喵,于是我让filter去把这个喵找到,实际就是把feature map 整合成一个值,这个值大,有喵,这个值小,那就可能没喵,和这个喵在哪关系不大了。

因为空间结构特性被忽略了,所以全连接层不适合用于在方位上找Pattern的任务,比如segmentation。
全连接层中一层的一个神经元就可以看成一个多项式,我们用许多神经元去拟合数据分布,但是只用一层fully connected layer 有时候没法解决非线性问题,而如果有两层或以上fully connected layer就可以很好地解决非线性问题了,我们都知道,全连接层之前的作用是提取特征

全连接层的作用是分类。
我们现在的任务是去区别一图片是不是猫

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

全连接层已经知道

当我们得到以上特征,我就可以判断这个东东是猫了。
因为全连接层的作用主要就是实现分类(Classification)

从下图,我们可以看出:

红色的神经元表示这个特征被找到了(激活了),同一层的其他神经元,要么猫的特征不明显,要么没找到,当我们把这些找到的特征组合在一起,发现最符合要求的是猫,ok,我认为这是猫了。


猫头有这么些个特征,于是我们下一步的任务,就是把猫头的这么些子特征找到,比如眼睛啊,耳朵啊。

道理和区别猫一样

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

参考资料:
https://blog.csdn.net/m0_37407756/article/details/80904580
https://blog.csdn.net/bobo_jiang/article/details/79370743
https://blog.csdn.net/qq_34807908/article/details/81736336

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。