在本文中,您将了解转换器如何将输入标记转换为上下文感知的表示形式,并最终转换为下一个标记的概率。
我们将讨论的主题包括:
- 标记化、嵌入和位置信息如何准备输入
- 多头注意力和前馈网络在每一层中有何贡献
- 最终的投影和 softmax 如何产生下一个标记的概率
让我们开始我们的旅程吧。
代币之旅:变压器内部到底发生了什么(点击放大)
图片由编辑提供
旅程开始
大型语言模型 (LLM)基于 Transformer 架构,这是一个复杂的深度神经网络,其输入是一系列令牌嵌入。经过一个深入的过程——看起来像是一系列堆叠的注意力和前馈变换——它输出一个概率分布,指示接下来应该生成哪个令牌作为模型响应的一部分。但是,对于输入序列中的单个标记,如何解释从输入到输出的整个过程呢?
在本文中,您将了解 Transformer 模型(LLM 背后的架构)在代币级别内部发生的情况。换句话说,我们将看到输入标记或输入文本序列的一部分如何变成生成的文本输出,以及转换器内部发生的更改和转换背后的基本原理。
通过变压器模型对这一旅程的描述将以上图为指导,该图显示了通用变压器架构以及信息如何在其中流动和演变。
进入转换器:从原始输入文本到输入嵌入
在进入转换器模型的深度之前,文本输入已经发生了一些转换,主要是因此它以转换器内部层完全可以理解的形式表示。
代币化
分词器是一个算法组件,通常与法学硕士的变压器模型共生。它采用原始文本序列(例如用户提示),并将其分割为离散的标记(通常是子字单元或字节,有时是整个单词),源语言中的每个标记都映射到一个标识符 我。
代币嵌入
有一个学习嵌入表 E 有形状 |V| × d (词汇量大小按嵌入维度计算)。查找长度序列的标识符 n 产生一个嵌入矩阵 X 有形状 n × d。也就是说,每个令牌标识符都映射到一个 d形成一行的维嵌入向量 X。如果两个嵌入向量与具有相似含义的标记(例如国王和皇帝)相关联,则它们将彼此相似,反之亦然。重要的是,在这个阶段,每个标记嵌入都携带该单个标记的语义和词汇信息,而不包含有关序列其余部分的信息(至少现在还没有)。
位置编码
在完全进入变压器的核心部分之前,有必要在每个令牌嵌入向量内注入——即嵌入矩阵的每一行内 X — 有关该标记在序列中的位置的信息。这也称为注入位置信息,通常使用正弦和余弦等三角函数来完成,尽管也有基于学习位置嵌入的技术。近残差分量与先前的嵌入向量相加 e_t 与 token 关联,如下:
\[
x_t^{(0)} = e_t + p_{\text{pos}}
和 p_pos
现在,是时候进入变压器的深处,看看里面发生了什么!
变压器深处:从输入嵌入到输出概率
让我们解释一下每个“丰富的”单标记嵌入向量在通过一个转换器层时会发生什么,然后缩小以描述整个层堆栈中发生的情况。
公式
\[
h_t^{(0)} = x_t^{(0)}
\]
用于表示第 0 层(第一层)的 token 表示,而更一般地我们将使用 ht(l) 表示令牌在层的嵌入表示 我。
多头注意力
变压器每个复制层内的第一个主要组件是 多头注意力。当涉及到识别大量有意义的信息并将其合并到每个标记的表示中时,这可以说是整个架构中最有影响力的组件,这些信息涉及其在整个序列中的作用以及它与文本中其他标记的关系,无论是句法、语义还是任何其他类型的语言关系。这种所谓的注意力机制中的多个头分别专门用于同时捕获令牌及其所属的整个序列中的不同语言方面和模式。
具有令牌表示的结果 ht(l) (注入位置信息 先验,不要忘记!)在层内穿过这种多头注意力是上下文丰富或上下文感知的令牌表示。通过在变压器层上使用残差连接和层归一化,新生成的向量成为其先前表示和多头注意力输出的稳定混合。这有助于提高跨层重复应用的整个过程的一致性。
前馈神经网络
接下来是相对不太复杂的事情:一些 前馈神经网络 (FFN)层。例如,这些可以是每个令牌的多层感知器(MLP),其目标是进一步转换和细化逐渐学习的令牌特征。
注意力阶段与这一阶段的主要区别在于,注意力在每个 token 表示中混合并合并了来自所有 token 的上下文信息,但 FFN 步骤独立应用于每个 token,精炼已经集成的上下文模式,以从中产生有用的“知识”。这些层还补充有残差连接和层归一化,并且作为此过程的结果,我们在变压器层的末尾有一个更新的表示 ht(l+1) 它将成为下一个变压器层的输入,从而进入另一个多头注意力块。
整个过程重复的次数与我们架构中定义的堆叠层的数量一样多,从而逐渐丰富了令牌嵌入,在这些看似难以理解的数字背后包含了越来越多的高级、抽象和远程语言信息。
最终目的地
那么,最后会发生什么呢?在堆栈的顶部,经过最后一个复制的转换器层之后,我们获得了最终的令牌表示 ht*(L) (在哪里 t* 表示当前预测位置),通过 线性输出层 随后是一个 软最大。
线性层产生非标准化分数,称为 逻辑数,softmax 将这些 logits 转换为下一个标记的概率。
Logits 计算:
\[
\text{logits}_j = W_{\text{vocab}, j} \cdot h_{t^*}^{(L)} + b_j
\]
应用 softmax 计算归一化概率:
\[
\text{softmax}(\text{logits})_j = \frac{\exp(\text{logits}_j)}{\sum_{k} \exp(\text{logits}_k)}
\]
使用 softmax 输出作为下一个标记概率:
\[
P(\text{token} = j) = \text{softmax}(\text{logits})_j
\]
这些概率是针对词汇表中所有可能的标记计算的。然后选择由 LLM 生成的下一个标记——通常是概率最高的标记,尽管基于采样的解码策略也很常见。
旅程的终点
本文通过 Transformer 架构,以温和的技术细节进行了一次旅程,以大致了解提供给 LLM(基于 Transformer 架构的最著名模型)的文本会发生什么情况,以及该文本如何在模型内部在令牌级别进行处理和转换,最终变成模型的输出:要生成的下一个单词。
我们希望您享受我们一起的旅行,并期待在不久的将来有机会踏上另一次旅行。

