Hebbian principle和Multi-scale processing是inception-V1的理论基础。Hebbian principle是神经科学中的名词,被概括为神经元”fire together, wire together”的特性。即是相关性高的神经元将一同兴奋。对于机器学习而言,一种好的方法是将类似的神经元聚集在一起。Multi-scale processing是来自于一种直觉,那就是同一物体在照片中的尺度有可能有很大不同,因此机器学习算法需要同时学习同一物体在不同尺度上的特征。要想理解Inception-V1的设计哲学,就需要从这两个方面理解网络结构。
要理解Hebbian principle,首先要从人体神经系统的特点说起。人体神经网络的连接是比较稀疏的,而传统的人造神经网络的层与层之间的连接是比较紧密的。卷积本身就是一种稀疏的表示,因为卷积可以看做除卷积核之外,其余部分的连接权重为0的一种全连接。
早期的卷积之间的连接是随机而稀疏的,例如LeNet中,S2与C3层的连接如下图所示。
然而,由于这种稀疏连接的feature map只具有很低的计算效率。这种方式在AlexNet中被摒弃,全连接的卷积层又成为了CNN的主流连接方式。
由此看来我们面对了一个相当严重的trade-off。如果希望模拟人类的神经系统,我们需要稀疏连接,当如果需要高的计算效率,我们需要紧密连接。解决这一问题的曙光来自于Arora的一篇文章,这篇文章的主要贡献之一被Inception作者总结为
Their main result states that if the probability distribution of the dataset is representable by a large, very sparse deep neural network, then the optimal network topology can be constructed layer
after layer by analyzing the correlation statistics of the preceding layer activations and clustering neurons with highly correlated outputs.
就是说,在一些前提条件下,最佳的网络拓补结构能够靠逐层分析前置层**值并且聚集高相关的网络输出获得。这个结论需要很强的前提才能成立,但是在不满足这样的前提时,也有付诸实践的可能,因为这与神经科学中的Herbbian principle相契合,即相关性高的神经元将一同被**(fire together, wire together)。由此,作者认为,不一定需要拘泥于网络的稀疏表示,致密的结构一样能够近似或者涵盖稀疏表示的结果。
The main idea of the Inception architecture is to consider how an optimal local sparse structure of a convolutional vision network can be approximated and covered by readily available dense components
另一方面,Arora在他的文章中推荐的建构神经网络的方式是逐层建构,后一层的依据前一层的输出设计,并且将相关性高的部分聚集在一起。由此诞生了GoogLeNet的建构方式:建构局部的最优结构,然后重复堆叠它。看来,要充分理解Inception-V1的设计理念还需要去看看Arora的文章。
Inception-V1的第二个理论基础:Multi-scale processing很好理解。同一类物体在图像中的大小区别很大,因而作者希望模型能够同时学习不同尺寸的特征。
综合以上,作者提出了Inception结构。作者用多个大小形状不同的卷积核同时卷积上一层的输出,然后将输出的feature map联合起来,可以看到,不同卷积核的输出是相关的,他们的输出被聚集在一起形成了feature map,这与Herbbian principle要求的将相关性高的神经元聚集在一起的要求相符合。同时,inception没有使用稀疏连接,由此不会导致计算性能的下降。不同尺寸的卷积核的感受野不同,这又符合multi-scale processing的理念。
naive Inception (上图(a))带来了一个通道数爆炸的问题。假设prev layer的通道数是N,而所有卷积核,池化层输出的通道数都等于输入,那么输出通道数就会是4N。因而加入1x1卷积核减少通道数,再通过卷积核(上图(b))。限制通道数的另一个方法是使3x3和5x5卷积核输出通道数为一个小于输入通道数的数字。但是使用1x1的卷积核能够减少参数个数。我们先假设使用减少大卷积核的通道数的方案,设5x5通道输出通道数为N/2,那么在不考虑bias的情况下,5x5卷积核的参数个数为5x5xNxN/2=12.5N^2。如果使用先1x1卷积核降维,再用输入与输出同等大小的5x5卷积核的方案,那么我们需要的参数个数是1x1xNxN/2+5x5xN/2xN/2=6.75N^2,差不多是原来的一半。另外,1x1卷积能够引入额外的non-linear。