深度学习之卷积神经网络CNN
卷积层:核心操作:卷积。 这是 CNN 得名的关键操作。目的: 从输入数据中提取局部特征(如边缘、纹理、颜色模式、更复杂的形状等)。工作原理:定义一个小的、可学习的矩阵,称为卷积核或滤波器。将这个核在输入数据(如图像)上按照一定的步长滑动。在每个滑动位置,核与输入数据覆盖的局部区域进行逐元素相乘,然后将所有乘积结果求和,得到一个输出值。滑动覆盖整个输入后,得到一个二维的特征图,称为激活图或特征图。
CNN 的核心概念
-
卷积层:
-
核心操作:卷积。 这是 CNN 得名的关键操作。
-
目的: 从输入数据中提取局部特征(如边缘、纹理、颜色模式、更复杂的形状等)。
-
工作原理:
-
定义一个小的、可学习的矩阵,称为卷积核或滤波器。
-
将这个核在输入数据(如图像)上按照一定的步长滑动。
-
在每个滑动位置,核与输入数据覆盖的局部区域进行逐元素相乘,然后将所有乘积结果求和,得到一个输出值。
-
滑动覆盖整个输入后,得到一个二维的特征图,称为激活图或特征图。
-
-
关键特性:
-
局部连接: 输出中的每个神经元只与输入数据的一个小局部区域(感受野)连接,而不是全连接。这大大减少了参数量。
-
权值共享: 同一个卷积核在整个输入数据上滑动并使用相同的权重参数。这意味着无论特征出现在图像的哪个位置,都使用相同的核来检测它,赋予了 CNN 平移不变性。
-
空间层次: 通过堆叠多个卷积层,后面的层可以“看到”前面层提取的更大范围的特征(即组合低级特征形成高级特征)。
-
-
-
激活函数:
-
目的: 引入非线性,使网络能够学习复杂的模式。没有非线性激活函数,多层网络就等价于单层网络。
-
常用函数:
-
ReLU: 最常用,
f(x) = max(0, x)。计算简单高效,能有效缓解梯度消失问题(在正区间)。 -
Leaky ReLU:
f(x) = max(αx, x)(α 是一个很小的正数,如 0.01)。试图解决 ReLU 的“神经元死亡”问题(负输入永远输出 0)。 -
Sigmoid:
f(x) = 1 / (1 + exp(-x))。输出在 0 到 1 之间,常用于二分类问题的输出层,但在隐藏层中使用较少,因为容易导致梯度消失。 -
Tanh:
f(x) = (exp(x) - exp(-x)) / (exp(x) + exp(-x))。输出在 -1 到 1 之间,比 Sigmoid 梯度消失问题稍好。
-
-
位置: 通常紧跟在卷积层(和全连接层)之后。
-
-
池化层:
-
目的:
-
降维: 减小特征图的空间尺寸(高度和宽度),从而显著减少后续层的计算量和参数量。
-
平移不变性: 对小的平移、旋转、缩放等提供一定程度的鲁棒性。
-
防止过拟合: 通过减少参数间接起到正则化作用。
-
-
工作原理: 在特征图上滑动一个窗口(如 2x2),并对窗口内的值进行聚合操作:
-
最大池化: 取窗口内的最大值。最常用,能保留最显著的特征。
-
平均池化: 取窗口内的平均值。
-
-
关键特性:
-
没有需要学习的参数。
-
通常使用步长等于窗口大小,这样每次滑动都不重叠,降维效果明显(例如 2x2 池化步长为 2,尺寸减半)。
-
-
-
全连接层:
-
目的: 位于网络的末端(在卷积层和池化层之后),将前面提取到的所有高级特征进行整合,并映射到最终的输出空间(如分类任务的类别概率)。
-
工作原理: 和传统神经网络中的层一样,每个神经元都与前一层的所有神经元进行全连接。
-
特点:
-
参数量通常非常大(尤其是当输入特征图尺寸较大时)。
-
学习全局的、非空间的特征组合。
-
-
-
输出层:
-
根据任务类型选择:
-
分类: 通常使用 Softmax 激活函数,输出每个类别的概率分布。
-
回归: 通常使用线性激活函数(或恒等函数)。
-
其他: 如图像分割常用像素级的 Sigmoid 或 Softmax。
-
-
CNN 的典型结构
一个经典的 CNN 结构通常是交替堆叠的卷积层 + 激活函数 + 池化层,最后接上一个或多个全连接层 + 激活函数(如分类任务最后的 Softmax)。
例如:输入图像 -> [卷积层 -> ReLU] -> [池化层] -> [卷积层 -> ReLU] -> [池化层] -> ... -> 展平 -> [全连接层 -> ReLU] -> ... -> [输出层 (如 Softmax)]
CNN 的优势
-
参数效率: 局部连接和权值共享极大减少了需要学习的参数量,降低了模型复杂度,减轻了过拟合风险,并提高了计算效率。
-
自动特征提取: 无需人工设计复杂的特征提取器。网络能从原始数据(如图像像素)中自动学习到任务相关的、层次化的特征(从低级到高级)。
-
平移不变性: 由于权值共享,CNN 对目标在图像中的位置变化具有鲁棒性。
-
空间层次性: 通过堆叠卷积层,网络能够学习到越来越抽象和全局的特征表示。
CNN 的应用领域(远超图像)
-
计算机视觉: 图像分类、目标检测(YOLO, SSD, Faster R-CNN)、图像分割(FCN, U-Net)、人脸识别、图像生成(GANs)、图像超分辨率、风格迁移等。
-
自然语言处理: 文本分类、情感分析、机器翻译(部分模型)、命名实体识别。通常处理词嵌入序列(看作一维信号)。
-
语音识别: 将音频信号(如频谱图)作为二维图像处理。
-
时间序列分析: 预测、异常检测(将序列看作一维信号)。
-
游戏 AI: 如 DeepMind 的 AlphaGo(结合了 CNN 分析棋盘状态)。
-
推荐系统: 处理用户-物品交互矩阵或特征序列。
-
医学影像分析: 病灶检测、疾病诊断。
著名的 CNN 架构
-
LeNet-5: 早期用于手写数字识别的经典 CNN。
-
AlexNet: 2012 年 ImageNet 竞赛冠军,标志着深度学习复兴。
-
VGGNet: 使用非常小的卷积核(3x3)堆叠构建深度网络,结构简洁。
-
GoogLeNet / Inception: 引入 Inception 模块,并行使用不同大小的卷积核和池化操作,在保持计算效率的同时增加网络宽度和深度。
-
ResNet: 引入残差连接(跳跃连接),解决了极深网络(如 100+ 层)的训练难题,允许构建非常深的网络。
-
MobileNet / ShuffleNet / EfficientNet: 专注于设计轻量级、高效的 CNN 架构,适用于移动端和嵌入式设备。
总结来说,卷积神经网络通过其独特的卷积操作、局部连接、权值共享和池化机制,成为了处理具有空间或时间局部相关性的网格状数据的强大工具,尤其是在图像相关任务中取得了巨大成功,并深刻改变了人工智能领域。
更多推荐


所有评论(0)