卷积神经网络中用1*1 卷积有什么作用或者好处呢?

卷积神经网络中用1*1 卷积有什么作用或者好处呢? 为什么非要加个1*1 呢,那不就是简单的线性变换吗?? 谢谢
关注者
1,372
被浏览
793,544

44 个回答

Inception

下图是Inception的结构,尽管也有不同的版本,但是其动机都是一样的:消除尺寸对于识别结果的影响,一次性使用多个不同filter size来抓取多个范围不同的概念,并让网络自己选择需要的特征。

你也一定注意到了蓝色的1x1卷积,撇开它,先看左边的这个结构。

输入(可以是被卷积完的长方体输出作为该层的输入)进来后,通常我们可以选择直接使用像素信息(1x1卷积)传递到下一层,可以选择3x3卷积,可以选择5x5卷积,还可以选择max pooling的方式downsample刚被卷积后的feature maps。 但在实际的网络设计中,究竟该如何选择需要大量的实验和经验的。 Inception就不用我们来选择,而是将4个选项给神经网络,让网络自己去选择最合适的解决方案。

接下来我们再看右边的这个结构,多了很多蓝色的1x1卷积。 这些1x1卷积的作用是为了让网络根据需要能够更灵活的控制数据的depth的。


1x1卷积核

如果卷积的输出输入都只是一个平面,那么1x1卷积核并没有什么意义,它是完全不考虑像素与周边其他像素关系。 但卷积的输出输入是长方体,所以1x1卷积实际上是对每个像素点,在不同的channels上进行线性组合(信息整合),且保留了图片的原有平面结构,调控depth,从而完成升维或降维的功能。

如下图所示,如果选择2个filters的1x1卷积层,那么数据就从原本的depth 3 降到了2。若用4个filters,则起到了升维的作用。

这就是为什么上面Inception的4个选择中都混合一个1x1卷积,如右侧所展示的那样。 其中,绿色的1x1卷积本身就1x1卷积,所以不需要再用另一个1x1卷积。 而max pooling用来去掉卷积得到的Feature Map中的冗余信息,所以出现在1x1卷积之前,紧随刚被卷积后的feature maps。(由于没做过实验,不清楚调换顺序会有什么影响。)

来自YJango的卷积神经网络--介绍 - 知乎专栏

1*1卷积过滤器 和正常的过滤器一样,唯一不同的是它的大小是1*1,没有考虑在前一层局部信息之间的关系。最早出现在 Network In Network的论文中 ,使用1*1卷积是想加深加宽网络结构 ,在Inception网络( Going Deeper with Convolutions )中用来降维,如下图:


由于3*3卷积或者5*5卷积在几百个filter的卷积层上做卷积操作时相当耗时,所以1*1卷积在3*3卷积或者5*5卷积计算之前先降低维度。

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

1、降维( dimension reductionality )。比如,一张500 * 500且厚度depth为100 的图片在20个filter上做1*1的卷积,那么结果的大小为500*500*20。

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