【AI面试】卷积神经网络中的1x1卷积核是什么?作用是什么?1x1卷积核,又称为网中网(Network in Netwo
「点击关注小白CV,加关注,设星标,学习从此快人一步」
1x1形式的
卷积核在目前的网络模块中经常被使用到,1x1卷积核,又称为网中网(Network in Network),是目前大多数网络结构中不可或缺的模块。比如Resnet模块、分离卷积模块、transformer模块等等中常常需要添加1x1卷积核。与此同时,也是一道面试中经常会被问到的问题。
在知道1x1卷积之前,首先回顾卷积网络的基本概念:神经网络中,卷积核是什么?本文,我们会学到两个知识点:
- 卷积核是什么?
1x1
卷积核是什么?1x1
卷积核常被加入基础模块,有什么作用?
阅读全文大约需要2 minutes,建议关注+收藏,边学习边思考,效率更高哦!
卷积核
卷积核可以看作对某个局部区域的加权求和,它是对局部进行感知。以我们人类为例,在观察某个物体全貌时,我们既不能只观察某一个像素,也不能一次观察整体。而是先从局部开始认识,最终局部的组合,构成了观察对象的整体全貌。这个局部区域的观察就对应了卷积。
卷积核单层(channel)的大小一般有1x1,3x3、5x5、7x7
的尺寸(一般是奇数x奇数的形式)。同时,在channel尺度上,可以是任意大小的,比如3x3x32、5x5x32
等等。其形状如下图所示:
上图按行结构,可以分为两个组块:
- 输入6x6x1的矩阵,这里的1x1卷积形式为1x1x1,内容为元素2,输出也是6x6x1的矩阵。但输出矩阵中的每个元素值是输入矩阵中每个元素值x2的结果。
- 当输入为6x6x32时,1x1卷积的形式是1x1x32,当只有一个1x1卷积核的时候,此时输出为6x6x1。此时的channel便由输入时候的32,变成了输出时候的1。
上文中,卷积核的个数就对应输出的通道数(channels),这里需要说明的是对于输入的每个通道,输出每个通道上的卷积核是不一样的。比如输入是28x28x192
(WxDxC
,C代表通道数)。然后在3x3
的卷积核,卷积通道数为128
,那么卷积的参数有3x3x192x128
,
其中前两个对应的每个卷积里面的参数3x3
,后两个对应的卷积总的个数192x128
(一般理解为,卷积核的权值共享只在每个单独通道上有效,至于通道与通道间的对应的卷积核是独立不共享的,所以这里是192x128)。
这样,1x1卷积核的定义和结构就明显了,就是卷积核大小为1x1,channel可以是任意大小形式的一种卷积核。
作用:
- 降维或升维
- 增加非线性特性
- 跨通道信息交互(channal 的变换)
- 降低网络参数
1. 降维或升维
由于 1×1 并不会改变 height 和 width
,改变通道的第一个最直观的结果,就是可以将原本的数据量进行增加或者减少。这里看其他文章或者博客中都称之为升维、降维。PS:这里改变的只是 height × width × channels
中的 channels
这一个维度的大小。
2. 增加非线性特性
1*1
卷积核,可以在保持feature map
尺度不变的(即不损失分辨率)的前提下大幅增加非线性特性(利用后接的非线性激活函数),把网络做的很deep。
3. 跨通道信息交互
使用1x1
卷积核,实现降维和升维的操作其实就是channel间信息的线性组合变化,3x3,64channels
的卷积核后面添加一个1x1,28channels
的卷积核,就变成了3x3,28channels
的卷积核,原来的64个channels就可以理解为跨通道线性组合变成了28 channels
,这就是通道间的信息交互。
4. 降低网络参数
假如上一层的输出为100x100x128
,经过具有256个输出的5x5卷积层之后(stride=1,pad=2),输出数据为100x100x256
。其中,卷积层的参数为128x5x5x256=819200
。
假如换一种组合形式,上一层输出100x100x128,先经过具有32个输出的1x1卷积层,再经过具有256个输出的5x5卷积层,那么最终的输出数据仍为为100x100x256,但卷积参数量变成2层卷机的和,即:128x1x1x32 + 32x5x5x256=4096+204800=208896。此时相比于之前的,参数
大约减少了4倍。
最后,引申下开头的NIN, 《Network In Network》 ,论文地址:arxiv.org/abs/1312.44… In Network仅为29M。
这篇文章的创新点有两个:
-
MLP (multilyer perceptron)Convolution Layers:在常规卷积(感受野大于1的)后接若干1x1卷积,每个特征图视为一个神经元,特征图通过1x1卷积就类似多个神经元线性组合.
-
Global Average Pooling:用全局平均池化代替全连接层,具体做法是对最后一层的特征图进行平均池化,得到的结果向量直接输入softmax层。这样做好处之一是使得特征图与分类任务直接关联,另一个优点是全局平均池化不需要优化额外的模型参数,因此模型大小和计算量较全连接大大减少,并且可以避免过拟合。
这是AI面试系列的开篇文章,尽量简单的描述,读懂很重要。如果有什么问题,欢迎评论留言,小编第一时间进行回复。后续的文章,我们也会继续整理出实用有趣的wen z ,分享给大家。喜欢记得关注哦。
(第一次周末在书城的咖啡屋看书和写文章,感觉很好,下次还要来。纪念下)
参考内容:zhuanlan.zhihu.com/p/40050371
往期回顾
点击图片回顾往期热文
转载自:https://juejin.cn/post/6993307693045940261