卷积神经网络--全连接层

卷积神经网络--全连接层_第1张图片

CNN 入门讲解:什么是全连接层(Fully Connected Layer)?

我们讲到激活函数(Activation Function),假设我们经过一个Relu之后的输出如下

Relu:卷积神经网络--全连接层_第2张图片
卷积神经网络--全连接层_第3张图片
然后开始到达全连接层
卷积神经网络--全连接层_第4张图片
以上图为例,我们仔细看上图全连接层的结构,全连接层中的每一层是由许多神经元组成的(1x 4096)的平铺结构,上图不明显,我们看下图
卷积神经网络--全连接层_第5张图片
注:上图和我们要做的下面运算无联系
并且不考虑激活函数和bias
当我第一次看到这个全连接层,我的第一个问题是:
它是怎么样把3x3x5的输出,转换成1x4096的形式
卷积神经网络--全连接层_第6张图片
很简单,可以理解为在中间做了一个卷积
卷积神经网络--全连接层_第7张图片
从上图我们可以看出,我们用一个3x3x5的filter 去卷积激活函数的输出,得到的结果就是一个fully connected layer 的一个神经元的输出,这个输出就是一个值
因为我们有4096个神经元
我们实际就是用一个3x3x5x4096的卷积层去卷积激活函数的输出

以VGG-16再举个例子吧
再VGG-16全连接层中
对224x224x3的输入,最后一层卷积可得输出为7x7x512,如后层是一层含4096个神经元的FC,则可用卷积核为7x7x512x4096的全局卷积(valid模式)来实现这一全连接运算过程。
这一步卷积一个非常重要的作用
就是把分布式特征representation映射到样本标记空间
就是它把特征representation整合到一起,输出为一个值
这样做,有一个什么好处?
就是大大减少特征位置对分类带来的影响

来,让我来举个简单的例子
卷积神经网络--全连接层_第8张图片
从上图我们可以看出,猫在不同的位置,输出的feature值相同,但是位置不同
对于电脑来说,特征值相同,但是特征值位置不同,那分类结果也可能不一样
而这时全连接层filter的作用就相当于
喵在哪我不管
我只要喵
于是我让filter去把这个喵找到
实际就是把feature map 整合成一个值
这个值大
哦,有喵
这个值小
那就可能没喵
和这个喵在哪关系不大了有没有
鲁棒性有大大增强了有没有
因为空间结构特性被忽略了,所以全连接层不适合用于在方位上找Pattern的任务,比如segmentation

我们突然发现全连接层有两层1x4096fully connected layer平铺结构(有些网络结构有一层的,或者二层以上的)

好吧也不是突然发现,我只是想增加一点戏剧效果
卷积神经网络--全连接层_第9张图片
但是大部分是两层以上呢
泰勒公式都知道吧
意思就是用多项式函数去拟合光滑函数
我们这里的全连接层中一层的一个神经元就可以看成一个多项式
我们用许多神经元去拟合数据分布
但是只用一层fully connected layer 有时候没法解决非线性问题
而如果有两层或以上fully connected layer就可以很好地解决非线性问题了
我们都知道,全连接层之前的作用是提取特征
全链接层的作用是分类

我们现在的任务是去区别一图片是不是猫
卷积神经网络--全连接层_第10张图片
假设这个神经网络模型已经训练完了
全连接层已经知道
卷积神经网络--全连接层_第11张图片
当我们得到以上特征,我就可以判断这个东东是猫了
因为全连接层的作用主要就是实现分类(Classification)
从下图,我们可以看出
卷积神经网络--全连接层_第12张图片
红色的神经元表示这个特征被找到了(激活了)
同一层的其他神经元,要么猫的特征不明显,要么没找到

当我们把这些找到的特征组合在一起,发现最符合要求的是猫
ok,我认为这是猫了
那我们现在往前走一层
那们现在要对子特征分类,也就是对猫头,猫尾巴,猫腿等进行分类
比如我们现在要把猫头找出来
卷积神经网络--全连接层_第13张图片
猫头有这么些个特征
于是我们下一步的任务
就是把猫头的这么些子特征找到,比如眼睛啊,耳朵啊
卷积神经网络--全连接层_第14张图片
道理和区别猫一样
当我们找到这些特征,神经元就被激活了(上图红色圆圈)
这细节特征又是怎么来的?
就是从前面的卷积层,下采样层来的
至此,关于全连接层的信息就简单介绍完了
全连接层参数特多(可占整个网络参数80%左右),近期一些性能优异的网络模型如ResNet和GoogLeNet等均用全局平均池化(global average pooling,GAP)取代全连接层来融合学到的深度特征
需要指出的是,用GAP替代FC的网络通常有较好的预测性能
于是还出现了
Fully Convolutional Networks for Semantic Segmentation​arxiv.org
(1)全连接层对模型的影响?
首先我们明白全连接层的组成如下:
卷积神经网络--全连接层_第15张图片
二层全连接层结构
那么全连接层对模型影响参数就是三个:
1.全接解层的总层数(长度)
2.单个全连接层的神经元数(宽度)
3.激活函数
首先我们要明白激活函数的作用是:增加模型的非线性表达能力
更详细了解请去:
蒋竺波:CNN入门讲解:什么是激活函数(Activation Function)​zhuanlan.zhihu.com
卷积神经网络--全连接层_第16张图片
如果全连接层宽度不变,增加长度:
优点:神经元个数增加,模型复杂度提升;全连接层数加深,模型非线性表达能力提高。理论上都可以提高模型的学习能力。

如果全连接层长度不变,增加宽度:

**优点:**神经元个数增加,模型复杂度提升。理论上可以提高模型的学习能力。
难度长度和宽度都是越多越好?肯定不是
(1)**缺点:**学习能力太好容易造成过拟合。
(2)**缺点:**运算时间增加,效率变低。
那么怎么判断模型学习能力如何?
看Training Curve 以及 Validation Curve,在其他条件理想的情况下,如果Training Accuracy 高, Validation Accuracy 低,也就是过拟合 了,可以尝试去减少层数或者参数。如果Training Accuracy 低,说明模型学的不好,可以尝试增加参数或者层数。至于是增加长度和宽度,这个又要根据实际情况来考虑了。

PS:很多时候我们设计一个网络模型,不光考虑准确率,也常常得在Accuracy/Efficiency 里寻找一个好的平衡点。

你可能感兴趣的:(卷积神经网络,卷积,网络,神经网络,人工智能,深度学习)