卷积核函数的选择

卷积核函数的尺寸并没有一个严格的限制, 
那么选择核函数有什么标准了?? 而且看到很多成熟的卷积网络经常使用1*1的卷积核函数,它的作用又是什么了?

1*1卷积核函数的作用

很多卷积神经网络中都会使用1*1的卷积核函数:resNet,GoogleNet。1×1卷积核只有一个参数,这个核在输入上滑动,就相当于给输入数据乘以一个系数。(对于单通道和单个卷积核而言这样理解是可以的),看起来好像并没有什么意义,那它为什么还作用这么广泛了?可以从如下几个方向理解: 
1、实现跨通道的交互和信息整合。比如输入是多通道的,由卷积神经网络计算方式可知,对于单一卷积核函数:当前位置的输出值,是由多个通道上的卷积结果相加然后再取激活函数值得到的。所以卷积核函数的尺寸是1*1的话,他可以整合多个通道的信息,而不会改变输入的大小。 
2、卷积网络通道数目的升降,由于输出的通道数目是由卷积核函数的数目决定的,所以使用1*1的卷积核,在不改变输入大小的情况下,可以任意增减输出的通道数目。 
其余的特性,其实都是由上面两个特性演变而来,不做过多的描述

小的卷积核

这里写图片描述 
上左图:假设卷积核函数的尺寸为3*3,第一层的卷积核函数可以看到原始输入的3*3区域,第二层卷积核可以看到原始输入的5*5区域。所以两层3*3的卷积核函数和使用一层5*5卷积核函数效果差不多,但是其使用参数的比直接使用5*5要少,而且两个非线性函数拟合程度比直接使用一个非线性函数丰富。也可以使用下图说明: 
这里写图片描述

结论

几个小的卷积核(例如3*3)叠加(stack)在一起,相比一个大的卷积核(例如7*7),与原图的连通性不变,但是却大大降低了参数的个数以及计算复杂度!!! 
例如:我们还可以搞个100*100的卷积核,它可以刻画几乎任何复杂的形状。但是,复杂度太太太高。或许搞20个3*3的叠加就可以复现上面的任何形状。 
这不仅可以减少参数的数目,减少计算的复杂度。而且刻画的线性方程更加丰富。

神经网络喜欢小而深,厌恶大而短,这里指的是卷积核大小和深度学习层数。

猜你喜欢

转载自blog.csdn.net/hellocsz/article/details/80764939