在大屏或电脑上体验更佳——动画和操作区域更宽敞。
输入

解码策略

解码策略在不重训模型的情况下,从下一 token 分数中选择结果。贪心取最高分,Top-k 在固定个数候选中采样,Top-p 保留累计概率达到阈值的候选再采样。温度改变概率集中程度,同一组分数可因策略不同得到不同 token。

把 [0,1) 看作尺子,token 按概率占据区间,均匀随机标记落在哪就选谁。筛选去掉一些区间,再按比例拉伸剩余部分覆盖整把尺子;分数没变,标记却可能落到另一个 token。

温度、筛选与归一化

固定前缀下,GPT-2 输出 50,257 个 logit。对 T > 0:

p_T(i) = exp((z_i − max(z))/T) / Σ_j exp((z_j − max(z))/T)

减最大值使指数稳定,不改变数学概率。低温更集中,高温更分散;正温度不改变固定 logit 的排名。

贪心直接取最大 logit,无随机标记,所以种子不影响;唯一最大值在任何正温度下相同。本课同分优先小 token ID。

Top-k 留前 k 个;Top-p 按排名累加,首次达到或超过阈值时停止,保留跨线 token。p 指质量,不是候选数,也不是每 token 单独的门槛。

保留集合 S 的质量为 M = Σ_(i in S) p_T(i),采样概率:

q(i) = p_T(i)/M(保留项),其余为零。

这样剩余区间覆盖整把尺子,且相对比值不变。保留概率不相等时,标记均匀不等于候选等概率,宽区间更易选中。本课两种筛选各自从完整温度分布开始,不暗中先 Top-k 再 Top-p。定义参见 Transformers 生成参数与核采样论文。

逐步演示

固定原文前缀 The colors of the rainbow are red, orange, yellow,,T = 1、k = 3、top-p = 0.8、种子 41。这是实际 GPT-2 分数,· 显示 token 前空格。

排名token模型概率累计
1·blue0.2265760.226576
2·and0.2183360.444912
3·green0.2103560.655268
4·purple0.0599700.715238
5·yellow0.0391740.754412
6·pink0.0326880.787099
7·orange0.0255920.812691
8·black0.0248900.837581

其他 50,249 token 共约 0.162419,始终参与计算。blue 排第一是待检查的模型输出,不是彩虹顺序的事实说明。

  1. 贪心:选第一名 ·blue,不使用 k、p 或种子。
  2. Top-k:保留三项,质量 0.655268,排除 0.344732。未归一化时尺子末段没有合法候选;除以保留质量后,blue、and、green 分别约 0.345777、0.333200、0.321023。
  3. 放标记:种子 41 首抽 u = 0.8510142471641302。按排名排列区间,green 在约 [0.678977,1),所以选 ·green,该区间长度对应约 32.10% 概率。
  4. Top-p:六项只有 0.787099 < 0.8,加入 orange 后到 0.812691,所以保留七项。归一化后 purple 区间约 [0.806294,0.880085),相同 u 选择 ·purple。

相同模型分数、相同随机数,三种规则得到 blue、green、purple,差异来自解码。

最后记录十二次相同前缀的独立抽样试验,不是连续生成十二词。两种采样器在每列共享 u,所以方法之间结果耦合;每种方法的后续试验使用新伪随机数。贪心始终 blue。十二次只能展示变化,不能证明经验频率已等于理论概率。

个数固定与质量固定

默认前缀、p 为 0.8,温度 0.5、1、1.5、2 的核分别含 3、7、352、6,340 token。排名未变,概率向尾部分散,需更多候选凑足质量。

固定 T = 1,换前缀 1, 2, 3, 4, 5,,·6 概率约 0.909493,一项就超 0.8,因此 Top-p 是确定的。The capital of France is 在同阈值却需 502 项。Top-k 在两者中仍留 k 项。

目的控制固定的性质
总选最大分Greedy固定前缀下不受种子影响
固定候选数Top-k分布变化也保留 k 项
按集中程度变候选数Top-p累计质量门槛
筛选前调整概率温度固定 logit 的排名

k 为一时,提高温度也不能产生变化,唯一幸存项仍占整个区间,需要增加 k。比较设置先固定前缀和种子。任何策略都不保证事实正确,提高温度也不是“创造力或质量改善”的测量。

复杂度

词表 V,贪心查最大 O(V)。本课完整排序 O(V log V),概率、保留质量和累计区间时间空间 O(V)。累计表完成后,每次二分定位为 O(log |S|)。

固定前缀的排名可跨正温度复用,完整排序只是本实现选择,专用 Top-k 可用其他算法。真实生成追加 token 后前缀变了,还需模型前向计算,不计在此后处理成本内。

边界情况

  • k 为一:无论原概率多小,保留后 q 为一,温度救不回已删候选。
  • p 低于首项概率:Top-p 也只有一项,可在未选 Greedy 时确定输出。
  • 累计恰等:立即停止,未到门槛则必须加下一项。
  • p 为一、k 为 V:各自保留全表,相同抽样值下两者结果一致;这是并列比较,不是串联筛选。
  • 结果在显示八项之外:查看器显示真实 token、排名、区间,不采样虚构的“其他”token。
  • 同分:本课按 token ID,库在精确并列的截止规则可能不同。
  • T 为零:公式除数无效,界面保持正数,以显式 Greedy 提供确定选择。

常见错误

  • 把 p=0.8 当每项需超过 80%。它是排名前缀的累计质量。
  • 删除越线项。默认删第七项只剩 78.71%,没有满足 80%。
  • 保留后均匀抽 token。正确是按剩余概率同比例归一化,不是每项 1/|S|;只有保留概率全相等(如 k = 1 只剩一个)时两者才一样。
  • 只将可见八柱归一化,提前抹去尾部。温度与 Top-p 都处理全部 50,257 项。
  • 把十二列抽样当生成文本。真实续写需每次将选中 token 反馈模型,见下一 token 预测。

模型范围

三次真实 GPT-2 前向导出的完整 logits,保存模型 revision 与元数据;浏览器不载模型,只用双精度重算解码,所以 Top-p 输入最多六位小数。八 token 单独显示,其余视觉分组。省略重复推理、束搜索、重复惩罚及其他 logit 处理器,以分开检查保留、归一化、选择。