【面试题】介绍一下beam search原理,与直接sample的区别?
Beam Search原理:
- 在每一步解码时保留概率最高的k个候选序列(beam width为k)
- 每个时间步扩展所有候选序列,计算累计对数概率
- 保留总体概率最高的k个序列,直到生成结束标记
- 最终选择总体概率最高的序列作为输出
数学表达:
在时间步t,维护k个候选序列集合 B_t = {y_1^t, y_2^t, …, y_k^t}
每个序列的得分:score(y) = Σ_{i=1}^t log P(y_i|y_<i, x)
与直接Sample的区别:
特性 | Beam Search | 直接Sample |
---|---|---|
确定性 | 确定性算法 | 随机性算法 |
多样性 | 低,趋向保守 | 高,更具创造性 |
一致性 | 输出稳定一致 | 多次运行结果可能不同 |
适用场景 | 事实性回答、技术文档 | 创意写作、故事生成 |
计算成本 | 相对较高(需维护多个候选) | 相对较低 |
实际应用:
- 机器翻译:多用beam search保证准确性
- 创意写作:多用sampling增加多样性
- 对话系统:平衡两者,beam width=3-5