卷积层、池化层、全连接层的概念:https://towardsdatascience.com/convolutional-neural-network-17fb77e76c05
关于卷积、全连接层的参数大小和计算量可以参考之前发的文章:深度学习中卷积&池化&全连接层及其参数量和计算量_猿代码_xiao的博客-CSDN博客
1.全连接层
(1)全连接层(fully connected layers,FC)在整个卷积神经网络中起到“分类器”的作用。如果说卷积层、池化层和激活函数层等操作是将原始数据映射到隐层特征空间的话,全连接层则起到将学到的“分布式特征表示”映射到样本标记空间的作用。
在实际使用中,全连接层可由卷积操作实现:对前层是全连接的全连接层可以转化为卷积核为1x1的卷积;而前层是卷积层的全连接层可以转化为卷积核为hxw的全局卷积,h和w分别为前层卷积结果的高和宽。
以VGG-16为例,对224x224x3的输入,最后一层卷积可得输出为7x7x512,如后层是一层含4096个神经元的FC,则可用卷积核为7x7x512x4096的全局卷积来实现这一全连接运算过程,其中该卷积核参数如下:
“filter size = 7, padding = 0, stride = 1, D_in = 512, D_out = 4096”
经过此卷积操作后可得输出为1x1x4096。
如需再次叠加一个2048的FC,则可设定参数为“filter size = 1, padding = 0, stride = 1, D_in = 4096, D_out = 2048”的卷积层操作。
(2)目前由于全连接层参数冗余(仅全连接层参数就可占整个网络参数80%左右),近期一些性能优异的网络模型如ResNet和GoogLeNet等均用全局平均池化(global average pooling,GAP)取代FC来融合学到的深度特征,最后仍用softmax等损失函数作为网络目标函数来指导学习过程。需要指出的是,用GAP替代FC的网络通常有较好的预测性能。具体案例可参见在ECCV'16(视频)表象性格分析竞赛中获得冠军的做法:「冠军之道」Apparent Personality Analysis竞赛经验分享 - 知乎专栏https://zhuanlan.zhihu.com/p/23176872project:
(3)在FC越来越不被看好的当下,近期的研究(In Defense of Fully Connected Layers in Visual Representation Transfer)发现,FC可在模型表示能力迁移过程中充当“防火墙”的作用。具体来讲,假设在ImageNet上预训练得到的模型为 ,则ImageNet可视为源域(迁移学习中的source domain)。微调(fine tuning)是深度学习领域最常用的迁移学习技术。针对微调,若目标域(target domain)中的图像与源域中图像差异巨大(如相比ImageNet,目标域图像不是物体为中心的图像,而是风景照,见下图),不含FC的网络微调后的结果要差于含FC的网络。因此FC可视作模型表示能力的“防火墙”,特别是在源域与目标域差异较大的情况下,FC可保持较大的模型capacity从而保证模型表示能力的迁移。(冗余的参数并不一无是处。)
(4)如果使用全卷积代替全连接层,就不需要固定输入图像的大小
2.全连接层的参数视角
全连接网络其实和卷积网络是等价的,全连接层就可以转化维卷积层,只不过这个卷积层比较特殊,称之为全卷积层,下面举一个简单的例子来说明全连接层如何转化为全卷积层。
由上图所示,我们假定要将一个2*2*1的feature map通过全连接层输出一个4维向量,图中的矩阵X便是这2*2*1的feature map,向量Y就是输出的4维向量,全连接层的做法便是将feature map由矩阵形式展开成向量形式,该向量便是全连接层的输入。
如上图所示,全连接层的运算就是矩阵运算,输出向量Y就是由权重矩阵W乘展开成向量的X',我们可以看到,对于每一个yi,都是由权重矩阵的第i行与X'对应元素相乘,这个相乘的过程和用权重矩阵的第i行所构成的卷积核去卷积X会产生一样的结果。
将2*2*1的feature map通过全连接层得到4维向量就相当于以全连接层中的权重矩阵中的四行向量所组成的4个卷积核去卷积2*2*1的feature map,此时的卷积核的大小就和feature map的大小一样,因此称之为全卷积,全卷积最终得到1*1*4的矩阵,这个4维向量效果是一样的。