本文将详细介绍卷积神经网络(CNN)。
卷积神经网络是一种专门用来处理具有网格状拓扑结构数据(比如图像、音频、时间序列)的深度学习模型。它在计算机视觉领域取得了巨大成功,是当今图像识别、目标检测等技术的核心引擎。
你可以把它想象成一个拥有“视觉”的人工大脑,它不是为了处理表格数据(如Excel)而设计的,而是为了“看懂”图片。
在CNN出现之前,人们也尝试用普通的全连接神经网络来处理图像,但效果很差,主要原因有两个:
1、参数爆炸
一张很小的100x100像素的彩色图片,拉平成一个向量后,长度是 100 × 100 × 3 = 30,000(3代表RGB三个颜色通道)。
如果第一层隐藏层有1000个神经元,那么仅第一层就需要 30,000 × 1000 = 3千万个权重参数!这会导致计算量巨大,且极易过拟合。
2、忽略空间结构
将图片拉平会完全破坏像素之间的空间关系(比如相邻、上下、左右)。对于图像来说,像素之间的局部关联性和空间层次结构至关重要。全连接网络很难有效利用这种结构信息。
CNN通过三个关键思想来解决上述问题:
1、局部感受野
不像全连接网络那样每个神经元都看整个图片,CNN的神经元只关注图片的一小块区域(比如3x3或5x5)。这一小块区域就叫做“局部感受野”。
这模仿了人类视觉系统:视网膜上的每个细胞只接收一小块区域的信号。
2、参数共享
同一个特征(比如“边缘”),可能出现在图片的任何地方。我们不需要为每个位置都学习一个独立的检测器。
CNN使用一种叫做“卷积核”(或滤波器)的小窗口,用同一个卷积核在整张图片上滑动,来检测不同位置的相同特征。这极大地减少了参数数量。
3、空间降采样(池化)
图片经过卷积后,特征图会很大。池化层的作用是进行降维,减少数据量,同时保留最重要的信息。
这使得网络对图像的位置、平移、缩放等微小变化不那么敏感,增强了模型的鲁棒性。
一个典型的CNN由以下几种层堆叠而成:
功能:特征提取。
工作原理:
1、有一个或多个卷积核(滤波器),本质上是小的权重矩阵(如3x3)。
2、卷积核在输入图像上从左到右、从上到下滑动(更准确地说,是“卷积”运算)。
3、在每一个位置,卷积核与对应的图像区域进行点乘并求和,得到一个数值输出。
4、最终,一个卷积核会生成一张特征图,这张图记录了原图中与该卷积核所代表特征(如垂直边缘、水平边缘、颜色等)的匹配程度。
功能:让网络能够学习复杂的非线性模式。
常用函数:ReLU。它非常简单:f( x ) = max(0, x)。它将所有负值置为零,正值保持不变。这能有效解决梯度消失问题并加速训练。
功能:降维、保持平移不变性、防止过拟合。
工作原理:
最常见的是最大池化。它在一个小窗口(如2x2)内只取最大值作为输出。
类似于“总结摘要”,它告诉我们这个区域内最重要的特征是否存在,而不关心它精确的位置。
功能:将学习到的“分布式特征表示”映射到最终的样本标签空间(比如判断图片是猫还是狗)。
位置:通常在网络的最后几层。
工作方式:和传统的神经网络一样,每个神经元都与上一层的所有神经元连接。它将高阶的特征进行组合,并输出一个概率分布(通过Softmax函数)。
1、输入:一张图片。
2、特征提取(多层卷积-激活-池化):
第一层:学习检测低阶特征,如边缘、角点、颜色块。
中间层:组合低阶特征,形成更复杂的特征,如眼睛、鼻子、纹理。
深层:组合复杂特征,形成物体的部件,如脸、轮子、翅膀。
3、展平:将最后卷积/池化层输出的多维特征图拉平成一个一维向量。
4、分类(全连接层):通过一个或多个全连接层,最终由Softmax层输出每个类别的概率(例如:“猫:95%”,“狗:5%”)。
经典模型:
1、LeNet:CNN的开山之作,用于手写数字识别。
2、AlexNet:2012年ImageNet竞赛冠军,引发了深度学习热潮。
3、VGGNet:展示了网络深度的重要性。
4、GoogLeNet:引入了Inception模块,在保持性能的同时减少参数。
5、ResNet:通过“残差连接”解决了极深网络的梯度消失问题,使得网络可以深达数百层。
主要应用:
1、图像分类:识别图片中的主要物体。
2、目标检测:不仅识别物体,还要定位出位置(如YOLO, Faster R-CNN)。
3、图像分割:对每个像素进行分类(如医疗影像分析)。
4、人脸识别。
5、风格迁移(如Prisma滤镜)。
6、自动驾驶中的视觉感知。
卷积神经网络(CNN) 通过卷积操作高效地提取图像的局部特征,利用参数共享大幅减少模型参数,并通过池化层来保证特征的一定程度上的平移不变性,最后通过全连接层完成分类或回归任务。它是一种高度适应图像空间结构的强大神经网络架构。