浅尝深度学习 - AlexNet

published: and updated:

Deep Learning Deep Learning , CNN , AlexNet

This article is hidden from post list
Language / 语言

简体中文 (current) | English

AlexNet#

AlexNet是由Alex Krizhevsky、Ilya Sutskever和Geoffrey Hinton在2012年ImageNet图像分类竞赛中提出的一种经典的卷积神经网络,论文可以在此处找到。

这个网络的架构并不复杂,且包括了深度学习网络中的几个基础层——输入层、卷积层、池化层、激活层、全连接层,因此很适合作为入门架构来理解一些重要概念。

AlexNet的架构在下图展示:

AlexNet Structure

读者可能会被这些奇怪的概念、数字和结构吓到,但是当你阅读完本节后,自然会明白它们。

输入层#

输入层是图像分类网络的起点,在这里图像被分为RGB三个通道输入网络,该层通常也会对图像进行resize操作,使所有输入大小相同。

上图中是一个227×227的图像,输入后以227×227×3的张量进入AlexNet。

卷积层#

卷积层是深度学习网络最为重要的部分,用于提取图像中的特征。在单个卷积层中,通常有许多相同大小的内核,称为卷积核(Kernel)。例如,AlexNet的第一个Conv层包含96个大小为11×11×3的内核。注意,内核的宽度和高度通常相同,深度与通道数相同。

卷积操作示意图

那么单个卷积核如何提取特征呢?我们以一个灰度图像为例,这里卷积核大小为3×3。它将在图像上以Z字形滑动来提取所有可能的特征。卷积核会将核上每个像素的值与源像素相乘求和,和作为卷积核中心像素的值。

读者不难看出,对于一张图片,每经过一次卷积运算,便会缩小一圈,因此需要在周围进行补0操作,保证图片大小一致。

三通道的彩色图片过程与此基本相同,不再赘述。

三通道卷积

在实际的网络中,会有多个卷积层,以更好地提取图像特征。

重要参数#

步长 (Stride)#

这里需要引入步长的概念,在height和width两个维度上均生效,控制一次滑动的长度。当我们说stride=2时,指在两个维度上的步长都为2。

填充 (Padding)#

padding参数控制补零操作,一般有valid和same两个值:

  • valid:不进行补0操作,每次卷积两个维度数据均下降F-1,F为卷积核大小
  • same:在输入图像像素的周围进行补零或复制数据填充,保证卷积前后两个维度大小相同

AlexNet总共有5个卷积层。

激活层#

这里先引入损失函数的概念。

Loss Function

损失L的值通常由如下公式计算得到:

L=r=1RlrL=\sum_{r=1}^R l_r

因此,训练的过程就是找到一个函数使损失尽可能小的过程,这样预测值就会尽可能逼近实际值。


激活层通过激活函数进行激活操作,即向模型中添加非线性元素,以保证梯度的持续下降。

TIP

梯度下降是深度学习模型学习参数的重要过程。梯度下降就是不断逼近损失函数最小值的过程,即梯度为0的点。线性函数没有梯度,因此需要使用激活函数激活。

现在通常使用ReLU Nonlinearity进行激活,但在AlexNet发布的年代,常用的是Sigmoid和tanh。后面两者具有vanishing gradient的问题,这部分内容不适合在这里展开,有兴趣的读者可以参考此处

激活函数

池化层#

池化层在CNN网络中用于减少特征图的空间维度,同时保留最重要的特征,以期在保证精度的前提下减少整个网络的参数和计算量。

池化过程本质是在两个维度上进行下采样的过程,不会改变图像的深度。相当于使用一个人为定义的卷积核在图像上滑动,但该卷积核不包含参数。

通常有最大池化和平均池化两种方法:

池化操作

  • 最大池化:取池化窗口内的最大值
  • 平均池化:取池化窗口内的平均值

全连接层#

全连接层

全连接层会将多层的特征展平为一维向量,取每层的各个类别进行加权求和,得出最终各类别的分数。

TIP

如果读者用心观察,会发现两个全连接层后跟着一个softmax激活函数,它将多分类的输出值归一化,即映射到[0,1]范围内,将各个类别转换为概率分布。

在AlexNet中,全连接层的作用是:

  1. 特征整合:将卷积和池化提取的局部特征整合为全局特征
  2. 分类映射:将特征映射到具体的分类结果
  3. 降维处理:通过权重矩阵实现特征的降维和筛选

小结#

我们目前讨论了AlexNet涉及的一些重要概念,同时也是深度学习中的基础概念。在下一节中,将从代码的角度自行实现AlexNet并训练,以展现其实际应用的过程,同时还将对该网络的性能进行评估。

通过理解AlexNet的架构,读者应该已经掌握了:

  • 卷积神经网络的基本组成
  • 各层的作用和参数设置
  • 前向传播的基本流程

这些知识将为后续学习更复杂的网络架构打下坚实的基础。