集束搜尋 是什麼?
Beam Search — 集束搜尋 的完整解釋
集束搜尋是一種啟發式搜尋演算法,用於序列預測任務,它在每個時間步保留多個最有可能的候選序列(集束),而非僅僅選擇最佳選項。
容易混淆
集束搜尋 vs 貪婪解碼? 集束搜尋:保留多個候選路徑 貪婪解碼:每一步只選當下最佳 最關鍵的區別:前者留備案,後者只看眼前最好的一條
集束搜尋 vs 暴力搜尋? 集束搜尋:用集束寬度控制保留數量 暴力搜尋:把所有可能都展開 最關鍵的區別:Beam 是折衷做法,不是全試也不是只試一條
集束搜尋 vs 分類器? 集束搜尋:常用在生成式模型 分類器:輸出固定類別標籤 最關鍵的區別:前者找序列,後者選類別
記住這句就好
每一步都留幾條備案,避免太早走死路
實際案例
機器翻譯 句子前半段多個翻譯分支都還不錯,集束搜尋能保留較好的整體候選
圖片描述 模型在描述圖像時會同時保留幾個詞組組合,最後挑出整體最順的句子
算法與應用
重點 你要看什麼 為什麼重要 集束寬度 每一步保留幾個候選 越大通常越準但越慢 優點 降低早期誤判風險 比貪婪解碼更穩 缺點 計算量較高 不是越大就一定越好
相關術語
常見問題
集束寬度越大越好嗎?
不一定。它會提高成本,還可能讓結果在某些任務上變得不自然。
Beam search 會保證最佳解嗎?
通常不會,它是啟發式方法,不是全域最優保證。
它和維特比演算法一樣嗎?
不一樣,維特比通常是動態規劃,Beam 是保留有限候選的搜尋。