生成一句话需要在每一步选择后续内容。概率分布表达模型对这些候选的相对偏好,训练则调整分布,提高已观察后续内容的概率。由此,下一词元训练目标与产生完整回答的重复计算建立起联系。
自回归语言模型定义离散词元序列上的条件概率。训练根据已观察序列估计参数,生成则根据模型给出的分布依次选择词元。两者使用同一个概率模型,但输入条件及其对参数的作用不同。
1. 序列概率
设 V 为词表,V=∣V∣ 为词表大小,x1:T=(x1,…,xT) 为词元序列。根据概率链式法则,序列概率可分解为:
pθ(x1:T)=t=1∏Tpθ(xt∣x<t),x<t=(x1,…,xt−1)
第一个因子以空前缀或明确规定的起始词元为条件。条件生成时,输入提示构成前缀的一部分;结束词元则可以在概率模型内部表示终止。[1]
这一分解来自条件概率,允许各位置之间存在依赖。Transformer 可以用于参数化这些条件分布。上下文长度限制为 C 时,每次计算使用该配置允许的前缀。
2. 从隐藏状态到概率
设 ht∈Rd 为根据前缀预测 xt 的最终隐藏向量。输出投影首先产生未归一化分数,即 logits:
zt=Uht+b,U∈RV×d,b∈RV
随后通过 softmax 得到概率:
pt,k=∑j=1Vezt,jezt,k
当 logits 有限时,各项概率均为正,且总和为一。直接计算指数可能造成数值溢出。令 mt=maxjzt,j,从所有 logits 中减去这一最大值,得到等价形式:
pt,k=∑jezt,j−mtezt,k−mt
分子与分母中的公共因子 e−mt 相互抵消,因此这种变换改善数值计算,但不改变所表示的分布。[2]
3. 训练目标及其梯度
最大似然训练提高模型赋予已观察序列的概率。取负对数后,概率乘积转化为求和。对于单个序列,按词元平均的目标为:
L(θ)=−T1t=1∑Tlogpθ(xt∣x<t)
当序列长度不同时,按词元平均与先计算每条序列损失再平均会产生不同的样本权重。下一词元训练以已观察前缀为条件,以实际出现的下一个词元为目标;因果注意力用于排除预测目标时不可访问的后续位置。[3]
对于目标编号为 y 的单个位置,负对数似然可展开为:
ℓ=−zy+logj∑ezj
分别对线性项与对数指数和求导,得到:
∂zk∂ℓ=−1[k=y]+∑jezjezk=pk−1[k=y]
其中,1[k=y] 在 k 为目标类别时取一,否则取零。该式给出损失对 logits 的导数。若要求模型参数的梯度,还需要通过输出投影与更早的网络层继续应用链式法则。
4. 数值例子
对一个构造的三词元词表,设 z=(log2,0,0)。取指数后得到 (2,1,1),归一化后得到:
p=(1/2,1/4,1/4)
当第一个词元为目标时,损失为 ℓ=log2≈0.693147,梯度为:
∇zℓ=(−1/2,1/4,1/4)
这里计算的是特定上下文下的词元分布。因此,第一个概率 1/2 描述一种可能的后续内容,而非事实陈述的正确率。
5. 生成与解码
解码可以选择概率最大的词元 argmaxkpk,也可以按照分布采样。正温度参数 τ 通过 softmax(z/τ) 改变采样概率。在上述例子中,τ=2 时,第一个词元的概率变为 2/(2+2)≈0.414214。
选出的词元被追加到前缀,计算过程重复进行,直到满足停止条件。普通推理过程中,参数 θ 保持不变;前缀变化会改变条件分布,但不构成训练更新。外部存储、检索和后续训练属于不同的系统操作。

图示描述计算顺序;概率分布、训练目标以及推理与参数更新的区别由上述公式明确规定。 [3]
参考文献