SpinalNet:带有渐进输入的深度神经网络.
0. TL; DR
本文研究了人类的体感神经系统,并设计了一种名为SpinalNet的新型神经网络,旨在以更少的计算量实现更高的准确性。在SpinalNet中,每一层被分为三个部分:输入部分、中间部分和输出部分。输入部分接收一部分原始输入数据,中间部分接收来自前一层中间部分的输出和当前层输入部分的输出,输出层汇集所有中间部分的加权输出。
实验结果表明,在大多数DNN中,使用SpinalNet可以显著减少误差并降低计算成本。使用SpinalNet作为分类层的VGG-5网络,在QMNIST、Kuzushiji-MNIST和EMNIST等多个手写字符识别数据集上通过传统学习方式取得了SOTA的性能。而在STL-10、Fruits 360、Bird225和Caltech-101等数据集上,结合ImageNet预训练权重的SpinalNet也取得了SOTA性能。
1. 背景介绍
深度神经网络(DNN)在各个科学和工程领域都取得了顶尖的性能。DNN 通常具有大量的输入特征,因为考虑更多的参数通常可以提高预测的准确性。然而,这带来了一些挑战。第一个隐藏层的规模至关重要:一个太小的隐藏层无法有效传播所有输入特征,而一个太大的隐藏层会急剧增加网络中的权重数量,导致计算成本过高。此外,传统DNN 还面临“梯度消失”(vanishing gradient)的问题。当网络层数很深时,靠近输出层的参数梯度很大,而靠近输入层的参数梯度则变得微不足道,这使得DNN的训练变得困难。
人类大脑通过体感神经系统从皮肤接收大量信息,例如触觉、热量、振动等。这个系统通过复杂的神经丛和脊髓将信号传递给大脑。受到这种“渐进式”和分布式信息处理方式的启发,以及卷积神经网络(CNN)模仿猫的视觉皮层并取得巨大成功的先例,作者旨在开发一种具有渐进式输入的神经网络。
现有的解决方案,如ResNet和DenseNet,通过引入快捷连接(shortcut connections)来缓解梯度消失问题,但它们也存在各自的局限性,如特征重用递减或计算成本过高。AdaNet虽然可以在训练中自适应地调整网络结构,但对于深度网络来说计算量巨大。
本文提出的SpinalNet通过模仿人类脊髓的几个特征,旨在以更少的参数和计算开销来提升性能,特别是作为大型CNN模型中的全连接层。
2. SpinalNet 网络
SpinalNet的设计灵感来源于人类体感神经系统,特别是脊髓处理信息的方式。

2.1 与人类体感系统的类比
SpinalNet模仿了人类脊髓的以下几个特点:
- 渐进式输入和神经丛(Gradual input and nerve plexus):人类的触觉信号不是一次性全部汇集到脊髓的某一点,而是通过复杂的神经丛网络,逐渐地、分布式地输入到脊髓的不同位置。SpinalNet通过将总输入分割,并在每一层都引入一部分原始输入,来模拟这种渐进式的信息接收方式。
- 局部输出与全局影响(Voluntary and involuntary actions):在人类神经系统中,一些简单的反射动作(非自主运动)可以在脊髓层面直接完成,而更复杂的决策则需要大脑的参与。在SpinalNet中,每一层的中间部分可以看作是在进行“局部”处理,其输出直接贡献给最终的“全局”输出层。
- 权重可重构性(Attention to pain intensity):人类大脑可以调节脊髓神经元,以增强或减弱对疼痛的敏感度。类似地,SpinalNet中的权重在训练过程中会根据数据进行调整,以优化其性能。
2.2 SpinalNet的结构
一个典型的SpinalNet由多个“脊髓层”(spinal layer)组成,每一层都包含三个部分:
- 输入部分(Input split):在网络的开始,总输入$X$被分割成多个部分,例如$X[1:k], X[k:2k], \dots$。每一层的输入部分接收其中一部分分割后的输入。
- 中间部分(Intermediate split):第一层的中间部分只接收第一部分的输入。从第二层开始,每一层的中间部分同时接收两个来源的输入:1) 前一层中间部分的输出;2) 当前层输入部分的输入。
- 输出部分(Output split):将所有中间部分的输出进行加权求和,得到最终的网络输出。
由于每一层的中间神经元只接收一部分原始输入和前一层的输出,其输入的维度远小于传统全连接层中神经元的输入维度。这大大减少了网络所需的乘法运算次数和参数量。
2.3 SpinalNet的通用近似性证明
为了证明SpinalNet作为一个新的网络架构具有通用近似能力(即能够拟合任何连续函数),作者采用了一种直观的等价性证明方法,而非复杂的数学推导。
证明思路:一个具有足够宽度的单隐藏层神经网络是通用近似器。如果可以证明一个足够深的SpinalNet等价于一个足够宽的单隐藏层神经网络,那么SpinalNet也是通用近似器。
证明过程:一个简化的两层SpinalNet(图a),如果将其第一层的激活函数设为线性(或近似为线性),并且切断某些连接(通过将权重设为0),那么这个两层的SpinalNet可以等价地看作一个包含两个隐藏神经元的单隐藏层网络(图b)。同理,一个四层的SpinalNet(图d)可以等价于一个包含四个隐藏神经元的单隐藏层网络(图c)。以此类推,一个足够深的SpinalNet就可以等价于一个足够宽的单隐藏层神经网络。由于后者是通用近似器,因此SpinalNet也具有通用近似能力。

3. 实验分析
作者在回归和分类任务上对SpinalNet的有效性进行了验证。
3.1 回归任务
在一个8变量的回归问题上,比较SpinalNet与一个传统的两层前馈神经网络的性能。两个网络具有相同的总神经元数,但SpinalNet的乘法运算次数和参数量都减少了约35%。
在四种不同的回归函数(如$\sum x$和$\sin(\prod x)$)上,SpinalNet在8个比较场景中的6个场景里取得了更低的均方误差(MSE)。这表明SpinalNet在回归任务上可以用更少的计算成本达到相当或更好的性能。

3.2 分类任务:从随机初始化开始学习
作者在多个图像分类数据集上,将SpinalNet作为CNN的全连接(FC)层,并与使用传统FC层的CNN进行比较。
- MNIST系列数据集 (MNIST, Fashion-MNIST, KMNIST, QMNIST, EMNIST):在一个简单的CNN模型中,使用SpinalNet作为FC层,相比传统FC层,在所有MNIST系列数据集上都取得了显著的错误率降低,同时参数量更少。将SpinalNet FC层与更强大的VGG-5网络结合,在Kuzushiji-MNIST、QMNIST、EMNIST (Digits)、EMNIST (Letters)和EMNIST (Balanced)五个数据集上均取得了当时的state-of-the-art(SOTA)性能。
- CIFAR-10 和 CIFAR-100 数据集:当与VGG-19网络结合时,SpinalNet FC层相比传统FC层,在CIFAR-10和CIFAR-100上都取得了更高的准确率,同时参数量显著减少。例如,在CIFAR-100上,准确率提升的同时,FC层的乘法运算次数减少到原来的7%。然而,SpinalNet并未能提升ResNet-18的性能,作者推测这可能是因为SpinalNet增加的层数影响了ResNet原始结构中的梯度流。

2.3 分类任务:使用迁移初始化学习
为了解决SpinalNet在ResNet上表现不佳的问题,作者采用了“迁移初始化”(Transferred Initialization)策略。即使用在ImageNet上预训练好的VGG-19和Wide-ResNet-101模型作为初始权重,然后用SpinalNet替换其FC层,并在目标数据集上对整个网络进行端到端训练(不冻结任何层)。
迁移初始化策略成功地发挥了SpinalNet的优势,使其在多个具有挑战性的彩色图像数据集上与强大的CNN骨干网络结合,取得了顶尖的性能。
