CV岗位面试题:如果最后一个卷积层和第一个全连接层参数量太大怎么办?
七月在线实验室
共 1519字,需浏览 4分钟
·
2021-02-05 08:51
文 | 七月在线
编 | 小七
解析:
答案:用全局池化层替换全连接层
在CNN卷积神经网络发展的初期,卷积层通过池化层(最大池化/平均池化)后总是要一个或多个全连接层,最后经过SoftMax层进行分类。其中FC全连接层的参数超多,使得模型本身变得非常臃肿。在Network in Network 论文中提到了使用全局平局池化层代替全连接层的思路,以下是摘录的一部分资料:
GAP(global average poolilng), 既然全连接网络可以使feature map的维度减少,进而输入到softmax,但是又会造成过拟合,是不是可以用pooling来代替全连接。
答案是肯定的,Network in Network工作使用GAP来取代了最后的全连接层,直接实现了降维,更重要的是极大地减少了网络的参数(CNN网络中占比最大的参数其实后面的全连接层)。
全连接层先将卷积层展开成列向量,之后再针对每个feature map进行分类,而GAP的思路就是将上述两个过程合二为一,如下图说是
通过两者合二为一的过程我们可以探索到GAP的真正意义是:对整个网路在结构上做正则化防止过拟合。其直接剔除了全连接层中黑箱的特征,直接赋予了每个channel实际的类别意义。
事实上并不是单纯的全局平均池化层替代的全连接层,而是这个全局平均池化层以及之前的若干层卷积层共同替代了全连接层。举个例子,从一个n维的全连接层降维到m维的全连接层,在计算时的操作是,右乘以一个m×n的矩阵W。而换一个角度来看,是否可以理解为一层n×1×1的特征图降维到m×1×1的特征图,进行了一次m×n×1×1的卷积呢:
全连接层等价于1×1的卷积
而使用全卷积网络,则是使得特征图的边长知道最后一层全局池化层才被降到1。即,该放全连接层的位置对特征图降维,从n×a×a的特征图降维到m×b×b(b != 1)的特征图,使用的是一次m×n×c×c的卷积:
全卷积网络中,替代全连接层降维功能的卷积
而全卷积网络,只需要保证最后一层的特征图,维度是输出向量的维度即可。比如手写数字识别任务,我们可以让最后一层的维度是10。尽管其长和宽还不确定,但只要经过一次全局平均池化,即可转化为10-D的向量输出:
全局平均池化
全连接层进行了信息的转化,卷积层进行信息的提取,而池化更多的是信息的压缩。但单靠全局平均池化确实不能替代卷积层,还需要配合若干层卷积层,对信息进行提取和转化,最终整形到期望输出的维度,再通过全局平均池化完成输出。
干货福利 · AI 资料大礼包
<< 滑动查看更多干货 >>
关注微信公众号"七月在线实验室",点击底部菜单栏 ”干货福利“,即可获得 60 G AI 学习大礼包!
您看此文用
秒,转发只需1秒呦~
评论