卷积神经网络:从视觉认知到深度学习
卷积神经网络:从视觉认知到深度学习
卷积神经网络(CNN)是深度学习领域中一种重要的神经网络模型,特别适用于处理图像和视觉相关任务。本文将从视觉认知原理出发,详细阐述CNN的基本概念、工作原理及其在图像识别领域的应用。
视觉认知原理
在深度学习的发展过程中,广泛应用了大脑认知原理,尤其是视觉认知原理。1981年的诺贝尔医学奖颁发给了David Hubel和Torsten Wiesel,以及Roger Sperry。前两位的主要贡献是发现了视觉系统的信息处理机制,即视皮层是分级的。整体而言,人类的视觉认知过程可以分为以下几个步骤:
- 通过瞳孔摄入原始的像素信号
- 通过大脑皮层的细胞发现边缘和方向
- 对边缘和方向进行组合,完成形状判定
- 对形状进行高级视觉抽象,完成分类认知
人类视觉认知是一个分层递进的过程:提取边缘特征,抽象高级特征,组合整体图像,最终完成分类。
全连接层的局限性
理论上,我们可以使用一个由全连接层组成的神经网络来进行图像识别。然而,对于复杂图像,全连接神经网络的表现并不理想。根本原因在于全连接层忽略了数据的形状。图像是3维数据(宽、高、RGB通道),空间上邻近的像素会有相似的值,RGB各通道之间也有关联性。而全连接层会忽略这些形状信息,将数据作为一维数据进行处理,因此无法利用数据的空间关联信息。
卷积神经网络
卷积神经网络(CNN)通过"卷积层+ReLU+池化层"的结构,解决了全连接层的局限性。整体而言,卷积神经网络的工作流程主要分为三个阶段:
- 通过卷积层对图像进行特征提取,得到特征图
- 通过池化层对特征图进行降采样,压缩数据量
- 通过全连接层对特征图进行分类,得到识别结果
卷积层
卷积层的核心是卷积运算。卷积运算的基本原理是响应函数与输入信号进行卷积运算。下图展示了卷积运算的执行顺序:
填充
为了调整卷积运算的输出大小,可以使用填充(Padding)。如下图所示,通过填充可以增大输出大小:
步幅
除了填充,还可以通过步幅(Stride)来控制输出大小。步幅增大,输出大小减小。
滤波器通道
对于3维图像数据(宽、高、RGB通道),滤波器也需要增加一个通道维度。每个通道的输入数据与对应通道的滤波器进行卷积运算,最后对所有通道的输出进行求和,得到最终的输出结果。
池化层
池化的本质是对输出特征图进行局部采样,也称降采样(Downsampling)。下图展示了Max池化运算的示意图:
全连接层
经过多层"卷积+ReLU+池化"的运算后,神经网络能够提炼出高度简化、高度抽象的特征。最后,使用全连接层对这些特征进行分类识别。下图展示了全连接层的处理过程:
经典CNN
LeNet
LeNet在1998年首次提出,主要用于手写数字识别。与现在的CNN相比,LeNet有以下不同点:
- 使用sigmoid函数作为激活函数
- 采用子采样(Subsampling)进行数据压缩
AlexNet
AlexNet是2012年由Geoffrey Hinton和他的学生Alex Krizhevsky提出的,引发了深度学习的浪潮。AlexNet的主要创新包括:
- 采用了ReLU作为激活函数
- 采用了局部正规化的LRN(Local Response Normalization)层
- 采用了Dropout,可以有效抑制过拟合
总结
本文介绍了卷积神经网络的基本概念及其工作原理。相比于全连接神经网络,卷积神经网络主要增加了卷积层和池化层,其中卷积层用于提取图像数据的空间特征,池化层用于压缩数据,提高鲁棒性,最后使用全连接层进行分类结果的计算和输出。