《动手学深度学习 Pytorch版》 9.8 束搜索

本节将介绍几大:

  • 贪心搜索(greedy search)策略

  • 穷举搜索(exhaustive search)

  • 束搜索(beam search)

9.8.1 贪心搜索

贪心搜索已用于上一节的序列预测。对于输出序列的每一时间步 t ′ t' t′,都从 Y \boldsymbol{Y} Y 中找到具有最高条件概率的词元,即:

y t ′ = arg ⁡ max ⁡ y ∈ Y P ( y ∣ y 1 , ... , y t − 1 , c ) y_{t'}=\mathop{\arg\max}\limits_{y\in\boldsymbol{Y}}{P(y|y_1,\dots,y_{t-1},\boldsymbol{c})} yt′=y∈YargmaxP(y∣y1,...,yt−1,c)

一旦输出序列包含了"<eos>"或者达到其最大长度 T ′ T' T′,则输出完成。

问题:

  • 最优序列应该是最大化值的输出序列,而贪心搜索无法保证得到最优序列。

  • 每次选择都会影响后续的所有结果。

9.8.2 穷举搜索

穷举搜索(exhaustive search)穷举地列举所有可能的输出序列及其条件概率,然后计算输出条件概率最高的一个。其计算量 O ( Y T ′ ) O(\boldsymbol{Y}^{T'}) O(YT′) 可能高的惊人。

9.8.3 束搜索

穷举搜索有精度优势,贪心搜索有计算成本优势,而束搜索则介于这两个极端之间。

束搜索(beam search)是贪心搜索的一个改进版本。它有一个超参数,名为束宽(beam size) k k k。在时间步 1,我们选择具有最高条件概率的 k k k 个词元。这 k k k 个词元将分别是 k k k 个候选输出序列的第一个词元。在随后的每个时间步,基于上一时间步的 k k k 个候选输出序列,继续从 k k k 个可能的选择中挑出具有最高条件概率的 k k k 个候选输出序列。

最后,选择其中条件概率乘积最高的序列作为输出序列。

练习

(1)我们可以把穷举搜索看作一种特殊的束搜索吗?为什么?

可以看作束宽拉满的束搜索。


(2)在 9.7 节的机器翻译问题中应用束搜索。束宽是如何影响预测的速度和结果的?

束搜索需要的计算更多,肯定是越宽越慢。


(3)在 8.5 节中,我们基于用户提供的前缀,通过使用语言模型来生成文本。这个例子中使用了哪种搜索策略?可以改进吗?

上束搜索。

相关推荐
小二·13 小时前
2026年AI Agent框架横评:OpenClaw vs LangGraph vs CrewAI vs Superpowers,选型指南
人工智能
tyqtyq2214 小时前
旅行打包清单 App — HarmonyOS AI 应用开发技术博客
人工智能·学习·华为·生活·harmonyos
guo_xiao_xiao_14 小时前
YOLOv11道路桥梁裂缝与坑洼目标检测数据集
人工智能·yolo·目标检测
邵宇然14 小时前
Rust Unsafe 代码规范:不安全块要小到能被审查
人工智能
Haoxuekeji14 小时前
山东 AI 智能批改校园电子阅卷企业
大数据·人工智能·深度学习·安全·ai
视觉AI15 小时前
VS Code Remote-SSH 连接Jetson踩坑完整解决记录(网段不通+主机密钥变更双重故障)
运维·网络·人工智能·windows·ssh·边缘计算
科技发布15 小时前
拓氪科技一站式品牌营销平台使用手册 舆情风险预警管理教程
人工智能·科技
潜龙952715 小时前
AI时代下WebUI自动化实施架构图
人工智能·webui
酉鬼女又兒15 小时前
零基础入门 DeepSeek V4 Pro API 开发:从环境搭建、消息格式规范到翻译函数实战、少样本提示、多轮对话聊天机器人与常见报错全流程详解指南
大数据·网络·数据库·人工智能·macos·机器人·github
城事漫游Molly15 小时前
科研数据可视化的5步AI工作流:从原始数据到发表级图表
人工智能·信息可视化·数据分析·prompt·ai for science·科研数据绘图·博士生必读