
- 说清深度学习的基本含义
- 区分训练与预测
- 为一个场景选择合理的起点
先遇见问题
这张图片,写的是哪个数字?
一张真实的低分辨率数字图片
先用你的直觉判断
请选择最像的数字。图片来自公开教学数据集,答案在选择后揭晓。
如果我们写一条“有两个圈就是 8”的规则,圈没闭合时怎么办?数字倾斜时怎么办?机器学习提供了另一条路:用很多带答案的例子,学习能用于新图片的规律。
基础词汇 · 像素、样本、标签
电脑接收到的,是一组数值
- 样本
- 一条记录。这里就是一张图片。
- 特征
- 输入模型的描述信息。本例直接使用 64 个像素数值。
- 标签
- 训练时提供的正确答案。本例是数字 0 到 9 中的一个。
把 8 行依次接起来,可以得到长度为 64 的数值序列。模型接收图片数值;标签单独保存,不偷偷放进输入里。
查看完整的 8 × 8 像素数值表
| 行 / 列 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
|---|---|---|---|---|---|---|---|---|
| 1 | 0 | 0 | 2 | 13 | 13 | 1 | 0 | 0 |
| 2 | 0 | 0 | 8 | 16 | 14 | 4 | 0 | 0 |
| 3 | 0 | 0 | 5 | 16 | 10 | 8 | 4 | 0 |
| 4 | 0 | 0 | 1 | 16 | 16 | 10 | 2 | 0 |
| 5 | 0 | 2 | 15 | 13 | 12 | 0 | 0 | 0 |
| 6 | 0 | 5 | 12 | 3 | 15 | 1 | 0 | 0 |
| 7 | 0 | 0 | 14 | 3 | 13 | 4 | 0 | 0 |
| 8 | 0 | 0 | 3 | 15 | 13 | 1 | 0 | 0 |
概念地图
深度学习,是机器学习中的一类方法
让机器完成识别、推理、决策等任务的广泛领域。
从数据中学习规律,用于预测、分类或其他任务。
使用多层神经网络,逐层学习数据的表示。
神经网络由许多可调整的计算单元组成。一层接一层地转换信息,叫做多层处理。“深”不是“像人一样深入思考”,层数更多也不保证更准确。深度学习并没有一个适用于所有场合的固定层数门槛。
把判断方法写清楚
例如:分数达到 60 就算及格。规则明确、稳定时非常合适。
从样本学习关系
先确定输入与目标,再用数据学习判断方法。KNN、决策树和神经网络都是例子。
连特征表示也一起学
多层网络可以学习有利于任务的中间表示,但仍需要人定义目标、准备数据和检查结果。
先理解层次,再学习公式
把简单线索,一层层组合起来
像素
把图片变成明暗数值。同一张图中的像素位置很重要,位置改变可能影响结果。
上图是帮助理解层次的概念示意,不是实验模型内部的真实可视化。后面的实验使用一个小型全连接网络,不假设它的每一层真的在识别“边缘”或“圆圈”。
训练 ≠ 预测
学习发生在参数被调整的时候
步骤 01
准备样本与标签
样本是一条输入记录,例如一张图片。标签是这条记录对应的答案,例如数字 8。先把一部分数据留出来,最后再考试。
训练样本:图片 + 已知数字本课是带标签的监督学习例子。深度学习也可以采用自监督等其他学习方式。
训练时
图片 + 标签 → 比较错误 → 更新参数
预测时
新图片 + 已有参数 → 输出预测
互动实验 · 真实小模型
改一改输入,看看模型怎么判断
先观察原图,再把图片向右移一格或遮住上方几行。比较预测是否改变:分数可能下降,也可能错误地升高。
当前输入 · 8 × 8 像素
原图标签:8 · 原始测试样本
“原图标签”说明图片的来源;严重遮挡后,画面可能已经无法辨认。固定模型的即时计算
- 数字 173.8%
- 数字 817.8%
- 数字 46.5%
这里的百分比是模型输出,不是“保证正确”的概率。模型没有在你操作时重新训练。
这个小模型直接接收固定位置的 64 个数值,没专门学会应对位置变化。移动后,笔画落在不同的输入位置,输出就可能改变。第 07 课会进一步讨论卷积网络如何利用局部结构;它也不是对所有变化都免疫。
查看实验来源、训练方式与局限
使用 scikit-learn 的 digits 数据集:1,797 张 8 × 8 灰度图片,每个像素取值 0–16。本实验不是 MNIST,也不是通用手写识别服务。
固定随机种子 42,按类别比例划分:训练池 1437 张、独立测试集 360 张。训练池内部再留出约 10% 用于提前停止判断。网络有两个隐藏层(32、16 个单元),本次训练进行了 64 轮,原始测试集准确率为 93.9%。
页面从测试集中按顺序取每类前三张,共 30 张,不按预测是否正确筛选。移动、遮挡与噪声在浏览器中计算;模型参数固定。上述准确率只针对原始测试集,不代表修改后图片或现实业务上的表现。小型全连接网络用于建立直觉,不代表深度学习的最佳实践。
数据集官方说明 ↗从算法回到问题
不是所有问题,都需要深度学习
更值得尝试
大量图片中的外观缺陷、语音转文字、复杂文本分类输入变化丰富,人工规则很难覆盖。可以从已有模型开始,用真实业务数据验证。
先比较简单模型
用客户年龄、次数、金额等表格字段预测流失这类任务也能使用神经网络,但树模型或线性模型可能已经足够。复杂度不是效果保证。
优先规则或先补条件
按固定公式计算费用;没有可靠标签却要求零错误识别前者规则清楚;后者缺少验证条件。先解决规则、数据或容错问题,再谈模型。
为一个具体任务做判断
带着你的真实场景回答。还不清楚的地方,就选“不确定”。
已回答 0 / 4 项。回答全部问题后查看建议。
实验能认数字,不等于单据录入已经解决:真实单据还需要定位字段、处理模糊图片、检查错误、保护数据并安排复核。模型准确率只是整个产品的一项指标。
可选代码实践 · 每行都有说明
用代码走一遍完整流程
Python 是本例使用的编程语言,scikit-learn 是提供数据与训练工具的库。这里先用它观察“准备数据 → 训练 → 测试”的完整流程,不要求你现在就能写出训练算法。第 15 课再使用 PyTorch 搭建完整项目。
准备运行环境(可选)
在已安装 Python 3.12 的电脑中,打开终端并执行下面的安装命令。终端是输入命令的窗口,此命令只安装本地学习所需的库。
python -m pip install scikit-learn==1.7.2下载代码后,在文件所在目录运行:
python deep-learning-intro.py不需要显卡,也不需要另外下载数据。未准备环境时,先看下面的逐行说明即可。
第一步:读取图片与答案
from sklearn.datasets import load_digits导入示例数字数据的读取工具。sklearn 是 scikit-learn 在代码中的名字。
from sklearn.model_selection import train_test_split导入划分数据的工具,把一部分样本留到最后测试。
from sklearn.neural_network import MLPClassifier导入多层感知机分类器:一种由多个计算层组成的神经网络。
digits = load_digits()读取库自带的 8 × 8 数字图片及答案;不需要另外下载 MNIST。
X = digits.data / 16.0X 保存像素特征;把原本 0–16 的值除以 16,缩放到 0–1。
y = digits.targety 保存正确的数字标签,与 X 的每一行一一对应。
第二步:划分数据、设置模型
X_train, X_test, y_train, y_test = train_test_split(把输入与标签一起划分,得到训练池和测试集,避免错位。
X, y, test_size=0.2, random_state=42, stratify=y保留约 20% 用于测试;固定随机种子;尽量保持各数字的占比。
)结束这次数据划分调用。测试集不用于调整模型参数。
model = MLPClassifier(创建模型。此时还没有学习,只是设定结构与训练方式。
hidden_layer_sizes=(32, 16), max_iter=400,设置两个隐藏层,分别有 32、16 个计算单元;最多训练 400 轮。
early_stopping=True, random_state=42从训练池内部再留出验证数据,效果不再改善时提前停止;固定初始化种子。
第三步:训练、评估与预测
)结束模型配置。隐藏层、参数与训练细节将在后续课程展开。
model.fit(X_train, y_train)执行训练:模型反复计算预测、比较标签,并更新参数。
accuracy = model.score(X_test, y_test)在独立测试集上计算准确率,也就是预测正确的样本比例。
prediction = model.predict(X_test[:1])[0]用训练好的模型识别第一张测试图片;这里不更新参数。
print(f"测试集准确率:{accuracy:.1%}")打印测试结果,保留一位小数。不同库版本或运行环境可能有细微差异。
print(f"第一张测试图片:预测 {prediction},真实标签 {y_test[0]}")同时显示模型预测与真实标签,便于检查一次具体判断。
独立测试集:360 张 · 准确率:93.9%
这是这次固定划分与配置的结果,不是对其他数据的承诺。测试集用于最后评估,不应反复用于调参。知识检查
五个问题,检查你的理解
已回答 0 / 5 题 · 当前答对 0 题
课程总结
先记住这五件事
- 深度学习属于机器学习,它用多层神经网络学习表示。
- 图片对电脑而言是一组数值,标签是单独提供的答案。
- 训练调整参数;预测使用参数,两者不能混为一谈。
- 模型可能自信地出错,必须用合适的新数据检验。
- 先定义任务、建立简单基线,再比较深度学习的收益。
下一课 · COURSE 02
从一个神经元到多层神经网络
我们会拆开一个计算单元,亲手调整权重,观察它怎样改变输出。
第一阶段 · 第 2 课