引言
深度学习模型的设计直接影响了生成内容的质量和效率。传统的卷积神经网络(CNN)通过卷积和池化层逐步提取特征,但随着任务复杂度的增加,单一的线性层难以有效捕获高阶特征。NiN通过在卷积网络中引入全局平均池化和逐层的全连接网络,以更有效的方式提取数据的非线性特征,从而提升了模型的表达能力。
1. 介绍
前面文章讲到的LeNet、AlexNet和VGG都有一个共同的设计模式:通过一系列的卷积层与汇聚层来提取空间结构特征;然后通过全连接层对特征的表征进行处理。 AlexNet和VGG对LeNet的改进主要在于如何扩大和加深这两个模块。 或者,可以想象在这个过程的早期使用全连接层。然而,如果使用了全连接层,可能会完全放弃表征的空间结构。 网络中的网络(NiN)提供了一个非常简单的解决方案:在每个像素的通道上分别使用多层感知机
参考文献: Lin, M., Chen, Q., & Yan, S. (2013). Network in network. arXiv preprint arXiv:1312.4400.
2. NiN概述
NiN(Network in Network) 由Min Lin等人于2013年提出。其核心思想是在卷积层之后加入多层感知机(MLP),实现更复杂的特征表达能力。NiN在保持模型计算效率的同时,增强了非线性建模能力,使其在多个任务上都表现出色。
2.1 NiN的架构
NiN主要由以下三部分组成:
- MLPConv层:在传统的卷积操作后,增加一个逐点卷积,即1x1卷积。这样每个像素点可以通过MLP进行非线性映射。
- 全局平均池化层(Global Average Pooling):替代了传统的全连接层,减少了参数量,同时避免了过拟合。
- 分类器:通过Softmax层进行分类输出。
2.2 NiN相较于传统CNN的优势
- 参数减少:传统CNN使用大量的全连接层,容易导致过拟合。而NiN使用全局平均池化,显著减少了参数数量。
- 非线性特征提取:1x1卷积允许模型在每个像素点进行非线性处理,大大增强了特征表达能力。
- 防止过拟合:通过减少全连接层的使用以及参数量,NiN能够在训练小数据集时表现更好。
3. NiN的技术原理解析
3.1 MLPConv层
MLPConv层的关键在于1x1卷积,其主要功能是对卷积层输出的特征图进行逐像素的全连接。这种设计使得网络能够学习到更加丰富和复杂的特征。
设输入特征图为 ,其中:
- 为输入通道数,
- 和 分别为特征图的高度和宽度。
1x1卷积操作的输出可以表示为:
对于每个输出通道 :
- 是1x1卷积核的权重,
- 是偏置项。
1x1卷积的作用是将输入的每个像素与所有输入通道的权重相乘,并将结果相加,从而实现逐像素的全连接。这可以理解为在空间上对每个像素点进行全连接,而不是在通道上。
3.2 全局平均池化(GAP)
全局平均池化层(Global Average Pooling)通过计算每个特征图的平均值来替代传统的全连接层。这一操作使得每个特征图都汇聚为一个单一的数值,从而简化了模型并减少了过拟合的风险。
假设卷积层的输出为 ,其中:
- 为通道数,
- 和 为特征图的高度和宽度。
GAP的输出 的计算过程为: