Transformer架构详解

什么是 Transformer?

Transformer 是一种神经网络架构,它从根本上改变了人工智能的方法。Transformer 首次出现在 2017 年的开创性论文 《Attentions is All you need》中 ,此后它已成为深度学习模型的首选架构,为 OpenAI 的GPT、Meta 的Llama和 Google 的 Gemini等文本生成模型提供支持。

从根本上讲,文本生成 Transformer 模型基于下一个单词预测的原理运行:给定用户的文本提示,最有可能跟在该输入之后的下一个单词是什么?Transformer 的核心创新和强大之处在于它们使用了自注意力机制,这使它们能够比以前的架构更有效地处理整个序列并捕获长距离依赖关系。

Transformer 架构

每个文本生成 Transformer 都包含以下三个关键组件

  1. 嵌入:文本输入被分成更小的单位,称为标记,可以是单词或子单词。这些标记被转换成称为嵌入的数值向量,用于捕获单词的语义。
  2. Transformer Block是模型的基本构建块,用于处理和转换输入数据。每个块包括:
    • 注意力机制,Transformer 模块的核心组件。它允许 token 与其他 token 进行通信,捕获上下文信息和单词之间的关系。
    • MLP(多层感知器)层,一个对每个 token 独立运行的前馈网络。注意层的目标是在 token 之间路由信息,而 MLP 的目标是优化每个 token 的表示。
  3. 输出概率:最后的线性层和 softmax 层将处理后的嵌入转换为概率,使模型能够对序列中的下一个标记做出预测。

Embedding

假设您想使用 Transformer 模型生成文本。您添加如下提示:“Data visualization empowers users to”。此输入需要转换为模型可以理解和处理的格式。这就是嵌入的作用所在:它将文本转换为模型可以使用的数字表示。要将提示转换为嵌入,我们需要 1) 对输入进行标记,2) 获取标记嵌入,3) 添加位置信息,最后 4) 将标记和位置编码相加以获得最终嵌入。让我们看看每个步骤是如何完成的。

图1.展开嵌入层视图,显示如何将输入提示转换为向量表示。该过程涉及 (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)

图2.根据原始嵌入计算查询、键和值矩阵。

每个 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。

图3.使用查询、键和值矩阵计算掩蔽自注意力。
  • 注意力分数:查询 和键矩阵的点积 确定每个查询与每个键的对齐方式,从而产生一个反映所有输入标记之间关系的方阵。
  • 掩码:在注意力矩阵的上三角上应用掩码,以防止模型访问未来的标记,并将这些值设置为负无穷大。模型需要学习如何在不“窥视”未来的情况下预测下一个标记。
  • Softmax:经过掩蔽后,注意力得分通过 softmax 运算转换为概率,该运算取每个注意力得分的指数。矩阵的每一行加起来为 1,表示其左侧每个其他标记的相关性。

步骤 4:输出和连接Output and Concatenation

该模型使用掩码后的自注意力分数,并将其与 Value矩阵相乘,得到 自注意力机制的最终输出12。GPT-2 具有自注意力头,每个头都捕获 token 之间的不同关系。这些头的输出被连接起来并通过线性投影。

MLP:多层感知器Multi-Layer Perceptron

图4.使用MLP层将自注意力表示投影到更高维度,以增强模型的表示能力。

在多个自注意力机制捕获输入 token 之间的不同关系后,连接的输出将通过多层感知器 (MLP) 层,以增强模型的表示能力。MLP 块由两个线性变换组成,中间有一个 GELU 激活函数。第一个线性变换将输入的维数从 增加到 四倍7683072第二个线性变换将维数降低回原始大小768,确保后续层接收一致维度的输入。与自注意力机制不同,MLP 独立处理 token 并简单地将它们从一种表示映射到另一种表示。

输出概率Output Probabilities

在输入经过所有 Transformer 块处理后,输出将通过最后的线性层,为标记预测做好准备。此层将最终表示投影到50,257 维度空间中,词汇表中的每个标记都有一个对应的值,称为 logit。任何标记都可以是下一个单词,因此此过程允许我们根据它们成为下一个单词的可能性对这些标记进行简单排序。然后,我们应用 softmax 函数将 logits 转换为总和为 1 的概率分布。这将使我们能够根据其可能性对下一个标记进行采样。

图5.根据模型的输出逻辑,词汇表中的每个标记都分配有一个概率。这些概率决定了每个标记成为序列中下一个单词的可能性。

最后一步是从该分布中采样来生成下一个 token temperature 。超参数在此过程中起着至关重要的作用。从数学上讲,这是一个非常简单的操作:模型输出 logits 只需除以 temperature

  • temperature = 1:将 logits 除以 1 对 softmax 输出没有影响。
  • temperature < 1:较低的温度通过锐化概率分布使模型更加自信和确定,从而产生更可预测的输出。
  • temperature > 1:较高的温度会产生更柔和的概率分布,从而允许生成的文本具有更多的随机性 - 有些人称之为模型“创造力”

此外,可以使用top-ktop-p参数进一步细化采样过程:

  • top-k sampling:将候选标记限制为概率最高的前 k 个标记,过滤掉可能性较小的选项。
  • top-p sampling:考虑累积概率超过阈值 p 的最小标记集,确保只有最可能的标记做出贡献,同时仍然允许多样性。

通过调整temperaturetop-ktop-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 采样方法来调整推理过程中的采样行为。尝试不同的值,看看概率分布如何变化并影响模型的预测。
  • 与注意力图交互,查看模型如何关注输入序列中的不同标记。将鼠标悬停在标记上以突出显示其注意力权重,并探索模型如何捕获上下文和单词之间的关系。
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,639评论 6 513
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,093评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 167,079评论 0 357
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,329评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,343评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,047评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,645评论 3 421
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,565评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,095评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,201评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,338评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,014评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,701评论 3 332
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,194评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,320评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,685评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,345评论 2 358

推荐阅读更多精彩内容