Transformer 解码策略

根据概率选择词元的方法被称之为解码策略(decoding strategy)。 常见的策略包括: 贪婪策略 每…

根据概率选择词元的方法被称之为解码策略(decoding strategy)

常见的策略包括:

  • 贪婪策略(Greedy):选最大值
  • 采样策略(Top-k, Top-p):引入随机性,增加多样性

贪婪策略

每一步都选择当前 概率最大 的词元作为下一个输出,不考虑后续潜在可能性。

例如当前上下文是:“我今天很”,模型输出的 softmax 概率如下:

{
开心: 0.61,
累: 0.12,
忙: 0.08,
美丽: 0.04,
...(共 50000 个词)
}

如果使用贪婪策略解码,下一词 = 选择概率最大的词 = “开心”

优点:

  1. 简单易实现
  2. 速度快

缺点:

  1. 缺乏多样性:同样的输入每次都会得到同样的输出
  2. 容易陷入局部最优

采样策略

采样策略是在每一步生成时,不总是选概率最大的词,而是根据 softmax 概率分布进行随机抽样,这样每次生成可能都不一样,增强语言多样性。

例如上面的 softmax 输出为:

{
开心: 0.61,
累: 0.12,
忙: 0.08,
美丽: 0.04,
...(共 50000 个词)
}

那么会根据概率随机抽一个

  • 可能是“开心”(61%)
  • 也可能是“累”(12%)
  • 有小概率是“美丽”(4%)

采样策略的核心思想是:不是总选最有可能的那个词,而是让 “可能性高的词更有可能被选中”,但不是唯一结果。

优点:

  1. 多样性高:同样的输入,可以生成多种不同的合理输出
  2. 更自然

缺点:

  1. 不可控
  2. 有时会胡说八道

温度系数(Temperature)

在采样策略中,可以引入一个温度系数(temperature) 来控制 softmax 概率分布的“陡峭程度”,影响模型的“随机性”与“确定性”。

原理

默认 softmax 的计算方式如下:

probs = softmax(logits) // 将分数转为概率

加入温度 T 后,变为:

probs = softmax(logits / T)

其中:

  • T 是一个正数(一般取值 0.5 ~ 2)
  • logits 除以 T 后,整个分布会变化

温度的影响

温度 T分布特征解码表现
T < 1更尖锐更偏向高概率词
T = 1原始分布标准采样
T > 1更平坦更倾向随机、多样化

示例说明

仍以上面的 logits 为例:

{
开心: 4.2,
累: 2.7,
忙: 1.5,
昨天: -1.2,
小狗: -3.5
}

不同温度下的行为:

  • T = 1:开心(61%)仍最可能,但其他词有较低概率
  • T = 0.5:开心更具压倒性优势(例如 >80%)
  • T = 2.0:其他词概率显著提升,分布变“平”

温度越低,越倾向于选择高概率的词,温度越高,越倾向于选择其他词

最佳实践

  • 想生成“稳定”“一致性强”的结果 → 使用低温度(如 T = 0.7)
  • 想生成“有创意”“更多样”的结果 → 使用高温度(如 T = 1.5)

总结一句话:温度系数是控制生成文本“保守”还是“放飞”的旋钮。

其他解码策略

除了贪婪策略和采样策略,还有一些常用的高级解码方式:

策略每一步做什么效果
贪婪解码选概率最大单一、重复、稳定
采样(随机)根据概率随机选一个词多样、有趣但不稳定
Top-k只在概率前 k 名中随机选控制随机性 + 保留合理选项
Top-p(nucleus)在累计概率 > p 的词中随机选更智能的采样策略
Beam Search保留多个候选句分支并评分更接近全局最优但计算更贵

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

About the Author

每个人都有自己得时区,在自己得时区里,一切都是准时的。

BlockSpare — News, Magazine and Blog Addons for (Gutenberg) Block Editor