编程基础篇 · 搜索与决策

Beam Search:往前多看几步再选

上一课留了个坑:贪心每步拿眼前最大的,可能一步错、步步错。填坑的办法朴素得可爱——别急着定,多留几条候选路一起往前走,走完了比总分。这就是 Beam Search(束搜索)。下面这张「词格」,让三种走法同台竞技。

词格上的三条路

开头固定「这家店的」,往右走 4 步,每步 3 个候选词。按顺序点三个按钮,留意三件事:贪心(红线)第一步就抓住概率 0.5 的「菜」,但后面的路越走越窄;Beam=2(蓝线)同时养两条路,被淘汰的变灰;Beam=3 连第一步只有 0.2 的「装修」都留着——最后谁的累计分最高?右下角的计算量又差多少?

先点「贪心走」,看红线怎么一步步锁死
路径记分板
😤 贪心 · 累计分
已算候选:–
🔦 Beam=2 · 累计分
已算候选:–
🔦🔦 Beam=3 · 累计分
已算候选:–
三个累计分排好队:0.072 < 0.098 < 0.101。贪心被第一步的「菜」(0.5) 诱进了一条后劲不足的路;Beam=2 多养了一条路,让第一步只有 0.3 的「性价比」笑到了最后;Beam=3 更狠,连 0.2 的「装修」都保下来,挖出了全场最优。但看计算量:12 → 21 → 30 个候选,翻了近 3 倍——beam 宽度就是一颗「算力换质量」的旋钮,拧多大,看你付得起多少电费。
概念卡 · 不把鸡蛋放一个篮子
🧺

Beam Search 的全部思想

每一步不是选一个,而是留下分数最高的 k 条路(k = beam 宽度),带着它们一起走下一步;到终点后比累计总分,谁高交谁的卷。k=1 时它就退化成贪心;k 无穷大就是穷举所有路——Beam Search 是贪心和穷举之间的滑杆

🎛

宽度 = 算力换质量的旋钮

k 每加 1,每步要多算一整排候选。翻译系统常用 k=4~10:再往上,质量提升越来越少,账单却线性上涨。工程上的问题从来不是「要不要更优」,而是「这点更优值不值这些算力」——迷宫课的 BFS/DFS 之争,本质也是这道选择题。

AI 关联卡 · 你在哪儿见过它

🌍 机器翻译和语音识别的经典解码器。翻译一句话时,第一个词选「The」还是「A」,可能影响整句的通顺度——贪心经常翻出「每个词都对、连起来别扭」的句子。Beam Search 同时保留几种开头往下翻,最后挑整句概率最高的,是神经翻译时代的标配。语音识别同理:发音相近的候选词先都留着,靠后文把「事实」和「适时」分开。

🧠 「推理模型先想再答」的直觉同源。零基础入门篇讲过深度思考模型:回答前先生成长长的思考过程,试几条思路、自我否定、再挑最好的作答。这和 Beam Search 的哲学一脉相承——在「落笔」之前多探几条路,用额外的计算换更好的最终答案。区别在于推理模型用自然语言探路、灵活得多,但「算力换质量」这笔账,和词格上那三个计数器是同一笔。

✅ 这一课想和你分享的