程式設計基礎篇 · 搜尋與決策

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 的哲學一脈相承——在「落筆」之前多探幾條路,用額外的計算換更好的最終答案。區別在於推理模型用自然語言探路、靈活得多,但「算力換品質」這筆帳,和詞格上那三個計數器是同一筆。

✅ 這一課想和你分享的