典型卷积神经网络模型结构的演进

场景描述/引言

如何教机器学会看这个世界?生物的视觉认知过程带给了我们诸多启示,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×33\times 3卷积核替代了之前的5×57×75\times 5和7\times 7等大卷积核,并用2×22\times 2池化核代替3×33\times 3的大池化核,大大加深了网络深度达到近20层,并扩宽特征图,使得模型架构更深更宽,同时通过结合多个卷积网络的输出进行集成(Ensemble),最终在ILSVRC 2012图像分类任务上达到了6.8%的top-5错误率。

GoogleNet 即为 Inception-v1 [3] ,Inception系列网络在VGG简单堆砌3×33\times 3卷积的基础上详细地探索了网络结构设计原则。作者认为,网络性能和表达能力正相关于网络深度和参数总量,但过深的网络和过多的参数会带诸如过拟合,梯度消失或爆炸,应用场景受限等问题。一种改进现有网络结构的手段是将全连接和卷积等密集连接结构转化为稀疏的连接形式,因为这可以降低计算冗余度,精简计算量,同时维持现有网络的表达能力,而且自然界生物的神经连接也大都是稀疏的。Inception系列网络据此提出了Inception模块,其数学依据是一个大型稀疏矩阵通常可以分解为小的密集子矩阵,以此来近似稀疏结构。Inception模块相当于将一个大通道数的卷积层替换为了由多个小通道卷积层组成的多路结构,其概览图(Inception-v1)如Fig. 1所示,Inception-v1同时使用1×11\times 13×33\times 35×55\times 5三种卷积核进行多路特征提取,模拟稀疏连接,同时也可以增强网络对多尺度特征的适应性。此外Inception-v1还首次提出了瓶颈(Bottleneck)结构,即在大卷积核的卷积层之前先使用1×11\times 1卷积对通道进行压缩以减少计算复杂度,以上多路特征提取和瓶颈结构的示意图见于 Fig:1 。同时Inception-v1还在多个中间Inception Module的输出端拉出支线接上全连接和Softmax层进行分类,计算Loss,并反传梯度,以缓解梯度消失。Inception-v1最终在ILSVRC 2014的top-5错误率上低至了6.67%。
典型卷积神经网络模型结构的演进
典型卷积神经网络模型结构的演进Figure 1: Inception-v1使用的Inception Block,上:简单版本,下:带瓶颈版本

Inception-v2 [4]是在v1的基础上首次提出和应用了批量归一化(Batch Normalization),批量归一化的提出是为了改善深度神经网络训练的不稳定性,加速训练的收敛。它解决的是深度神经网络训练中的internal covariate shift问题,这个问题的本意是指由于测试集特征xtest\mathbf{x}_{test}和训练集特征xtrain\mathbf{x}_{train}的概率分布不一致,导致网络的测试误差恶化,泛化能力下降,同时也可以这样理解:深度神经网络的训练过程是为了使得网络输出y\mathbf{y}和输入x\mathbf{x}的条件分布Pθ(yx)P^{\mathbf{\theta}}(\mathbf{y}|\mathbf{x})逼近真实的条件分布Pt(yx)P^t(\mathbf{y}|\mathbf{x})。设网络各层的输出为yi=liθ(yi1)y_i=l_i^{\mathbf{\theta}}(y_{i-1})ii表征层数,则各层的输出和网络的输入的条件分布也应逼近一个特定的分布Pit(yix)P_i^t(\mathbf{y}_i|\mathbf{x})。在网络的训练过程中,由于参数更新θ=θ+Δθ\theta'=\theta+\Delta\theta,导致第ii层的参数也发生了变化,进而其输出yiy_i也会变化,进而yi+1=li+1θ(yi)y_{i+1}=l_{i+1}^{\mathbf{\theta}}(y_i)也会变化,从而使得Pi+1θ(yi+1x)P^\mathbf{\theta}_{i+1}(\mathbf{y}_{i+1}|\mathbf{x})偏离Pi+1t(yi+1x)P_{i+1}^t(\mathbf{y}_{i+1}|\mathbf{x}),由于该步中第i+1i+1层的参数更新是基于上一轮该层输出分布的偏离计算的,此时该层输入分布发生了改变,这轮参数更新的效果就不可预知了,这种分布的偏离和参数更新后果的不可预知性会向网络的后端传导,导致网络的训练振荡甚至发散。而批量归一化的主要作用即是确保某一层即使参数发生了变化,其输出的分布不产生较大的变化,即将各层的参数进行解耦,以稳定训练过程,让使用更大学习率进行训练成为可能,同时也能提升最终的训练效果。批量归一化可以视作是对其输入做了一个批(Batch)尺度的带参数的标准化,它有两个可训练参数γ\gammaβ\beta,这两个参数分别控制经标准化后这批数据的整体标准差和均值。假设一个单输入的简单场景,批量归一化可被描述为Eq. 1:
yib=γ(yiμ)σ2+ε+β y_i^b=\gamma\cdot\frac{(y_i - \mathbf{\mu})}{\sqrt{\sigma^2+\varepsilon}}+\beta

式中yiy_i为批归一化层的输入,ii表征其在批中的位置,yiby_i^b为其经批归一化后的输出,μ\muσ\sigma为这批数据的均值和标准差,ε\varepsilon是为防止σ\sigma00的一个小量。设置这两个可训练参数是为了防止简单对层输出做标准化对学习到的特征分布的破坏。一个简单的例子是,想象**函数为Sigmoid函数,其函数曲线如 Fig:2,可以看到它在2-2+2+2间近似是线性的,一批数据标准化后的值表征了它偏离均值多少个标准差,因此落在2-2+2+2之间的概率是非常大的,如果是正态分布这个概率就是95.44%,如果此时**函数恰为Sigmoid,该层的非线性**就仅相当于是一个单纯的线性映射,这会极大削弱模型的非线性特征提取能力和整体表达能力。这也是不简单地在每一层输出后应用标准化的原因,这两个参数的作用就是让标准化后的均值和方差偏离0和1,从而避免这种劣化的情形发生,并同时具备自我关闭能力,即若该层的存在导致了特征分布被破坏,或使得网络泛化能力恶化,这两个参数通过合适的设置可以使得网络回到之前没有这一层存在时的形态。Inception-v2最终在ILSVRC 2014上top-5错误率达到了4.80%。
典型卷积神经网络模型结构的演进
Figure 2: Sigmoid函数示意图

Inception-v3 [5]提出了一种卷积分解的思路,首先,5×55\times 5卷积可以被分解为两个3×33\times 3卷积,以此类推(2k+1)×(2k+1)(2k+1)\times (2k+1)可以分解为kk3×33\times 3卷积。同样地,k×kk\times k卷积还可以分解为1×k1\times k卷积后接一个k×1k\times 1卷积,以上的分解手段相对原本的大卷积核计算可以降低计算复杂度和参数量,同时将一层变为多层的策略,可以在感受野不变的情况下强化了网络特征提取能力。 Fig:3 和 Fig:4 展示了应用以上分解后Inception Block的变化。同时Inception-v3中首次尝试将输入图片尺寸由224×224224\times 224扩大为了299×299299\times 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-v1Inception-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)

除了上文介绍的网络结构,近两年来涌现出了许多优秀的分类网络模型如SENet,DPN,PolyNet,NASNet等,由于篇幅所限,这一部分就留待读者自己探索啦。本节的介绍主要着眼于卷积神经网络中最基本的分类模型,如果读者对其它更细化的应用问题如物体检测、实例分割、生成对抗网络、姿态检测、轻量级模型设计等等更感兴趣的话,不妨可以关注接下来的几章内容。另外,本问题只是书中众多章节的一个问题,更多对于卷积神经网络以及深度学习方法的细节讨论敬请期待本书正式出版。

[1] HINTON G E, KRIZHEVSKY A, SUTSKEVER I. Imagenet classification with deep convolutional neural networks[J]. Advances in neural information processing systems, 2012, 25: 1106–1114.
[2] SIMONYAN K, ZISSERMAN A. Very Deep Convolutional Networks for Large-Scale Image Recognition[J]. international conference on learning representations, 2015.
[3] SZEGEDY C, LIU W, JIA Y, 等. Going deeper with convolutions[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2015: 1–9.
[4] IOFFE S, SZEGEDY C. Batch normalization: Accelerating deep network training by reducing internal covariate shift[J]. arXiv preprint arXiv:1502.03167, 2015.
[5] SZEGEDY C, VANHOUCKE V, IOFFE S, 等. Rethinking the inception architecture for computer vision[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2016: 2818–2826.
[6] HE K, ZHANG X, REN S, 等. Deep residual learning for image recognition[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2016: 770–778.
[7] SZEGEDY C, IOFFE S, VANHOUCKE V, 等. Inception-v4, inception-resnet and the impact of residual connections on learning[C]//Thirty-First AAAI Conference on Artificial Intelligence. 2017.
[8] XIE S, GIRSHICK R, DOLLÁR P, 等. Aggregated residual transformations for deep neural networks[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2017: 1492–1500.