2.1.2 AlexNet
AlexNet(Krizhevsky et al.,2012)是2012年ImageNet 竞赛分类任务的冠军网络,网络结构如图2-2所示。其中,在每个卷积层和全连接层后有ReLU(Rectified Linear Unit,线性整流单元)非线性激活函数,在fc6和fc7层之后使用了随机失活(Dropout)层,为了节省空间,图2-2中没有画出,本书中的插图默认都会省略随机失活层。在pool1和pool2层之后还有局部响应规范化(Local Response Normalization)层,该层现在不太常用,因此图2-2中也没有画出。
图2-2 AlexNet网络结构图
AlexNet中的conv1 使用的卷积核、步长(Stride)为4,使空间大小(即特征的高和宽)迅速减小,网络输入的空间维度为,经过conv1之后迅速降低到,这可以降低后续层操作的计算量。看上去AlexNet有着和LeNet-5相似的网络结构,都是先用一系列卷积层和汇合层提取特征,之后使用多个全连接层进行分类,但AlexNet网络更深,并且有更多参数。AlexNet中卷积和全连接层共有8层,参数量达到6千万个。AlexNet取名源自其作者Alex Krizhevsky 的名Alex。
AlexNet是一个非常经典的网络结构,其中的一些命名习惯延续到了现在。即使现在使用的网络深度更深,结构更复杂,我们仍然使用conv5特征表示网络中最后一个卷积层的输出特征,fc7 特征表示网络倒数第二个全连接层的输出特征。fc7特征可以看作是输入图像的向量化表示,即图像Embedding。
AlexNet 最大的意义在于它首次使用大规模数据训练深度神经网络,最终达到15.3% 的前5(Top 5)错误率,以低于亚军10.9% 的前5 错误率取得了当年ImageNet 竞赛的冠军。在当时,即使降低1% 的错误率也是很大的贡献,而AlexNet 一下比亚军低出10.9% 的前5 错误率,这使人们意识到深度学习特别是卷积神经网络(Convolutional Neural Networks,CNN)的优势,这直接导致了深度学习的复兴。两年以后,也就是2014年,ImageNet 竞赛的参赛团队全部采用了基于深度学习的方案。AlexNet的作者之一Geoffrey Hinton 由于在深度学习领域的突出成就,和Yann LeCun、Yoshua Bengio 一起获得了2019年的图灵奖。
AlexNet 包括的其他关键点如下:
● 使用了ReLU 激活函数。如图2-3所示,相比于之前主流的Sigmoid 或Tanh 这种饱和型的激活函数在输入很小或很大时梯度几乎为0,ReLU 这种非饱和型激活函数有更好的梯度特性,这使得基于ReLU的神经网络训练时收敛更快。(Krizhevsky et al.,2012)通过实验发现,在一个4层卷积神经网络上,使用ReLU的收敛速度比使用Tanh 快6 倍。使用ReLU 激活函数这个看似微小的改变实际对深度卷积神经网络的发展起到了巨大帮助。
● 由于AlexNet的参数量非常大,过拟合(Overfitting)风险很高。因此,AlexNet 使用了大量的缓解过拟合的技术,例如,数据增广(Data Augmentation[1])和随机失活。AlexNet 使用的数据增广技术包括水平翻转(Horizontal Flipping)、随机裁剪(Random Cropping)和颜色变化(Color Jittering)。网络输入图像的空间维度是,先从中随机裁剪的图像区域,可裁剪的位置一共有处,再加上水平翻转最终乘以2,所以整体上通过数据增广使训练集扩大了倍。随机失活在训练时以一定概率将某个神经元失活以减少神经元之间相互适应(Co-adaptation),这相当于每次前馈(Feedforward)网络时都定义出一个新的网络结构,预测(Inference)时是多个网络结构的集成(Ensemble),十分简单高效。
● 以前神经网络大都利用CPU 进行训练,训练速度制约了神经网络的研究进程。虽然AlexNet 并不是最早利用GPU(Graphics Processing Unit,图形处理单元)加速卷积神经网络训练的算法,但是AlexNet的成功使人们广泛意识到利用GPU 可以大大缩短训练时间,同时使得训练更大、更深的网络变得可能。
● 分组卷积(Group Convolution)的使用。当时由于训练使用的GPU 为英伟达(Nvidia)GTX 580,其显存空间有限(3GB),放不下完整的AlexNet网络,不得已把网络分成了上下两部分,即分成上下两组(Group)。两部分的网络结构相同,各自在一张GPU 卡上计算,只在conv3 和全连接层处进行信息交互。这种将特征分组之后每组独立进行卷积的分组卷积操作启发了后续的一系列精简网络设计的研究工作,例如ResNeXt(Xie et al.,2017)(见2.1.11节)、MobileNet(Howard et al.,2017)(见2.1.13节)、ShuffleNet(Zhang et al.,2018b)(见2.1.15节)等。
图2-3 Sigmoid、Tanh和ReLU激活函数对比
最后补充一点,CaffeNet(Jia et al.,2014)是AlexNet的一个常用变体,两者区别在于,AlexNet 网络分为上下两组,CaffeNet 没有进行这样的分组;CaffeNet 调换了AlexNet中汇合层和局部响应规范化层的顺序,这样局部响应规范化层的输入维度小一些,可以略微降低整体的计算量。