【收藏必备】深入理解Transformer:大语言模型的核心架构与实现
文章详细介绍了Transformer架构,包括编码器和解码器的组成结构,多头自注意力机制、位置编码、前馈网络等核心组件的工作原理。解释了Transformer如何通过自注意力机制替代传统RNN和CNN结构,实现高效的并行计算和长距离依赖建模。文章还介绍了Transformer的三种主要变体及其在不同NLP任务中的应用,为理解大语言模型奠定了基础。
前言
Transformer(TRM)是一种在自然语言处理以及更广泛的序列建模任务中被广泛采用的深度学习架构,由Vaswani等人在2017年的论文《Attention is All You Need》中首次提出,是一种基于注意力机制的深度学习模型。与以往的序列模型不同,Transformer最大的创新之处在于彻底摒弃了循环神经网络(RNN)和卷积神经网络(CNN)等传统结构,完全依赖一种被称为自注意力机制的方法来建模序列中不同位置之间的依赖关系,从而实现更高的并行性和更快的训练速度。而注意力机制也并非是Transformer中提出的,只是在Transformer中作者大量使用了attention模块堆叠出网络,并证明了这种方式的有效性。Transformer彻底改变了自然语言处理(NLP)领域,并逐渐扩展到计算机视觉(CV)等领域。
TRM模型结构
Transformer模型由编码器(Encoder)和解码器(Decoder)两部分组成,每部分都由多层堆叠的相同模块构成。编码器-解码器架构广泛用于机器翻译等任务中,即将一个单词序列从一种语言翻译成另一种语言。该架构由如图1所示的几个构建块组成。图1中展示了Transformer整体的编码器-解码器结构,各模块之间通过注意力机制相互作用,实现从输入到输出的转换。
图1 Transformer的编码器-解码器架构
Transformer 架构主要由编码器 (Encoder) 和解码器 (Decoder) 组成,每部分均由多个相同结构的模块堆叠而成,其中每层包含若干子模块。在表征型任务里,模型通常仅保留 Encoder 用于双向特征抽取。而在生成型任务(如 GPT )中,模型则仅保留 Decoder,并对自注意力施加因果掩码,确保输出序列按时间步逐字预测。
Transformer在原论文中的图示如图2所示,左边是Encoders,右边是Decoders,Nx是相同结构的堆叠次数。

图2 Transformer在原论文中的图示
设定Nx=6,则可知
- 输入部分(嵌入表示层):输入经过Embedding,再与位置编码(Positional Encoding)相加。在处理输入文本序列时,Transformer 首先会通过输入嵌入层(Input Embedding)将每个单词映射为对应的向量表示。与以往循环结构不同,Transformer 并不依赖顺序建模,因此序列中天然缺乏单词之间的相对位置信息。为了让模型在编码上下文语义之前能够感知词序,需要在词嵌入中加入位置编码(Positional Encoding)。
-
Embedding:是指将数据(通常是文本或类别型数据)转换为数值向量的过程。这种向量化技术广泛应用于自然语言处理(NLP)和机器学习领域,以便模型能够更好地理解和处理数据。通过 Embedding,可以将词语、句子或其他数据形式映射到一个连续的向量空间中,使相似的数据在向量空间中距离更近。常见的例子包括 Word2Vec、GloVe 和 BERT 等模型所使用的嵌入技术。
-
位置编码:为什么需要位置编码器?如图3是RNN的结构图,RNN共享一套参数,如下图中的U(输入参数),W(隐藏参数),V(输出参数),依次对输入的【我爱你。。。】等字进行处理,对于RNN的所有timestamps都共享一套参数,如下右图,U,W,V的值都是一样的;transformer中的multi-head attention是同时对这些字进行处理,而不是像RNN依次对每个词进行处理,好处是加快了速度,缺点是忽略了字与字之间的联系,为了弥补这个缺点,就引入了位置编码。


图3 RNN的结构图
- Encoder block由6个Encoder堆叠而成,图中左侧部分的一个黄框代表的是一个Encoder的内部结构,每一个Encoder包含两个子层 (sublayer)的结构:
-
多头自注意力机制(Multi-Head Self-Attention)
:允许模型在处理序列数据时关注不同位置的信息,多头机制意味着该操作会并行执行多次,每次学习不同的表示子空间,从而增强模型的表达能力。
-
前馈全连接网络(Position-wise Feed-Forward Network)
:这是一个简单的全连接前馈神经网络,对序列中的每个位置分别进行相同的线性变换和非线性激活操作。它用于引入非线性并提升模型的表达能力。
-
每个子层都含有残差连接 (Residual Connection,即Add) 和层归一化 (Layer Normalization,即LayerNom)。
- Decoder block也是由6个Decoder堆叠而成的,每个Decoder比 Encoder 多一个子层,总共三个子层:
- 带掩码的多头自注意力机制 (Masked Multi-Head Self-Attention):第一个Multi-Head Attention层采用了Masked操作,用于确保每个位置只能关注其前面的位置信息,实现自回归生成;
- 多头编码器-解码器注意力机制 (Encoder-Decoder Attention):第二个Multi-Head Attention 层的K(Key), V(Value)矩阵使用Encoder的编码信息矩阵C进行计算,而Q(Query)使用上一个Decoder block的输出计算,允许 Decoder在生成的同时参考 Encoder 的输出,从而捕捉源句的上下文。
- 前馈全连接网络。
Transformer架构最初是为序列到序列的任务(如机器翻译)而设计的,但编码器和解码器模块很快就被抽出来单独形成模型。虽然Transformer模型已经有数百种不同的变体,但其中大部分属于“纯编码器”、“纯解码器”以及“编码器-解码器”三种类型之一。
编码器
这种架构通常被应用于提取信息的任务,例如新闻分类、情感分析、文档主题识别等,因为它能够利用上下文的双向信息生成精确的文本表示。BERT及其变体,例如RoBERTa和DistilBERT,属于这类架构。此架构中为给定词元计算的表示取决于左侧(词元之前)和右侧(词元之后)上下文,这通常称为双向注意力。

图4 编码器层放大图
Transformer的编码器由许多编码器层相互堆叠而成。如图4所示,每个编码器层接收一系列嵌入,然后通过多头自注意力层和全连接前馈层进行馈送处理。
嵌入表示层
Transformer 无法直接处理文本,它需要先将句子转换为数值形式的向量。这个阶段由三个关键步骤构成:标记化(Tokenization)、词向量嵌入(Embedding)和 位置编码(Positional Encoding)。
标记化(Tokenization)
原始句子 The book is on the table 会被分解为若干个 token,每个 token 可以是:
- 一个单词(word-level);
- 一个子词(subword-level,如 BPE 或 WordPiece);
- 或者是一个字符(char-level)。
例如:["The", "book", "is", "on", "the", "table"],每个 token 都会被映射到一个整数索引(子词级映射,包含标点符号映射),这些索引将用于查找对应的向量表示。
词嵌入(Embedding)
这些 token index 会输入到一个可学习的嵌入矩阵E 中,获得一个固定维度的向量(通常维度为 512)。
举个简单示例(假设维度为 4):
| Token | Embedding 向量 |
|---|---|
| the | [0.1, 0.3, 0.2, 0.4] |
| book | [0.5, 0.6, 0.1, 0.2] |
| is | [0.2, 0.9, 0.3, 0.3] |
| on | [0.7, 0.4, 0.5, 0.1] |
| table | [0.9, 0.8, 0.6, 0.5] |
这些嵌入向量就成为 Transformer 模型的初始输入表示。这些嵌入向量就构成了 Transformer 模型的初始输入表示序列。我们可以将整个句子的嵌入结果按行拼接为一个矩阵/张量表示,每一行是一个 token 的向量:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
X = [
[0.1, 0.3, 0.2, 0.4], // the
[0.5, 0.6, 0.1, 0.2], // book
[0.2, 0.9, 0.3, 0.3], // is
[0.7, 0.4, 0.5, 0.1], // on
[0.1, 0.3, 0.2, 0.4], // the
[0.9, 0.8, 0.6, 0.5]// table
]
位置编码(Positional Encoding)
因为 Transformer 完全基于注意力机制,不像 RNN 那样内建“顺序性”,它需要人为引入位置信息。所以,我们为每个位置添加一个 位置向量(可以是可学习的,也可以是固定的 sin-cos 编码)。为了得到不同位置所对应的编码,Transformer 结构使用不同频率的正余弦函数,如下所示:

具体来说,序列中每个单词的位置都会生成一个位置向量,并与其词向量相加,再送入后续网络层。训练过程中,模型会逐渐学会利用这部分位置信息。Transformer 使用不同频率的正弦和余弦函数来计算位置编码,其中pos表示单词在序列中的位置,2i与2i+1代表奇数位置和偶数位置,d_model表示编码的总维度。这样做有两个好处:
- 正弦和余弦函数的取值范围在 [−1, +1],与原始词嵌入相加后不会显著偏离,从而保留了单词的语义信息。
- 由于三角函数的线性关系,第
pos + k个位置的编码可以由第pos个位置的编码线性表示,这意味着位置编码中自然包含了单词之间的距离信息。

pos:位置(第几个 token,从 0 开始)- i:维度索引(第几维)
- d_{model}:向量总维度,比如 512
来看一个具体示例,假设词向量的维度d_{model}=4(实际网络结构中为512或者更高),并计算位置pos=1的位置编码向量PE(1):
位置编码每个维度的计算如下:
- 对于偶数维度(2i)使用正弦函数
- 对于奇数维度(2i+1)使用余弦函数
我们来逐维计算:
-
第 0 维(i=0):

-
第 1 维(i=1):

-
第 2 维(i=2):

-
第 3 维(i=3):

因此,位置 1 的位置编码向量为:
PE(1) = [0.8415, 0.5403, 0.0099998, 0.99995]
将词向量和位置编码相加,假设 “book” 的词嵌入为:
Embedding("book") = [0.5, 0.6, 0.1, 0.2]
那么最终输入向量为(逐元素相加):
Input("book") = Embedding("book") + PE(1) = [0.5 + 0.8415, 0.6 + 0.5403, 0.1 + 0.0099998, 0.2 + 0.99995] = [1.3415, 1.1403, 0.1099998, 1.19995]
在我们假设的前面词嵌入向量,位置编码后将会得到:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
X_pos = [
[0.9415, 0.8403, 0.2099998, 1.19995], // the (pos=0)
[1.3415, 1.1403, 0.1099998, 1.19995], // book (pos=1)
[1.0415, 1.4403, 0.3099998, 1.19995], // is (pos=2)
[1.5415, 0.9403, 0.5099998, 1.19995], // on (pos=3)
[0.9415, 0.8403, 0.2099998, 1.19995], // the (pos=4)
[1.7415, 1.3403, 0.6099998, 1.19995]// table (pos=5)
]
使用 PyTorch 实现的位置编码参考代码如下:

多头自注意力机制(Multi-Head Self-Attention)
自注意力机制(Self-Attention)是 Transformer 模型中的核心运算,广泛应用于源语言的编码和目标语言的生成过程。它的主要作用是建立序列中任意两个单词之间的依赖关系。“多头” 机制的优势在于,它同时启用多个不同的注意力头并行工作。每个注意力头都能关注句子中不同的关系模式。随后,所有注意力头的输出会被拼接起来,再经过一次线性变换(投影)映射回模型隐藏层的维度。相比只有一个注意力头,多头注意力能更全面、细致地理解复杂的语言结构。
transformer论文注意力机制公式:Q, K, V是向量,分别代表Query,Key,Value。

结合本式,以婴儿为例,当问出“婴儿在干嘛”后,应该更关注哪些区域。简化信息,提炼“婴儿”一词作为输入,并划分四个区域作为key。

【点乘】是向量在向量上的投影长度,为标量,可反映“相似度”,越相似则值越大;此处判断query(婴儿)点乘key1(左上/…)谁更大,若四者计算结果V1~V4呈现“0.7,0.1,0.1,0.1”则判定为“左上”
在TRM中,仅有单词向量,如何获取QKV?首先,输入的每个单词通过词向量嵌入与位置编码相加后得到表示 xi∈Rd(Rd为嵌入矩阵**查询(Query, Q)、键(Key, K)和值(Value, 。它们反映了当前单词在计算表示时,对序列中其他单词应当分配多少注意力权重。


实际代码使用矩阵以方便并行(同时输进“thinking”和“machine”更快):

操作理由:打到不同“空间”,保证TRM注意、捕捉到更多的信息。最后,各组流经不同“空间”各出一个z值,z0到z7八个(“头”)结果值一起输出,再取矩阵即为多头注意力的输出。
理解Q、K、V矩阵的含义
- 直观类比:信息检索系统,可以类比为搜索引擎的运作:
- Query(Q):用户的搜索请求(例如“什么是Transformer?”),表示当前需要查询的信息。
- Key(K):网页的标题或关键词(例如“Transformer详解”),用于匹配用户查询。
- Value(V):网页的实际内容(例如详细的Transformer技术文档),是需要返回的有价值信息。
- 在Self-Attention中的具体含义:假设输入序列为句子中的单词:
[我,爱,自然,语言,处理]。每个单词通过嵌入(Embedding)和线性变换生成对应的Q、K、V向量:
| 单词 | Q**(查询意图)** | K**(可被匹配的特征)** | V**(实际信息内容)** |
|---|---|---|---|
| 我 | 当前想关注的内容(主语) | 可被其他词查询的特征(代词) | “我”的语义信息(第一人称) |
| 爱 | 需要关联的动作(谓语) | 动词的可匹配特征(情感动作) | “爱”的语义信息(情感表达) |
| 自然 | 需要理解的修饰对象(定语) | 名词的可匹配特征(自然属性) | “自然”的语义信息(自然领域) |
| 语言 | 需要结合的专业领域(宾语) | 专业领域的可匹配特征 | “语言”的语义信息(语言学科) |
| 处理 | 需要关联的操作(动宾结构) | 技术行为的可匹配特征 | “处理”的语义信息(技术动作) |
使用 PyTorch 实现的自注意力层参考代码如下:

残差和layerNorm
多头注意力机制后面,加入了一个残差连接。具体来说,就是将进入注意力层的输入和多头注意力的输出逐元素相加。这个“跳跃连接”帮助训练时梯度更顺畅地传递,避免梯度消失的问题。
相加完成后,会对结果进行层归一化(Layer Normalization)。层归一化是针对每个样本的特征维度进行的,而不是像批归一化那样针对整个批次。因为多头注意力的输出值范围可能比较大,层归一化能帮忙把这些数值调整到一个较小且稳定的范围,从而让训练过程更稳定。
由于 Transformer 结构构建的网络通常规模庞大,编码器和解码器都由多层堆叠的基本 Transformer 块组成。由于每一层内部都包含复杂的非线性映射,训练过程往往比较困难。为提升训练的稳定性,研究人员在 Transformer 块中引入了残差连接(Residual Connection)和层归一化(Layer Normalization)两项技术。其中,残差连接通过在子层的输入与输出之间添加一条直接的捷径,使得输入能够绕过复杂的非线性变换直接传递到输出。这一机制能够有效缓解深层网络中的梯度消失问题,从而保证训练的可优化性。另一方面,层归一化用于保证每一层输入与输出的数值分布稳定在合理范围内。

层归一化计算公式:

其中,μ和 σ 分别表示输入的均值和标准差,用于将数据归一化到均值为 0、方差为 1 的标准分布;α和 b是可学习参数,用于恢复模型所需的表示能力。层归一化不仅能减少训练中的数值不稳定,还能加快收敛速度。

前馈层(FFN, Feed-Forward Network)
前馈层接收自注意力子层的输出作为输入,并通过一个带有 ReLU 激活函数的两层全连接网络对输入进行更复杂的非线性变换。实验证明,这一非线性变换会对模型最终的性能产生重要的影响。
FFN 在 Transformer 中用于对输入进行非线性变换和特征提取,是模型处理序列数据的重要组成部分。这里使用的 FFN 是一个两层的全连接网络(源自原始论文):第一层有 2048 个神经元,激活函数是 ReLU,第二层有 512 个神经元。
假设经过层归一化的输入表示为xxx ,FFN网络通常由两个全连接层(线性变换)组成,中间包含激活函数(如 ReLU)。计算形式可以表示为:

其中:
- xxx 是层归一化后的输入。
- W_1W\_1W_1 、、、 b_1b\_1b_1 是第一层的权重和偏置。
- W_2W\_2W_2 、、、 b_2b\_2b_2 是第二层的权重和偏置。
- 激活函数(如 ReLU)引入非线性特性。
其中(xW1 + b1)表示上一层前馈子层的计算结果。实验结果表明,增大前馈子层隐状态的维度有利于提高最终翻译结果的质量,因此,前馈子层隐状态的维度一般比自注意力子层要大。

FFN 的输出会与它的输入xxx逐元素相加,形成一个残差连接,接着再进行一次层归一化。这样,一个编码器块中的计算就完成了。

整个 Transformr 由六个这样的编码器块堆叠而成,后续的编码器块结构完全相同,但每个块都有自己独立的权重参数。需要特别注意的是,编码器块的输入和输出维度保持一致,保证信息流动时维度不会变化。多层注意力和前馈网络的反复堆叠,加上残差连接和层归一化,使模型能够构建起丰富且带有上下文关系的输入表示,这些表示随后会被传递给解码器,用于生成最终的输出序列。
解码器
这类架构适合需要从头到尾生成内容的场景,例如自动写作、代码生成、诗歌创作等任务。针对像“谢谢你的午餐,我有一个……”这样的文本提示,这类模型将通过迭代预测最可能的下一个词来自动完成这个序列。GPT模型家族属于这一类。在这种架构中,对于给定词元计算出来的表示仅依赖于左侧的上下文。这通常称为因果或自回归注意力。

图5 Transformer解码器层放大图
在进入第一个解码器块之前,我们会处理提供给解码器的输入,即添加一个(序列起始)标记,这样解码器就不会从零开始。和编码器输入类似,我们也会用之前提到的子词标记化方法对目标序列进行拆分。每个标记都会被映射成对应的词向量(嵌入),然后再加上位置编码,让模型知道这些词的顺序。整个过程几乎和编码器输入准备完全相同,唯一的区别就是开头多了一个 <sos> 标记。完成这些后,我们就可以把处理好的表示输入到第一个解码器块。
不同于编码器只有两个主要模块(多头注意力和前馈网络),解码器块包含三个关键部分:
- 掩蔽多头自注意力层:这个模块让模型在生成序列时,即使是并行计算,也不会“看到”未来的词,保证生成的顺序性。确保我们在每个时间步生成的词元只基于过去的输出和当前正在预测的词元。如果没有这样做,那么解码器将能够在训练时通过简单复制目标翻译来欺骗我们,导致训练失败。我们需要对输入进行掩码,以确保任务不是简单复制目标翻译。
- 交叉注意力层(编码器-解码器注意力层):与自注意力层不同,编码器-解码器注意力中的key和query向量可能具有不同的长度。这是因为编码器和解码器输入通常涉及长度不同的序列。因此,此层中的注意力得分矩阵是矩形的,而不是正方形的。它让解码器能访问编码器输出的上下文信息,使得生成的内容既能参考已经生成的序列,也能结合输入序列的语义。
- 前馈神经网络:结构和编码器中的前馈网络类似,用来对信息进行进一步处理。
解码器中的这些细微变化是为什么我们能在生成任务中表现出色的关键。接下来,我们就深入探讨这些变化的具体实现和背后的原因。
掩蔽多头自注意力层
在深度学习中,自回归模型是一类通过基于之前生成的内容来预测下一个序列元素的模型。换句话说,模型在生成每个新词时,都会“依赖”它之前已经生成的词。在推理(预测)阶段,我们无法预先知道未来的词,所以不能用 “教师强制”(teacher forcing)的方法,也就是说,模型只能基于前面已经生成的结果来生成当前词,这就是自回归的特性。
不过,如果解码器完全按自回归方式运行,那么生成过程就必须一步步依赖上一步,导致变得很慢。而在训练阶段,我们可以用教师强制,无论模型生成了什么,我们都直接把正确的词(目标输出)传给下一个时间步。这样,训练时每个时间步的输入都是“正确”的,模型不需要依赖上一步的输出,可以实现并行计算。正因为如此,Transformer 的解码器在训练时是非自回归的(可以并行处理),而在推理时是自回归的(必须一步步生成)。
关于掩蔽多头自注意力,这里的多头自注意力机制和之前介绍的基本相同。但有一点很关键:在解码过程中,我们不希望模型 “偷看” 未来的信息。比如在训练中,假设我们要把英文句子 “I like cats” 翻译成德语 “Ich mag Katzen”,在传统的自注意力中,词 “Ich” 的表示会同时考虑 “Ich”、“mag” 和 “Katzen”,但这相当于预见了未来的信息,这是推理时不允许的。因此,在解码器的第 2 个时间步(即处理“mag”时),模型只能基于 “Ich”和“mag” 这两个词来生成上下文表示,不能看到后面的“Katzen”。
为此,我们在计算 softmax 之前,会对注意力得分矩阵加上一个掩码矩阵,掩码里包含 −∞-\infty−∞ (负无穷大)的值,这些值对应未来时间步的位置。由于softmax(−∞-\infty−∞) ,这样就确保了模型不会关注未来的词,保证了自回归的生成顺序。和编码器类似,经过掩蔽多头自注意力后的输出也会经过残差连接和层归一化,然后被送入解码器中的下一个模块,交叉注意力层。
交叉注意力
在使用 LSTM 做编码器-解码器模型时,某个词的输出依赖于解码器之前时间步和编码器对应时间步的状态。而在 Transformer 的架构中,我们通过一种叫做 “交叉注意力” 的机制来实现这一点,之前的自注意力机制只能让模型关注自身序列中的词,但交叉注意力让解码器能够 “看到” 编码器的输出,从而访问输入序列的不同部分。
具体来说,在交叉注意力机制中
- 查询(Q)来自解码器当前层的上一子层输出,
- 键(K)和值(V)则来自编码器的最终输出。
这些键和值在解码器堆栈中是固定不变的,因为编码器的工作已经完成,它们不随着解码器层数变化而改变。这样设计的好处是,无论解码器有多少层,每一层都能直接访问编码器生成的完整输入表示。因此,解码器中每个位置的词都可以关注输入序列中的所有位置,而不只是自身或相邻词。这就是为什么叫“交叉注意力”,它是在解码器和编码器之间进行的信息交叉。交叉注意力非常强大,因为它允许模型直接利用整个输入上下文,帮助生成更准确、更连贯的输出。
因此,通过自注意力和交叉注意力,我们现在可以访问迄今为止生成的输出序列和整个输入序列。交叉注意力的输出也经过残差链接和归一化层。归一化后的输出成为 FFN 的输入。
前馈神经网络
FFN 的实现与编码器模块类似。它由两层组成,第一层包含 2048 个 神经元,第二层包含 512 个神经元。FFN 的输入与 FFN 的输出借助残差连接进行加法运算,并应用层归一化。其输出最终成为第一个解码器块的输出。其余五个解码器块也使用各自的权重集重复完全相同的过程。最终解码器的输出被发送到输出层。
输出层
一旦输入经过所有解码器块,我们就得到了一系列隐藏向量,每个向量对应输出中的每个位置。在多头注意力和交叉注意力的帮助下,这些向量现在包含了迄今为止生成的输出以及输入的丰富上下文信息。
设 h 为最终解码器块输出的隐藏状态向量。根据论文,这个向量的维度是 512,与模型中其他层保持一致。接下来,我们用一个线性层将这个 512 维的向量映射到一个大小等于词汇表规模的向量上。

具体来说,线性层的参数包括权重矩阵W (尺寸为512×∣V∣512 \times |V|512×∣V∣ ,其中∣V∣|V|∣V∣ 是词汇表大小)和偏置向量bbb(长度为∣V∣|V|∣V∣ )。经过这层映射后,我们得到一个长度为词汇表大小的向量。随后,这个向量会被送入 softmax 函数,转化为一个概率分布,表示模型在该位置生成词汇表中每个词的可能性。基于这个概率分布,我们可以选择不同的采样策略来确定最终生成的词。最简单直接的方法是选择概率最高的词,也就是“贪心搜索”。
总结
编码器在训练和推理过程中行为是一致的;它始终对输入进行编码,生成带有上下文信息的表示。不同的是,解码器在训练时是非自回归的,可以并行处理整个目标序列;但在推理阶段,解码器则以自回归方式逐步生成输出。整个 Transformer 的推理流程大致如下
- 编码输入:
- 输入序列经过编码器,编码器为每个词生成上下文嵌入。
- 这些编码在整个解码过程中保持不变,作为每个解码器块中交叉注意力层的键(Key)和值(Value)。
- 初始化解码器
- 解码器以特殊的(序列起始)标记开始,作为解码器的第一步输入。
- 解码器生成
- 解码器将标记送入掩蔽多头注意力层,掩蔽注意力确保模型不会看到未来标记的信息。
- 随后,向量作为查询传递给交叉注意力层,再经过前馈网络(FFN)。
- 残差连接和层归一化按照之前介绍的方式应用。
- 解码器最后一层输出概率分布,根据采样策略选择当前时间步的输出标记。
- 循环生成
- 在推理的每一步,解码器都会接收到目前为止生成的所有标记(从开始),并重复步骤 3 进行处理。虽然解码器会为序列中每个位置生成隐藏向量,但只有最新时间步对应的隐藏向量被用来预测下一个标记。这是因为生成过程一次只输出一个标记,模型专注于预测当前的下一个词,而不修改之前的词。
- 这个最后的隐藏向量包含了模型到目前为止“看到”的所有信息:编码器输入的上下文(通过交叉注意力)和已生成的输出序列(通过掩蔽自注意力)。它相当于对当前整个生成历史的总结,是预测下一个词的最佳代表。
- 新预测的标记会被追加到生成序列中,反馈给解码器用于下一步的生成。
- 整个过程是自回归的,每次生成一个标记,且始终基于完整的生成历史。
- 停止条件
- 生成过程会一直持续,直到遇到特殊的(序列结束)标记,或达到预设的最大输出长度。
这样,我们就完整梳理了 Transformer 是如何从输入开始,通过编码、解码一步步生成文本的全过程,从标记化,到训练,再到推理时逐词生成。
总的来说,Transformer架构在诞生后的几年间,研究人员不断在不同规模、不同类型的数据集上进行探索,尝试设计新的预训练目标,并在结构上进行改进与优化。这些努力催生了数百种不同的Transformer变体,虽然它们在细节设计、训练方式和应用领域上各不相同,但从整体结构来看,依然可以归纳为三大类,如图6所示。

图6 Transformer最突出的架构及生命树
Transformer的出现彻底改变了深度学习对序列数据的处理方式。它以自注意力机制取代传统的循环和卷积结构,让模型能够在一次计算中捕捉全局依赖关系,并通过高度并行化显著提升训练与推理效率。这种设计不仅解决了长距离依赖难题,还为大规模预训练模型的发展奠定了基础,使NLP、计算机视觉、语音识别等领域都迎来了性能飞跃。
在应用上,纯编码器适合信息提取类任务,如文本分类、情感分析;纯解码器专注生成式任务,如对话、内容创作;编码器-解码器则擅长翻译、摘要等序列到序列任务。
未来,Transformer 的研究将聚焦于提升长序列处理效率、优化低资源场景表现,并探索与领域知识的深度融合,从而在更多实际应用中展现更强的价值与生命力。
普通人如何抓住AI大模型的风口?
领取方式在文末
为什么要学习大模型?
目前AI大模型的技术岗位与能力培养随着人工智能技术的迅速发展和应用 , 大模型作为其中的重要组成部分 , 正逐渐成为推动人工智能发展的重要引擎 。大模型以其强大的数据处理和模式识别能力, 广泛应用于自然语言处理 、计算机视觉 、 智能推荐等领域 ,为各行各业带来了革命性的改变和机遇 。
目前,开源人工智能大模型已应用于医疗、政务、法律、汽车、娱乐、金融、互联网、教育、制造业、企业服务等多个场景,其中,应用于金融、企业服务、制造业和法律领域的大模型在本次调研中占比超过 30%。
随着AI大模型技术的迅速发展,相关岗位的需求也日益增加。大模型产业链催生了一批高薪新职业:
人工智能大潮已来,不加入就可能被淘汰。如果你是技术人,尤其是互联网从业者,现在就开始学习AI大模型技术,真的是给你的人生一个重要建议!
最后
只要你真心想学习AI大模型技术,这份精心整理的学习资料我愿意无偿分享给你,但是想学技术去乱搞的人别来找我!
在当前这个人工智能高速发展的时代,AI大模型正在深刻改变各行各业。我国对高水平AI人才的需求也日益增长,真正懂技术、能落地的人才依旧紧缺。我也希望通过这份资料,能够帮助更多有志于AI领域的朋友入门并深入学习。
真诚无偿分享!!!
vx扫描下方二维码即可
加上后会一个个给大家发
大模型全套学习资料展示
自我们与MoPaaS魔泊云合作以来,我们不断打磨课程体系与技术内容,在细节上精益求精,同时在技术层面也新增了许多前沿且实用的内容,力求为大家带来更系统、更实战、更落地的大模型学习体验。

希望这份系统、实用的大模型学习路径,能够帮助你从零入门,进阶到实战,真正掌握AI时代的核心技能!
01 教学内容

-
从零到精通完整闭环:【基础理论 →RAG开发 → Agent设计 → 模型微调与私有化部署调→热门技术】5大模块,内容比传统教材更贴近企业实战!
-
大量真实项目案例: 带你亲自上手搞数据清洗、模型调优这些硬核操作,把课本知识变成真本事!
02适学人群
应届毕业生: 无工作经验但想要系统学习AI大模型技术,期待通过实战项目掌握核心技术。
零基础转型: 非技术背景但关注AI应用场景,计划通过低代码工具实现“AI+行业”跨界。
业务赋能突破瓶颈: 传统开发者(Java/前端等)学习Transformer架构与LangChain框架,向AI全栈工程师转型。

vx扫描下方二维码即可
本教程比较珍贵,仅限大家自行学习,不要传播!更严禁商用!
03 入门到进阶学习路线图
大模型学习路线图,整体分为5个大的阶段:
04 视频和书籍PDF合集

从0到掌握主流大模型技术视频教程(涵盖模型训练、微调、RAG、LangChain、Agent开发等实战方向)

新手必备的大模型学习PDF书单来了!全是硬核知识,帮你少走弯路(不吹牛,真有用)
05 行业报告+白皮书合集
收集70+报告与白皮书,了解行业最新动态!
06 90+份面试题/经验
AI大模型岗位面试经验总结(谁学技术不是为了赚$呢,找个好的岗位很重要)

07 deepseek部署包+技巧大全

由于篇幅有限
只展示部分资料
并且还在持续更新中…
真诚无偿分享!!!
vx扫描下方二维码即可
加上后会一个个给大家发
火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐
所有评论(0)