Ultralytics YOLO27: 加入候补名单。
获取 YOLO 许可
返回 Ultralytics 术语表

Nucleus Sampling

Top-p(核采样)会从概率总和达到 p 的最小 token 集合中抽取每个 token,因此候选集合会随模型置信度调整,这与 top-k 不同。

核采样(也称 top-p 采样)是一种解码方法:它从候选项中选出一个最小集合,使集合内候选项的总概率达到阈值 p,然后从该集合中采样出下一个token。华盛顿大学和艾伦人工智能研究所的 Ari Holtzman 及其同事于 2019 年在论文《神经文本退化的奇特案例》中提出了这种方法。他们使用 GPT-2 Large 进行研究,发现贪心解码和束搜索会让语言模型陷入平淡、重复的循环,而从完整概率分布中采样则会生成不连贯的文本;截去分布中不可靠的尾部后,生成文本的困惑度和多样性最接近人类写作。如今,几乎所有大型语言模型的文本生成 API 都将 top-p 作为标准设置。

如何选取核集合#

在每个步骤中,语言模型都会为其词汇表中的每个 token 评分,而 softmax 会将这些分数转换为概率。随后,核采样按概率从高到低排列 token,依次累加其概率,直到总和达到 p;然后丢弃集合之外的所有 token,对保留项重新归一化,使其概率总和为 1,最后采样一个 token。

假设有四个候选项,概率分别为 0.50、0.25、0.15 和 0.10,并设 p=0.8。前两项的概率和为 0.75,未达到阈值,因此加入第三项,核集合覆盖的概率达到 0.90。第四个 token 会被丢弃;重新归一化后,三个保留项的采样概率约为 0.56、0.28 和 0.17。

核采样的关键特性是集合会在每一步自动调整大小。在“The capital of France is”之后,一个 token 几乎占据了全部概率,核集合便缩小为一个词。在故事开头,概率会分散到数百个合理词语上,核集合也随之扩大以纳入这些词语。固定候选项数量无法实现这种自适应。

下面是使用 PyTorch 对六 token 词汇表进行单步解码的相同过程:

import torch

# 包含 6 个 token 的词汇表中的下一个 token 概率
probs = torch.tensor([0.10, 0.40, 0.04, 0.25, 0.06, 0.15])
top_p = 0.75

# 先排序,再保留 token,直到累积概率达到 top_p
sorted_probs, order = probs.sort(descending=True)
cumulative = sorted_probs.cumsum(dim=0)
keep = cumulative - sorted_probs < top_p  # 跨过 top_p 阈值的 token 仍会保留

# 重新归一化核集合并采样下一个 token ID
nucleus = sorted_probs * keep
next_token = order[torch.multinomial(nucleus / nucleus.sum(), num_samples=1)]
print(order[keep].tolist(), next_token.item())

输出会列出核集合,其中 token ID 1、3 和 5 的概率合计为 0.80,随后列出采样得到的 ID。在这一步中,永远不会选中 token 0、2 和 4;重新运行脚本时,会按照各自的概率比例从三个保留项中采样。

Top-p 与贪心解码、Top-k 和温度#

  • 贪心解码总是选择可能性最高的单个 token。它具有确定性,适用于简短的事实性回答,但较长的输出往往会陷入循环。
  • Top-k 采样会保留固定数量的候选项。将 k 设为 50 时,即使模型在某一步非常确定,采样仍会在 50 个 token 中进行,其中可能包括无意义选项;而在模型不确定时,合理选项又可能被截掉。Top-p 用固定的概率占比取代了固定的候选项数量。
  • 温度会在 softmax 之前缩放模型分数。低于 1 的值会让分布更集中于最可能的选项;高于 1 的值则会让分布更平缓。由于 top-p 在温度调整后应用,提高温度也会扩大核集合。
  • Min-p 采样会保留概率至少达到最高概率 token 的指定比例的所有 token,因此其截断阈值也会随模型置信度变化。Hugging Face Transformers、vLLM 和 llama.cpp 都在提供 top-p 的同时支持它。

由于温度和 top-p 都能控制随机性,通常建议调整其中一个,而不是同时调整两者。许多推理引擎也允许同时使用 top-k 和 top-p,其中 top-k 会对候选项数量设置硬性上限。

如何选择 Top-p 值#

top-p 设为 1.0 时会禁用筛选,常见默认值在 0.9 到 1.0 之间。top-p 只会重新调整模型自身的概率,因此事实准确性取决于提示的事实依据;例如,检索增强生成可以为模型提供所需事实,从而减少幻觉。较高的取值能为头脑风暴、聊天机器人对话和创意写作增添多样性。0.5 等较低取值会让输出更可预测、更重复,适用于数据提取、分类提示和代码;而受约束解码更进一步,会屏蔽所有会破坏指定格式的 token。

同一设置也控制视觉流水线中的语言输出。当 Ultralytics YOLO26 检测触发场景描述,并交由视觉语言模型生成描述时,Ultralytics LLM 接口会将 top_p 等请求参数直接传递给服务提供商的 API,因此,0.5 这样的低取值会让相似帧的描述措辞保持一致。

探索解决方案

体育领域的计算机视觉

体育领域的计算机视觉

了解 Ultralytics YOLO 如何通过球员和球追踪、表现分析、教练洞察及运动员康复,推动体育视觉技术的发展。
了解详情
航空影像计算机视觉

航空影像计算机视觉

使用 Ultralytics YOLO 将无人机和航空影像转化为农业、水产养殖、保护工作和地理空间分析的实时洞察。
了解详情
航空航天中的计算机视觉

航空航天中的计算机视觉

使用 Ultralytics YOLO 将计算机视觉应用于航空航天领域,包括飞机检查、跑道 FOD 检测、机场地面作业和复合材料缺陷检测。
了解详情
安防领域的计算机视觉

安防领域的计算机视觉

使用 Ultralytics YOLO 模型守护每个场所。视觉 AI 可用于周界监控、威胁检测、车牌识别和工作场所安全。
了解详情
机器人领域的计算机视觉

机器人领域的计算机视觉

使用 Ultralytics YOLO 模型提升智能机器的能力。机器人领域的视觉 AI 可用于自主导航、感知、目标跟踪和实时控制。
了解详情
物流中的计算机视觉

物流中的计算机视觉

借助 Ultralytics YOLO 模型优化物流流程。视觉 AI 可用于包裹检查、分拣、车辆跟踪和仓库安全实时监控。
了解详情
零售中的计算机视觉

零售中的计算机视觉

借助 Ultralytics YOLO 模型重新构想零售。视觉 AI 可用于库存跟踪、货架监控、排队管理和更深入的客户洞察。
了解详情
医疗领域的计算机视觉

医疗领域的计算机视觉

借助 Ultralytics YOLO 模型构建医疗解决方案。医疗领域的视觉 AI 可加快医学影像处理、优化诊断并监测患者。
了解详情
制造业中的计算机视觉

制造业中的计算机视觉

利用 Ultralytics YOLO 模型优化制造流程。视觉 AI 可用于质量控制、缺陷检测、个人防护装备合规检查和装配线自动化。
了解详情
汽车领域的计算机视觉

汽车领域的计算机视觉

利用 Ultralytics YOLO 模型在汽车领域应用计算机视觉。视觉 AI 可提升道路安全、驾驶辅助和车辆自动化水平,让道路更智能。
了解详情
农业中的计算机视觉

农业中的计算机视觉

借助 Ultralytics YOLO 模型,将视觉 AI 引入智慧农业。为作物监测、牲畜追踪和精准农业提供支持,从而提高产量并实现更智能的生产。
了解详情

让我们携手构建 AI 的未来!

开启你的旅程,迎接机器学习的未来