编程基础篇 · AI 背后的算法

Beam Search:往前多看几步再选

贪心一步错步步错,Beam Search 同时留几条候选路往前探。交互对比两种策略走出的句子,理解「先想再答」的直觉来源

本页解决的问题

先给结论

「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 的哲学一脉相承——在「落笔」之前多探几条路,用额外的计算换更好的最终答案。区别在于推理模型用自然语言探路、灵活得多,但「算力换质量」这笔账,和词格上那三个计数器是同一笔。

「词格上的三条路」里的算法代价曲线

「开头固定「这家店的」,往右走 4 步,每步 3 个候选词。」真正训练的不是背诵步骤,而是识别重复工作:输入变大时,程序到底多做了多少次比较、移动或递归。

先找重复工作,再谈快慢

「每一步 不是选一个,而是留下分数最高的 k 条路 (k = beam 宽度),带着它们一起走下一步;到终点后比累计总分,谁高交谁的卷。k=1 时它就退化成贪心;k 无穷大就是穷举所有路—— Beam Search 是贪心和穷举之间的滑杆」可以拆成输入规模、每轮做什么、以及是否能缩小下一轮范围三个问题。Big-O 是描述增长趋势的语言,不是对每台机器的精确计时;常数、内存和真实数据分布也会影响最终结果。

  • 贪心一步错步步错 :第一步 0.5 的「菜」看着香,整条路累计只有 0.072
  • Beam Search = 多留几条候选路,走完比总分 :k=1 是贪心,k=∞ 是穷举
  • 宽度越大越准也越贵 :0.072 → 0.098 → 0.101,计算量 12 → 21 → 30

别把理论最优当成无条件最优

面对 AI 写出的算法,先用小输入手算一遍,再用逐渐放大的数据做基准测试。这样才能把「🧠 「推理模型先想再答」的直觉同源。」从一句结论变成可检查的性能判断。

从「词格上的三条路」走到「概念卡 · 不把鸡蛋放一个篮子」

「词格上的三条路」先把问题落在「开头固定「这家店的」,往右走 4 步,每步 3 个候选词。 按顺序点三个按钮 ,留意三件事:贪心(红线)第一步就抓住概率 0.5 的「菜」,但后面的路越走越窄;Beam=2(蓝线)同时养两条路,被淘汰的变灰;Beam=3 连第一步只有 0.2 的「装修」都留着—— 最后谁的累计分最高?右下角的计算量又差多少」上;到了「概念卡 · 不把鸡蛋放一个篮子」,讨论继续推进到「每一步 不是选一个,而是留下分数最高的 k 条路 (k = beam 宽度),带着它们一起走下一步;到终点后比累计总分,谁高交谁的卷。k=1 时它就退化成贪心;k 无穷大就是穷举所有路—— Beam Search 是贪心和穷举之间的滑杆」。两段连起来,重点就不只是记住一个结论,而是看清它成立所依赖的条件。

把这条判断带到下一个场景

算法题换成真实任务后,先找出重复工作,再问输入规模如何变化,最后用一个小基准验证理论判断。这样不会把复杂度记成脱离场景的标签。

  • 「词格上的三条路」:开头固定「这家店的」,往右走 4 步,每步 3 个候选词。 按顺序点三个按钮 ,留意三件事:贪心(红线)第一步就抓住概率 0.5 的「菜」,但后面的路越走越窄;Beam=2(蓝线)同时养两条路,被淘汰的变灰;Beam=3 连第一步只有 0.2 的「装修」都留着—— 最后谁的累计分最高?右下角的计算量又差多少
  • 「概念卡 · 不把鸡蛋放一个篮子」:每一步 不是选一个,而是留下分数最高的 k 条路 (k = beam 宽度),带着它们一起走下一步;到终点后比累计总分,谁高交谁的卷。k=1 时它就退化成贪心;k 无穷大就是穷举所有路—— Beam Search 是贪心和穷举之间的滑杆
  • 「最后的要点」:工程的真问题 :不是「能不能更优」,是「这点更优值不值这些算力」

最后的「最后的要点」把讨论落到「工程的真问题 :不是「能不能更优」,是「这点更优值不值这些算力」」。回看这条线索时,最值得保留的是:当输入、规模或风险改变,哪些判断需要重新做一遍。

✅ 这一课想和你分享的

  • 贪心一步错步步错:第一步 0.5 的「菜」看着香,整条路累计只有 0.072
  • Beam Search = 多留几条候选路,走完比总分:k=1 是贪心,k=∞ 是穷举
  • 宽度越大越准也越贵:0.072 → 0.098 → 0.101,计算量 12 → 21 → 30
  • 翻译、语音识别的经典解码器;推理模型「先想再答」是同一哲学的现代版
  • 工程的真问题:不是「能不能更优」,是「这点更优值不值这些算力」
标记为已学完 阅读进度会自动记录
← 上一篇下一篇 →

继续阅读

同一条线上的下一篇。

文章讨论

读到这里,留下一个判断。

把刚想明白的地方、还没想通的问题,留给下一位一起学习的人。

正在讨论 Beam Search:往前多看几步再选 AI 背后的算法
3条讨论文章讨论 · 与共学社区同步
在共学社区查看
AM
Asha Morgan内容编辑
观点实践记录

我把这篇文章里的一个判断改写成了今天可以验证的小实验。比记住结论更有用的是,知道下一步要观察什么。

文章讨论7 有帮助
LH
Lin Harper独立开发者
观点观点

读完以后我先回头找它成立的条件,而不是直接把方法搬进项目。这个顺序让后面的取舍清楚很多。

文章讨论5 有帮助
KM
Kiki Moore产品运营
问题问题

如果把这个判断放到真实工作里,最先需要补的约束是什么?我想知道从阅读到第一次实践之间,哪一步最值得先做。

文章讨论4 有帮助