束搜索表明局部最优选择不一定是全局最优的。贪心解码可能选择"The"作为第一个词,而"In"会带来更好的整体句子。通过保留多个候选,束搜索避免了过早承诺。然而,对于开放式生成(聊天、创意写作),采样比束搜索能产生更多样化和自然的文本。
算法:维护宽度为k的束(例如k=5)。在每一步,将每个候选扩展所有可能的下一token,对结果序列评分,保留前k个。持续到所有候选生成了结束token或达到长度限制。返回得分最高的完整序列。束宽k在质量与计算之间权衡:k=1就是贪心解码,更大的k探索更多路径但消耗k倍的计算量。
原始束搜索偏好较短的序列(更少的token = 更少的概率乘积 = 更高的总概率)。长度惩罚(将分数除以length^α)抵消这种偏差,鼓励模型生成完整、格式良好的输出而非截断。惩罚因子α是一个超参数:α=0表示无惩罚,α=1完全按长度归一化。典型值为0.6–1.0。
束搜索最适合有"正确"答案的任务(翻译、摘要、结构化生成),你想要单一最可能的输出。它不适合创意或对话任务,因为这些任务需要多样性——束搜索倾向于产生通用的、重复的文本,因为高概率序列通常是无趣的。现代LLM界面对聊天使用采样(带温度和top-p),束搜索主要在内部用于特定任务,如工具调用生成。