大模型训练与微调(4)——Top-k 和 Top-p 采样策略介绍
今天学习了Top-k 和 Top-p 采样策略,总结一下!
在自然语言生成任务中, Top-k 和 Top-p 是两种广泛使用的采样策略,用于控制大模型生成结果的多样性与可靠性。它们通过动态筛选候选词的概率分布,避免生成低质量或不合逻辑的文本。以下从定义、数学原理、实际应用和对比分析四个方面详细解析这两种方法。
一、Top-k 采样
1. 核心思想
- 定义:在每一步生成时,仅保留概率最高的前
k
个候选词,并在这k
个词中重新分配概率权重进行采样。 - 目的:过滤低概率的噪声词,平衡生成结果的多样性与合理性。
2. 数学实现
- 对模型输出的原始概率分布 P ( x ) P(x) P(x) 按概率值从高到低排序。
- 选取前
k
个词,构成候选集合 V top-k V_{\text{top-k}} Vtop-k。 - 对
V
top-k
V_{\text{top-k}}
Vtop-k 中的概率重新归一化:
P new ( x i ) = P ( x i ) ∑ x j ∈ V top-k P ( x j ) , x i ∈ V top-k P_{\text{new}}(x_i) = \frac{P(x_i)}{\sum_{x_j \in V_{\text{top-k}}} P(x_j)}, \quad x_i \in V_{\text{top-k}} Pnew(xi)=∑xj∈Vtop-kP(xj)P(xi),xi∈Vtop-k - 从新的分布中采样生成下一个词。
3. 示例
假设模型对下一个词的原始概率分布为:
["狗": 0.6, "猫": 0.2, "鸟": 0.15, "鱼": 0.05]
若设置 k=2
,则候选集合为 ["狗", "猫"]
,重新归一化后的概率为:
["狗": 0.6/(0.6+0.2)=0.75, "猫": 0.2/(0.6+0.2)=0.25]
最终可能生成“狗”或“猫”,但不会生成“鸟”或“鱼”。
4. 特点
- 优点:简单可控,避免生成低概率词。
- 缺点:
k
是固定值,可能忽视长尾中有意义的候选词。
(例如,若真实场景需要“鱼”,但k=2
会强制排除它)
二、Top-p(Nucleus)采样
1. 核心思想
- 定义:从概率最高的词开始累积,直到累积概率超过阈值
p
,仅在这部分词中采样。 - 目的:动态调整候选词数量,适应不同上下文的不确定性。
2. 数学实现
- 对概率分布按从高到低排序,得到有序列表 [ x 1 , x 2 , . . . , x n ] [x_1, x_2, ..., x_n] [x1,x2,...,xn]。
- 计算累积概率
∑
i
=
1
m
P
(
x
i
)
\sum_{i=1}^m P(x_i)
∑i=1mP(xi),找到最小的
m
m
m使得累积概率 ≥
p
。 - 将前
m
个词构成候选集合 V top-p V_{\text{top-p}} Vtop-p。 - 对 V top-p V_{\text{top-p}} Vtop-p 重新归一化并采样。
3. 示例
原始概率分布:
["快乐": 0.5, "悲伤": 0.3, "愤怒": 0.15, "惊讶": 0.05]
若设置 p=0.9
,则累积过程为:
快乐
(0.5)→快乐
+悲伤
(0.8)→快乐
+悲伤
+愤怒
(0.95 ≥ 0.9)
候选集合为["快乐", "悲伤", "愤怒"]
,重新归一化后的概率为:
["快乐": 0.5/0.95≈0.526, "悲伤": 0.3/0.95≈0.316, "愤怒": 0.15/0.95≈0.158]
4. 特点
- 优点:动态适应不同分布,保留合理的长尾词。
- 缺点:可能包含过多低概率词(尤其在分布平坦时)。
三、Top-k vs. Top-p 对比分析
维度 | Top-k | Top-p |
---|---|---|
筛选逻辑 | 固定数量(前 k 个词) | 动态数量(累积概率 ≥ p 的最小集合) |
适用场景 | 概率分布集中(如事实问答) | 概率分布分散(如创意写作) |
参数敏感度 | k 过大导致噪声,过小导致僵化 | p 过高包含噪声,过低限制多样性 |
灵活性 | 低(固定数量) | 高(动态调整) |
四、联合使用与调参建议
1. 常见组合
- Top-k + Top-p:先通过
k
截断长尾词,再用p
动态筛选。
(例如:k=50, p=0.95
) - Top-p + 温度调节:高温(
T>1
)平滑分布后,用p
控制多样性。
2. 参数选择参考
- 确定性任务(代码生成、翻译):
k=10~40, p=0.8~0.9, T=0.3~0.7
- 创造性任务(故事生成、对话):
k=50~100, p=0.9~0.95, T=0.7~1.0
五、实例演示
输入上下文:
“夏日的海滩上,孩子们在______”
不同参数下的生成结果:
-
Top-k=3, T=0.5:
- 候选词:[“玩耍”, “堆沙堡”, “奔跑”]
- 输出:“玩耍”(高确定性)。
-
Top-p=0.9, T=1.2:
- 候选词可能包含:[“追逐海浪”, “捡贝壳”, “放风筝”]
- 输出:“追逐海浪”(多样且合理)。
-
Top-k=5 + Top-p=0.95:
- 平衡筛选范围,可能生成:“堆沙堡,笑声随着海风飘散”。
六、数学形式化总结
设原始概率分布为 P ( x ) P(x) P(x),排序后为 P ( 1 ) ≥ P ( 2 ) ≥ . . . ≥ P ( n ) P_{(1)} \geq P_{(2)} \geq ... \geq P_{(n)} P(1)≥P(2)≥...≥P(n):
- Top-k:
V top-k = { x ( 1 ) , x ( 2 ) , . . . , x ( k ) } V_{\text{top-k}} = \{ x_{(1)}, x_{(2)}, ..., x_{(k)} \} Vtop-k={x(1),x(2),...,x(k)} - Top-p:
V top-p = { x ( 1 ) , x ( 2 ) , . . . , x ( m ) ∣ ∑ i = 1 m P ( i ) ≥ p } V_{\text{top-p}} = \left\{ x_{(1)}, x_{(2)}, ..., x_{(m)} \ \bigg| \ \sum_{i=1}^m P_{(i)} \geq p \right\} Vtop-p={x(1),x(2),...,x(m) i=1∑mP(i)≥p}
七、总结
- Top-k:通过固定数量限制候选词,适合概率分布集中的场景。
- Top-p:通过动态累积概率筛选,更适合开放性的生成任务。
- 联合使用:结合两者优势,例如 GPT-3/4 等模型默认采用
Top-p=0.95
和Top-k=50
的组合策略。
实际应用中,需根据任务需求(如事实性、创造性)和输出质量(连贯性、多样性)权衡参数选择。