943 字
5 分钟
[CS336] A1 Chapter 6 Generating text

6 Generating text#

既然我们能够训练模型,那么接下来我们需要的就是从模型中生成文本的能力。请回想一下,语言模型会接收一个(可能是批量的)长度为 sequence_length 的整数序列,并生成一个大小为 (sequence_length, vocab_size) 的矩阵,其中序列中的每个元素都是预测该位置之后下一个标记的概率分布。现在我们将编写几个函数,将此转换为新的序列的采样方案。

Softmax

按照常规惯例,语言模型的输出就是最后的线性层的输出(即“预测值”),因此我们需要通过 softmax 操作将其转换为标准化的概率,这一过程我们在前面的 公式 10 中已经介绍过。

Decoding

要通过我们的模型生成文本(进行解码),我们将向模型提供一系列前缀 token(即 prompt),并要求它根据词汇表生成一个概率分布,以预测序列中的下一个标记。然后,我们将从这个词汇表项的概率分布中进行抽样,以确定下一个输出 token。 具体来说,解码过程的每一步应接收一个序列 x1tx_{1\dots t} 并通过以下公式返回一个 token xt+1x_{t+1}

P(xt+1=ix1t)=exp(vi)jexp(vj)v=TransformerLM(x1t)tRvocab_size(21)P(x_{t+1}=i | x_{1\dots t}) = \frac{exp(v_i)} {\sum_j exp(v_j)} \\ v = TransformerLM(x_{1\dots t})_t \in \mathbb{R}^{vocab\_size} \tag{21}

其中,TransformerLM 是我们的模型,它接收长度为 sequence_length 的序列作为输入,并生成一个大小为 (sequence_length, vocab_size) 的矩阵,然后我们取这个矩阵的最后一个元素,因为我们正在寻找第 tt 个位置的下一个预测 token。 这为我们提供了一个基本的解码器,通过反复从这些 one-step 条件中采样(将我们之前生成的输出 token 附加到下一个解码时间步的输入中)来实现,直到我们生成结束序列的 token <|endoftext|>(或者生成用户指定的最大 token 数)。

Decoder tricks

我们将对小型模型进行试验,而小型模型有时可能会生成质量极低的文本。有两种简单的解码技巧能够解决这些问题。首先,在 temperature scaling 过程中,我们通过一个温度参数 τ\tau 来修改我们的 softmax 函数,新的 softmax 函数为

softmax(v,τ)i=exp(viτ)j=1vocab_sizeexp(vjτ)(22)softmax(v, \tau)_i = \frac{exp(\frac{v_i}{\tau})} {\sum_{j=1}^{vocab\_size}exp(\frac{v_j}{\tau})} \tag{22}

请注意,当 τ0\tau \rightarrow 0 时,会使向量 vv 中的最大元素占据主导地位,而 softmax 的输出则会变成一个集中于这个最大元素的独热向量。

其次,另一种技巧是 nucleustop-p 采样,在这种方法中,我们通过截断低概率的 token 来修改采样分布。设 qq 为通过大小为 vocab_size 的(温度缩放后的)softmax 操作得到的概率分布。具有超参数 ppnucleus 采样会根据以下公式确定下一个 token:

P(xt+1=iq)={qijV(p)qjif iV(p)0otherwise(23)P(x_{t+1}=i | q) = \begin{cases} \frac{q_i}{\sum_{j\in V(p)}q_j} & if \ i\in V(p) \\ 0 & otherwise \end{cases} \tag{23}

其中 V(p)V(p) 是满足 jV(p)qjp\sum_{j \in V(p)}q_j \ge p最小索引集合。您可以通过先按概率大小对概率分布 qq 进行排序,然后选择最大的词汇元素,直到达到目标水平 pp 来轻松计算出这个量。


Problem (decoding): Decoding

实现一个函数来对您的语言模型进行解码。我们建议您支持以下功能:

  • 根据用户提供的 prompt 生成完成内容(即,接收一些 x1tx_{1\dots t} 并持续生成内容直到遇到一个 <|endoftext|>)。
  • 允许用户控制生成的 token 数量上限。
  • 给定一个期望的温度值,对预测的下一个 token 分布应用 softmax 温度缩放操作,然后再进行采样。
  • Top-p 采样,给定用户指定的阈值。

[CS336] A1 Chapter 6 Generating text
https://lettle.cn/posts/6-generating-text/
作者
Lettle
发布于
2026-05-28
许可协议
CC BY-NC-SA 4.0