
视频元信息
- 课程来源:吴恩达深度学习专项课程(Deep Learning Specialization)
- 所属模块:卷积神经网络(CNN)— 人脸识别专题
- 本节主题:单样本学习(One-shot Learning)
- 视频时长:约 4 分 40 秒
- 课程语言:英文讲解(中英字幕)
内容摘要(TL;DR)
本节讲解人脸识别中的单样本学习(One-shot Learning)问题:当数据库中每个人只有一张照片时,如何识别新出现的人。吴恩达指出,直接用 Softmax 分类器输出固定类别的方法行不通(训练样本太少、新增人员需重训)。正确做法是学习一个相似度函数 D,输入两张图片,输出它们的差异程度。识别时,将新图片与数据库中每张图片逐一比较,若差异小于阈值 τ 则判定为同一人。
一、问题引入:什么是单样本学习 [00:24]
场景设定
假设你的组织数据库中存有 4 位员工的照片(吴恩达在 deeplearning.ai 的同事:Kian、Danielle、Younes、Tian)。
现在有一个人来到办公室,需要通过闸机(turnstile)进入。
系统需要完成的任务是:
- 即使之前只见过某人的一张照片,也要能识别出这是同一个人;
- 如果来的人不在数据库中,系统应判断"此人不是数据库中的任何一位"。
单样本学习的定义
单样本学习(One-shot Learning):只从一个样本(一张照片)中学习,从而能够再次识别该对象。
理解:这与人脸识别的实际需求高度吻合——大多数场景下,每位员工/用户只会上传一张证件照作为基准。
为什么人脸识别系统需要单样本学习?
- 数据库中每位员工可能只有一张照片;
- 无法为每个人收集大量训练样本。
二、为什么不能用 Softmax 分类器直接解决 [01:22]
朴素方案
最直接的想法是:
- 将输入图片送入一个卷积网络(ConvNet);
- 使用 Softmax 单元输出标签 y;
- 若有 4 位员工,则输出 4 个类别(或 5 个,含"以上都不是")。
该方案的问题
易错点:Softmax 方案在人脸识别中不可行,原因有两点:
- 训练集太小:每人只有一张照片,不足以训练出鲁棒的神经网络,网络会过拟合(overfit);
- 扩展性差:如果团队新增一名成员,类别数从 5 变为 6,就必须重新训练整个卷积网络。
思考:这种"固定类别数"的范式本质上是闭集分类,而人脸识别面对的是开集问题——随时可能有新的人加入或出现陌生人。
结论:每次新增人员都要重训网络,显然不是好的方法。
三、正确思路:学习相似度函数 D [02:08]
核心思想
不学习"这是谁",而是学习"这两张图是不是同一个人"。
具体来说,训练一个神经网络来学习函数 D(difference / distance function):
- 输入:两张图片
- 输出:这两张图片的差异程度(degree of difference)
D 函数的期望行为
| 情况 | D 的输出 |
|---|---|
| 两张图是同一人 | 较小的数值 |
| 两张图是不同人 | 较大的数值 |
理解:D 本质上是一个度量学习(metric learning)函数,它把"识别问题"转化为"验证问题"。
四、识别阶段的工作流程 [02:43]
阈值判断规则
设定一个阈值(超参数)τ(tau):
- 若 D(图1, 图2) < τ → 判定为同一个人
- 若 D(图1, 图2) > τ → 判定为不同的人
这就是人脸验证(Face Verification)问题的解决方式。
具体识别过程
给定一张新照片,将其与数据库中每张照片逐一比较:
示例流程:
- 新照片 vs 数据库第 1 张 → D 输出较大值(如 10)→ 不是同一人
- 新照片 vs 数据库第 2 张 → D 输出较小值 → 是同一人(Danielle)
- 新照片 vs 数据库第 3、4 张 → D 输出较大值 → 不是同一人
最终判定:此人是 Danielle。
处理陌生人
若来者不在数据库中:
- 将新照片与数据库中所有 4 张照片逐一比较;
- 若 D 对所有配对都输出较大值;
- 则判定:此人不是数据库中的任何一位。
关键点:识别 = 多次验证(pairwise comparison)。 人脸识别系统通过反复调用验证函数 D 来完成识别任务。
五、单样本学习问题的解决与扩展性 [04:07]
为什么这个方法有效
只要能够学到函数 D(输入一对图片,判断是否为同一人),那么:
- 新增人员时无需重新训练:只需将新人的照片加入数据库;
- 系统自动支持第 5 位、第 6 位……新成员;
- 识别流程完全不变。
方法优势总结
| 对比维度 | Softmax 方案 | 相似度函数 D 方案 |
|---|---|---|
| 训练数据需求 | 每人需大量样本 | 每人一张即可 |
| 新增人员 | 需重新训练网络 | 直接加入数据库 |
| 陌生人处理 | 需额外"以上都不是"类 | 天然支持 |
| 本质 | 闭集分类 | 开集验证 |
思考:这种"学习相似度而非学习类别"的思想,是后续 Siamese 网络、Triplet Loss 等方法的基础。
六、本节小结与下节预告 [04:37]
本节核心结论
- 单样本学习是人脸识别的核心挑战:每人只有一张照片时如何识别;
- Softmax 分类方案不可行:样本太少 + 新增人员需重训;
- 正确方法:学习相似度函数 D,输入两张图片,输出差异程度;
- 识别流程:新图片与数据库逐一比较,通过阈值 τ 判断是否为同一人;
- 扩展性好:新增人员只需加入数据库,无需重新训练。
下节预告
下一节将介绍如何实际训练神经网络来学习这个函数 D(即 Siamese 网络与 Triplet Loss 相关内容)。
【拓展】相关背景与延伸知识
1. 人脸验证 vs 人脸识别
- 人脸验证(Face Verification):1:1 问题,判断"这张照片是不是某人";
- 人脸识别(Face Recognition):1:N 问题,判断"这张照片是谁"。
本节中 D 函数解决的是验证问题,而识别通过多次调用验证来实现。
2. 度量学习(Metric Learning)
D 函数本质上是一种度量学习,目标是让同一人的图片在嵌入空间中距离近、不同人的距离远。后续课程中的 Siamese 网络 + Triplet Loss 正是实现这一目标的具体方法。
3. 常见踩坑点
- 阈值 τ 的选择很关键:太小会导致误识别(把不同人判为同一人),太大会导致拒识(把同一人判为不同人);
- D 的输出必须可比:训练时要保证 D 对不同图片对的输出在同一尺度上;
- 不要用分类思路做人脸识别:这是初学者最常见的误区。
4. 应用场景
- 公司门禁闸机
- 手机人脸解锁
- 机场安检身份核验
- 相册人脸聚类
关键标签 / 关键词
单样本学习 One-shot Learning 人脸识别 Face Recognition 人脸验证 Face Verification 相似度函数 Similarity Function 差异函数 D 阈值 τ Softmax 分类器 卷积神经网络 CNN 度量学习 Metric Learning 吴恩达 深度学习 开集识别 Siamese 网络
生成时间:2026-10-11 00:40:55 生成平台:VideoNote www.xygy.top