什么是 Transformer?
Transformer 是一种神经网络架构,它从根本上改变了人工智能的方法。Transformer 首次出现在 2017 年的开创性论文 《Attentions is All you need》中 ,此后它已成为深度学习模型的首选架构,为 OpenAI 的GPT、Meta 的Llama和 Google 的 Gemini等文本生成模型提供支持。
从根本上讲,文本生成 Transformer 模型基于下一个单词预测的原理运行:给定用户的文本提示,最有可能跟在该输入之后的下一个单词是什么?Transformer 的核心创新和强大之处在于它们使用了自注意力机制,这使它们能够比以前的架构更有效地处理整个序列并捕获长距离依赖关系。
Transformer 架构
每个文本生成 Transformer 都包含以下三个关键组件:
- 嵌入:文本输入被分成更小的单位,称为标记,可以是单词或子单词。这些标记被转换成称为嵌入的数值向量,用于捕获单词的语义。
-
Transformer Block是模型的基本构建块,用于处理和转换输入数据。每个块包括:
- 注意力机制,Transformer 模块的核心组件。它允许 token 与其他 token 进行通信,捕获上下文信息和单词之间的关系。
- MLP(多层感知器)层,一个对每个 token 独立运行的前馈网络。注意层的目标是在 token 之间路由信息,而 MLP 的目标是优化每个 token 的表示。
- 输出概率:最后的线性层和 softmax 层将处理后的嵌入转换为概率,使模型能够对序列中的下一个标记做出预测。
Embedding
假设您想使用 Transformer 模型生成文本。您添加如下提示:“Data visualization empowers users to”
。此输入需要转换为模型可以理解和处理的格式。这就是嵌入的作用所在:它将文本转换为模型可以使用的数字表示。要将提示转换为嵌入,我们需要 1) 对输入进行标记,2) 获取标记嵌入,3) 添加位置信息,最后 4) 将标记和位置编码相加以获得最终嵌入。让我们看看每个步骤是如何完成的。
步骤 1:Tokenization
标记化是将输入文本分解为更小、更易于管理的部分(称为标记)的过程。这些标记可以是单词或子单词。单词"Data"
和"visualization"
对应于唯一标记,而单词 "empowers"
被拆分为两个标记。在训练模型之前,标记的完整词汇表已确定:GPT-2 的词汇表具有50,257
唯一标记。现在我们将输入文本拆分为具有不同 ID 的标记,我们可以从嵌入中获得它们的向量表示。
步骤 2:Token Embedding
GPT-2(小型)将词汇表中的每个标记表示为 768 维向量;向量的维度取决于模型。这些嵌入向量存储在形状为 的矩阵中(50,257, 768)
,包含大约 3900 万个参数!这个广泛的矩阵允许模型为每个标记分配语义含义。
步骤 3:Positional Encoding
Embedding 层还对每个 token 在输入提示中的位置信息进行编码。不同的模型使用不同的方法进行位置编码。GPT-2 从头开始训练自己的位置编码矩阵,将其直接集成到训练过程中。
步骤 4:Final Embedding
最后,我们将标记和位置编码相加以获得最终的嵌入表示。这种组合表示既捕获了标记的语义含义,也捕获了它们在输入序列中的位置。
Transformer Block
Transformer 处理的核心在于 Transformer 块,它由多头自注意力和多层感知器层组成。大多数模型由多个这样的块组成,这些块按顺序一个接一个地堆叠在一起。token 表示通过层级演变,从第一个块到最后一个块,使模型能够对每个 token 建立复杂的理解。这种分层方法可以实现输入的高阶表示。我们正在研究的 GPT-2(小型)模型由12
这样的块组成。
Multi-Head Self-Attention
自注意力机制使模型能够专注于输入序列的相关部分,从而能够捕获数据中的复杂关系和依赖关系。让我们一步步看看这种自注意力是如何计算的。
步骤 1:查询、键和值矩阵(Query, Key, and Value Matrices)
每个 token 的嵌入向量被转换成三个向量: 查询 (Q)、 键 (K)和 值 (V)。这些向量是通过将输入嵌入矩阵与学习到的 Q、 K和 V的权重矩阵相乘而得出的。这里有一个网络搜索类比,可以帮助我们建立这些矩阵背后的一些直觉:
- 查询 (Q)是您在搜索引擎栏中输入的搜索文本。这是您想要 “查找更多信息”的标记。
- 键 (K)是搜索结果窗口中每个网页的标题。它表示查询可以关注的可能的标记。
- 值(V)是网页实际显示的内容。当我们将合适的搜索词(Query)与相关结果(Key)匹配后,我们希望获得最相关页面的内容(Value)。
通过使用这些 QKV 值,模型可以计算注意力分数,这决定了每个标记在生成预测时应该获得多少关注。
步骤 2:多头拆分Multi-Head Splitting
查询、键和 值 向量被分成多个头部(在 GPT-2(小型)的情况下,分成 12
多个头部)。每个头部独立处理嵌入的一部分,捕获不同的句法和语义关系。这种设计有助于并行学习各种语言特征,从而增强模型的表征能力。
步骤 3:Masked Self-Attention
在每个 head 中,我们执行 masked self-attention 计算。此机制允许模型通过关注输入的相关部分来生成序列,同时阻止访问未来的 token。
- 注意力分数:查询 和键矩阵的点积 确定每个查询与每个键的对齐方式,从而产生一个反映所有输入标记之间关系的方阵。
- 掩码:在注意力矩阵的上三角上应用掩码,以防止模型访问未来的标记,并将这些值设置为负无穷大。模型需要学习如何在不“窥视”未来的情况下预测下一个标记。
- Softmax:经过掩蔽后,注意力得分通过 softmax 运算转换为概率,该运算取每个注意力得分的指数。矩阵的每一行加起来为 1,表示其左侧每个其他标记的相关性。
步骤 4:输出和连接Output and Concatenation
该模型使用掩码后的自注意力分数,并将其与 Value矩阵相乘,得到 自注意力机制的最终输出12
。GPT-2 具有自注意力头,每个头都捕获 token 之间的不同关系。这些头的输出被连接起来并通过线性投影。
MLP:多层感知器Multi-Layer Perceptron
在多个自注意力机制捕获输入 token 之间的不同关系后,连接的输出将通过多层感知器 (MLP) 层,以增强模型的表示能力。MLP 块由两个线性变换组成,中间有一个 GELU 激活函数。第一个线性变换将输入的维数从 增加到 四倍
768
。3072
第二个线性变换将维数降低回原始大小768
,确保后续层接收一致维度的输入。与自注意力机制不同,MLP 独立处理 token 并简单地将它们从一种表示映射到另一种表示。
输出概率Output Probabilities
在输入经过所有 Transformer 块处理后,输出将通过最后的线性层,为标记预测做好准备。此层将最终表示投影到50,257
维度空间中,词汇表中的每个标记都有一个对应的值,称为 logit
。任何标记都可以是下一个单词,因此此过程允许我们根据它们成为下一个单词的可能性对这些标记进行简单排序。然后,我们应用 softmax 函数将 logits 转换为总和为 1 的概率分布。这将使我们能够根据其可能性对下一个标记进行采样。
最后一步是从该分布中采样来生成下一个 token
temperature
。超参数在此过程中起着至关重要的作用。从数学上讲,这是一个非常简单的操作:模型输出 logits 只需除以 temperature
:
-
temperature = 1
:将 logits 除以 1 对 softmax 输出没有影响。 -
temperature < 1
:较低的温度通过锐化概率分布使模型更加自信和确定,从而产生更可预测的输出。 -
temperature > 1
:较高的温度会产生更柔和的概率分布,从而允许生成的文本具有更多的随机性 - 有些人称之为模型“创造力”。
此外,可以使用top-k
和 top-p
参数进一步细化采样过程:
-
top-k sampling
:将候选标记限制为概率最高的前 k 个标记,过滤掉可能性较小的选项。 -
top-p sampling
:考虑累积概率超过阈值 p 的最小标记集,确保只有最可能的标记做出贡献,同时仍然允许多样性。
通过调整temperature
、top-k
和top-p
,您可以在确定性和多样化输出之间取得平衡,并根据您的特定需求定制模型的行为。
Advanced Architectural Features
有几种高级架构功能可增强 Transformer 模型的性能。虽然它们对于模型的整体性能很重要,但对于理解架构的核心概念却不那么重要。层规范化、Dropout 和残差连接是 Transformer 模型中的关键组件,尤其是在训练阶段。层规范化可以稳定训练并帮助模型更快地收敛。Dropout 通过随机停用神经元来防止过度拟合。残差连接允许梯度直接流过网络并有助于防止梯度消失问题。
层规范化Layer Normalization
层归一化有助于稳定训练过程并提高收敛性。它通过对特征之间的输入进行归一化来工作,确保激活的均值和方差一致。这种归一化有助于缓解与内部协变量偏移相关的问题,使模型能够更有效地学习并降低对初始权重的敏感度。层归一化在每个 Transformer 块中应用两次,一次在自注意力机制之前,一次在 MLP 层之前。
Dropout
Dropout 是一种正则化技术,通过在训练期间随机将模型权重的一部分设置为零来防止神经网络过度拟合。这鼓励模型学习更稳健的特征并减少对特定神经元的依赖,从而帮助网络更好地推广到新的、未见过的数据。在模型推理期间,Dropout 被停用。这本质上意味着我们正在使用经过训练的子网络的集合,从而提高模型性能。
剩余连接Residual Connections
残差连接于 2015 年首次在 ResNet 模型中引入。这种架构创新通过实现非常深的神经网络的训练,彻底改变了深度学习。本质上,残差连接是绕过一个或多个层的捷径,将层的输入添加到其输出中。这有助于缓解梯度消失问题,从而更容易训练堆叠在一起的多个 Transformer 块的深度网络。在 GPT-2 中,每个 Transformer 块内使用两次残差连接:一次在 MLP 之前,一次在 MLP 之后,以确保梯度更容易流动,并且较早的层在反向传播期间获得足够的更新。
互动功能Interactive Features
Transformer Explainer 是交互式的,可让您探索 Transformer 的内部工作原理。以下是您可以使用的一些交互式功能:
- 输入您自己的文本序列,看看模型如何处理它并预测下一个单词。探索注意力权重、中间计算,并看看如何计算最终输出概率。
- 使用温度滑块来控制模型预测的随机性。探索如何通过改变温度值来使模型输出更具确定性或更具创造性。
- 选择 top-k 和 top-p 采样方法来调整推理过程中的采样行为。尝试不同的值,看看概率分布如何变化并影响模型的预测。
- 与注意力图交互,查看模型如何关注输入序列中的不同标记。将鼠标悬停在标记上以突出显示其注意力权重,并探索模型如何捕获上下文和单词之间的关系。