视频封面

视频元信息

  • 所属课程:吴恩达深度学习专项课程(五门课系列)第三门课《结构化机器学习项目》相关内容
  • 本节主题:集束搜索(Beam Search)中的错误分析(Error Analysis)
  • 时长:约 9 分 40 秒

内容摘要(TL;DR)

本节讲解如何对集束搜索做错误分析:当模型输出比人类翻译差时,通过比较 RNN 模型给出的 P(Y*|X) 与 P(Ŷ|X) 大小,判断错误应归咎于集束搜索算法还是 RNN 模型,从而决定优化方向是增大 beam width 还是改进模型本身。


一、背景:为什么需要集束搜索的错误分析 [00:00]

在五门课系列的第三门课中,已经学过错误分析(Error Analysis)能帮助我们把时间聚焦在对项目最有用的工作上。

考点:集束搜索的本质——它是一种近似搜索算法(Approximate Search Algorithm),也被称为启发式搜索算法(Heuristic Search Algorithm)。

  • 它不总是输出最可能的句子。
  • 它只保留 B(如 3、10、100)个最优候选,B 即 beam width(集束宽度)。

正因为集束搜索是近似的,它可能"漏掉"真正最优的句子,因此当翻译出错时,不能直接断定是模型的问题,也可能是搜索算法的问题。

理解:这是一个"归因问题"——错误可能来自两个源头,需要一套方法把责任区分开来,否则可能把大量时间浪费在错误的方向上。


二、问题的提出:两个组件,谁该背锅? [00:46]

以机器翻译为例,设开发集(development set)中人类提供的正确翻译为:

  • Y*(人类翻译,较好的翻译):Jane visits Africa in September.

而运行集束搜索 + 已训练 RNN 模型后,得到:

  • Ŷ(模型输出,较差的翻译):Jane visits Africa loss of September.

易错点:这个错误翻译改变了原意("in September"变成"loss of September"),属于严重错误,不是小瑕疵。

模型由两个主要组件构成:

  1. RNN 模型(序列到序列模型):本质是编码器(Encoder)+ 解码器(Decoder),负责计算 P(Y|X)。
  2. 集束搜索算法:在给定 beam width B 下运行,负责在 RNN 给出的概率分布上寻找最优的 Y。

思考:可以把 RNN 看作"打分函数",把集束搜索看作"在打分函数上做搜索的优化器"。错误归因就是判断是"打分函数打错了分"还是"优化器没找到最高分"。


三、常见的两个"诱人但未必有效"的方向 [02:08]

课程指出两个直觉上"永远不嫌多"的操作:

  • 收集更多训练数据(never hurts)
  • 增大 beam width(never hurts)

易错点:这两者单独使用,都未必能让你达到想要的性能水平。

因此关键问题是:如何判断改进搜索算法(集束搜索)是不是对时间的好投资?


四、核心方法:用 RNN 计算两个概率并比较 [02:50]

重点:这是本节最核心的操作步骤。

利用 RNN 模型分别计算:

  • P(Y*|X):人类正确翻译在模型下的概率
  • P(Ŷ|X):模型实际输出在模型下的概率

然后比较两者大小,分两种情况讨论。

情况一:P(Y*|X) > P(Ŷ|X) [04:22]

  • 集束搜索选择了 Ŷ,但 Y* 在 RNN 下的概率更高。
  • 集束搜索的唯一职责就是找到使 P(Y|X) 最大的 Y,但它没找到。
  • 结论:集束搜索算法有错(Beam Search at fault)。

推导:既然 RNN 已经给 Y* 打了更高分,而搜索却选了低分的 Ŷ,说明是搜索过程出了问题,不是打分函数的问题。

情况二:P(Y*|X) ≤ P(Ŷ|X) [05:24]

  • Y* 是更好的翻译,但 RNN 给它的概率反而更低(≤ Ŷ)。
  • 说明 RNN 认为更差的翻译更可能。
  • 结论:RNN 模型有错(RNN Model at fault)。

易错点:长度归一化(Length Normalization)的处理 如果使用了长度归一化,就不应直接比较原始概率,而应比较考虑了长度归一化的优化目标(optimization objective)。本节为简化暂忽略这一复杂性,但实际应用时必须注意。


五、错误分析流程:在开发集上逐例统计 [06:57]

具体流程如下:

  1. 遍历开发集,找出算法输出明显差于人类翻译的样本(错误样本)。
  2. 对每个错误样本,分别计算 P(Y*|X) 与 P(Ŷ|X),并判断归因。
  3. 统计两类错误的比例。

案例演示:

  • 例 1:P(Y*|X) = 2×10⁻¹⁰,P(Ŷ|X) = 1×10⁻¹⁰。因 Y* 概率更高却被搜索丢弃,判定为集束搜索的错。
  • 例 2:可能判定为 RNN 模型的错。
  • 继续遍历更多样本,有的归咎于搜索,有的归咎于模型。

理解:这就是一个"人工标注 + 概率比较"的统计过程,和第三门课里通用的错误分析表格思路一致,只是这里多了一个用概率大小做判据的环节。


六、根据统计结果决定优化方向 [08:00]

完成错误分析后,可以得到错误中由集束搜索 vs RNN 模型各自负责的比例:

  • 若集束搜索负责大量错误 → 值得花时间增大 beam width。
  • 若 RNN 模型负责大量错误 → 做更深层分析,考虑:
    • 增加正则化(Regularization)
    • 获取更多训练数据
    • 尝试不同的网络架构(Network Architecture)
    • 其他第三门课中介绍的技术

重点:只有在确认集束搜索确实是主要错误来源时,才值得投入精力去增大 beam width。 否则增大 beam width 可能收效甚微。


七、方法总结与适用范围 [09:16]

本节错误分析流程的通用价值:

  • 适用于任何近似优化算法(如集束搜索)在优化某个由学习算法(如序列到序列 RNN 模型)输出的目标函数/代价函数时的场景。
  • 核心思想:区分错误来自"目标函数本身"还是"搜索过程"。

思考:这套思路可以推广到其他"学习模型 + 近似搜索"的组合,比如某些强化学习或结构化预测场景,本质都是把"打分"和"搜索"两个环节分开归因。


关键标签 / 关键词

集束搜索 #BeamSearch #错误分析 #ErrorAnalysis #序列到序列模型 #Seq2Seq #RNN #编码器解码器 #机器翻译 #长度归一化 #LengthNormalization #BeamWidth #近似搜索 #启发式搜索 #吴恩达深度学习 #深度学习专项课程 #结构化机器学习项目


生成时间:2026-10-11 00:19:32 生成平台:VideoNote www.xygy.top