logo

通俗理解卷积神经网络:从感受视野到卷积核

作者:4042026.11.07 02:03浏览量:0

简介:卷积神经网络(CNN)是计算机视觉的基石,但其内部机制常令初学者望而生畏。本文以通俗视角拆解CNN四大构件——卷积层、池化层、全连接层与输出层,深入讲解感受视野、共享权值、卷积核、步长与多通道卷积的计算逻辑,助你建立直观而系统的认知,为后续模型设计与调优打下坚实基础。

卷积神经网络(CNN)听起来高深,但它的核心思想并不复杂:用一个小小的“观察窗”在图像上滑动扫描,用同一套权重寻找同一种图案,再把结果压缩整合,最终得出结论。本文沿着这条主线,把CNN的每一层、每一个关键概念拆开讲透。

一、为什么需要卷积神经网络

在CNN出现之前,处理图像通常使用全连接神经网络:每个神经元与上一层的所有神经元相连。这种结构用在图像上有两个致命问题。

第一个问题是参数爆炸。 以一张28×28的灰度图为例,输入共784个像素;如果第一个隐藏层有1000个神经元,仅这一层的连接权重就有78万多个。而现实中一张高清彩色图片动辄数百万像素,全连接结构的参数量会瞬间失控,既算不动,也极易过拟合。

第二个问题是“不懂图像的天性”。 全连接网络把像素一视同仁地拉平,完全丢掉了“相邻像素高度相关”的空间结构;同时,只要物体在图里挪动几个像素,激活模式就完全改变,网络对平移极其敏感。

CNN正是针对这两点,引入了三个关键设计:

  • 局部连接:图像局部相关性很强,一个像素与周围像素关系紧密、与远处像素关系不大,因此让每个神经元只“看”一小块区域——这就是感受视野;
  • 权值共享:同一种图案(如边缘、色块)会出现在图像的不同位置,与其在每个位置各学一套权重,不如让一套权重扫遍全图——这就是卷积核;
  • 下采样:判断图像内容并不需要每个位置的精确细节,适当丢弃冗余信息反而更稳更省——这就是池化。

二、CNN的整体架构:一条清晰的流水线

一个典型的卷积神经网络由四类构件组成,构成“特征提取 → 特征压缩 → 整合拟合 → 输出结果”的处理链条:

  1. 卷积层:网络的灵魂,负责在输入中提取各种局部特征;
  2. 池化层:紧跟卷积层,对特征图进行下采样和稀疏处理,减少后续层的数据运算量;
  3. 全连接层:通常位于CNN的尾部,对前面提取到的特征进行重新拟合与整合,减少特征信息的损失;
  4. 输出层:给出最终结果,分类任务中一般输出各类别的概率。

打个比方:卷积层像一群拿着放大镜的检查员,各自负责找一种痕迹;池化层像质检员,把不重要的细节丢掉、只留关键证据;全连接层像主审官,把所有证据线索汇总推理;输出层则宣读最终结论。

三、卷积层(上):感受视野——神经元只“看”局部

1. 什么是感受视野

假设输入是一个 28×28 的二维神经元网格,我们定义一个 5×5 的局部窗口,让隐藏层的每个神经元只与输入层中这 5×5=25 个神经元相连。这个固定大小的区域,就称为该隐藏层神经元的感受视野(Local Receptive Field)。

可以把它类比成用放大镜看地图:放大镜一次只能覆盖地图的一小块,但把整张地图扫一遍,所有细节都能被观察到。隐藏层的神经元正是带着这样一个固定大小的“视野”去感受上一层的部分特征。

2. 与全连接网络的本质区别

  • 在全连接网络中,隐藏层每个神经元的感受视野覆盖整个输入层,“看得到全部”;
  • 在卷积网络中,隐藏层每个神经元的感受视野很小,一次只能看到输入的局部。

看起来CNN“视野受限”,但上一层的其他特征可以通过平移感受视野来完整覆盖——这正是卷积网络名字的由来:卷积,就是在整个输入上滑动一个固定模板的过程。

3. 扫描方式与步长

设移动的步长(stride)为1:从左到右扫描,每次移动1格;一行扫完后向下移动1格,再次从左到右扫描,如此反复,直到覆盖整张输入。

对28×28的输入使用5×5的感受视野、步长为1时,横向可以扫出 28−5+1=24 个位置,纵向同样24个位置,因此隐藏层得到一张 24×24 的特征图。可以看出,卷积层的神经元只与前一层的部分神经元相连,每条连接线对应一个权重w。

步长控制着扫描的“疏密”:步长越大,输出特征图越小,计算越省但信息丢失越多;步长为1时相邻窗口高度重叠,特征保留最充分。输出特征图的边长可以统一计算:

输出边长 = (输入边长 − 卷积核边长 + 2 × 填充数) ÷ 步长 + 1

其中“填充”指在输入四周补0(zero padding)。例如一个 5×5 的像素块,在四周补上一圈0之后再做卷积,输出尺寸就能与输入保持一致——典型示例中“5×5的图片、周围的0是扩充的”,说的正是这种补0操作。

四、卷积层(下):共享权值与卷积核

1. 卷积核就是感受视野里的权重矩阵

感受视野中每一条连接线都对应一个权重w,这些权重排列成的矩阵(比如 5×5)就称为卷积核(也常称为滤波器)。同一个神经元在扫描整张图的过程中,始终使用同一套权重,这就是共享权值(Shared Weights)。

共享权值带来的好处是双重的:

  • 平移不变性:同一组权重滑过全图,无论图案出现在左上角还是右下角,都能被同样地检测出来;
  • 参数量骤降:本来全连接需要为每个位置学习独立权重,现在全图共享一套,仅一张特征图就能把参数从数百万级压缩到25个左右,下降了几个数量级,显著降低过拟合风险与计算开销。

2. 多通道输入:卷积核也有“通道”

真实图片通常是3通道(如RGB)的。以一个读进来的3通道、5×5的图片为例(周围一圈0是补零扩充):此时一个卷积核必须也有3个通道,可以理解为3个 5×5 的权重切片。计算时,卷积核的每个通道与输入图的对应通道做对应位置的乘加运算,再把3个通道的结果相加,最后加上一个偏置,就得到输出特征图上的一个值。多通道卷积的本质,就是“逐通道乘加后求和”。

3. 多个卷积核:多个“观察角度”

一个卷积层往往不止一个卷积核。例如同时使用 w0、w1 两个卷积核,它们各自以相同的扫描方式处理输入,各自生成一张特征图,于是隐藏层得到2张特征图。每个卷积核像一个专职检查员:有的对边缘敏感,有的对颜色变化敏感,多个卷积核并行工作,才能把输入中多种类型的特征同时提取出来。现代网络中,一个卷积层常配有几十甚至上百个卷积核。

4. 用代码描述一次单通道卷积

把上面的过程用几十行代码就能完整表达(输入与卷积核均为二维列表):

  1. def conv2d(image, kernel, stride=1):
  2. h, w = len(image), len(image[0])
  3. kh, kw = len(kernel), len(kernel[0])
  4. out_h = (h - kh) // stride + 1
  5. out_w = (w - kw) // stride + 1
  6. out = [[0.0] * out_w for _ in range(out_h)]
  7. for i in range(out_h):
  8. for j in range(out_w):
  9. s = 0.0
  10. for m in range(kh):
  11. for n in range(kw):
  12. s += image[i*stride + m][j*stride + n] * kernel[m][n]
  13. out[i][j] = s # 多通道时:三个通道的s分别累加求和,再加上偏置
  14. return out

读一遍循环你会发现:卷积并不神秘,它就是“在窗口内对应相乘再求和,然后滑动窗口”的机械过程,深度学习框架只是把这个过程高度优化并并行化了。

五、池化层:把特征图“压缩变稳”

卷积得到的特征图往往仍然很大,且存在大量冗余。池化层的作用就是对特征图做下采样、稀疏处理,减少后续运算量。常见两种方式:

  • 最大池化:取池化窗口内的最大值,只保留最强的激活响应;
  • 平均池化:取窗口内的平均值,反映整体响应水平。

例如对 24×24 的特征图做 2×2 最大池化(步长2),输出变成 12×12,数据量直接降为原来的四分之一。更妙的是,池化还带来“抗抖动”能力:只要最强的那个特征仍落在池化窗口内,输入发生几个像素的微小偏移,池化结果几乎不变。这正是“判断图像内容不需要精确位置信息”这一先验的落地。

六、全连接层与输出层:从“特征”到“结论”

经过若干轮“卷积+池化”后,网络已经把原始像素逐级抽象成了高度浓缩的特征图。接下来的流程是:

  1. 展平:把所有特征图拉直成一维向量,交给全连接层;
  2. 重新拟合:全连接层的每个神经元与所有输入相连,可以自由组合不同位置、不同类型特征之间的线索,把“局部有什么图案”整合成“整体是什么东西”,减少跨位置特征信息的损失;
  3. 输出结果:输出层按任务要求给出答案,分类任务通常用Softmax函数,把全连接层输出的得分归一化为各候选类别的概率,取最大者作为预测结果。

七、把整条流水线串起来:识别手写数字

以经典的28×28手写数字识别为例,完整走一遍:

  1. 输入 28×28 的图像;
  2. 第一卷积层用多个 5×5 卷积核(步长1)扫描,得到多张 24×24 特征图,学到边缘、线段等低级特征;
  3. 池化层把每张特征图压缩为 12×12;
  4. 再叠加一组卷积+池化,特征从“边缘”逐级组合成“笔画”“圆圈”“拐角”等中级结构;
  5. 全连接层发现“图像中有一个闭环、右下带长尾”,把这些线索加权组合;
  6. 输出层给出0~9十个数字各自的概率,最终判定为”8”。

这条链路清晰地展示了CNN的分层抽象本质:越靠前越像“看细节”,越靠后越像“下判断”。

八、回顾:三大设计对应三大收益

  • 局部连接(感受视野)——尊重图像的局部相关性,参数量大幅下降;
  • 权值共享(卷积核)——同一图案处处可识别,天然具备平移不变性,参数进一步压缩;
  • 逐层下采样(池化)——数据量递减、抗噪抗形变、训练与推理更快。

九、结语

理解卷积神经网络,关键是抓住一条主线:用一个小窗口按固定步长扫过整张图,用同一套权重寻找同一种图案,再用池化把图案的位置信息模糊化,最后由全连接层综合所有线索得出结论。 感受视野、共享权值、卷积核、步长、通道,这几个概念环环相扣,构成了CNN的全部地基。把本文的单层卷积彻底弄懂之后,再去接触更深的结构(多层卷积堆叠、残差连接、多尺度感受视野等),都不过是同一套原理在不同规模上的组合与深化。

发表评论

活动