深度学习篇---LeNet-5
要理解 LeNet-5,我们可以先记住它的 “身份标签”:卷积神经网络(CNN)的 “开山鼻祖” 之一,1998 年由计算机科学家 Yann LeCun(杨立昆)提出,核心用途是解决 “手写数字识别” 问题(比如银行自动识别支票上的手写账号)。
它的设计思路特别像 “人类看数字”—— 先看整体轮廓,再聚焦细节,最后判断是什么数字。下面我们用 “三层视角” 拆解它:先讲核心原理,再一步步走流程,最后说它的意义,保证零基础也能懂。
一、先搞懂 2 个核心:为什么 LeNet-5 能 “看懂” 数字?
在 LeNet-5 之前,计算机识别数字靠 “暴力比对”(比如把输入的数字图片和模板逐像素对比),但只要数字写得歪一点、粗一点,就会认错。而 LeNet-5 靠两个 “黑科技” 解决了这个问题:
1. 卷积层(Convolution Layer):像 “放大镜” 找特征
人类看数字 “8”,会先注意到 “上下两个圈”;看 “1”,会注意到 “一条竖线”。卷积层的作用就是自动提取这些 “关键特征”,不用人手动定义。
怎么提取?可以想象成用一个 “小滤镜”(专业叫 “卷积核”,比如 3×3 大小的方块)在数字图片上 “滑动”:
- 每滑一步,就计算 “滤镜” 和图片对应区域的 “相似度”—— 如果区域是 “竖线”,和 “竖线滤镜” 的相似度就高,输出一个亮值;如果是空白,相似度低,输出暗值。
- 最后会生成一张 “特征图”:图里的亮斑就是提取到的特征(比如竖线、圆圈、拐角)。
关键优势:不管数字写在图片的左边还是右边,只要有 “竖线” 特征,卷积层都能找到 —— 这叫 “平移不变性”,解决了 “数字位置歪一点就认错” 的问题。
2. 池化层(Pooling Layer):像 “压缩照片” 减负担
卷积层提取的特征图可能很大(比如 28×28 像素),计算起来很慢。池化层的作用就是 **“压缩” 特征图,保留关键信息,去掉冗余细节 **。
最常用的是 “最大池化”(Max Pooling):用一个 2×2 的小窗口在特征图上滑动,每个窗口里只留 “最大的那个值”(比如窗口里是 [1,0; 3,2],就留 3)。
举个例子:一张 28×28 的特征图,经过 2×2 最大池化后,会变成 14×14(尺寸减半),但 “竖线、圆圈” 这些关键特征还在 —— 既减少了计算量,又让特征更 “鲁棒”(比如数字线条粗一点、细一点,池化后影响不大)。
二、LeNet-5 的完整流程:从 “图片” 到 “识别结果”
LeNet-5 的结构很固定,总共 7 层(注意:输入层不算在 “7 层” 里),我们用 “手写数字图片(比如 28×28 像素)” 为例,一步步看它怎么工作:
先明确输入:手写数字图片
我们要识别的数字,会先变成一张32×32 像素的灰度图(只有黑白,没有颜色,每个像素用 0-255 表示明暗,0 是黑色,255 是白色)—— 这是 LeNet-5 要求的 “标准输入格式”。
然后走 7 层流程:“卷积→池化→卷积→池化→全连接→全连接→输出”
我们用表格拆解每一层的作用,像 “工厂流水线” 一样清晰:
层级顺序 | 层类型 | 核心作用 | 通俗例子(以识别 “8” 为例) | 输入→输出尺寸变化 |
---|---|---|---|---|
1 | 卷积层(C1) | 提取 “边缘、线条” 等简单特征 | 找到 “8” 的外轮廓线条、内部交叉线 | 32×32 → 28×28(6 个特征图) |
2 | 池化层(S2) | 压缩特征图,保留线条特征 | 把 “8” 的轮廓线条 “变粗”,去掉细微的毛刺 | 28×28 → 14×14(6 个特征图) |
3 | 卷积层(C3) | 组合简单特征,提取 “拐角、圆圈” 等复杂特征 | 把 “8” 的上下两条弧线组合成 “两个圈” | 14×14 → 10×10(16 个特征图) |
4 | 池化层(S4) | 再压缩,强化 “圆圈” 等关键特征 | 把 “8” 的两个圈变得更清晰,减少冗余 | 10×10 → 5×5(16 个特征图) |
5 | 全连接层(C5) | 把所有特征图 “拼起来”,变成一个 “特征向量” | 把 “两个圈、交叉线” 等特征打包成一个 “8 的特征包” | 16×5×5 → 120(120 个数值) |
6 | 全连接层(F6) | 进一步筛选关键特征,减少维度 | 从 “8 的特征包” 里挑出最关键的 3 个特征(比如圈的大小、交叉位置) | 120 → 84(84 个数值) |
7 | 输出层(Output) | 输出 “是 0-9 中每个数字” 的概率 | 输出 “是 8 的概率 98%,是 0 的概率 1%,其他 0.2%” | 84 → 10(10 个概率值,对应 0-9) |
最后出结果:选概率最大的数字
输出层会给出 10 个概率值(对应 0-9),比如 “8” 的概率是 98%,其他数字都很低,那 LeNet-5 就会判断:这张图片是数字 “8”。
三、LeNet-5 的 “高光时刻” 和意义
在 1990 年代,LeNet-5 就已经能在 “MNIST 手写数字数据集”(包含 7 万张 0-9 的手写数字图片)上达到99% 以上的识别准确率—— 这个水平和人类差不多,甚至比有些粗心的人更准。
它的意义远不止 “识别数字”,更在于奠定了现代 CNN 的框架:
- 现在我们用的 ResNet(识别图片)、YOLO(检测物体)、Transformer(AI 绘画、NLP),底层都沿用了 LeNet-5 的 “卷积→池化→全连接” 思路;
- 它证明了 “让计算机自己学特征” 比 “人手动定义特征” 更有效,直接推动了深度学习的发展。
四、一句话总结 LeNet-5
LeNet-5 就像一个 “数字识别小专家”:它先通过 “卷积层” 找数字的线条、圆圈,再用 “池化层” 简化信息,最后用 “全连接层” 打包特征、判断数字 —— 虽然现在看它的结构很简单,但它是所有 “会看图片的 AI” 的 “老祖宗”。