瓶颈块是一种用于深度神经网络中的特殊残差块,尤其在ResNet架构中应用广泛。它由微软研究院的研究人员(包括何恺明、张祥雨、任少卿和孙剑)于2015年为图像识别任务提出,由此产生的网络赢得了当年ImageNet大规模视觉识别挑战赛(ILSVRC)。该块的设计旨在降低计算成本,同时保持表征能力,使得训练具有数百层的极深网络成为可能。
瓶颈块是对标准残差块的改进。在标准残差块中,函数\(F(x)\)通常由两到三个卷积层堆叠而成。瓶颈块将其替换为三层堆叠:一个1x1卷积用于降低通道维度,一个3x3卷积在降维后的特征上操作,以及另一个1x1卷积用于恢复原始通道维度。与直接使用两个3x3卷积相比,这种设计减少了参数数量和浮点运算次数(FLOPs),同时保留了学习复杂特征的能力。
架构
瓶颈块由三个卷积层组成。第一层是1x1卷积,将通道数按因子(通常为4)减少。例如,如果输入有256个通道,第一个1x1卷积将其减少到64个通道。第二层是3x3卷积,在这些64个通道上操作,进行空间特征提取。第三层是另一个1x1卷积,将通道数恢复为256。块的输入通过残差连接与输出相加,这是一种绕过卷积层的恒等映射。
残差连接定义为\(y = F(x) + x\),其中\(F(x)\)是三层堆叠的输出。由于输入和输出具有相同维度,这种加法是可行的。如果输入和输出维度不同(例如,当块改变通道数时),则使用投影连接:\(y = F(x) + P(x)\),其中\(P(x)\)通常是步长为2的1x1卷积,以匹配空间维度。
瓶颈块用于ResNet-50、ResNet-101和ResNet-152,这些是原始ResNet-34的更深变体。在这些网络中,瓶颈块替换了较浅版本中使用的两层残差块。计算量的减少使得网络可以拥有更多层,而无需按比例增加训练时间或内存使用。
动机
瓶颈块的主要动机是计算效率。在具有两个3x3卷积的标准残差块中,对于给定输入通道数\(C\),参数数量为\(2 \times 9 \times C^2 = 18C^2\)。在瓶颈块中,参数数量为\(1 \times 1 \times C \times (C/4) + 3 \times 3 \times (C/4) \times (C/4) + 1 \times 1 \times (C/4) \times C = C^2/4 + 9C^2/16 + C^2/4 = (8/16 + 9/16)C^2 = 17C^2/16\),约为1.06C^2,即标准块参数量的约6%。对于大通道数,这种减少是显著的。
瓶颈设计也有助于训练稳定性。通过减少参数数量,该块降低了过拟合风险,并允许更深的网络。残差连接作为该块的关键组成部分,有助于缓解梯度消失问题,从而有效训练具有数百层的网络。
与残差网络的关系
瓶颈块是残差块概念的一种具体实现。残差连接在原始ResNet论文中引入,该论文表明在网络的层中添加恒等映射可以训练极深的网络。瓶颈块是对这一思想的优化,使得训练50、101或152层的网络变得可行。
在残差网络中,层学习相对于层输入的残差函数。瓶颈块遵循这一原则:三个卷积层学习残差\(F(x)\),输出为\(F(x) + x\)。这使得网络在需要时可以学习恒等映射,这对优化是有益的。
瓶颈块在ResNet中的成功影响了许多后续架构。例如,U-Net在其编码器-解码器结构中使用残差连接,Transformer模型在其注意力层和前馈层中使用残差连接。瓶颈概念也已应用于其他领域,如大型语言模型和生成式AI模型。
计算效率
瓶颈块的计算效率以FLOPs(浮点运算次数)衡量。对于大小为\(H \times W \times C\)的输入张量,具有两个3x3卷积的标准残差块大约需要\(2 \times 9 \times C^2 \times H \times W\)次FLOPs。具有缩减因子4的瓶颈块大约需要\(1 \times 1 \times C \times (C/4) \times H \times W + 3 \times 3 \times (C/4) \times (C/4) \times H \times W + 1 \times 1 \times (C/4) \times C \times H \times W = (C^2/4 + 9C^2/16 + C^2/4) \times H \times W = (17C^2/16) \times H \times W\)次FLOPs。这约为标准块FLOPs的6%。
这种减少对于在内存或计算资源有限的硬件上训练尤为重要,例如AWS实例或Google Cloud TPU。它还支持更快的推理,这对实时应用至关重要,如Waymo的自动驾驶汽车或特斯拉自动驾驶。
变体与改进
已提出了瓶颈块的几种变体。一种常见的变体是预激活瓶颈,其中批归一化和激活函数在卷积之前应用,而不是之后。后来的研究表明,这可以改善训练和正则化。
另一种变体是倒置瓶颈,用于MobileNetV2等模型。在这种设计中,1x1卷积首先扩展通道维度,然后深度可分离的3x3卷积在扩展后的维度上操作,另一个1x1卷积将其缩减回去。这与标准瓶颈相反,但对于移动和嵌入式设备更高效。
在批归一化和层归一化中,瓶颈块通常在卷积之间包含归一化层。残差连接有助于稳定层输入的方差,一些工作建议将残差连接缩放\(1/L\),其中\(L\)是残差层的总数,以进一步稳定训练。
应用
瓶颈块用于许多最先进的模型中。在计算机视觉中,它是ResNet的核心构建块,广泛用于图像分类、目标检测和分割。例如,直觉外科使用深度学习进行医学图像分析,Fermata使用计算机视觉进行农业应用。
在自然语言处理中,残差连接用于Transformer模型,这些模型是大型语言模型的基础,如OpenAI的GPT和Anthropic的Claude。虽然这些模型不使用1x1卷积,但残差连接的概念借鉴自ResNet。
在强化学习中,带有瓶颈块的ResNet架构已用于DeepMind的AlphaGo Zero和AlphaStar等系统,这些系统使用残差网络处理棋盘状态或游戏画面。
对深度学习的影响
瓶颈块对深度学习领域产生了重大影响。通过实现极深网络的训练,它促进了图像识别及其他任务的快速进展。使用1x1卷积减少计算的思想已被许多后续架构采用,包括U-Net和各种生成模型。
残差连接作为瓶颈块的关键组成部分,已成为神经网络设计中的标准模式。它用于Transformer模型、大型语言模型及许多其他架构。瓶颈块是架构创新如何带来性能和效率显著提升的一个典型例子。