深入探索卷积神经网络:从基础到高级架构(一)
一、重新思考全连接层
多层感知机(MLP)虽然在处理表格数据时表现出色,但在处理图像数据时存在明显的局限性。图像数据具有丰富的空间结构信息,而MLP通过将图像展平为一维向量,完全忽略了这些信息。例如,在猫狗分类任务中,如果使用一个100个神经元的单隐藏层MLP,模型参数量将高达36亿个,这不仅计算成本高昂,而且容易过拟合。
二、卷积神经网络的优势
卷积神经网络通过引入卷积层和池化层,能够有效降低参数量,同时保留图像的空间结构信息。CNN的核心思想包括两个原则:
平移不变性:无论检测对象出现在图像的哪个位置,网络的前面几层都应该对相同的图像区域有相似的反应。
局部性:网络的前面几层应该只探索输入图像中的局部区域,而不过度关注图像中相隔较远的区域的关系。
三、卷积层
卷积层是CNN的核心组件之一。它通过卷积核(或滤波器)与输入图像进行卷积操作,提取图像的局部特征。卷积操作可以实现边缘检测、锐化、高斯模糊等功能。卷积层的输出是卷积核与输入图像的交叉相关结果,加上偏移后得到的特征图。
1. 卷积核和偏移
卷积核和偏移是卷积层的可学习参数。卷积核的大小是一个超参数,通常根据具体任务进行调整。例如,一个3x3的卷积核可以捕捉图像中的局部特征,而一个5x5的卷积核可以捕捉更广泛的特征。
2. 填充和步幅
填充和步幅是卷积操作中的两个重要参数。填充(Padding)是在输入图像周围添加额外的行和列,通常填充元素为0。填充可以增加输出特征图的大小,从而保留更多的边界信息。步幅(Stride)是指卷积核在输入图像上滑动的步长。较大的步幅可以减少输出特征图的大小,从而减少计算量。
四、池化层
池化层是CNN中的另一个重要组件,用于降低特征图的空间维度,同时保留重要的特征信息。常见的池化方法包括最大池化和平均池化。最大池化取每个池化窗口中的最大值,而平均池化取每个窗口中的平均值。池化层可以有效减少计算量,同时提高模型的鲁棒性。
五、经典CNN架构
1. LeNet
LeNet是最早的卷积神经网络之一,由Yann LeCun在1995年提出,主要用于手写数字识别。LeNet由两个部分组成:
卷积编码器:包含两个卷积层,每个卷积层使用5x5的卷积核和Sigmoid激活函数。
全连接层密集块:包含三个全连接层。
LeNet的结构简单,但为后续的CNN架构奠定了基础。
2. AlexNet
AlexNet在2012年的ImageNet竞赛中取得了优异的成绩,标志着CNN在计算机视觉领域的重大突破。AlexNet的主要改进包括:
更深的网络结构:包含五个卷积层、两个全连接隐藏层和一个全连接输出层。
ReLU激活函数:相比Sigmoid激活函数,ReLU能够有效缓解梯度消失问题,加速训练过程。
丢弃法(Dropout):在训练过程中随机丢弃一部分神经元,防止过拟合。
数据增强:通过随机裁剪、翻转等方法增加训练数据的多样性。
AlexNet的成功推动了深度学习在计算机视觉领域的广泛应用。