视频封面

视频元信息

  • 课程来源:吴恩达深度学习专项课程(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]

朴素方案

最直接的想法是:

  1. 将输入图片送入一个卷积网络(ConvNet);
  2. 使用 Softmax 单元输出标签 y;
  3. 若有 4 位员工,则输出 4 个类别(或 5 个,含"以上都不是")。

该方案的问题

易错点:Softmax 方案在人脸识别中不可行,原因有两点:

  1. 训练集太小:每人只有一张照片,不足以训练出鲁棒的神经网络,网络会过拟合(overfit);
  2. 扩展性差:如果团队新增一名成员,类别数从 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)问题的解决方式。

具体识别过程

给定一张新照片,将其与数据库中每张照片逐一比较:

示例流程:

  1. 新照片 vs 数据库第 1 张 → D 输出较大值(如 10)→ 不是同一人
  2. 新照片 vs 数据库第 2 张 → D 输出较小值 → 是同一人(Danielle)
  3. 新照片 vs 数据库第 3、4 张 → D 输出较大值 → 不是同一人

最终判定:此人是 Danielle。

处理陌生人

若来者不在数据库中:

  • 将新照片与数据库中所有 4 张照片逐一比较;
  • 若 D 对所有配对都输出较大值;
  • 则判定:此人不是数据库中的任何一位。

关键点:识别 = 多次验证(pairwise comparison)。 人脸识别系统通过反复调用验证函数 D 来完成识别任务。


五、单样本学习问题的解决与扩展性 [04:07]

为什么这个方法有效

只要能够学到函数 D(输入一对图片,判断是否为同一人),那么:

  • 新增人员时无需重新训练:只需将新人的照片加入数据库;
  • 系统自动支持第 5 位、第 6 位……新成员;
  • 识别流程完全不变。

方法优势总结

对比维度 Softmax 方案 相似度函数 D 方案
训练数据需求 每人需大量样本 每人一张即可
新增人员 需重新训练网络 直接加入数据库
陌生人处理 需额外"以上都不是"类 天然支持
本质 闭集分类 开集验证

思考:这种"学习相似度而非学习类别"的思想,是后续 Siamese 网络、Triplet Loss 等方法的基础。


六、本节小结与下节预告 [04:37]

本节核心结论

  1. 单样本学习是人脸识别的核心挑战:每人只有一张照片时如何识别;
  2. Softmax 分类方案不可行:样本太少 + 新增人员需重训;
  3. 正确方法:学习相似度函数 D,输入两张图片,输出差异程度;
  4. 识别流程:新图片与数据库逐一比较,通过阈值 τ 判断是否为同一人;
  5. 扩展性好:新增人员只需加入数据库,无需重新训练。

下节预告

下一节将介绍如何实际训练神经网络来学习这个函数 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