CNN 入门:从概念到基础术语
目录
一、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全套专业术语手册
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐

所有评论(0)