输入项
AlexNet解决了图像分类的问题,其中输入是1000种不同类别(例如猫,狗等)的图像中的一个图像,而输出是1000个数字的向量。输出向量的第i个元素表示为输入图像属于第i类的概率。因此,输出向量的所有元素之和为1。
AlexNet的输入是大小为256×256的RGB图像。这意味着训练集和测试集中的所有图像的尺寸必须为256×256。
如果输入图像不是256×256,则将其用于训练网络之前需要将其转换为256×256。为此,将较小的尺寸调整为256,然后裁剪所得图像以获得256×256图像。
如果输入图像是灰度图像,则通过复制单个通道将其转换为RGB图像以获得3通道RGB图像。从256×256图像内部生成大小为227×227的随机作物,以输入AlexNet的第一层。
AlexNet架构
AlexNet架构参见下图:
AlexNet包含5个卷积层和3个全连接层。
多个卷积核提取图像中的特征。在单个卷积层中,通常有许多大小相同的内核。例如,AlexNet的第一个Conv层包含96个11x11x3大小的内核。请注意,内核的宽度和高度通常相同,深度与通道数相同。
前两个卷积层后面是放置重叠的最大池化层,第三、四、五卷积层直接连接。第五个卷积层后面是一个重叠的最大池化层,该层的输出进入两个全连接层的序列。第二个全连接层将输入具有1000个类别标签的softmax分类器。
在所有卷积和全连接层之后应用ReLU非线性。在进行合并之前,在第一卷积层和第二卷积层的ReLU非线性之后执行局部归一化步骤。但是研究人员后来发现归一化不是很有用。因此,不对此进行详细介绍。
重叠的最大池
最大池化层通常用于对张量的宽度和高度进行下采样,以保持深度不变。重叠的最大池化层与最大池化层相似,不同之处在于,用于计算最大值的相邻窗口彼此重叠。研究中使用3×3大小的合并窗口,相邻窗口之间的跨度为2。池的这种重叠性质有助于在通信时将前1个错误率降低0.4%,将前5个错误率降低0.3%,这与使用大小为2×2且步长为2的非重叠池窗口的输出尺寸相同。
ReLU非线性
AlexNet的一个重要特点是使用ReLU非线性。 之前Tanh或S型激活函数是训练神经网络模型的常用方法。 AlexNet表明,与使用饱和激活函数(例如tanh或Sigmoid)相比,使用ReLU非线性,深层CNN的训练速度要快得多。研究中下图显示,使用ReLUs(实线),AlexNet可以达到25%的训练错误率,是使用tanh(点线)的等效网络的六倍。在CIFAR-10数据集上对此进行了测试。
让我们看看为什么使用ReLU可以更快地进行训练。 ReLU函数为 f(x)=max(0,x)
上面是两个函数tanh和ReLU的图像表示。tanh函数在z的非常高或非常低时饱和,同时在这些区域,函数的斜率非常接近零,这可以减缓梯度下降。另一方面,对于较高的z正值,ReLU函数的斜率不接近零,这使得优化收敛更快。对于z的负值,斜率横为零,而神经网络中的大多数神经元通常最终都具有正值。以上原因导致ReLU胜过了S型函数。
减少过度拟合
什么是过度拟合?
神经网络的大小就是它的学习能力,如果不注意,它会试图在不理解概念的情况下将训练数据中的示例记忆下来。结果,神经网络在训练数据上将表现异常出色,但是无法学习真实的概念。在新的和看不见的测试数据上,无法正常工作,这称为过拟合。
AlexNet的作者使用两种不同的方法来减少过拟合。
数据扩充
向神经网络展示同一图像的不同变化有助于防止过拟合。要强迫它别记住!通常,可以从现有数据中生成其他数据!这是AlexNet团队使用的一些技巧。
通过镜像增强数据
如果我们的训练集中有猫的图像,则其镜像也是猫的有效图像。请参见下图作为示例。因此,我们可以通过简单地围绕垂直轴翻转图像来将训练数据集的大小加倍。
通过随机裁剪进行数据增强
此外,随机裁剪原始图像还会导致其他数据,而这些数据只是原始数据的移位形式。
AlexNet的作者从256×256图像边界内提取了227×227大小的随机作物,用作网络的输入,他们使用此方法将数据大小增加了2048倍。
注意四个随机裁剪的图像看起来非常相似,但并不完全相同。这告诉神经网络像素的微小移动不会改变图像仍然是猫的事实。如果没有数据扩充,作者将无法使用如此大的网络,因为会发生严重的过拟合。
Dropout
通过训练约6000万个参数,还尝试了其他方法来减少过拟合。在Dropout中,神经元从网络中被忽略的概率为0.5。当神经元被忽略时,它既无助于向前传播,也无助于向后传播。因此,每个输入都要经过不同的网络体系结构,如下图所示。Dropout的使用使学习到的权重参数更加稳健,并且不容易过拟合。在测试过程中,神经元没有丢失,整个网络都被使用,但是输出按0.5的比例缩放,以说明训练时"丢失的"神经元。 Dropout将收敛所需的迭代次数增加了2倍,但是如果没有Dropout,AlexNet将严重过拟合。
如今,Dropout正则化非常重要,并且已经开发出了比原始规范更好的实现方式。