当前位置: 首页 > news >正文

深度学习篇---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” 的 “老祖宗”。

http://www.dtcms.com/a/352009.html

相关文章:

  • 国产银河麒麟SP1桌面系统如何免密登录系统
  • Rust:函数与控制流
  • MATLAB在生态环境数据处理与分析中的应用
  • 基于MATLAB的雷达系统设计中的信号处理程序
  • Java:Docx4j类库简介及使用
  • 在 Vue 中嵌入 Unity WebGL 并实现双向通信
  • 有 100W 个数,有一个函数是可以高效查找并删除某个数,问应该用什么数据结构去存这 100W 个数
  • 文献阅读笔记【雷达信号分选】:基于机器学习的雷达信号分选方法综述
  • 在python 代码中调用rust 源码库操作步骤
  • Excel跨sheet检索提取信息
  • 最简洁yolov8 C++配置教程
  • Leetcode+Java+dpI
  • 汇智焕彩,聚势创新 - openKylin 2.0 SP2正式发布!
  • 企业云办公安全指南:如何构建高效无忧的云办公环境?
  • 在Godot中为您的游戏添加并控制游戏角色的完整技术指南
  • 集成电路学习:什么是MobileNet
  • 在数据同步过程中,RustFS如何平衡RDMA的高吞吐和金融级数据校验的开销?
  • 深分页优化:高效解决方案全解析
  • golang7 数组切片
  • RocketMQ 消息存储机制-消息刷盘
  • TorchInductor - Autotune
  • 【牛客刷题】链表指定区间反转:两种高效解法详解,轻松掌握面试高频题!
  • 互联网医院品牌定位与差异化策略
  • 地下蚁国 全DLC(Empires of the Undergrowth)免安装中文版 在蚂蚁的世界里建立你的帝国
  • 马斯克的「巨硬」: MacroHard
  • 机器学习模型可解释库的介绍:Shapash (一)
  • TRO冻结卷土重来?Keith律所代理Ronald Kuang版权再维权
  • Spring Bean 生命周期高阶用法:从回调到框架级扩展
  • Android系统学习2——Android.Utils.Log模块讨论
  • Android 系统属性添加篇