Zubnet AI学习Wiki › 束搜索
基础

束搜索

一种解码策略,同时维护多个候选序列("束"),在每一步扩展每个序列一个token,只保留得分最高的候选。与贪心解码(总是选择最佳下一token)或采样(随机选择)不同,束搜索探索多条路径并找到整体概率最高的序列。常用于翻译和摘要。

为什么重要

束搜索表明局部最优选择不一定是全局最优的。贪心解码可能选择"The"作为第一个词,而"In"会带来更好的整体句子。通过保留多个候选,束搜索避免了过早承诺。然而,对于开放式生成(聊天、创意写作),采样比束搜索能产生更多样化和自然的文本。

深度解析

算法:维护宽度为k的束(例如k=5)。在每一步,将每个候选扩展所有可能的下一token,对结果序列评分,保留前k个。持续到所有候选生成了结束token或达到长度限制。返回得分最高的完整序列。束宽k在质量与计算之间权衡:k=1就是贪心解码,更大的k探索更多路径但消耗k倍的计算量。

长度惩罚问题

原始束搜索偏好较短的序列(更少的token = 更少的概率乘积 = 更高的总概率)。长度惩罚(将分数除以length^α)抵消这种偏差,鼓励模型生成完整、格式良好的输出而非截断。惩罚因子α是一个超参数:α=0表示无惩罚,α=1完全按长度归一化。典型值为0.6–1.0。

何时使用束搜索

束搜索最适合有"正确"答案的任务(翻译、摘要、结构化生成),你想要单一最可能的输出。它不适合创意或对话任务,因为这些任务需要多样性——束搜索倾向于产生通用的、重复的文本,因为高概率序列通常是无趣的。现代LLM界面对聊天使用采样(带温度和top-p),束搜索主要在内部用于特定任务,如工具调用生成。

相关概念

← 所有术语
← 权重 梯度下降 →