视频封面

视频元信息

  • 所属课程:吴恩达深度学习专项课程(Deep Learning Specialization)—— 序列模型(Sequence Models)第三周
  • 本节主题:细化集束搜索(Refinements to Beam Search)
  • 语言:英文讲解(官方中英字幕)

内容摘要(TL;DR)

本节介绍集束搜索的两大改进:一是用对数求和替代概率连乘,避免数值下溢;二是引入长度归一化(含超参数 α),缓解模型偏向短句的问题。最后讲解如何选择集束宽度 B,并对比集束搜索与 BFS/DFS 等精确搜索算法的区别。


一、课程引入与本节目标 [00:00]

上一节视频介绍了集束搜索(Beam Search)的基本算法。本节将学习一些小的改动,让集束搜索效果更好。

本节核心内容:

  • 长度归一化(Length Normalization)
  • 对数概率求和(Log Probabilities)
  • 集束宽度 B 的选择策略

这些改动虽小,但对最终翻译质量影响显著。


二、原始目标函数回顾 [00:17]

集束搜索的目标是最大化以下概率:

P(y₁, ..., y_{T_y} | x)

该联合概率可展开为条件概率的连乘形式:

P(y₁|x) × P(y₂|x, y₁) × ... × P(y_{T_y}|x, y₁, ..., y_{T_y-1})

理解:这是概率链式法则(Chain Rule)的直接应用,每一步都基于前面已生成的所有词。

要点:

  • 这是"概率的概率"——每一步都是一个条件概率
  • 每个条件概率都是小于 1 的数,且往往远小于 1

三、数值下溢问题与对数变换 [01:06]

3.1 问题:数值下溢(Numerical Underflow)

当句子很长时,需要连乘大量小于 1 的数,结果会变成一个极其微小的数。

易错点:这个数可能小到超出计算机浮点数表示范围,导致数值下溢——计算机无法准确存储。

3.2 解决方案:取对数

考点:将连乘转为求和

log(乘积) = 各因子对数之和

即最大化: Σ log P(y_t | x, y₁, ..., y_{t-1})

推导:因为 log 函数是严格单调递增函数,最大化 log P(y|x) 与最大化 P(y|x) 得到的 y 相同。

3.3 对数变换的优势

  • 数值更稳定:避免下溢
  • 减少舍入误差:数值计算更精确
  • 结果等价:单调性保证最优解不变

大多数实现中,跟踪的是对数概率之和,而不是概率之积。


四、长度归一化(Length Normalization)[02:52]

4.1 问题:模型偏向短句

易错点:原始目标函数天然偏向短输出

原因分析:

  • 长句需要连乘更多小于 1 的数 → 概率更低
  • 短句连乘的项少 → 概率相对"不那么小"
  • 取对数后同理:log 概率始终 ≤ 1(负值),累加项越多,总和越负

思考:这就像打分时项数多的选手天然吃亏,需要"平均分"而非"总分"。

4.2 解决方案:除以句子长度

将目标函数改为:

(1/T_y) × Σ log P(y_t | x, y₁, ..., y_{t-1})

即取每个词对数概率的平均值,显著降低对长句的惩罚。

4.3 软化版本:引入超参数 α

实践中常用更柔和的形式,除以 T_y^α:

归一化目标函数 = (1/T_y^α) × Σ log P(y_t | x, y₁, ..., y_{t-1})

考点:α 的取值含义

α 取值 效果
α = 1 完全按长度归一化(除以 T_y)
α = 0 完全不归一化(T_y^0 = 1)
α = 0.7 实践中的常用启发式取值
  • α 是超参数,可调优以获得最佳结果

使用 α 这种方式是一种启发式(heuristic)或 hack,并没有严格的理论定理支撑。但实践证明效果良好,很多团队都采用这种做法。

建议:尝试不同的 α 值,看哪个效果最好。


五、集束搜索的完整运行流程 [05:49]

5.1 搜索过程

运行集束搜索时,会看到大量不同长度的句子:

  • 长度为 1 的句子
  • 长度为 2 的句子
  • 长度为 3 的句子
  • ... 依此类推

假设运行 30 步,则考虑长度最多 30 的输出句子。

5.2 集束宽度为 3 的情况

跟踪前 3 个最优候选,每个长度(1 到 30)都保留 top 3 可能性。

5.3 最终选择步骤

  1. 收集搜索过程中所有输出句子
  2. 对每个句子计算归一化对数概率目标函数(又称归一化对数似然目标)
  3. 选择得分最高的句子作为最终翻译输出

理解:不是每一步都决定,而是搜索结束后统一打分选最优。


六、如何选择集束宽度 B [07:15]

6.1 大 B vs 小 B 的权衡

大 B(Beam Width 大):

  • 优点:考虑更多可能性,结果更好
  • 缺点:计算更慢、内存需求更大

小 B(Beam Width 小):

  • 优点:速度快、内存需求低
  • 缺点:考虑可能性少,结果较差

6.2 实践中的取值参考

考点:不同场景下的 B 值

场景 典型 B 值
教学示例 3(偏小)
生产系统 约 10(常见);100 已属很大
研究系统(追求论文性能) 1000 或 3000

B 的取值高度依赖具体应用和领域,建议尝试多种 B 值找到最适合的。

6.3 边际效益递减

易错点:B 增大并非线性提升效果

  • 从 B=1(贪心搜索)到 B=3、B=10:收益巨大
  • 从 B=1000 到 B=3000:收益可能很小(边际递减)

思考:这提示我们应在性价比最高的区间(如 3~10)优先调优,而非盲目增大 B。


七、与计算机科学搜索算法的对比 [09:34]

7.1 精确搜索算法

如果学过计算机算法课程,可能接触过:

  • BFS(Breadth-First Search,广度优先搜索)
  • DFS(Depth-First Search,深度优先搜索)

这些是精确搜索算法,保证找到精确最大值。

7.2 集束搜索的特点

考点:集束搜索 vs 精确搜索

  • 集束搜索运行更快
  • 但不保证找到精确最大值

理解:集束搜索是启发式搜索,用"剪枝"换取速度,牺牲了最优性保证。

如果没听说过 BFS/DFS,不必担心,对本课程不重要。


八、本节小结与下节预告 [10:25]

8.1 核心要点回顾

  1. 对数变换:用对数概率之和替代概率连乘,避免数值下溢
  2. 长度归一化:除以 T_y^α(α≈0.7),缓解偏向短句问题
  3. 集束宽度 B:权衡效果与计算成本,存在边际递减
  4. 算法性质:集束搜索是快速但非精确的启发式搜索

8.2 下节预告

下一节将讨论集束搜索的误差分析(Error Analysis on Beam Search):

  • 如何判断该增大 B 还是改进模型?
  • 一些简单的计算可指导是否需要优化搜索算法

背景:误差分析是深度学习专项课程第三门课的重点内容,是吴恩达认为最有用的工具之一。


关键标签 / 关键词

集束搜索 #BeamSearch #长度归一化 #LengthNormalization #对数概率 #数值下溢 #数值稳定性 #超参数α #集束宽度 #BFS #DFS #精确搜索 #启发式搜索 #机器翻译 #序列模型 #吴恩达深度学习 #误差分析


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