趋近智
VGG等网络显示了增加深度的优势。这带来了一个新的难题:如何在不显著增加计算成本和参数 (parameter)数量的情况下,提高网络能力(包括深度和宽度)。简单地堆叠更多相同层是一种方法。然而,另一种观点则对每层内部操作的单一性提出了疑问。如果一个层能够同时执行多种不同的变换,并让网络自己学习哪些是最有用的,那会怎么样呢?这便引出了网络中的网络(NIN)和Inception架构背后的思想。
在研究著名的Inception模块之前,了解林等人于2013年提出的相关网络中的网络(NIN)思想会有帮助。传统的卷积层使用线性滤波器,然后是非线性激活函数 (activation function)(如ReLU)。NIN论文认为,这些线性滤波器可能不足以捕获局部感受野内复杂、抽象的特征。
他们提出的解决方案是用每个卷积层内的“微网络”取代简单的线性滤波器。这个微网络通过多层感知机(MLP)实现。在CNN的背景下,一个在局部感受野内跨通道操作的MLP可以通过卷积高效地实现。
请记住,卷积在单个空间位置(窗口)上操作,但会处理所有输入通道。如果您有个输入通道,并应用个大小为的滤波器,则该空间位置的输出将有个通道。每个输出通道的值都是该特定位置上所有输入通道的加权和(后接激活)。这本质上是一个在每个空间位置独立应用的完全连接层,作用于通道维度。
NIN使用这些卷积(有时堆叠)在主要空间聚合之前创建通道之间更复杂的关系。
NIN的第二个重要贡献是将最终的、通常参数 (parameter)量大的全连接层替换为全局平均池化(GAP)。GAP不是将最终的特征图展平并输入到大型密集层中,而是计算每个特征图通道在其整个空间维度()上的平均值。这会产生一个向量 (vector),长度等于最终卷积层中的通道数。这个向量通常直接输入到softmax层进行分类。GAP显著减少了参数数量,作为一种结构正则化 (regularization)器防止过拟合 (overfitting),并促使特征图与类别之间建立更紧密的联系。
GoogLeNet架构由Szegedy等人于2014年提出(ILSVRC 2014的获胜者),使得Inception模块备受关注。Inception背后的核心思想是允许网络在一个层中同时捕获多个空间尺度的特征。
Inception模块不是为卷积层选择单一的滤波器尺寸(例如或),而是在同一输入特征图上并行执行多个不同滤波器尺寸(、、)的卷积。它通常也包含一个并行的最大池化操作。这些并行分支的所有输出随后沿通道维度进行拼接,构成Inception模块的输出。
原始Inception模块(GoogLeNet v1)的简化表示。它具有不同滤波器尺寸和池化的并行分支。请注意,在和卷积之前以及池化层之后,都使用了卷积作为瓶颈层。
Inception模块的一个朴素实现,即多个大滤波器卷积并行运行,在计算上会非常昂贵。例如,直接对具有许多通道(例如256个)的输入应用卷积会导致大量的操作。
效率上的重要改进,部分受NIN中思想的启发,是在昂贵的和卷积之前使用**卷积作为瓶颈层**。
假设Inception模块的输入特征图有256个通道。在应用卷积(可能输出128个通道)之前,首先应用一个卷积以显著降低输入通道维度(例如,降至64个通道)。然后卷积在这个小得多的特征图上操作。
操作顺序如下:
与直接对256通道输入应用卷积相比,这显著减少了所需的乘法次数。在卷积之前也使用了类似的瓶颈。最大池化层之后通常也会应用一个卷积,以便在拼接之前调整其通道维度。
NIN和Inception都大量使用卷积,尽管主要原因略有不同:
然而,它们的好处有重叠之处。Inception中的瓶颈也充当通道特征池化器并增加了非线性(通过其激活函数 (activation function)),有助于生成更丰富的特征表示,这与NIN的思想相似。
Inception模块设计的主要优点包括:
Inception架构代表了一种趋势,即设计更复杂、更精巧的网络结构,以优化准确性和计算资源之间的平衡。ResNet侧重于通过跳跃连接实现更大的深度,而Inception则侧重于通过并行、多尺度处理(由瓶颈层提升效率)来增加层内部的表示能力。理解这些不同的设计思想十分必要,因为我们将考察现代架构如何经常结合这两种方法中的元素。
这部分内容有帮助吗?
© 2026 ApX Machine LearningAI伦理与透明度•