目录

一、CNN 到底是干什么的?

二、为什么要花时间梳理它的进化史?

三、CNN 的通用零件

1. 卷积层:把视觉特征翻译成数字

2. 激活函数:过滤没用信息

3. 池化层:压缩图片尺寸,保留最强特征

4. 全连接层:把所有数字汇总,做最终判断

5. Softmax:把分数转成直观的概率

四、核心术语


一、CNN 到底是干什么的?

CNN(Convolutional Neural Network),全称卷积神经网络,你可以把它理解成 AI 的「眼睛」—— 专门用来让计算机可以看懂图片、视频里的内容。

你每天接触的很多功能,背后都是它在工作:

  • 手机人脸解锁、相册自动按人物分类

  • 拍照搜题、识花、识物

  • 自动驾驶里识别红绿灯、行人、车道线

  • 短视频的特效贴纸、智能剪辑

  • 安检机自动识别违禁品、医疗影像辅助筛查

它不是某一个具体的软件,而是一类视觉 AI 的基础骨架。现在几乎所有和图像、视频相关的人工智能,底层都用到了 CNN 的技术。

二、为什么要花时间梳理它的进化史?

很多人刚开始学深度学习,都会一头扎进「背模型名字、背层数、背参数量」的误区,背了一堆 LeNet、VGG、ResNet,合在一起就乱成一锅粥,始终搞不懂:为什么模型要设计成这个样子?

我刚刚接触时也是这样的,直到顺着时间线捋下来才发现:这些模型根本不是凭空设计的 —— 每一个新模型的出现,都是为了解决上一代模型的某个痛点。

  • 网络太深训不动?那就发明残差连接

  • 模型太大手机跑不动?那就做轻量化卷积

  • 单尺寸卷积看不全?那就做多分支多尺度

整个 CNN 的进化史,本质上就是一部「遇到问题 → 解决问题」的创新史。

这个系列要做的,就是顺着时间线,从最基础的概念讲起,一个模型一个台阶,把每个设计的前因后果讲透。 不用死记硬背,看完你不仅能分清每个模型,更能看懂背后的设计逻辑 —— 再遇到新的模型,也能自己判断它是在解决什么问题。

三、CNN 的通用零件

在讲具体模型之前,我们先了解一下所有 CNN 都通用的 5 块「积木」。后面所有复杂的模型,本质上都是这几块「积木」的不同拼法。

1. 卷积层:把视觉特征翻译成数字

  • 输入:一张由像素组成的图片,每个像素都是 0~255 的数字(比如彩色图有红、绿、蓝三层像素数字)。
  • 做了什么:用一个带权重的小数字窗口(卷积核),在图片上一格一格滑动,每滑到一个位置,就把窗口里的像素数字和权重对应相乘、再相加,得到一个新的数字。
  • 输出:一张新的 “数字图”(特征图),每个位置的数字,代表原图对应区域符合某类特征的强度。
  • 为什么要这么做:计算机看不懂 “这是一条竖线”“这是圆形”,但它能算数字。卷积层就是把 “边缘、纹理、色块” 这些视觉特征,转换成它能计算的数值。
  • 通俗类比:就像阅卷老师按采分点逐题打分,把一整张写满字的卷子,转换成一题一题的分数。

2. 激活函数:过滤没用信息

  • 输入:卷积层算出来的一串数字。
  • 做了什么:对每个数字做一次非线性变换,最常用的 ReLU 函数,就是很简单的一条规则:负数一律变成 0,正数原样保留。激活完全不改变形状,只修改里面每个像素的值。
  • 输出:筛选后的数字。
  • 为什么要这么做:没找到这个特征的地方直接扔掉,只保留找到特征的信号,就是去掉无效干扰,让网络能学会复杂东西。没有激活,再多层卷积等价等于一层,学不出花样。
  • 通俗类比:就像打分设了及格线,特征强度不够的直接清零不算,只保留足够明显的有效特征。

3. 池化层:压缩图片尺寸,保留最强特征

  • 输入:卷积输出的大尺寸数字矩阵。
  • 做了什么:把图片切成一个个小方块,每个方块里只保留一个数字(比如取最大的那个,或取平均值)。压缩图片尺寸,保留最强特征。
  • 输出:尺寸更小的数字矩阵。
  • 为什么要这么做:一是压缩数据量,越往后计算量越小,跑得更快;二是保留最关键的特征,让模型对 “物体稍微挪一点位置” 不敏感,识别更稳。
  • 通俗类比:就像把每道大题里的小分合并成大题得分,卷子变薄了,关键的得分信息还在。

4. 全连接层:把所有数字汇总,做最终判断

  • 输入:前面所有层提取、压缩完的特征数字,展平成一长串数字。
  • 做了什么:给每个特征数字分配一个权重,加权求和,最后算出每个类别的原始得分。
  • 输出:每个类别的原始分数。
  • 为什么要这么做:前面卷积、池化都是在提取局部特征,全连接层把所有分散的特征汇总到一起,综合判断这张图到底属于哪一类。
  • 通俗类比:就像最后把所有题的分数加总,算出总分,给出最终成绩。

5. Softmax:把分数转成直观的概率

  • 输入:全连接层输出的原始得分(可正可负,可大可小)。
  • 做了什么:通过数学变换,把所有得分转换成 0~1 之间的概率值,并且所有类别的概率加起来等于 1。
  • 输出:每个类别的置信度概率。
  • 为什么要这么做:原始分数量级不固定,人看不懂;转换成概率之后,可以直观地知道 “模型判定这张图时有多大把握是猫、多大把握是狗”。
  • 通俗类比:就像把总分转换成排名百分比,一眼就能看出在哪个档次。

注:这里如果没有理解没关系,后面还会再详细说明。

模型训练的完整流程如下:

图片转成像素数字 → 一层层卷积 + 激活 + 池化,逐步提炼成特征数字 → 全连接层汇总算出每个类别的分数 → 和真实答案对比,算出误差有多大(损失函数)→ 把误差从后往前传,一层层调整每个权重数字(梯度)→ 再跑一个 epoch,误差更小一点

训练本质上就是在反复调整 “每一层的数字权重”,让最后算出来的结果越来越准。

所有的模型创新,本质上都在围绕三件事做权衡:

  • 效果:识别准不准

  • 速度:跑的快不快

  • 参数量:模型大不大、占不占内存

四、核心术语

术语专业解释通俗解释
张量(Tensor)

深度学习多维数据存储结构,承载图像、特征、参数等所有数据。

PyTorch 存图片、存特征、存权重的统一容器。

通道(Channel)张量在通道维上的分量;彩色图默认 RGB 3 通道。网络中某层的通道数 = 该层卷积核的个数,每个通道对应一种特征响应。体检报告的不同项目:CT、彩超、验血各是一个通道,合起来才能判断病情。网络越深通道越多 = 观察角度越多。
损失函数(Loss)量化模型输出与真实标签差距的标量函数,训练的全部目标就是让它变小;分类任务用交叉熵。估分和实际得分的差距:差距越大,估得越离谱。
梯度(Gradient)损失函数对每个参数的偏导数,指出每个参数该往哪调、调多少;训练沿负梯度方向更新。错题本:告诉你哪错了、错多少、下次往哪个方向改。
反向传播(Backpropagation)

根据损失梯度从后往前更新网络参数的过程。

算出模型错在哪,反向修改权重,让模型下次更准。

学习率(Learning Rate)单次参数更新的步幅大小。每次改权重改多大。太大不稳、太小太慢。
过拟合训练误差低但泛化误差高(模型记住了噪声)。只背了原题答案,换数字就错。
欠拟合连训练误差都降不下去(容量或训练不足)书都没翻完就上考场。

注:更多专业术语,可以看CNN全套专业术语手册

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐