Top-p采样,又称核采样(nucleus sampling),是一种随机解码策略,用于从自回归概率模型中生成序列,尤其在自然语言生成领域应用广泛。该方法最初由Ari Holtzman、Yejin Choi及其同事于2019年提出,旨在解决束搜索等确定性解码方法产生的文本重复且无意义的问题。此后,该技术也被应用于其他科学领域,如蛋白质工程和地球物理学。
在top-p采样中,设定一个概率阈值p,仅从满足累积概率超过p的最小高概率候选集合中采样序列中的下一个元素。该方法根据模型的置信度自适应调整候选池的大小,比从固定数量候选中采样的top-k采样更为灵活。由于其有效性,top-p采样被广泛应用于许多大型语言模型应用中。
技术原理
在文本生成的每一步,语言模型会计算其整个词汇表上下一词元的概率分布。虽然可以直接选择概率最高的词元(贪心搜索)或有限数量的高概率序列(束搜索),但这些确定性方法往往生成枯燥、重复或无意义的文本。Top-p采样引入随机性以规避这些问题,同时保持输出质量。
其核心思想是在每一步从一个更小、更可信的词元集合(称为核)中进行采样。该核包含最可能的下一词元,其组合概率(即累积概率)刚好超过阈值p。通过仅从这个动态大小的集合中采样,模型能够适应不同情境。当模型对下一词元高度自信(例如某个词元概率极高)时,核会很小;当模型不确定(概率分布较均匀)时,核会更大,从而允许更多多样性。
每一步的过程如下:
- 模型计算所有可能下一词元的概率。
- 按概率降序对词元进行排序。
- 从列表顶部开始选择词元,直到其累积概率超过预设阈值p,形成核。
- 对核内词元的概率进行重新缩放,使其总和为1。核外所有词元被丢弃(概率设为0)。
- 最终从这一新的较小分布中随机采样下一词元。
形式上,核\(V^{(p)} \subseteq V\)定义为满足以下条件的最小词元集合:
\[\sum_{x \in V^{(p)}} P(x|x_1, \dots, x_{t-1}) \geq p\]
在该公式中,\(P(x|x_1, \dots, x_{t-1})\)表示在给定前序词元\(x_1, \dots, x_{t-1}\)的条件下,词元\(x\)的概率。
示例
假设在某一步,一个语言模型的词汇表包含五个词:[the, a, cat, dog, eats],并生成以下概率:
- the:0.5
- a:0.2
- cat:0.1
- dog:0.1
- eats:0.1
如果设定\(p = 0.8\):
- 按概率降序排列词元:[the, a, cat, dog, eats]。
- 计算累积概率:
- the:0.5
- the + a:0.5 + 0.2 = 0.7
- the + a + cat:0.7 + 0.1 = 0.8
- 核是累积概率≥0.8的最小集合,即\(V^{(0.8)} = \{\text{the, a, cat}\}\)。
- 对该集合的概率进行重新缩放,使其总和为1:
- P(the) = 0.5 / 0.8 = 0.625
- P(a) = 0.2 / 0.8 = 0.25
- P(cat) = 0.1 / 0.8 = 0.125
- 然后从这一新分布中采样下一词元,这意味着dog和eats被选中的概率为0%。
Top-k采样
Top-k采样是一种类似的技术,其中候选词元池被限制为最可能的\(k\)个词元。Top-p的主要优势在于其自适应性。当模型对下一词元非常确定(分布呈尖峰状)时,核\(V^{(p)}\)可以非常小;当模型不确定(分布平坦)时,核可以更大,从而允许更多多样性。相比之下,top-k始终从固定数量的词元中采样,这可能根据上下文而显得过于严格或过于宽泛。
应用
虽然top-p采样最广为人知的是作为大型语言模型的解码策略,但该技术也被改编用于其他涉及从概率模型生成或分析序列数据的科学领域。
自然语言生成
在其原始领域自然语言生成中,top-p采样因其相比确定性方法能生成更多样且连贯的文本而受到重视。研究表明,它在自动问题生成等任务中具有优势,因为样本多样性对于创建有效的问答模型训练数据至关重要。
药物与蛋白质设计
Top-p采样被用于计算生物学中,从专门的语音模型中生成新颖的分子和蛋白质序列。在从头药物设计中,基于分子结构训练的化学语言模型使用核采样来生成新的、有效的药物候选物聚焦库。类似地,蛋白质语言模型利用top-p采样提出具有所需特性的新颖蛋白质序列,助力蛋白质工程工作。
地球物理学
在地球物理学中,top-p采样已被应用于生成地质事件序列或模拟地下结构。例如,它可以用于地震反演或储层表征中,从预测地下属性的概率模型中采样,帮助量化地质解释中的不确定性。
实现与使用
在实践中,top-p采样通常与其他解码策略(如温度缩放)结合使用,以微调生成文本的随机性和质量。温度缩放会在应用top-p之前调整概率分布的锐度,从而进一步控制多样性。许多机器学习框架和库提供对top-p采样的内置支持,使其易于集成到现有流程中。
Top-p采样是主要AI公司API中的标准功能,包括OpenAI、Anthropic和Google DeepMind,以及Hugging Face的Transformers等开源库。它通常作为文本生成函数中的参数(如top_p)指定,常见值范围为0.9至0.95,以实现平衡输出。
p的选择显著影响输出结果。较低的p(如0.5)使模型更保守,侧重于高概率词元,而较高的p(如0.99)允许更多多样性,但可能增加不连贯的风险。研究人员和实践者通常根据具体任务和期望的输出特征来调整p。