1*1卷积核的作用与全连接层等价的学习思考

本文最后总结了一些关于1*1卷积的学习文章,应该够搞懂它了

2020年12月25日对该内容进行了补充 点这里

全连接层

(fully connected layers)FC层上的每一个结点都与上一层的所有结点相连。

在整个卷积神经网络中起到“分类器”的作用。如果说卷积层、池化层和激活函数层等操作是将原始数据映射到隐层特征空间的话,全连接层则起到将学到的“分布式特征表示”映射到样本标记空间的作用。

1*1卷积核的作用与全连接层等价的学习思考_第1张图片

其中,x1、x2、x3为全连接层的输入,a1、a2、a3为输出,
1*1卷积核的作用与全连接层等价的学习思考_第2张图片

全连接层参数计算

权值参数 = 输入一维数组大小 * 全连接层输出结点数
偏置参数b = 全连接层输出结点数

比如在VGG16网络中,第一个全连接层FC1有4096个节点,上一层POOL27*7*512 = 25088个节点,则该传输需要4096*25088个权值,需要耗很大的内存。

卷积层与全连接层的对比

二维卷积层经常用于处理图像,与此前的全连接层相比,它主要有两个优势:

  • 一是全连接层把图像展平成一个向量,在输入图像上相邻的元素可能因为展平操作不再相邻,网络难以捕捉局部信息。而卷积层的设计,天然地具有提取局部信息的能力。
  • 二是卷积层的参数量更少。不考虑偏置的情况下,一个形状为(ci,co,h,w)的卷积核的参数量是ci×co×h×w,与输入图像的宽高无关。假如一个卷积层的输入和输出形状分别是(c1,h1,w1)和(c2,h2,w2),如果要用全连接层进行连接,参数数量就是c1×c2×h1×w1×h2×w2。使用卷积层可以以较少的参数数量来处理更大的图像。

使网络可以接受任意的输入的方法就是把全连接层变成卷积层,这就是所谓的卷积化

这里需要证明卷积化的等价性。

卷积跟全连接都是一个点乘的操作,区别在于卷积是作用在一个局部的区域,而全连接是对于整个输入而言,那么只要把卷积作用的区域扩大为整个输入,那就变成全连接了,我就不给出形式化定义了。所以我们只需要把卷积核变成跟输入的一个map的大小一样就可以了,这样的话就相当于使得卷积跟全连接层的参数一样多。

1*1卷积的主要作用有以下几点:

1、降维( dimension reductionality )。比如,一张500 * 500且厚度depth为100 的图片在20个filter上做1 * 1的卷积,那么结果的大小为500* 500* 20。 其实也可以升维,这完全取决与1*1卷积的通道数。

2、加入非线性。卷积层之后经过激活函数,1*1的卷积在前一层的学习表示上添加了非线性激励( non-linear activation ),提升网络的表达能力。

在论文 Network In Network 中,提出了一个重要的方法:1×1 卷积。这个方法也在后面比较火的方法,如 googLeNet、ResNet、DenseNet ,中得到了非常广泛的应用。特别是在 googLeNet 的Inception中,发挥的淋漓尽致。

这里有个八卦是当年FCN得到CVPR’15 best paper honorable mention的时候, Yann LeCun等人出来吐槽这个’FCN’的概念早就有了,AlexNet里面的 fully connected layer (FC)本身就是个误导,因为FC layer可以看成是1x1的convolution, 本来就可以输入任意大小的图片。

Reference——1*1卷积作用的理解:

可参考这篇文章——点这里
这篇讲的也透彻——卷积神经网络中的 1*1 卷积 的作用
还有这篇 & 这篇 & 这篇

补充:这个关于感受野的问题也不错——点这里

你可能感兴趣的:(卷积)