“深度”是深度神经网络(DNN)的关键词。但网络越深也就意味着,训练时反向传播的链条更长,推理时顺序计算步骤更多、延迟更高。
而深度如果不够,神经网络的性能往往又不好。
这就引出了一个问题:是否有可能构建高性能的“非深度”神经网络?
普林斯顿大学和英特尔最新的论文证明,确实能做到。
他们只用了 12 层网络 ParNet 就在 ImageNet 上达到了接近 SOTA 的性能。
ParNet 在 ImageNet 上准确率超过 80%、在 CIFAR10 上超过 96%、在 CIFAR100 上 top-1 准确率 达到了 81%,另外在 MS-COCO 上实现了 48% 的 AP。
他们是如何在网络这么“浅”的情况下做到的?
并行子网提升性能
ParNet 中的一个关键设计选择是使用并行子网,不是按顺序排列层,而是在并行子网中排列层。
ParNet 由处理不同分辨率特征的并行子结构组成。我们将这些并行子结构称为流(stream)。来自不同流的特征在网络的后期融合,这些融合的特征用于下游任务。
在 ParNet 中,作者使用 VGG 样式的块。但是对于非深度网络来说,只有 3×3 卷积感受野比较有限。
为了解决这个问题,作者构建了一个基于 Squeeze-and-Excitation 设计的 Skip-Squeeze-Excitation (SSE) 层。使用 SSE 模块修改后的 Rep-VGG 称之为 Rep VGG-SSE。
对于 ImageNet 等大规模数据集,非深度网络可能没有足够的非线性,从而限制了其表示能力。因此,作者用 SiLU 激活函数替代了 ReLU。
除了 RepVGG-SSE 块的输入和输出具有相同的大小外,ParNet 还包含下采样和融合块。
模块降低分辨率并增加宽度以实现多尺度处理,而融合块组合来自多个分辨率的信息,有助于减少推理期间的延迟。
为了在小深度下实现高性能,作者通过增加宽度、分辨率和流数量来扩展 ParNet。
作者表示,由于摩尔定律放缓,处理器频率提升空间也有限,因此并行计算有利于神经网络实现更快的推理。而并行结构的非深度网络 ParNet 在这方面具有优势。
实际性能如何
在 ImageNet 数据集上,无论是 Top-1 还是 Top-5 上,ParNet 都接近 SOTA 性能。
在 MS-COCO 任务中,ParNet 在性能最佳的同时,延迟最低。
不过也有人质疑“非深度网络”的实际表现,因为虽然层数少,但网络宽度变大,实际上 ParNet 比更深的 ResNet50 的参数还要多,似乎不太有说服力。
但作者也表示“非深度”网络在多 GPU 下能发挥更大的并行计算优势。
最后,ParNet 的 GitHub 页已经建立,代码将在不久后开源。
参考链接:
[1]https://arxiv.org/abs/2110.07641
[2]https://github.com/imankgoyal/NonDeepNetworks