AI

CNN 卷积神经网络

转载小红书:AI产品赵哥

背景🔖


在聊 CNN 之前,我们先来做一个简单的小互动:

  • 请看一眼你身边的任何一个物体,比如一个水杯。
  • 现在,我把它稍微挪动一下位置,再让你看。你依然认得它。
  • 我把它旋转一个角度,你还认得它。
  • 我把它拿到光线更暗的地方,你依然认得它。
  • 我甚至用手挡住它的一半,你的大脑也能立刻脑补出它完整的样子。

对我们人类来说,这一切都发生得如此自然,以至于我们从未思考过,这个识别的过程,到底有多么神奇和复杂。

但在计算机的眼中,世界完全是另一番模样。一张图片,对它来说,只是一个由几百万个代表着颜色和亮度的数字(像素)组成的、巨大而冰冷的矩阵。

  • 你把图片里的水杯向右平移了 10 个像素,对于计算机来说,整个数字矩阵都变了!它看到的是一张全新的、完全不同的图片。
  • 你把图片的光线调暗了一点,矩阵里所有的数字也都变了!

那么,AI 是如何克服这种死板的数字视角,学会像我们人类一样,从千变万化的像素中,识别出物体本质的呢?

这个问题的答案,就藏在我们今天要聊的,人工智能中的一个重要的重要概念 ——CNN(Convolutional Neural Network),卷积神经网络!

  

一、在 CNN 之前 —— 传统神经网络的视觉障碍🔖


要理解 CNN 的革命性,我们必须先看看它打败的那个旧时代王者 —— 全连接神经网络(Fully Connected Neural Network, FCNN),也就是我们在《神经网络》那笔记里搭建的那个基础模型。

用 FCNN 来做图像识别,会遇到两个灾难性的问题:

🔹灾难一:参数爆炸 —— 多到无法承受

  • 问题:FCNN 的全连接特性,意味着上一层的每一个神经元,都要和下一层的每个神经元相连接。
  • 计算一下:假设我们有一张小小的 100×100 像素的彩色图片。◦ 这张图片的输入层,就需要 100 × 100 × 3(RGB 三通道)= 30,000 个神经元。◦ 如果我们的第一个隐藏层,也设置了 30,000 个神经元。◦ 那么,仅仅是从输入层到第一个隐藏层,所需要的连接数(也就是权重参数),就是 30,000 × 30,000 = 9 亿!
  • 后果:这是一个天文数字!要训练这么多的参数,不仅需要无法想象的计算资源,模型也会因为参数过多而极易陷入过拟合(死记硬背训练图片,无法泛化新图片)。而这还只是一张小图片的网络的第一层而已!

  

🔹灾难二:空间结构丢失 —— 把世界揉成一团

  • 问题:FCNN 在处理图片时,会先把 100×100 的二维像素矩阵,粗暴地拉伸一个 30,000 维的一维长向量。
  • 后果:这个拉伸的动作,彻底破坏了图像中至关重要的空间结构信息!
    • 在原始图片中,像素 A 和像素 B 是相邻的,它们共同构成了一条边缘。
    • 但在被拉成一维向量后,A 和 B 可能相隔了 100 个位置,它们之间的邻里关系完全丢失了。
  • 这意味着,FCNN 无法理解上下左右这样的空间概念。它就像一个把一幅完整的拼图打散成一堆单个碎片,然后试图去理解这幅画内容的脸盲症患者。

FCNN 的这两个原罪,注定了它永远无法成为一个优秀的视觉大师。计算机视觉领域,迫切地需要一个全新的、专为处理网格状数据(如图片)而生的网络架构。

  

二、CNN 的创世灵感 —— 像生物视觉一样看世界🔖

CNN 的横空出世,其灵感,直接来源于对生物视觉系统的模仿,特别是我们大脑的视觉皮层。

上世纪 50-60 年代,两位神经科学家 Hubel 和 Wiesel 的诺贝尔奖级研究发现:

  • 我们大脑的视觉皮层中,存在一些初级视觉神经元。这些神经元,并不会对整个视野做出反应,而是只对自己负责的一小块区域(感受野)内的、特定方向的边缘或线条,产生强烈的激活。
  • 更高级的神经元,则会将这些初级神经元的信号组合起来,以识别更复杂的形状,比如角点、曲线。
  • 这个过程层层递进,最终,在最高级的视觉中枢,我们形成了对一张脸、一只猫等复杂物体的认知。
  • 这个过程,类似做拼图,初级神经元识别较小的分块,更高层的神经元识别拼接后的大块,逐步递归,组成整张图片。

CNN 的架构设计,完美地复刻了生物视觉的这两个核心洞察:

  1. 局部感受野(Local Receptive Fields):神经元不需要看整张图,只需要关注一小块局部区域。
  1. 层次化特征提取(Hierarchical Feature Extraction):从简单的边缘,到局部的形状,再到整体的物体,认知是层层抽象的。

基于这两个洞察,CNN 引入了它最核心、最神奇的三大法宝:卷积(Convolution)、激活(Activation)和池化(Pooling)。

  

三、CNN 的三板斧 ——AI 视觉的原子操作🔖


现在,让我们打开 CNN 的发动机舱,看看这三板斧是如何协同工作,让 AI 开眼的。

🔹第一板斧:卷积层(Convolutional Layer)—— 特征提取大师

这是 CNN 的灵魂所在!它的目标,就是从原始的像素矩阵中,提取出各种有用的局部特征。

核心工具:卷积核(Kernel)/ 滤波器(Filter)

  • 它是什么:你可以把它想象成一个个小小的、带有特殊任务的放大镜或特征探测器。
  • 它的样子:它本身也是一个小小的数字矩阵,比如 3×3 或 5×5。矩阵里的数字(权重),决定了这个探测器的任务是什么。◦ 一个专门探测垂直边缘的卷积核,可能长这样:[[1, 0, -1], [1, 0, -1], [1, 0, -1]]◦ 一个专门探测水平边缘的卷积核,可能长这样:[[1, 1, 1], [0, 0, 0], [-1, -1, -1]]◦ 还有的卷积核,在训练后,可能会自发地学会去探测特定的颜色、角点、或者某种纹理。

💡 重要:

这些卷积核里的权重,不是人为设计的,而是和神经网络的权重一样,是通过反向传播,从数据中学习出来的!

卷积操作是如何进行?—— 像扫雷一样的过程

  1. 我们拿起一个 3×3 的垂直边缘探测器(卷积核)。
  2. 将它覆盖在输入图片左上角的 3×3 区域上。
  3. 将这个探测器矩阵,与它覆盖的图片区域的像素矩阵,进行对应位置相乘,然后全部相加的运算(数学上叫点积运算)。
  4. 这个运算会得到一个单一的数字。这个数字,就代表了当前区域,与垂直边缘这个特征的匹配程度。如果这个区域恰好有一个强烈的垂直边缘,这个数字就会很大;如果这个区域很平滑,数字就会接近 0。
  5. 然后,我们将这个探测器向右移动一个像素(步长 Stride),重复上面的运算,得到第二个数字。
  6. …… 就这样,这个探测器像玩扫雷一样,从左到右、从上到下地,滑过整张输入图片。
  7. 最终,它会生成一张新的、尺寸稍小的二维矩阵。这张新矩阵,就被称为特征图(Feature Map)。

特征图是什么?

  • 它不再是原始的像素图。它是原始图片经过垂直边缘探测器过滤后的结果。在这张图上,数值越高(大)的地方,就代表原始图片对应位置,存在一个越强烈的垂直边缘。
  • 我们会有很多个不同的卷积核!一个卷积层,可能会同时使用几十上百个不同的特征探测器(比如 64 个)。
    • 一个探测垂直边缘。
    • 一个探测水平边缘。
    • 一个探测 45 度角边缘。
    • 一个探测红色斑点。
    • ……
  • 每一个卷积核,都会在原始图片上扫一遍,生成一张属于它自己的特征图。
  • 所以,一个拥有 64 个卷积核的卷积层,在接收一张输入图片后,会输出 64 张不同的特征图!这 64 张图,就构成了对原始图片在不同维度上的、丰富的特征描述。

CNN 如何解决 FCNN 的两大灾难?

  1. 参数共享:这是 CNN 最天才的设计!在扫雷的过程中,同一个特征探测器(卷积核),是被重复使用在图片的所有位置上的。这意味着,我们只需要学习这一个 3×3 卷积核的 9 个权重,就能处理整张图片!相比 FCNN 每个连接都有独立权重,这极大地减少了参数数量,从亿级别骤降到了万级别,彻底解决了参数爆炸问题。
  2. 保留空间结构:卷积操作,本身就是在二维空间上进行的。它完美地保留了像素之间的邻里关系,并且它学到的特征(比如一个角点),本身就是由局部空间关系构成的。

  

🔹第二板斧:激活函数层(Activation Layer)—— 非线性的点睛之笔

  • 职责:在卷积层输出的特征图上,应用一个非线性的激活函数(最常用的是 ReLU——Rectified Linear Unit)。
  • ReLU 做了什么:极其简单!ReLU(x)=max(0,x)。也就是说,它会遍历特征图上的每一个数值,将所有小于 0 的数值,全部变成 0,大于 0 的数值保持不变。
  • 为什么需要非线性:◦ 如果没有激活函数,或者激活函数是线性的,那么无论你的神经网络有多少层,它本质上都只是一个简单的线性模型的叠加,其表达能力非常有限,无法学习复杂的数据模式。◦ 引入 ReLU 这样的非线性开关,就赋予了神经网络 “拐弯” 的能力。它能够拟合极其复杂的、非线性的决策边界,从而极大地提升了模型的表达能力。这就像只用直线无论如何也画不出一个圆,但一旦你有了曲线这个工具,就能创造无限的可能。

  

🔹第三板斧:池化层(Pooling Layer)—— 信息降维与精华提炼

  • 职责:对经过激活的特征图,进行下采样(Down-sampling),即降低其尺寸。
  • 最常用的操作:最大池化(Max Pooling)
    • a. 我们定义一个池化窗口,比如 2×2。
    • b. 将这个窗口,不重叠地滑过整张特征图。
    • c. 在每个 2×2 的窗口内,只保留其中最大的那个数值,扔掉其他 3 个。
    • d. 最终,一张 24×24 的特征图,经过 2×2 的最大池化后,就会变成一张 12×12 的新特征图。
  • 池化层带来的好处:
    • a. 进一步减少参数和计算量:特征图的尺寸变小了,后续层需要处理的数据量也相应减少,提升计算效率。
    • b. 提供平移不变性(Translation Invariance):这是池化层最核心的价值!想象一下,在一个 2×2 的区域内,无论那个最强的边缘特征,出现在左上角、右上角、还是其他位置,只要它在这个区域内,经过最大池化后,输出的结果都是一样的!这意味着,模型对特征的微小位移,变得不那么敏感了。一只猫的眼睛,无论是在图片的 (100,100) 像素位置,还是在 (102, 101) 像素位置,对于后续的网络来说,感知到的信息是相似的。这极大地提升了模型的泛化能力。
    • c. 增大感受野:经过池化后,新特征图上的一个像素点,实际上融合了原始特征图上一片区域的信息。这使得更深层的网络,能够看到更宏观的特征。

  

四、搭建视觉神殿 —— 从 LeNet-5 到 ResNet 的架构演进🔖


一个完整的 CNN,就是将上面这 “卷积→激活→池化” 的三连招,像搭乐高一样,重复堆叠多次,然后再在网络的末端,接上几层我们熟悉的全连接层,来进行最终的分类或识别。

这个层层递进的过程,完美地模拟了我们大脑的层次化特征提取:

  • 浅层网络:卷积核学习到的是边缘、颜色、纹理等低级特征。
  • 中层网络:将低级特征组合,学习到眼睛、鼻子、耳朵等中级特征。
  • 深层网络:将中级特征组合,学习到 “猫脸”、“狗脸” 等高级、抽象的概念特征。
  • 最后的全连接层:像一个最终裁判,它看着前面所有层提取出的各种高级特征,然后做出最终的投票:根据我看到的 “猫脸” 特征、“猫耳朵” 特征、“猫尾巴” 特征,我判断这张图是 “猫” 的概率是 98%。

在 CNN 的发展史上,出现过几个里程碑式的、不断加深的网络架构:

  • LeNet-5(1998):Yann LeCun 提出的开山鼻祖,用于手写数字识别,只有 5 层,奠定了卷积 + 池化 + 全连接的经典范式。
  • AlexNet(2012):引爆深度学习革命的火炬手。它通过使用更深的网络(8 层)、更大的数据集(ImageNet)、ReLU 激活函数和 Dropout 技术,在当年的 ImageNet 图像识别大赛中,以压倒性的优势夺冠,震惊了整个学术界和工业界。
  • VGGNet(2014):探索了用更小的卷积核(3×3)和更深的网络(16-19 层)来提升性能的可能性。
  • GoogLeNet(2014):引入了 Inception 模块,在一个网络层中,同时使用不同尺寸的卷积核,来捕捉不同尺度的特征,并提升了计算效率。
  • ResNet(Residual Network, 2015):这是 CNN 发展史上又一个重要的突破!它通过引入残差连接(Residual Connection)或快捷连接(Shortcut Connection),巧妙地解决了网络越深,越难训练的问题。它允许信息跳层传播,使得训练上百层、甚至上千层的超深神经网络成为了可能,极大地提升了模型的性能和精度。

  

五、展望:从 CNN 到视觉的未来🔖


CNN 的出现,是 AI 发展史上的一座丰碑。它不仅奠定了现代计算机视觉的基石,其局部连接、参数共享、层次化特征的思想,也深刻地影响了后续的 AI 架构设计。

当然,技术总是在不断演进。

  • CNN 的挑战:CNN 在捕捉图像的全局、长距离依赖关系方面,能力相对较弱(因为卷积核是局部的)。
  • Vision Transformer(VIT)的崛起:近年来,我们在《注意力机制》那篇里详述的 Transformer 架构,开始跨界进入视觉领域。VIT 通过将一张图片切成一个个小块,然后将这些小块视为语言中的单词,再利用自注意力机制来计算任意两个小块之间的关联性。这使得它在捕捉全局上下文信息方面,展现出比 CNN 更强的能力,并在许多视觉任务上,取得了超越 CNN 的性能。

未来的视觉模型,很可能不再是 CNN 或 Transformer 的二选一,而是两者的结合。比如,用 CNN 强大的局部特征提取能力,作为网络的前几层;然后,再用 Transformer 强大的全局关系建模能力,作为网络的高层,实现优势互补。

  

六、总结时刻🔖


今天,我们进行了一场深入 AI 视觉的探索,包括:

  • 核心使命:解决传统全连接神经网络在处理图像时,面临的参数爆炸和空间结构丢失两大灾难。
  • 灵感来源:模仿生物视觉系统的局部感受野和层次化特征提取机制。
  • 三大核心法宝:
    • a. 卷积层(Convolution):利用参数共享的卷积核(滤波器),高效地从图像中提取局部特征(如边缘、纹理)。
    • b. 激活函数(Activation):引入非线性(如 ReLU),极大地提升网络的表达能力。
    • c. 池化层(Pooling):进行下采样,减少计算量,并提供平移不变性,提升模型的泛化能力。
  • 工作模式:通过堆叠 “卷积→激活→池化” 的组合,实现从低级特征(点线)到高级特征(物体概念)的层次化抽象。
  • 未来发展:虽然面临着 Vision Transformer(VIT)的挑战,但 CNN 的核心思想依然是基石,未来将走向与 Transformer 的深度融合。

历史

  • AI:模型蒸馏、RAG、模型微调、Agent、大模型幻觉、注意力机制、思维链、泛化与过拟合、AGI、多模态、强化学习、涌现、神经网络、大语言模型、AIGC、Prompt、训练 / 推理
  • 自动驾驶:ADAS、高精地图、端到端自动驾驶、仿真平台、世界模型、具身智能、分级标准、VLM/VLA、自动驾驶流派、自动驾驶工具链

未来

  • AI:RNN、LangChain、知识图谱、数据增强……
  • 自动驾驶:数据闭环、BEV;V2X、ODD、占用网络(OCC)与自由空间、场景、OpenSCENARIO、场景空间与覆盖度、Corner Case(长尾场景)、多传感器融合(前融合 / 后融合)WEWA、