Questions

一、以下是几个目前大语言模型常用的解码策略(一般在调用模型的API中可以设置),请解释它们的基本原理及使用方式

贪心搜索 (Greedy search)、波束搜索 (Beam search)、Top-K 采样 (Top-K sampling) 以及 Top-p 采样 (Top-p sampling)

二、请解释 温度(temperature) 的基本原理及使用方式

Answer

一、解码策略基本原理及使用方式

📌 原理:

每一步都选择概率最高的下一个 token(词/子词)。

📈 特点:

  • 最快,计算简单;
  • 可能错过全局最优解;
  • 生成的文本往往比较“机械”或者“无趣”。

🧠 举个例子:

输入:“The weather is” 模型预测:“sunny”(90%),“cloudy”(5%),“rainy”(5%)

→ 贪心搜索会 直接选择 “sunny”

📌 原理:

同时保留 k 个最有可能的候选序列(beam width),每一步扩展所有候选,然后选出得分最高的 k 个序列继续。

📈 特点:

  • 比贪心更好,能找到更优的整体结果;
  • 但会带来重复、啰嗦问题(比如重复短语);
  • 计算成本高于贪心。

🔧 参数:

beam width(波束宽度)常用值:3、5、10

🧠 类比:

像是在走迷宫,不止走一条路,而是并行尝试几条路,最后选得分最高的那条。

Top-K 采样

📌 原理:

每一步只从概率最高的 K 个 token 中随机采样一个。

📈 特点:

  • 增加多样性(比贪心/beam 更随机);
  • 控制生成的多样性和质量;
  • 如果 K 选得太小,会像贪心;太大,会生成胡话。

🔧 参数:

K 常见值:10, 40, 50

🧠 举个例子: 输入:“I love to eat” 预测的下一词:[“pizza”(0.5), “sushi”(0.2), “pasta”(0.15), …] → Top-K=3,只在前三中随机采样。

Top-p 采样(又称 Nucleus Sampling)

📌 原理:

从累积概率加起来超过 p 的 token 列表中随机采样。相比 Top-K 更灵活:不是定量选,而是定概率。

📈 特点:

  • 自适应地控制采样集合大小;
  • 在不牺牲质量的前提下提高多样性;
  • 被认为比 Top-K 更自然、现代。

🔧 参数:

p 常见值:0.8 ~ 0.95

🧠 举个例子:

如果概率列表为: [“pizza”(0.5), “sushi”(0.3), “burger”(0.1), “salad”(0.05), …]

→ Top-p=0.9,则只从 “pizza”, “sushi”, “burger” 中随机采样。

二、温度(temperature) 的基本原理及使用方式

📌 原理简介:

温度是在采样前,对模型输出的概率分布进行缩放的一个系数,它不会改变概率的排序,但会影响概率差距的大小。

🔥 不同 Temperature 值的效果

温度 T 值效果描述
T = 1.0原始概率分布,默认设置
T < 1.0概率分布变“尖锐”,高概率的 token 更突出
T > 1.0概率分布变“平滑”,低概率的 token 更有机会被选中
T → 0趋近于贪心搜索(argmax)
T → ∞所有 token 几乎等概率(纯随机)

🧠 举个例子 假设模型在某一步输出以下概率:

Token logits:     [5.0, 3.0, 1.0]
Softmax (T=1.0):  [0.84, 0.11, 0.05]
Softmax (T=0.5):  [0.96, 0.03, 0.01] ← 更“贪心”
Softmax (T=1.5):  [0.68, 0.19, 0.13] ← 更“随机”

可以看到,温度越高,分布越“平”,更容易出现意想不到的词;越低,生成越保守但更可靠。

🔧 实际使用方式(以 Hugging Face Transformers 为例)

model.generate(
    input_ids,
    do_sample=True,          # 开启采样(非贪心)
    temperature=0.8,         # 设置温度
    top_p=0.9,               # 可选:与 top-p 一起用
    max_new_tokens=50,
)

通常建议:

  • 生成“逻辑性强”的文本 → temperature=0.7 ~ 0.9
  • 想要更有创造力的写作 → temperature=1.0 ~ 1.5

参考