在 2014 年 ILSVRC 比赛中,VGGNet 获得了当时的第二名的成绩,那么第一名是谁呢?当时的 VGGNet 就已经很厉害了,难得同届选手还有更厉害的?很不巧,还真有。当年度取得冠军的方案网络由谷歌团队研发,并且为了致敬 Yann Lecun 的 LeNet-5,将其命名为 GoogLeNet。GoogLeNet 在借鉴 1x1 卷积思想的基础上,通过滤波器组合构建 Inception 模块,使得网络可以走向更深且表达能力更强。从 2014 年获得当届 ILSVRC 冠军的 Inception v1 到现在,光 Inception 网络就已经更新到 v4 了,而后基于 Inception 模块和其他网络结构的组合而成的网络就更多了,比如说 Inception Resnet。
1x1 卷积
通过前面的学习大家都知道卷积操作是卷积神经网络的核心操作了,在之前我们通常会用到各种尺寸的卷积核,比如说 3x3 卷积、5x5 卷积、7x7 卷积等等。但今天我们需要提一下 1x1 卷积。这似乎有些蠢,直观上理解 1x1 卷积好像没什么用,就是简单的数字相乘而已,对于通道数较小的图片确实如此,但如果我们考虑一个 6x6x32 的图片呢?
考虑用一个 1x1x32 的卷积核对 6x6x32 的图片进行卷积。如下图所示,具体而言就是计算左图中 32 个数字和卷积核中 32 个数字对应元素乘积之和,然后进行激活操作。
滤波器中的通道数 32 可以这么理解:一个神经元的输入是 32 个数字,对输入图像做一个切片的话,即相同高度和宽度上某一切片上的 32 个数字具有不同的通道数,乘以滤波器的 32 个数字权重,然后应用激活函数得到 1x1 卷积结果。所以从这个角度看我们可以将 1x1 卷积理解为对这个不同通道上的 32 个数字应用一个全连接层,这个全连接层输入 32 个数字,输入为 6x6x滤波器个数。