自回归生成用 token id 还是概率分布?
解码策略原理:采样/贪婪 vs softmax 分布,影响生成质量
原题:在自回归文本生成过程中,当模型生成第i个token后,继续生成第i+1个token时,是使用第i位的采样或贪婪选择的token id,还是直接使用其softmax概率分布?这种设计背后的原理是什么?
模型架构 · 字节真题
回答与解析
标准自回归解码使用离散token
在第i步,模型输出词表logits,经softmax得到分布。解码器按贪婪、采样、top-k、top-p或Beam Search选出一个或若干候选token id。对单条生成路径,第i+1步通常把已选id查embedding后作为新输入,并缓存该路径对应的K/V。
训练时teacher forcing通常输入真实前缀token;推理输入模型自己选出的token。Exposure bias来自这两种前缀分布的差异,不是来自token离散化。
能否直接使用softmax分布
可以计算期望embedding e=p^T E 并继续前向,或使用Gumbel-Softmax等连续近似,但这会把多个词的语义混进一个向量,改变模型训练时的输入分布,并增加对整个词表的计算与存储。它不会因为“不是离散id”就必然需要为每个候选分别缓存K/V;若只传一个期望embedding,仍只有一条状态。若要精确保留多个离散分支,才需要Beam或树搜索分别维护状态。
因此标准生成选择token id是与离散语言建模目标一致的工程设计,而不是KV Cache强制要求。
口语版讲法(约4分钟)
- 说明logits到token id的标准流程
- 区分训练teacher forcing与推理
- 解释期望embedding方案
- 澄清KV缓存与候选分支
- 给出标准离散解码的理由
标准自回归生成在第i步先输出整个词表的logits,经过softmax得到概率分布。然后解码策略会从这个分布里选择token。贪婪解码取最大概率,随机采样按概率抽取,top-k和top-p先截断候选,Beam Search则同时保留若干序列分支。对一条普通生成路径,最终会得到一个离散token id。
生成第i加一步时,模型通常把刚选出的id查embedding,连同此前上下文继续前向。Transformer服务会把这条路径已有token的K和V缓存起来,只计算新增位置。这里的离散选择和模型训练目标一致:语言模型是在离散token序列上学习next-token概率,所以下一步接收一个实际token最符合训练分布。
训练阶段常用teacher forcing,当前位置看到的前缀来自真实数据;推理阶段看到的是模型自己此前选出的token。一旦前面选错,后续条件分布也会改变。Exposure bias来自这种训练前缀与推理前缀的分布差异,不是因为token被离散化,也不是KV缓存造成的。
理论上可以不采一个id,而是把softmax分布乘embedding矩阵,得到词向量的期望,再把这个连续向量送到下一步。也可以使用Gumbel-Softmax等连续近似做可微采样。但期望embedding会把多个候选词的语义混在一起,这种向量训练时通常没有出现;它还要保留或计算整个词表分布,因此成本较高,并会改变模型语义,不能当作标准解码的等价替换。
KV Cache也不强制输入必须是离散token。如果下一步只接收一个期望embedding,计算图仍只有一条路径,也只需要一份对应K/V。只有想精确保留多个离散候选并分别继续生成时,才像Beam Search那样为每个分支维护状态。不能说使用soft分布就必然为词表每个token缓存一份。
所以工程上默认选择一个token id,是因为训练数据、输出协议和搜索目标都定义在离散序列上。是否用贪婪或采样由质量、多样性和可复现性决定;如果研究连续松弛,就要单独训练或验证其分布偏移、计算成本和最终文本合法性。
Beam Search维护多个离散前缀时,每个分支都要有对应缓存,但共享前缀可以通过引用计数或分页缓存减少复制。分支扩展后再按累计分数筛选,仍然是在离散序列空间搜索,与把整个softmax压成一个期望向量是两种不同语义。
采样后得到低概率token并不代表实现出错,它是多样性策略的结果。可通过随机种子和完整解码参数复现,并将概率日志与最终id一同保存,方便分析退化从哪一步开始。
关键一句:期望embedding为何不是对离散采样的无损替代。
核验来源
面试官还可能这样问
- 问法 1 · 场景切入
假设现在实现一条标准自回归生成路径。模型每步输出词表分布后,你会怎样得到下一步输入?如果改用期望 embedding,会改变哪些假设?
- 问法 2 · 层层追问
softmax 分布怎样变成 token id?……下一步查哪个 embedding?……teacher forcing 与推理前缀差异是什么?……期望 embedding 或 Gumbel-Softmax 能不能用,代价是什么?……KV Cache 是否强制离散?
- 问法 3 · 直球技术
请说明标准自回归解码为何选择离散 token id,并比较期望 embedding、连续近似与多分支搜索在语义、计算、训练分布和 KV 状态上的差异。