編程基礎篇 · 搜索與決策

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

✅ 這一課想和你分享的