返回关卡地图
闯关题:0 / 2 XP 0 / 200

Level 21 | 零基础导学关卡

Decoding Strategies

先用小例子把必要知识学会,再用 2 道闯关题检查理解,最后回到 notebook 写真正的 PyTorch 作业。

21_Decoding_Strategies.ipynb TemperatureTop-KTop-P
概念输入
闯关检查
Notebook 作业
p(token)=softmax(logits/temperature)
Mission 1 TODO 1

Temperature:调节 logits 的锋利程度

先补的知识

  • logits 还不是概率,需要 softmax 后才能采样。
  • temperature 越小,分布越尖锐。
  • temperature 不能为 0,否则会除零。

图解原理

温度像创作旋钮:低温更保守,高温更发散;但旋钮不能拧到 0。

logits / 0.5差距变大更偏向最高分 token

语法热身:防止除零

temperature = max(float(temperature), 1e-6)
scaled_logits = logits / temperature
probs = torch.softmax(scaled_logits, dim=-1)

闯关题

temperature 变小后,softmax 分布通常会怎样?

回到 notebook 的作业

这里不直接写答案。你已经拿到足够输入,最后用 notebook 的 TODO 做举一反三。

Mission 2 TODO 2 / TODO 3

Top-K 和 Top-P:先筛候选,再采样

先补的知识

  • Top-K 保留概率最高的 K 个 token。
  • Top-P 保留累计概率达到 p 的最小候选集合。
  • 被过滤掉的 token 常用 -inf 屏蔽。

图解原理

Top-K 像固定只看前 K 名;Top-P 像把候选加到概率够一篮子为止。

概率排序.50 .25 .15 .10top_p=.8保留前三个

语法热身:排序、累计和 mask

sorted_logits, sorted_idx = torch.sort(logits, descending=True)
cumulative = torch.cumsum(F.softmax(sorted_logits, dim=-1), dim=-1)
remove = cumulative > top_p
remove[..., 1:] = remove[..., :-1].clone()
remove[..., 0] = 0
sorted_logits[remove] = float('-inf')
filtered_logits = torch.zeros_like(logits).scatter_(-1, sorted_idx, sorted_logits)

闯关题

Top-K 过滤后,被淘汰 token 的 logits 常设为?

回到 notebook 的作业

这里不直接写答案。你已经拿到足够输入,最后用 notebook 的 TODO 做举一反三。

完成 2 道闯关题后,本关即算完成;作业 checklist 用来辅助你回 notebook 练习。
进度只保存在当前浏览器 localStorage,分享 HTML 不会带走你的记录。
上一关:L20 下一关:L22