☰
BERT、GPT、LLaMA 和位置编码有什么差异?
2026/10/7 5:40:06 网站建设 项目流程

第22题:BERT、GPT、LLaMA 和位置编码有什么差异?

1. 核心回答

这三类模型都建立在 Transformer 上,但主要差异集中在四个维度:

模型主体结构Attention 可见范围典型预训练目标经典位置表示
BERTEncoder-only每个 Token 可同时看左、右上下文Masked Language Modeling,原始 BERT 还包含 NSPLearned Absolute Position Embedding
原始 GPTDecoder-only只能看当前位置及其左侧 TokenCausal Language ModelingLearned Absolute Position Embedding
LLaMACausal Transformer只能看当前位置及其左侧 TokenCausal Language ModelingRoPE

最核心的理解是:

  • BERT强调双向上下文表示,主要服务于文本理解和表征任务;
  • GPT强调按照从左到右的条件概率生成文本;
  • LLaMA延续因果语言模型路线,同时在 Transformer 细节上采用 RoPE、RMSNorm、SwiGLU 等现代设计;
  • 位置编码负责告诉 Transformer Token 的顺序。BERT、早期 GPT 和 LLaMA 使用的位置机制并不相同。

2. BERT 的结构是什么?

BERT 的全称是:

Bidirectional Encoder Representations from Transformers

它主要使用 Transformer Encoder。

对于一个序列:

x1,x2,…,xn x_1,x_2,\ldots,x_nx1​,x2​,…,xn​

BERT 中第iii个 Token 的 Self-Attention 可以访问整个输入序列:

x1,…,xi−1,xi,xi+1,…,xn x_1,\ldots,x_{i-1},x_i,x_{i+1},\ldots,x_nx1​,…,xi−1​,xi​,xi+1​,…,xn​

因此同一个词的表示能够同时利用左侧和右侧语境。

例如:

I went to the bank to deposit money.

这里的bank可以同时观察:

  • 左边的went to the;
  • 右边的deposit money。

模型因此更容易判断这里的bank表示金融机构。

2.1 BERT 怎么训练?

原始 BERT 最核心的训练方式是 Masked Language Modeling,简称 MLM。

例如:

The cat is sitting on the [MASK].

模型需要利用两侧上下文预测:

mat

可以抽象为:

P(xi∣x1,…,xi−1,xi+1,…,xn) P(x_i\mid x_1,\ldots,x_{i-1},x_{i+1},\ldots,x_n)P(xi​∣x1​,…,xi−1​,xi+1​,…,xn​)

原始 BERT 还使用 Next Sentence Prediction,简称 NSP,用于判断两个文本片段是否具有连续关系。

因此,BERT 学习的重点是:

给定完整上下文,形成高质量上下文表示。

这类表示天然适合:

  • 文本分类;
  • 情感分析;
  • 命名实体识别;
  • 信息抽取;
  • 阅读理解;
  • 句子匹配。

3. GPT 的结构是什么?

这里用原始 GPT 的经典设计说明。

原始 GPT 使用Decoder-only Transformer,并使用 masked self-attention。

假设输入为:

x1,x2,…,xn x_1,x_2,\ldots,x_nx1​,x2​,…,xn​

第iii个位置只能访问:

x1,x2,…,xi x_1,x_2,\ldots,x_ix1​,x2​,…,xi​

未来 Token:

xi+1,…,xn x_{i+1},\ldots,x_nxi+1​,…,xn​

会被 causal mask 屏蔽。

Attention mask 可以理解为:

$$
M_{ij}

\begin{cases}
0,&j\leq i\
-\infty,&j>i
\end{cases}
$$

随后:

$$
\operatorname{Attention}(Q,K,V)

\operatorname{softmax}
\left(
\frac{QK^\top}{\sqrt{d_k}}+M
\right)V
$$

这样可以保证模型生成第i+1i+1i+1个 Token 时,只依赖已经出现的 Token。

3.1 GPT 怎么训练?

经典 GPT 采用从左到右的语言模型目标:

$$
P(x_1,\ldots,x_n)

\prod_{t=1}^{n}
P(x_t\mid x_1,\ldots,x_{t-1})
$$

训练过程可以理解成不断完成:

输入: The malware connects to 预测: a

然后:

输入: The malware connects to a 预测: remote

继续:

The malware connects to a remote

预测:

server

因此 GPT 的结构与训练目标天然支持逐 Token 生成。


4. LLaMA 和 GPT 有什么关系?

LLaMA 同样属于因果自回归 Transformer 路线。

它和 GPT 在核心语言建模思想上非常接近:

P(xt∣x<t) P(x_t\mid x_{<t})P(xt​∣x<t​)

也就是根据前面的 Token 预测后面的 Token。

LLaMA 的重要差异主要体现在现代 Transformer 的具体实现。

原始 LLaMA 论文明确列出了三个关键改动:

4.1 Pre-Normalization + RMSNorm

LLaMA 在 Transformer 子层之前执行归一化,并使用 RMSNorm。

可以简化理解为:

x→RMSNorm⁡(x)→Attention⁡ x \rightarrow \operatorname{RMSNorm}(x) \rightarrow \operatorname{Attention}x→RMSNorm(x)→Attention

这样设计主要用于改善深层模型训练稳定性。

4.2 SwiGLU

原始 Transformer 的 FFN 使用 ReLU。

LLaMA 使用 SwiGLU 激活结构。

它属于 gated feed-forward 结构,使 FFN 的表达方式更加灵活。

4.3 RoPE

这是本题与位置编码最相关的改动。

LLaMA 删除了传统的绝对位置 Embedding,并在 Transformer 每一层 Attention 中使用 Rotary Position Embedding,即 RoPE。


5. 为什么 Transformer 必须有位置信息?

Self-Attention 本身主要根据 Token 之间的内容关系计算:

QK⊤ QK^\topQK⊤

如果完全不提供顺序信息,那么下面两个序列中的 Token 集合相同:

dog bites man
man bites dog

模型需要额外知道:

  • 谁在第 1 个位置;
  • 谁在第 2 个位置;
  • 谁在第 3 个位置。

因此 Transformer 通常需要显式或隐式的位置机制。

经典方法主要包括:

  1. Sinusoidal Positional Encoding;
  2. Learned Absolute Position Embedding;
  3. Relative Position Encoding;
  4. Rotary Position Embedding。

6. 原始 Transformer 的正弦位置编码是什么?

《Attention Is All You Need》使用固定的正弦和余弦函数表示位置。

经典形式是:

$$
PE(pos,2i)

\sin
\left(
\frac{pos}
{10000^{2i/d}}
\right)
$$

$$
PE(pos,2i+1)

\cos
\left(
\frac{pos}
{10000^{2i/d}}
\right)
$$

其中:

  • pospospos是 Token 的位置;
  • iii是向量维度;
  • ddd是模型隐藏维度。

然后直接与 Token Embedding 相加:

$$
h_{pos}

E(x_{pos})+PE(pos)
$$

它的特点包括:

  • 参数固定,不需要学习;
  • 每个位置具有唯一的连续向量表示;
  • 不同维度使用不同频率;
  • 原论文选择这一方案时考虑了向更长序列外推的可能性。

原始 Transformer 同时实验过 learned positional embeddings,并报告两种方式在当时机器翻译实验中的结果非常接近。


7. BERT 的位置编码是什么?

原始 BERT 使用可学习的绝对位置嵌入。

BERT 的输入实际上由三部分相加:

$$
h_i

E_{\text{token}}(x_i)
+
E_{\text{segment}}(s_i)
+
E_{\text{position}}(i)
$$

也就是:

Token Embedding + Segment Embedding + Position Embedding

例如:

[CLS] I like AI [SEP]

模型会分别学习:

Position 0 Position 1 Position 2 Position 3 Position 4

对应的位置向量。

这种设计的特点是位置本身成为模型参数:

P∈RLmax⁡×d P\in\mathbb{R}^{L_{\max}\times d}P∈RLmax​×d

训练过程中:

P PP

会通过梯度下降一起更新。

因此 BERT 学到的是每一个绝对位置编号对应的参数表示。


8. 原始 GPT 的位置编码是什么?

原始 GPT 同样采用可学习的位置嵌入。

其输入可以简化表示为:

$$
h_0

UW_e+W_p
$$

其中:

  • WeW_eWe​是 Token Embedding;
  • WpW_pWp​是 Position Embedding。

因此经典 GPT 的方式和 BERT 在“位置表示类型”上比较接近:

Token Embedding+Learned Position Embedding \text{Token Embedding} + \text{Learned Position Embedding}Token Embedding+Learned Position Embedding

二者真正明显的结构差异来自 Attention 可见范围。

BERT 使用双向 Self-Attention。

GPT 使用 Causal Self-Attention。

因此:

BERT: 左边 ← 当前Token → 右边
GPT: 左边 → 当前Token × 未来Token

需要注意,“GPT”现在已经代表一个很大的模型家族。原始 GPT 明确使用 learned absolute position embeddings,其他 GPT 类模型可以采用不同的位置机制,所以回答时最好说明具体模型版本。


9. LLaMA 的 RoPE 是什么?

LLaMA 使用 Rotary Position Embedding。

RoPE 的核心思路是在 Attention 中,根据 Token 的位置对QQQ和KKK做旋转变换。

假设位置为mmm:

$$
q_m

R_m q
$$

位置为nnn:

$$
k_n

R_n k
$$

Attention 中计算:

qm⊤kn q_m^\top k_nqm⊤​kn​

得到:

(Rmq)⊤(Rnk) (R_mq)^\top(R_nk)(Rm​q)⊤(Rn​k)

旋转矩阵具有组合性质,因此结果能够显式反映:

n−m n-mn−m

这样的相对位置关系。

这使 RoPE 同时包含:

  • Token 所在的绝对位置;
  • Attention 中两个 Token 的相对距离信息。

一个直观区别是:

9.1 BERT / 经典 GPT

位置向量直接加入 Token Embedding:

xi+pi x_i+p_ixi​+pi​

9.2 LLaMA / RoPE

Token Embedding 中不直接加入传统绝对位置向量。

位置作用于 Attention 的:

Q QQ

和:

K KK

即:

Qi→RiQi Q_i\rightarrow R_iQ_iQi​→Ri​Qi​

Kj→RjKj K_j\rightarrow R_jK_jKj​→Rj​Kj​

随后再计算 Attention。

因此 RoPE 更直接地把位置信息写入 Token 之间的 Attention 关系。


10. BERT 和 GPT 最关键的差异是什么?

可以从 Attention Mask 直接理解。

10.1 BERT

假设有四个 Token:

A B C D

每个位置基本都可以看到:

A B C D

Attention Matrix 近似为:

A B C D A ✓ ✓ ✓ ✓ B ✓ ✓ ✓ ✓ C ✓ ✓ ✓ ✓ D ✓ ✓ ✓ ✓

因此是双向上下文建模。

10.2 GPT / LLaMA

使用 Causal Mask:

A B C D A ✓ × × × B ✓ ✓ × × C ✓ ✓ ✓ × D ✓ ✓ ✓ ✓

所以:

  • A 只能看 A;
  • B 可以看 A、B;
  • C 可以看 A、B、C;
  • D 可以看 A、B、C、D。

这样才能保证训练和生成时不存在未来信息泄漏。


11. 三者的任务倾向有什么差异?

可以从训练目标直接推导。

11.1 BERT

核心问题是:

根据完整上下文,这个位置应该是什么?

因此更自然地用于:

  • 分类;
  • 检索表示;
  • NER;
  • 信息抽取;
  • 文本匹配;
  • 阅读理解。

11.2 GPT / LLaMA

核心问题是:

已知前面的 Token,下一个 Token 应该是什么?

因此更自然地用于:

  • 文本生成;
  • 对话;
  • 代码生成;
  • 长文本续写;
  • 指令跟随;
  • Agent 的语言生成模块。

模型最终能做什么还受到预训练数据、后训练、Prompt、工具和任务适配方式影响,因此架构只能解释主要倾向。


12. 最容易混淆的几个点

12.1 Encoder 和 Decoder 与位置编码属于两个维度

下面这些组合在理论上都可以存在:

Encoder + Absolute Position Encoder + Relative Position Decoder + Absolute Position Decoder + RoPE

因此不能根据“Decoder-only”直接推出“使用 RoPE”。


12.2 GPT 不对应唯一的位置编码方式

原始 GPT 使用 learned position embeddings。

现代 GPT-style Decoder 模型可能使用:

  • learned absolute embedding;
  • RoPE;
  • ALiBi;
  • 其他 relative position 方法。

面试中最好明确:

如果讨论原始 GPT,它使用 learned absolute positional embeddings;如果泛指 GPT-style causal LM,则位置方案需要看具体模型。


12.3 BERT 的双向来自 Attention 结构和 MLM 训练方式

BERT 可以同时使用左右上下文,因为输入中的普通 Token 之间没有 causal mask。

MLM 通过遮挡部分目标 Token,避免模型直接读取需要预测的答案。


13. 面试时可以压缩成下面这段

BERT、GPT 和 LLaMA 都基于 Transformer,但架构和训练目标不同。

BERT 是 Encoder-only 的双向模型,每个 Token 可以同时关注左右上下文,原始预训练主要使用 MLM 和 NSP,因此更适合文本理解、分类、抽取等任务。

经典 GPT 是 Decoder-only 的因果语言模型,通过 causal mask 保证当前位置只能看到左侧 Token,并通过 next-token prediction 学习

P(xt∣x<t) P(x_t\mid x_{<t})P(xt​∣x<t​)

因此天然适合自回归生成。

LLaMA 也采用 causal language modeling,但在 Transformer 结构上进行了现代化设计,例如 RMSNorm、SwiGLU 和 RoPE。

位置编码方面,原始 Transformer 使用固定正弦/余弦编码;BERT 和原始 GPT 使用 learned absolute positional embedding;LLaMA 使用 RoPE。BERT 和经典 GPT 都是把绝对位置信息加入输入表示,RoPE 则通过旋转QQQ和KKK将位置关系直接引入 Attention。

所以回答这道题时,我会用四个维度比较:

架构、Attention 可见范围、训练目标、位置编码。


14. 来源

  1. Devlin et al.,BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding, NAACL 2019.
  2. Radford et al.,Improving Language Understanding by Generative Pre-Training, OpenAI, 2018.
  3. Touvron et al.,LLaMA: Open and Efficient Foundation Language Models, 2023.
  4. Vaswani et al.,Attention Is All You Need, NeurIPS 2017.
  5. Su et al.,RoFormer: Enhanced Transformer with Rotary Position Embedding, 2021.

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询