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
- 翻譯、語音識別的經典解碼器;推理模型「先想再答」是同一哲學的現代版
- 工程的真問題:不是「能不能更優」,是「這點更優值不值這些算力」