AI知识

Transformer 架构详解:理解大模型的基石

86 次阅读更新于 2026/9/13

Transformer 是 2017 年 Google 在论文《Attention Is All You Need》中提出的模型架构,它彻底改变了自然语言处理领域的格局。今天我们用到的 GPT、BERT、LLaMA 等大模型,底层都是 Transformer 架构。理解 Transformer,就是理解整个大模型时代的技术根基。

为什么需要 Transformer

在 Transformer 出现之前,NLP 领域的主流架构是 RNN(循环神经网络)和 LSTM(长短期记忆网络)。它们有一个致命的问题:串行计算。处理一个句子时,必须从第一个词开始,依次处理到最后一个词,前一个词的计算结果是后一个词的输入。这导致两个严重后果:

训练速度慢:无法充分利用 GPU 的并行计算能力,序列越长训练越慢。一个包含 512 个 token 的句子,RNN 需要串行执行 512 步。

长距离依赖丢失:当句子很长时,开头的信息在传递到末尾时会逐渐衰减。比如"我出生在中国,在北京上了大学,后来去了美国工作,但我的母语是____",RNN 很难从这么远的距离捕捉到"中国"这个关键信息。

Transformer 的核心思路是:完全抛弃循环结构,用注意力机制让每个词都能直接关注到句子中的任何其他词。这样既能并行计算,又能捕捉任意距离的依赖关系。

整体架构

Transformer 采用经典的编码器-解码器(Encoder-Decoder)结构:

图表加载中...

编码器负责理解输入文本,将其转换为一组包含上下文信息的向量表示。原始论文中使用了 6 层编码器堆叠。

解码器负责根据编码器的输出,逐步生成目标文本。它同样堆叠了 6 层,但比编码器多了一个"交叉注意力"模块,用于关注编码器的输出。

不同的大模型选择了不同的组合方式:GPT 系列只用解码器(Decoder-Only),BERT 只用编码器(Encoder-Only),T5 则使用完整的编码器-解码器结构。

自注意力机制(Self-Attention)

自注意力是 Transformer 的核心创新,它让输入序列中的每个位置都能"关注"到其他所有位置,从而捕捉词与词之间的关系。

计算过程:对于输入序列中的每个词向量,通过三个不同的线性变换生成三个向量:

Query(查询):代表"我想找什么信息"。 Key(键):代表"我能提供什么信息"。 Value(值):代表"我实际包含的信息"。

注意力的计算公式是:

Attention(Q, K, V) = softmax(QK^T / sqrt(d_k)) * V

其中 d_k 是 Key 向量的维度,除以 sqrt(d_k) 是为了防止点积值过大导致 softmax 梯度消失。

图表加载中...

用一个直观的例子来理解:对于句子"小猫坐在垫子上,因为它很累",当模型处理"它"这个词时,通过注意力机制,"它"的 Query 会和所有词的 Key 做匹配,发现和"小猫"的 Key 相似度最高,于是将"小猫"的语义信息聚合过来。模型就理解了"它"指的是"小猫"。

多头注意力(Multi-Head Attention)

单一的注意力机制只能捕捉一种关联模式。多头注意力通过并行运行多组注意力计算,让模型能同时关注不同类型的语义关系。

图表加载中...

比如在原始论文中,模型维度是 512,使用 8 个注意力头,每个头的维度就是 64。每个头独立学习不同的注意力模式:有的头可能专注于捕捉主语-谓语关系,有的头专注于捕捉修饰关系,有的头专注于捕捉位置相邻的词之间的关系。

位置编码(Positional Encoding)

因为 Transformer 抛弃了循环结构,它本身对词序是无感知的——"猫吃鱼"和"鱼吃猫"在没有位置信息的情况下,产生的注意力权重是一样的。

位置编码通过给每个位置的词向量加上一个表示位置信息的向量来解决这个问题。原始论文使用正弦/余弦函数生成位置编码:

PE(pos, 2i) = sin(pos / 10000^(2i/d_model)) PE(pos, 2i+1) = cos(pos / 10000^(2i/d_model))

这种设计的好处是:不同位置的编码是唯一的,而且模型能学习到相对位置关系(因为 PE(pos+k) 可以表示为 PE(pos) 的线性函数)。

后来的模型提出了更好的位置编码方案,比如 RoPE(旋转位置编码)被用在 LLaMA 等模型中,它能更好地处理长序列。

残差连接与层归一化

Transformer 中每个子层(注意力层、前馈层)都使用了"Add & Norm"操作:

残差连接(Add):将子层的输入直接加到子层的输出上,即 output = sublayer(x) + x。这解决了深层网络梯度消失的问题,让信息可以"跳过"某些层直接传递。

层归一化(Norm):对每一层的输出做归一化处理,稳定训练过程,加速收敛。

前馈神经网络(FFN)

每一层的注意力输出之后,还会经过一个前馈神经网络。它由两个线性变换和一个激活函数组成:

FFN(x) = max(0, xW1 + b1)W2 + b2

FFN 在每个位置独立作用,不涉及位置之间的交互。它的作用是对注意力层提取的特征做进一步的非线性变换和信息整合。FFN 的隐藏层维度通常是模型维度的 4 倍(比如模型维度 512,FFN 隐藏层就是 2048)。

不同大模型架构的选择

架构类型代表模型特点适用场景
Encoder-OnlyBERT, RoBERTa双向注意力,能看到完整上下文文本分类、NER、语义理解
Decoder-OnlyGPT, LLaMA, Qwen单向注意力,自回归生成文本生成、对话、代码生成
Encoder-DecoderT5, BART编码器理解输入,解码器生成输出翻译、摘要、问答

目前大模型领域的主流趋势是 Decoder-Only 架构,GPT-4、Claude、LLaMA、Qwen 等都采用这种架构。原因在于它结构简单、扩展性好,通过增加参数量和训练数据就能持续提升能力。

评论

登录 后参与评论

加载中...