第1章 从示例到模型:完成第一次机器学习
本章技术主题: 监督学习的样本、标签、训练、推理和测试闭环。
本章技术实验: 在浏览器中训练水杯、收纳盒和其他家庭物品三分类模型。
家庭项目: “建立家庭物品整理与循环利用助手”的感知起步;“做一个会识别声音或手势的互动作品”的手势迁移。
跨章位置: 本章形成训练—推理—测试闭环,第3、4、12章再加入视觉细节、声音和系统反馈。
技术主线: 采集样本 → 添加标签 → 训练模型 → 输入新图片 → 记录错误 → 改进数据。
学习目标
完成本章学习后,你将能够:
- 用自己的话说明样本、标签、训练、推理、测试和泛化之间的关系。
- 在浏览器中采集水杯、收纳盒和其他家庭物品的图像,训练并运行一个三分类模型。
- 通过改变背景、角度和样本构成,发现模型可能学到的背景偏差。
- 根据测试记录判断模型在哪些条件下可用,以及何时应当拒绝判断或交给人确认。
项目导入
本章的技术主题是机器学习的基本闭环。实践任务是训练一个能够区分“水杯”“收纳盒”“其他家庭物品”的图像分类模型。选择图像只是因为它便于采集、结果直观,本章并不讲解图像模型内部的卷积结构。我们的重点是回答一个更基础的问题:机器怎样从示例中形成能力,这种能力为什么有时有效、有时又会突然失灵。
课堂使用教师准备的浏览器训练页面。学生依次采集样本、为样本选择标签、启动训练,再把新图像交给模型测试。页面已经封装好训练程序,第一次实验不要求安装软件,也不要求编写程序。准备充分时,学生通常可以在15分钟内看到第一个结果。
本章需要区分两种AI角色。“应用中的AI”是正在训练和测试的三分类模型,它接收一幅图像,输出三个类别的分数。“开发与学习AI”是陪伴学生研讨的语言模型,它可以协助设计采样清单、解释错误和提出对照实验,但不能替学生拍摄样本、删改原始记录,也不能代替学生作出模型是否可用的判断。
项目只使用普通、无隐私风险的家庭物品。不要拍摄人脸、证件、住址、聊天内容或能够识别个人身份的信息。最终成果不是一次“猜对”的演示,而是一组能够说明模型能力边界的测试证据。
本章成果
- 一个能在浏览器中运行的水杯、收纳盒、其他家庭物品三分类模型。
- 一张“样本—标签—训练—推理—测试”闭环图。
- 一份包含正常、边界、陌生和故障样例的测试记录。
- 一张说明可用条件、主要风险和人工确认规则的模型判断卡。
考点提示
请重点观察四个问题:标签由谁给出;训练图像与测试图像有什么区别;类别分数是否等于事实;模型换一个背景后为什么可能改变判断。能够回答这些问题,比记住页面上的按钮位置更重要。
第一节 用样本和标签训练第一个分类模型
一、先把任务说清楚
分类是把输入归入预先规定的类别。本项目规定三个类别:水杯、收纳盒和其他家庭物品。输入是一幅当前拍摄或导入的物品图像,输出是三个类别各自的分数以及其中最高的候选类别。模型不负责判断物品属于谁,也不负责评价物品好坏。
“其他家庭物品”不能理解成世界上除水杯和收纳盒以外的一切。一个类别如果范围无限宽,少量样本不可能代表它。本章把它限定为家中常见的书本、胶带、遥控器和杯垫。手机、食品、人物和室外景物都视为陌生输入,不要求模型识别。
在开始采集前,先写出验收样例:同组没有参加训练的一个水杯和一个收纳盒,在普通家庭桌面背景下各测试5次;候选类别应多数正确,出现遮挡、类别分数接近或陌生输入时应提示人工确认。这份验收说明使“模型很好用”变成可以检查的要求。
二、样本和标签是什么
一幅用于学习的图像称为一个样本。告诉模型该样本属于“水杯”的类别名称称为标签。一组带标签的样本构成训练数据。模型不会从类别名称中自动理解“水杯”的定义,它只能在给出的图像中寻找与标签经常一起出现的视觉模式。
每组先准备三类样本,每类不少于20幅。对同一件物品连续拍摄20张几乎相同的照片,看起来数量不少,实际变化很小。更合理的做法是至少使用两件不同外观的水杯、两件收纳盒和四种其他物品,并主动改变方向、距离和摆放位置。
| 类别 | 建议对象 | 需要主动变化的条件 | 不应出现的内容 |
|---|---|---|---|
| 水杯 | 不同颜色、形状的两个以上水杯 | 正面、侧面、远近、把手方向 | 人脸、姓名、固定类别标牌 |
| 收纳盒 | 不同颜色、材质和形状的收纳盒 | 开合状态、横放竖放、局部遮挡 | 始终只用同一背景 |
| 其他家庭物品 | 书本、胶带、遥控器、杯垫 | 大小、材质、位置 | 把陌生世界全部塞入本类 |
标签由学生依据项目规则给出,因此标签也可能出错。把保温杯误标为“其他”,模型不会发现教师心中的正确答案,只会把这个错误关系也当成学习材料。采集完成后,小组应交换检查标签:随机查看每类5幅图像,发现模糊、重复、错标或含隐私内容的样本就重新采集。
三、完成第一次训练
打开训练页面后,为三个类别命名并分别进入采集区。每次采集前确认当前标签,避免把图像放错类别。完成样本检查后启动训练。页面会多次读取训练样本并调整模型内部的大量数值,使正确类别的分数逐步提高。这个依据样本调整模型参数的过程称为训练。
训练结束后,不要立刻宣布成功。先拿开训练时使用的物品,放入同类别但未参加训练的新物品。页面此时进行的是推理:模型参数不再因为这幅图像而改变,只把新输入映射为类别分数。记录最高分的类别,也要记录另外两个分数。若“水杯”为0.52、“收纳盒”为0.45,两者非常接近,就不能只展示“水杯”两个字而隐藏不确定性。
开发与学习AI可以帮助学生检查采样计划。例如,学生可提供“不包含真实照片”的文字清单,请它指出哪些颜色、角度或背景只出现在一个类别中。学生需要核对它的建议是否符合课堂条件,再决定是否补拍。真实图片是否可上传、上传到哪里,应由教师根据隐私和平台规则决定;默认做法是在本地训练页面内处理。
第二节 看懂训练、推理与测试的完整闭环
一、模型不是答案表
机器学习模型可以写成一个简化关系:输入图像进入由结构和参数组成的模型,模型输出类别分数。结构规定信息怎样流动,参数是在训练中调整的数值。训练不是把每张图片原样存入答案表,而是让参数逐步形成一种从输入到输出的映射。
训练时,页面知道样本标签,可以比较模型当前输出和标签之间的差异,再调整参数。推理时,页面只看到新图像,不知道正确答案,也不会自动修改参数。测试则是人使用一批未参与训练的样本,对推理结果进行有计划的检查。
带标签样本 → 训练 → 得到参数已经确定的模型
↓
未见过的新样本 → 推理 → 类别分数 → 与人工答案比较 → 测试记录
同一张图如果既参加训练又被拿来证明模型有效,结果通常会过于乐观。这类似于用练习册原题检验是否真正掌握知识。至少应把一部分物品和照片留到训练之后再使用,测试期间也不要偷偷把测试图像补回训练集。第2章会进一步介绍训练集、验证集和测试集的严格划分。
二、分数不是事实概率
分类页面通常会给出0到1之间的分数。三个分数反映模型在当前三个类别之间的相对选择,并不保证等于现实世界中的真实概率。模型只学过本项目的数据;即使对一只玩具给出0.91的“收纳盒”分数,也不能说明它有91%的可能真是收纳盒。
因此可以设置一条使用规则:最高分低于0.70,或者最高分与第二名相差不足0.15时,不自动接受类别,只显示“需要确认”。阈值不是越高越好。阈值提高会减少一些误认,也可能让更多正常物品无法通过。学生应使用固定测试样例比较不同阈值,再选择适合本任务的规则。
这里再次体现两种AI的不同责任。应用中的AI给出类别分数;普通页面规则比较分数和阈值;人查看原物并确认。开发与学习AI可以解释这三个环节,但如果它只看到了学生转述的数字,就不能代替现场观察,也不能证明某次标签一定正确。
三、建立可复查的测试记录
一次测试至少记录输入编号、人工确认类别、模型候选、最高分、第二名分数、环境条件和是否接受。不要只保存成功截图。失败样例更能帮助理解模型学到了什么。
| 编号 | 人工确认 | 模型候选 | 最高分 | 环境条件 | 结论 |
|---|---|---|---|---|---|
| T01 | 水杯 | 水杯 | 0.88 | 普通桌面、正面 | 接受 |
| T02 | 收纳盒 | 水杯 | 0.61 | 强背光、局部遮挡 | 拒绝并记录 |
| T03 | 陌生输入 | 收纳盒 | 0.79 | 玩具汽车 | 不在任务范围 |
评价时先数清样本数量,再报告结果。例如“10个正常样例中有8个候选正确”,比只写“准确率80%”更诚实,因为样本很少,不能代表所有家庭环境和所有物品。还要分别记录误报和漏报:把其他物品误认为水杯,与把水杯误认为其他物品,给实际应用带来的后果可能不同。
第三节 改变数据并判断模型能否识别新样本
一、做一次背景偏差实验
模型可能没有学习物品本身,而是利用了更容易出现的背景线索。要让这种偏差显现出来,可以故意训练一个“有问题的模型”:所有水杯都放在白纸上,所有收纳盒都放在木纹桌面上,其他物品都放在深色垫子上。训练完成后,先在原背景测试,再交换背景测试。
如果水杯换到木纹桌面后被判断为收纳盒,说明背景与标签在训练数据中形成了虚假联系。模型没有语言常识去提醒自己“桌面不是物品类别”,它只会利用能够降低训练错误的模式。背景偏差也可能来自拍摄人的手、类别标牌、固定角度、光线和相机位置。
修正时每次只改变一个变量。第一轮只补充交换背景后的样本,其他设置保持不变;重新训练并用同一组测试图像检查。若结果改善,可以把改善与数据变化联系起来。若同时更换物品、角度、背景和阈值,即使结果变化,也难以说明原因。
二、认识泛化和陌生输入
模型对没有参加训练但与训练任务相关的新样本仍能给出合适结果,这种能力称为泛化。泛化不等于“什么都能认”。训练数据只覆盖本项目中的家庭桌面条件,模型不能因此获得识别商场货架、垃圾分类或危险物品的通用能力。
全书生活项目“做一个会识别声音或手势的互动作品”也可以复用同一学习闭环。本章先迁移到低风险的手势支线:把“张开手掌”“握拳”“其他手势”定义为类别,采集经过授权且不含人脸的手部图像,再执行同样的训练、独立测试和陌生输入检查。模型只输出候选手势和分数,普通程序可在人工确认后改变屏幕动画、虚拟指示灯或播放提示音;不得把课堂模型直接接入门锁、电源等设备。迁移的是“样本—标签—训练—推理—测试”机制,而不是复制本章的数据。
本章应完成四类测试:
- 正常样例:未参加训练的新水杯和新收纳盒。
- 边界样例:严重遮挡、只露出一角、强背光或两个物品同时出现。
- 陌生样例:玩具、食品、人物照片等任务范围外输入。
- 故障样例:摄像头权限被拒绝、画面全黑或训练页面没有加载完成。
故障样例不是分类错误。模型没有获得可用输入时,页面应明确提示检查权限或更换输入,而不是继续显示上一次结果。边界和陌生样例即使得到很高分,也应由人确认,因为三分类模型被迫在已有类别中分配分数,并没有自动拥有“我不知道”这一类。
三、形成模型判断卡
测试结束后,小组不能只用“能用”或“不能用”收尾,而应填写判断卡:模型在哪些物品、背景和光照条件下测试过;最常见的错误是什么;哪些输入必须拒绝;由谁确认;是否值得继续补充数据。
一个合理结论可以是:“本模型可用于普通家庭桌面上的三类物品演示。对未参加训练的新水杯和收纳盒多数判断正确,但强背光和深色背景下错误增加。其他类别范围有限,遇到陌生输入或两类分数接近时必须人工确认,因此不用于清点重要物品。”这类结论同时说明证据、限制和用途,比展示一次高分更专业。
最后把测试记录交给开发与学习AI,请它只根据记录归纳错误模式,并要求它逐条引用样例编号。学生检查它有没有忽略失败记录、夸大样本范围或把类别分数当成事实概率。AI可以帮助整理证据,采用、限制、继续改进或停止使用的决定仍由学生作出。
本章小结
本章完成了第一次机器学习实践。样本是模型学习和测试时使用的具体输入,标签是人依据任务规则给出的类别。训练依据带标签样本调整模型参数;推理使用已经确定的参数处理新输入;测试用未参加训练的样本检查结果。模型可能借助背景、角度等偶然线索降低训练错误,因此训练表现好不代表能够泛化。可靠的实践需要保留失败记录、控制变量、测试陌生输入,并为不确定结果设置人工确认。
关键术语
- 样本:一次学习或测试所使用的具体输入,本章中是一幅物品图像。
- 标签:人依据任务规则为样本给出的正确类别。
- 模型:由结构和参数构成、把输入映射为输出的可运行对象。
- 训练:依据带标签样本的结果差异调整模型参数的过程。
- 推理:使用训练完成的模型处理新输入并产生输出的过程。
- 测试:用未参与训练的固定样例检查模型能力和错误的过程。
- 背景偏差:模型把与任务目标无关但经常和某标签一起出现的背景线索当成判断依据。
- 泛化:模型对未见过但与训练任务相关的新样本仍能完成任务的能力。
目标测试
- 在本章项目中,下列哪一项属于“标签”? A. 一幅水杯照片 B. “水杯”这个类别名称 C. 摄像头 D. 测试记录表
- 关于训练与推理,下列说法正确的是哪一项? A. 推理会自动修正所有错标 B. 训练只是在保存原图 C. 训练调整参数,推理用已有参数处理新输入 D. 二者没有区别
- 为什么不应使用参加训练的同一批图片证明模型有效? A. 图片文件太小 B. 结果可能过于乐观,不能说明对新样本的能力 C. 标签会消失 D. 浏览器不能再次打开图片
- 哪一种现象最能说明模型可能学到了背景偏差? A. 换一只同类水杯仍判断正确 B. 训练速度变慢 C. 水杯换到收纳盒常用背景后被判断为收纳盒 D. 测试表增加了一行
- 判断并改错:“模型给水杯0.90分,就表示现实中它有90%的可能是水杯。”
- 判断并改错:“把同一件物品连续拍摄很多张几乎相同的照片,就一定能获得很好的泛化能力。”
- 用四句话分别说明样本、标签、训练和推理在本章项目中的含义。
- 设计一个只改变背景的对照实验,写出训练条件、测试条件和需要记录的结果。
- 如果模型把一个陌生玩具以0.92分判断为收纳盒,你会怎样处理?说明理由。
- 阅读某组测试记录:普通背景10次中正确8次,强背光5次中正确2次,陌生输入3次都给出高分。请写一条包含适用条件、限制和人工确认规则的判断结论。