Beam Search:往前多看几步再选
上一课留了个坑:贪心每步拿眼前最大的,可能一步错、步步错。填坑的办法朴素得可爱——别急着定,多留几条候选路一起往前走,走完了比总分。这就是 Beam Search(束搜索)。下面这张「词格」,让三种走法同台竞技。
开头固定「这家店的」,往右走 4 步,每步 3 个候选词。按顺序点三个按钮,留意三件事:贪心(红线)第一步就抓住概率 0.5 的「菜」,但后面的路越走越窄;Beam=2(蓝线)同时养两条路,被淘汰的变灰;Beam=3 连第一步只有 0.2 的「装修」都留着——最后谁的累计分最高?右下角的计算量又差多少?
😤 贪心 · 累计分
🔦 Beam=2 · 累计分
🔦🔦 Beam=3 · 累计分
Beam Search 的全部思想
每一步不是选一个,而是留下分数最高的 k 条路(k = beam 宽度),带着它们一起走下一步;到终点后比累计总分,谁高交谁的卷。k=1 时它就退化成贪心;k 无穷大就是穷举所有路——Beam Search 是贪心和穷举之间的滑杆。
宽度 = 算力换质量的旋钮
k 每加 1,每步要多算一整排候选。翻译系统常用 k=4~10:再往上,质量提升越来越少,账单却线性上涨。工程上的问题从来不是「要不要更优」,而是「这点更优值不值这些算力」——迷宫课的 BFS/DFS 之争,本质也是这道选择题。
🌍 机器翻译和语音识别的经典解码器。翻译一句话时,第一个词选「The」还是「A」,可能影响整句的通顺度——贪心经常翻出「每个词都对、连起来别扭」的句子。Beam Search 同时保留几种开头往下翻,最后挑整句概率最高的,是神经翻译时代的标配。语音识别同理:发音相近的候选词先都留着,靠后文把「事实」和「适时」分开。
🧠 「推理模型先想再答」的直觉同源。零基础入门篇讲过深度思考模型:回答前先生成长长的思考过程,试几条思路、自我否定、再挑最好的作答。这和 Beam Search 的哲学一脉相承——在「落笔」之前多探几条路,用额外的计算换更好的最终答案。区别在于推理模型用自然语言探路、灵活得多,但「算力换质量」这笔账,和词格上那三个计数器是同一笔。
✅ 这一课想和你分享的
- 贪心一步错步步错:第一步 0.5 的「菜」看着香,整条路累计只有 0.072
- Beam Search = 多留几条候选路,走完比总分:k=1 是贪心,k=∞ 是穷举
- 宽度越大越准也越贵:0.072 → 0.098 → 0.101,计算量 12 → 21 → 30
- 翻译、语音识别的经典解码器;推理模型「先想再答」是同一哲学的现代版
- 工程的真问题:不是「能不能更优」,是「这点更优值不值这些算力」