一、核心概念初识
1、卷积(Convolution)和卷积核(Filter)
卷积就是“拿一个小模板,在数据上从左到右(或从上到下)滑动,每停一步就把重叠的部分‘对应相乘再相加’,得到一个数。”——它衡量的是:当一个函数(或模板)滑过另一个函数时,两者在每一个位置上的“重叠程度”。
举例说明
(1)一维示例:体重测量
假设你连续 5 天的体重是:[60,62,61,63,62]
数字波动大,受当天因素影响较大,所以想“平滑”一下:认为每一天的真实体重,应该由它自己加上前后两天共同决定,中间那天最重要。于是你定了一个小模板设置权重(也就是“核”):
[0.25,0.5,0.25] 即,前一天占 25%,当天占 50%,后一天占 25%。
| 对准哪一天 | 计算 | 平滑结果 |
|---|---|---|
| 第 1 天 | 0.5×60+0.25×62 | 45.5 |
| 第 2 天 | 0.25×60+0.5×62+0.25×61 | 61.25 |
| 第 3 天 | 0.25×62+0.5×61+0.25×63 | 61.75 |
| 第 4 天 | 0.25×61+0.5×63+0.25×62 | 62.25 |
| 第 5 天 | 0.25×63+0.5×62 | 46.75 |
看结果:原始 [60, 62, 61, 63, 62] → 平滑后中间变成 [61.25, 61.75, 62.25],波动明显变小了。
这就是卷积的全部动作:一个模板、一次滑动、一轮相乘相加。
(2)二维实例:图片模糊处理
图像抽象为二维数字表格(每个格子一个亮度值)。想给照片磨皮、做柔光效果,提供一个模板(核) 3×3 的矩阵:
此模版(矩阵)的含义是:中心像素占 4/16,上下左右各 2/16,四个角各 1/16 —— 也就是“每个像素换成它周围一圈的平均值”。
把这个小方块在整张图上逐格滑动,每格算一次加权平均,整张图就变柔和了。“高斯模糊”“磨皮”,就是这么算出来的,一个像素都没例外。
2、池化(Pooling)---特征压缩
池化(Pooling)就是“把一个小窗口滑过特征图,每个窗口只留一个数”——最大值(MaxPool)或平均值(AvgPool)。它把特征图缩小,同时留下“这个特征有没有出现过”的信息,丢掉“它精确在哪个像素”的信息。
常见3种池化方法对比:
| 类型 | 做法 | 优点 | 缺点 | 典型用法 |
|---|---|---|---|---|
| MaxPool | 取窗口最大值 | 保留最强响应、抑制噪声、平移鲁棒 | 丢失大部分信息;不可导点需次梯度 | CNN 主干默认(VGG/ResNet) |
| AvgPool | 取窗口平均 | 保留整体能量、输出平滑 | 强响应被稀释;边缘易模糊 | Inception、老式网络末端 |
| Global Avg Pool(GAP) | 整张特征图取平均, 𝐻×𝑊×𝐶→1×1×C | 消灭全连接层的巨量参数、任意输入尺寸可用、每个通道直接对应一类响应强度(可做 CAM 可视化) | 彻底丢失位置信息 | 现代分类网络标配 |
3、感受野
特征图上某一个像素,"往回看"原图时,能看到多大的一片区域。它是 CNN 里唯一能回答"这个神经元到底看到了多少东西"的指标。卷积核大小只决定局部看多宽,感受野才决定整体看多远——前者是单层属性,后者是整条路径的累积属性。
引申:
可以把它想象成这个像素的"老家范围":它是由原图上哪一片像素算出来的,那片区域就是它的感受野。
- 感受野小 → 只能看到细节(边缘、角点、纹理)
- 感受野大 → 能看到整体(眼睛、轮子、整张脸)
CNN 之所以能"从边缘认出猫",靠的就是感受野一层层变大。
二、卷积神经网络原理拆解
第一阶段:特征提取
这是图中左侧最复杂的部分,包含了多次Convolution(卷积)、ReLU(激活)和Pooling(池化)的循环。
1、 Convolution + Kernel(卷积与卷积核)
如图所示
左边的大矩阵:代表一张图片(Input Image),里面的数字代表像素点的亮度(0是黑,数值越大越亮)。
中间的小方块:代表卷积核/滤波器(Filter/Kernel),你可以把它想象成一个“探测器”或“手电筒”。
卷积核的作用:
右边的结果矩阵:代表特征图(Feature Map),这是探测后的结果。
截距项:每个卷积核都会学习到一个偏置值b ,加在最终的结果上,用于调整激活的阈值。公式为:Y=(X∗W)+b
过程拆解(以手电筒为例),
扫描(滑动窗口):你拿着手电筒从左上角开始,一次照3×3 个格子(图中红框部分)。
加权求和(点积运算):手电筒里的灯泡亮度是不一样的(卷积核里的数字,比如中间是1,周围有0)。当你照到图片上某个区域时,你会把手电筒的亮度分布与地板上的数字对应相乘。
比如图中红框区域:
第一行:0×0,3×1,0×1
第二行:2×0,0×1,1×0
第三行:0×1,1×0,3×0
实际图中的计算逻辑是:将红框内的9个数字,与橙色框内的9个数字,位置对应相乘,然后全部加起来。
记录结果(生成特征图):
算出来的总和,填在右边的格子里。如,图中右上角的第一个结果 3 的计算过程为,(0×0)+(3×1)+(0×1)+(2×0)+(0×1)+(1×0)+(0×1)+(1×0)+(3×0)=3。这个 3 就代表了原图左上角那个区域与这个卷积核的“匹配程度”。
移动(步长 Stride):
算完左上角,手电筒向右移动一格(通常移动一格叫步长为1),继续做乘法求和,算出下一个数字 3。以此类推,直到扫完整个图片。
感受野
在卷积神经网络中,特征图(Feature Map)上的一个点,映射回输入图像(Input Image)上的区域大小,就是该点的感受野。简单来说,感受野就是“当前这个像素点,能看到原始图片多大的范围”。它解释了为什么深层网络能识别出复杂的物体(如人脸、汽车),而浅层网络只能识别简单的线条。
感受野这是一个层层叠加的过程。
第一层卷积:假设卷积核是3×3,那么输出特征图上的一个点,感受野就是 3。
第二层卷积:在上一层的基础上再做3×3卷积。因为上一层的一个点已经代表了原图的 3 个像素,现在又把周围 3 个点聚合起来,感受野就变成了3+(3−1)=5(大致估算,具体取决于步长)。
第三层卷积:继续叠加,感受野进一步扩大到 7 或更大。
2. ReLU(激活函数)
- 图示位置:紧跟在 Convolution 后面。
- 通俗解释:这是一个“过滤器”。它把探测到的不重要信息(负值)直接变成0,只保留有用的特征(正值)。就像侦探排除了无关线索,只关注重点。
- 专业原理:引入非线性因素,增加网络的表达能力,同时产生稀疏性,加速计算。
3. Pooling(池化)
- 通俗解释:这是“压缩画质”的过程。比如把一张高清大图缩小成缩略图。虽然像素少了,但斑马身上的条纹特征还在。这样做是为了减少计算量,并且让网络不那么在意斑马具体站在图的左边还是右边(平移不变性)。
- 专业原理:下采样操作(如最大池化);降低特征图的空间维度,减少参数量,防止过拟合。
简单来说,池化就是下采样的过程。它的主要目的是在保留主要特征的同时,减少数据量,降低计算复杂度。
中间的大矩阵(4x4):这是卷积层输出的特征图,包含了很多细节数据。
左边的结果(Max Pooling):最大池化,取每个区域的“最大值”。作用是提取纹理等显著特征,对噪声有一定的抑制作用(因为噪点通常数值不大,会被最大值覆盖)。它是目前深度学习中最常用的池化方式。
右边的结果(Average Pooling):平均池化,取每个区域的“平均值”。作用是保留整体特征,减少方差。常用于网络的全局平均池化层,或者在处理背景信息比较重要的任务中。
颜色分区:注意看中间的图,被分成了绿、紫、红、青四个颜色的2×2 区域,每个区域对应输出中的一个像素点。
第二阶段:分类决策
这是图中右侧的部分,包含Flatten(展平)和Fully Connected Layer(全连接层)。
1. Flatten(展平)
- 图示动作:看那个像千层饼一样的立体方块(特征图),突然被拉成了一条长长的竖线。
- 通俗解释:前面的步骤把图片里的特征(条纹、眼睛、腿)都提取出来了,但它们还是散落在一个个小格子里。这一步就像是把侦探搜集到的所有线索卡片,全部摊开在桌面上,排成一长列,准备交给最后的法官去审阅。
- 专业原理:将多维的特征图(Feature Maps)拉伸为一维向量,作为全连接层的输入。它起到了连接“特征提取器”和“分类器”的桥梁作用。
图例分析:
左侧(Pooled Feature Map):这是经过层层卷积和池化后留下的精华特征图。它保留了图像的空间结构信息(比如哪里有条纹,哪里有角)。
中间(Flattened):这是一个“拉直”的过程。将二维的方块矩阵变成了一维的长条向量。全连接层纸接收一维向量。
右侧(FC Layer):这是全连接层。所有的神经元都互相连接,像是一个复杂的决策网络,负责根据输入的特征计算最终的分类概率。
2. Fully Connected Layer(全连接层)
- 通俗解释:这就是“大脑的思考中心”。
这里的每一个神经元都在做综合判断,“既然我看到了黑白条纹(特征A),又看到了马的身体结构(特征B),还有四条腿(特征C)……” 第一层全连接神经元可能负责组合出“像马”的概念; 第二层可能负责排除“像狗”的概念。
它们把前面所有的局部线索加权汇总,计算出一个最终的结论。
- 专业原理:基于学习到的特征进行非线性组合,映射到样本标记空间。它是分类器的核心,决定了模型最终的判别能力。
第三阶段:概率输出---SoftMax Activation Function。
SoftMax(归一化指数函数)
- 图示动作:输出了三个数字:0.2 (Horse), 0.7 (Zebra), 0.1 (Dog)。
- 通俗解释:大脑思考完了,不能只说“我觉得是斑马”,它得给出一个确信度。 SoftMax 就像是一个“百分比转换器”。它把前面算出来的原始分数强行转换成总和为 1 (100%) 的概率。 结果一目了然:模型认为这张图有 70% 的概率是斑马,20% 是马,10% 是狗。
- 专业原理:将多分类问题的输出转化为概率分布。数值最大的类别即为模型的预测结果。
三、总结
CNN 的工作流可以概括为:
卷积+池化(特征提取):从像素点里提取出条纹、形状等特征。
展平(整理线索):把特征打包。将多维特征投影到一维特征。
全连接(综合推理):神经网络的智算中心,每个神经元都在做综合判断,加权汇总,得出最终结论。
SoftMax(概率输出、得出结论):输出分析结果及对应的概率。
四、经典神经网络模型
| 模型 | 年份 | 深度 | 核心创新 | 历史地位 |
|---|---|---|---|---|
| LeNet-5 | 1998 | 7 | 卷积+池化+FC 串联,手写数字识别 | CNN 原型,证明局部连接+共享权重可行 |
| AlexNet | 2012 | 8 | ReLU、Dropout、双 GPU、数据增强、LRN | 深度学习复兴起点,ImageNet top-5 错误率 15.3% |
| VGG | 2014 | 16/19 | 全部 3×3 小核、2×2 池化、结构极度规整 | 证明“深度+小核”有效;迁移学习标配骨干 |
| ResNet | 2015 | 50/101/152 | 残差连接 𝑦=𝐹(𝑥)+𝑥 | 解决退化问题,深度无上限;现代网络的基石 |
| ResNeXt | 2017 | 50/101 | 分组卷积 + 基数(cardinality) | “深度/宽度”之外的第三维度 |
| ConvNeXt | 2022 | — | 用 Transformer 设计原则改造纯 CNN(7×7 大核、LayerNorm、GELU、少激活少归一化) | 证明 CNN 上限极高,纯卷积能匹敌 Swin |