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