在图像分类领域不得不提的就是ImageNet大规模视觉挑战赛(ILSVRC),它被称为深度学习在图像分类任务研究方面进展的标杆。AlexNet网络参加了ILSVRC2012年大赛,以高出第二名10%的性能优势取得了冠军。AlexNet网络也是VGGNet、GoogLeNet、ResNet、DenseNet等经典网络的基础和开端。
常见的卷积方式有三种,即Full卷积、SAME卷积和Vaild卷积。如果输入的图片像素为,卷积核的尺寸为。使用Valid卷积时,输出信号的大小为:
使用另一种卷积方式SAME卷积,输出信号的尺寸为:
Alex Krizhevsky等在imageNet classification with deep convolutional neural networks中提出了AlexNet网络。Krizhevsky等使用两个GITX 580 3GB GPU训练得到基于ImageNet训练集的卷积神经网络的训练,并且取得了很高的精度。他们还指出只需有性能更好的GPU和更大的数据集可以得到性能更好的网络。
在该文中提出的AlexNet网络是一个8层网络,含有5层卷积层(其中第一、第二、第五卷积层附加上了最大池化层)和3层全连接层(最后一层包含1000路softmax分类器)。AlexNet网络分配在两个GPU上,GPU只在固定层进行交换数据。使用交叉并行技术把卷积核平均分配到两个GPU上,使两块GPU中网络的结构相同。选取两块GPU视作一个整体进行分析,其结构图见第三张图,图中没有画出局部响应归一化和dropout等对数据尺寸变化没有影响的操作。该网络使用的卷积方式是Valid。尺寸的输入与输出关系公式见第一张图。
第二、第四和第五卷积层卷积核都只和同一GPU中上一层的卷积核映射连接。第三卷积层卷积核映射连接到第二层中所有卷积核。全连接层中的神经元和前一层中所有神经元相连。响应归一化操作层会在第一个和第二个卷积层之后进行。最大汇合层是跟随在响应归一化层和第五的卷积层之后。Relu激活函数在每个卷积和全连接层的输出。
第一个卷积层输入尺寸为227×227×3的图像,使用96个尺寸为11×11×3、步长4的卷积核。第二卷积层将第一卷积层的输出作为输入,并用256个尺寸为5×5×48的卷积核进行卷积。第三,第四和第五卷积层彼此连接而没有任何池化层或归一化层。第三卷积层连接到第二卷积层(池化,归一化)的输出,第三卷积层有384个尺寸为3×3×256的卷积核。第四卷积层有384个大小为3×3×192的卷积核,第五卷积层有256个大小为3×3×192的卷积核。全连接的每层有4096个神经元。这是我见过的对AlexNet网络最简练的描述。
还有一种采用SAME卷积的网络结构。在网络结构相同的情况下,输入数据的尺寸会发生变化。第四张图所示,局部响应归一化和dropout等对数据尺寸变化没有影响的操作没有在图中画出。
详细分析如下,第五张图是conv1阶段的数据流图。
本文把第一个卷积层、第一个池化层和第一个局部响应归一化操作都看作conv1阶段。第一个卷积层输入图像通过resize得到固定大小为224×224×3 的图像。然后使用11×11×3的卷积核与输入的图像进行卷积运算,选择的卷积方法是SAME卷积。每次卷积在特征图上都生成一个新的像素点,卷积核沿向右向下的方向对原始图像中的像素点依次进行卷积,每次移动的步长是4个像素。当原始图像的像素点不足时,使用zero padding补零。在每一行,卷积核的移动会在特征图上生成 56个新的像素点,行和列的56×56个像素点形成对原始图像卷积之后的特征图。Conv1阶段得到尺寸为56×56×96的特征图。这些特征图经过relu单元的处理,其尺寸仍为56×56×96。第一个池化层的处理是把第一个卷积层输出的特征图进行池化运算。补零的方式与第一卷积层的方式相同,即SAME卷积。则池化后输出图像的宽或高为 26个像素点。即池化后数据的尺寸为26×26×96。最后是局部响应归一化处理。数据的尺寸不会发生变化。把输出的数据输入conv2阶段,重复卷积和池化过程,由于其他卷积层与conv1阶段相似,不再赘述。
虽然第五张图中的AlexNet网络中没有画上局部响应归一化操作,但是AlexNet中每个池化层之后都有局部响应归一化层。归一化层的目的是避免随着层级的加深而导致的信息出现逐层递减的趋势,起到加快神经网络收敛速度的作用。但是,近些年来的研究表明,局部响应归一化层对神经网络的训练过程起到的帮助很小,所以就渐渐不再被使用了。
第六张图是分析fc6阶段的数据流图。
AlexNet的第六层是全连接层。输入数据的尺寸是7×7×256,然后使用具有相同尺寸的卷积核对数据进行卷积运算。每个7×7×256尺寸的卷积核与输入数据进行卷积运算得到一个卷积结果。fc6层中共有4096个神经元,每个神经元输出一个卷积结果,共输出4096个卷积结果。卷积结果通过relu激活函数,然后通过随机失活运算,每次保留50%的神经元。最后输出fc6阶段的数据,其尺寸为4096。
在fc6阶段的运算过程中,采用的卷积核的尺寸与待处理的特征图的尺寸都为7×7×256,即卷积核中的每个参数只与特征图中的一个像素值相乘。但在其它卷积层中,每个卷积核的系数对应多个像素值,这就是全连接层的由来。
第六张图中使用的随机失活策略可以有效地防止过拟合,其原理是在每个训练批次中,随机使隐含层的某些神经元不参与工作,但这些神经元的权值依然得到了保留。随机失活策略总结来说就是通过减少神经元之间的相互依赖关系来提高神经网络的性能。
而fc7阶段与fc6阶段相同。fc6层输出的数据与fc7的4096个神经元进行全连接,然后经由relu激活函数,再经过随机失活处理后输出尺寸为4096的数据。fc7阶段与第八层Softmax层的10个神经元进行全连接,经过训练后输出10类目标的概率值。
AlexNet网络有两点重要的意义,首先是AlexNet网络使用的诸多项设置成为卷积神经网络常见的默认设置,仍被广泛应用。此外,它也使研究者们意识到GPU高度优化的2维卷积功能足够支持大型高分辨率数据集上大型CNN网络的训练。
AlexNet网络具有十分重大的里程碑式的意义。就梯度下降训练时间而言,饱和非线性函数:sigmoid函数或tanh函数比非饱和非线性函数:ReLU函数用时长。AlexNet网络的激活函数使用ReLU函数,加快了神经网络的训练速度。现在ReLU函数几乎成为深度网络默认使用的激活函数。使用数据增强策略和随机失活策略(dropout) 防止训练数据过拟合,至今被很多网络借鉴。AlexNet网络采用连续卷积结合汇合层,最后是全连接层的方式,仍然是现今最先进网络的基础。