典型卷积神经网络模型结构的演进
引言
如何教机器学会看这个世界?生物的视觉认知过程带给了我们诸多启示,1981年的诺奖研究揭示了生物通过多层视细胞对视觉刺激进行逐层处理,从而理解复杂的视觉特征并形成高层次的语义认知的机制。这项研究极富启发性,8年后的1989年卷积神经网络的雏形首次被Yann Lecun提出,直至今日,卷积神经网络这一计算机视觉中最基本和最重要的模型,已走过了堪堪三十年,一般人或许不知道它的来历,也不知道它在1998年后经历过怎样的低潮,但会始终记得2012年AlexNet在ImageNet 2012图像分类大赛上一举夺魁这里程碑式的事件,以及随后近十年来深度学习和人工智能迎来的爆发式发展。卷积神经网络自2012年崭露头角到现在的广泛应用,其基本模型结构经历了数个阶段的发展,而了解这些发展的关键节点不仅有利于更好地了解卷积神经网络结构设计的一般规律和准则,也能让我们更深入地理解机器视觉的认知过程。在该讲中,我们将较为具体地梳理卷积神经网络结构自AlexNet起到近两年来数个发展的里程碑,帮助读者对整个发展流程中的各种逻辑有一个清晰的认识。
问题
请简述卷积神经网络在近几年来从AlexNet开始到ResNeXt的主要发展。
分析与解答
AlexNet [1] 是第一个提出的实用于图像分类的卷积神经网络,其核心是堆砌卷积和池化层,激活函数设置为修正线性单元(Rectified Linear Unit, ReLU),引入了局部响应归一化(Local Response Normalization, LRN),并在网络末端加入全连接层,利用Softmax函数进行多分类。使用ReLU替代此前的Sigmoid函数很好的抑制了网络较深的情况下在训练时的梯度消失问题。AlexNet还应用了Dropout和简单的数据增强措施(PCA噪声和随机水平翻转)来提升训练效果,并应用了分组卷积来突破GPU的显存瓶颈(当时使用的计算硬件为Nvidia GTX580,显存3GB)。AlexNet首次亮相即在ILSVRC 2012图像分类任务中达到了15.3%的top-5错误率,大大强过了其它的传统方法。
VGG系列网络 [2] 在AlexNet的基础上,用3×3卷积核替代了之前的5×5和7×7等大卷积核,并用2×2池化核代替3×3的大池化核,大大加深了网络深度达到近20层,并扩宽特征图,使得模型架构更深更宽,同时通过结合多个卷积网络的输出进行集成(Ensemble),最终在ILSVRC 2012图像分类任务上达到了6.8%的top-5错误率。
GoogleNet 即为 Inception-v1 [3] ,Inception系列网络在VGG简单堆砌3×3卷积的基础上详细地探索了网络结构设计原则。作者认为,网络性能和表达能力正相关于网络深度和参数总量,但过深的网络和过多的参数会带诸如过拟合,梯度消失或爆炸,应用场景受限等问题。一种改进现有网络结构的手段是将全连接和卷积等密集连接结构转化为稀疏的连接形式,因为这可以降低计算冗余度,精简计算量,同时维持现有网络的表达能力,而且自然界生物的神经连接也大都是稀疏的。Inception系列网络据此提出了Inception模块,其数学依据是一个大型稀疏矩阵通常可以分解为小的密集子矩阵,以此来近似稀疏结构。Inception模块相当于将一个大通道数的卷积层替换为了由多个小通道卷积层组成的多路结构,其概览图(Inception-v1)如 Fig. 1 所示,Inception-v1同时使用1×1,3×3,5×5三种卷积核进行多路特征提取,模拟稀疏连接,同时也可以增强网络对多尺度特征的适应性。此外Inception-v1还首次提出了瓶颈(Bottleneck)结构,即在大卷积核的卷积层之前先使用1×1卷积对通道进行压缩以减少计算复杂度,以上多路特征提取和瓶颈结构的示意图见于 Fig. 1 。同时Inception-v1还在多个中间Inception Module的输出端拉出支线接上全连接和Softmax层进行分类,计算Loss,并反传梯度,以缓解梯度消失。Inception-v1最终在ILSVRC 2014的top-5错误率上低至了6.67%。
Figure 1: Inception-v1使用的Inception Block,
上图:简单版本,下图:带瓶颈版本
Figure 2: Sigmoid函数示意图
Inception-v3 [5] 提出了一种卷积分解的思路,首先,5×5卷积可以被分解为两个3×3卷积,以此类推(2k+1)×(2k+1)可以分解为k个3×3卷积。同样地,k×k卷积还可以分解为1×k卷积后接一个k×1卷积,以上的分解手段相对原本的大卷积核计算可以降低计算复杂度和参数量,同时将一层变为多层的策略,可以在感受野不变的情况下强化了网络特征提取能力。 Fig. 3 和 Fig. 4 展示了应用以上分解后Inception Block的变化。同时Inception-v3中首次尝试将输入图片尺寸由224×224扩大为了299×299,同时在应用标签平滑和多模型集成后在ILSVRC 2014上达到了3.50%的Top-5错误率,单模型错误率最低能达到4.2%,具体见文中讨论。
Figure 3:
大卷积核分解为多个小卷积核后的Inception Block
Figure 4:
等长宽卷积分解为行列卷积后的Inception Block
ResNet [6] 的提出是为了应对一种现象:随着网络层数的加深,网络的训练误差和测试误差同时上升,这被称为网络的退化(Degeneration),这显然不是过拟合,因为过拟合的标志之一是训练误差很低。为解决这个问题,ResNet首次提出了跳层连接(Shortcut Connection)的概念,即在网络中构筑多条"近道"。其目的一是为了缩短了各层接受到损失函数反向传播的路径总长,以有效抑制梯度消失的现象,从而使得网络在不断加深时性能不会下降。第二点可以这样理解:由于有"近道"存在,若网络在层数加深时性能退化,则它可以通过控制网络"近道"和非"近道"的组合比例来退回到浅层时的状态。ResNet跳层连接的提出使得现有网络结构可以毫无阻碍地进一步加深至百余层甚至千余层而且不用担心性能损失或训练困难,ResNet-152 在ILSVRC 2012上达到了单模型4.49%的Top-5错误率,采用多模型集成后可进一步降低到3.57%。
Inception-v4 [7] 在Inception-v3上的基础上,首先修改了网络初始几层的结构(文中称为Stem),同时提出了Inception-A,Inception-B,Inception-C,Reduction-A,Reduction-B等多个模块,对其进行叠加就得到了Inception-v4,以上子结构见于 Fig. 5 ,Inception-v4在ILSVRC 2012上的的单模型Top-5错误率可以低至3.8%。
Figure 5: Inception-v4网络分解图
同时该文中 [7] 还提出了直接应用残差网络跳层连接的Inception系列网络 Inception-ResNet-v1 和 Inception-ResNet-v2,引入残差结构可以显著加速Inception的训练,其模型分解图见 Fig. 6 ,这两个模型的单模型Top-5错误率最终可以达到4.3%和3.7%,使用三个Inception-ResNet-v2进行集成后可以进一步达到3.1%。
Figure 6: Inception-ResNet网络分解图
ResNeXt [8] 是对ResNet中残差块(Residual Block)结构的一个小改进,原残差块是一个瓶颈结构,如 Fig. 7 左部分所示,ResNeXt将其改为了 Fig. 7 中和右部分形式,即缩小了瓶颈比,将中间的卷积变为分组卷积。该结构可以在不增加参数复杂度的前提提高准确率,同时还减少了超参数的数量。ResNeXt的单模型top-5错误率在相同的计算复杂度下比ResNet能下降0.5%左右。
Figure 7: Residual Block和ResNeXt Block的对比
(左、中、右分别为Residule Block,原版ResNeXt Block和缩写版的ResNeXt Block)