
视频元信息
- 所属课程:吴恩达深度学习专项课程(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 最终选择步骤
- 收集搜索过程中所有输出句子
- 对每个句子计算归一化对数概率目标函数(又称归一化对数似然目标)
- 选择得分最高的句子作为最终翻译输出
理解:不是每一步都决定,而是搜索结束后统一打分选最优。
六、如何选择集束宽度 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 核心要点回顾
- 对数变换:用对数概率之和替代概率连乘,避免数值下溢
- 长度归一化:除以 T_y^α(α≈0.7),缓解偏向短句问题
- 集束宽度 B:权衡效果与计算成本,存在边际递减
- 算法性质:集束搜索是快速但非精确的启发式搜索
8.2 下节预告
下一节将讨论集束搜索的误差分析(Error Analysis on Beam Search):
- 如何判断该增大 B 还是改进模型?
- 一些简单的计算可指导是否需要优化搜索算法
背景:误差分析是深度学习专项课程第三门课的重点内容,是吴恩达认为最有用的工具之一。
关键标签 / 关键词
集束搜索 #BeamSearch #长度归一化 #LengthNormalization #对数概率 #数值下溢 #数值稳定性 #超参数α #集束宽度 #BFS #DFS #精确搜索 #启发式搜索 #机器翻译 #序列模型 #吴恩达深度学习 #误差分析
生成时间:2026-10-11 00:18:52 生成平台:VideoNote www.xygy.top