知识点发布 ·

AI · 知识点

LLM

大语言模型的底层逻辑:从 Transformer 到今天的 LLM

LLMTransformerAttentionSelf-AttentionQKVFFNAutoregressive Generation

大语言模型的底层逻辑:从 Transformer 到今天的 LLM

如果要理解今天的大语言模型,最值得回到的一篇论文仍然是 2017 年的 《Attention Is All You Need》。

这篇论文并没有直接提出今天意义上的“大语言模型”,它研究的核心任务仍然是机器翻译。但它提出的 Transformer,后来成为 GPT、Llama、Qwen 等现代大语言模型最重要的基础架构之一。

从这个意义上说,理解大语言模型,首先要理解 Transformer 到底改变了什么。


01 / 一、大语言模型首先是一个“语言概率模型”

一、大语言模型首先是一个“语言概率模型”

从生成机制看,大语言模型做的事情并不神秘。

给定一段已经出现的文本:

The capital of France is ...

模型需要计算下一个 token 的概率分布,例如:

P(Paris∣The capital of France is)P(\text{Paris} \mid \text{The capital of France is})

然后根据这个概率分布选择一个 token,再把新生成的 token 加回上下文,继续预测下一个。

于是,一段看似完整的回答,本质上是一个不断重复的过程:

x1→x2→x3→⋯→xnx_1 \rightarrow x_2 \rightarrow x_3 \rightarrow \cdots \rightarrow x_n

这也是所谓的 autoregressive generation,自回归生成。

《Attention Is All You Need》中的 Transformer decoder 已经采用了这一机制:在预测当前位置时,只允许模型依赖此前已经出现的输出,而不能提前看到未来 token。论文通过 masked self-attention 保证这一点。

所以,从最底层看,大语言模型并不是先“想好一整段答案”再输出。

它是在不断回答同一个问题:

在当前上下文下,下一个 token 最可能是什么?

真正复杂的地方,不在“预测下一个 token”这件事本身,而在于:

模型究竟如何理解前面的上下文。

这正是 Transformer 解决的问题。


02 / 二、Transformer 真正解决的是“信息如何相互作用”

二、Transformer 真正解决的是“信息如何相互作用”

在 Transformer 出现之前,序列模型主要依赖 RNN、LSTM 等结构。

这类模型处理语言时存在天然的顺序依赖。

假设有一句话:

The company announced a new model after months of research.

RNN 通常需要从前往后逐步计算:

x1→x2→x3→⋯x_1 \rightarrow x_2 \rightarrow x_3 \rightarrow \cdots

当前位置的表示依赖前一个位置的隐藏状态。

论文指出,这种 sequential computation 会直接限制并行训练能力,尤其当序列变长以后,训练效率问题会越来越明显。

Transformer 做出的关键改变是:

不再依赖循环神经网络,而是让不同位置之间直接通过 Attention 建立关系。

论文对此的表述非常明确:Transformer 完全依赖 attention mechanism,去掉了此前序列模型中的 recurrence 和 convolution。

这不是一次简单的网络结构调整。

它实际上改变了语言模型处理信息的方式。

过去更接近:

信息按照序列向后传递。

Transformer 则变成:

当前 token 可以直接判断,整个上下文中哪些信息与自己有关。

这就是 Self-Attention。


03 / 三、Attention:语言理解变成了一次“相关性计算”

三、Attention:语言理解变成了一次“相关性计算”

Transformer 中最核心的三个变量是:

Q, K, VQ,\ K,\ V

也就是:

  • Query
  • Key
  • Value

《Attention Is All You Need》对 Attention 的定义是:

一个 Query 与一组 Key-Value pairs 进行匹配,根据 Query 与不同 Key 的兼容程度计算权重,再对对应的 Value 加权求和。

可以把这个过程理解成两件事。

第一件事是:

当前 token 应该关注哪些信息?

第二件事是:

被关注的信息应该向当前 token 提供什么内容?

Query 和 Key 主要负责解决第一个问题,Value 则负责第二个问题。

例如:

The animal didn't cross the street because it was tired.

当模型处理 “it” 时,它需要判断这个代词究竟与前面的哪个词关系更强。

模型并不会依靠一套人工编写的语法规则,而是通过 Query 与不同 Key 之间的相似程度计算权重。

如果 “animal” 得到较高的 attention weight,那么它对应的 Value 信息便会更多地进入 “it” 当前的表示之中。

所以 Attention 的本质可以理解成:

动态计算上下文中不同信息之间的重要程度。

这正是 Transformer 能够建模语言关系的核心机制。


04 / 四、为什么是 Q、K、V?

四、为什么是 Q、K、V?

Transformer 中最著名的公式之一是:

Attention(Q,K,V)=softmax(QKTdk)VAttention(Q,K,V) = softmax \left( \frac{QK^T}{\sqrt{d_k}} \right)V

这条公式基本可以拆成三个阶段。

1. QK^T:计算相关性

Query 与所有 Key 做点积:

QKTQK^T

得到的是一组匹配分数。

也就是说:

当前信息与上下文中的哪些信息关系更强?


2. Softmax:把分数转换成权重

这些匹配分数经过 Softmax 后,会转化为一组权重。

例如可能得到:

TokenAttention Weight
animal0.68
street0.08
cross0.12
tired0.12

于是模型知道:

当前 token 应该重点参考 animal。

论文还特别加入了:

1dk\frac{1}{\sqrt{d_k}}

这一缩放项。

原因是当向量维度较高时,点积值可能变得很大,使 Softmax 进入梯度非常小的区域,因此论文使用 \sqrt{d_k} 对点积结果进行缩放。

这也是名称 Scaled Dot-Product Attention 的来源。


3. 乘以 V:提取真正的信息

最后:

AttentionWeights×VAttentionWeights \times V

模型按照刚刚计算出来的权重,对不同 Value 进行加权组合。

所以从信息流角度看:

QKQK

解决的是:

应该看谁?

而:

VV

解决的是:

从它那里拿什么信息?

这也是理解 QKV 最重要的一层。

Q、K、V 并不是三个独立的“知识库”,而是同一个 token 表示经过不同参数矩阵投影后形成的三种表示方式。


05 / 五、Multi-Head Attention:语言不存在唯一的关系

五、Multi-Head Attention:语言不存在唯一的关系

如果一个句子只进行一次 Attention,会出现一个明显的问题:

语言中的关系并不是单一维度的。

考虑一句话:

Apple introduced a new chip in California last year.

其中同时存在很多不同关系:

  • Apple 与 introduced:主谓关系;
  • introduced 与 chip:动作与对象;
  • California:地点信息;
  • last year:时间信息;
  • Apple 与 chip:公司和产品之间的实体关系。

因此 Transformer 引入了 Multi-Head Attention。

论文并不是只进行一次 Attention,而是把 Q、K、V 映射到多个不同的表示空间,再同时执行多组 Attention,最后将结果拼接起来。

原始 Transformer base 使用了 8 个 attention heads,每个 head 的 d_k=d_v=64。

这意味着模型可以同时从不同角度观察同一句话。

值得注意的是,这些 head 并不是人为规定:

Head 1 负责语法,Head 2 负责时间,Head 3 负责实体。

它们是在训练过程中自己形成的。

论文后来观察不同 attention distribution 时发现,不同 attention heads 确实会表现出不同的行为,一些 head 与句子的语法和语义结构存在明显联系。

这实际上揭示了 Transformer 很重要的一种能力:

复杂结构并不一定需要人工定义,也可以从大量数据中通过优化逐渐形成。


06 / 六、Attention 只是“找关系”,FFN 才负责继续加工

六、Attention 只是“找关系”,FFN 才负责继续加工

理解 Transformer 时,一个常见误区是:

Transformer 就是 Attention。

实际上,Attention 只是其中的一部分。

原论文的 Transformer 每一层基本包含两类核心模块:

AttentionAttention

以及:

Feed Forward NetworkFeed\ Forward\ Network

同时辅以 residual connection 和 layer normalization。

其中 Attention 更主要负责:

不同 token 之间的信息交互。

而 Feed-Forward Network,FFN 则进一步加工每个 token 当前已经汇聚得到的信息。

原始论文中的 FFN 为:

FFN(x)=max(0,xW1+b1)W2+b2FFN(x) = max(0,xW_1+b_1)W_2+b_2

即:

Linear→ReLU→LinearLinear \rightarrow ReLU \rightarrow Linear

所以一层 Transformer 可以粗略理解为两个阶段:

Attention:

当前 token 从其他位置获取哪些信息?

FFN:

得到这些信息以后,如何进一步转换自己的内部表示?

随后新的表示进入下一层 Transformer,再进行一次新的 Attention 和 FFN。

层层叠加之后,token 的表示不断发生变化。

最开始,“Apple”可能主要只是一个词的 embedding。

经过多层 Transformer 以后,它已经融入:

  • 它出现的位置;
  • 与前后文的关系;
  • 当前句子的语义;
  • 与其他实体之间的关联;
  • 当前任务需要的信息。

这才是所谓的 contextual representation。


07 / 七、没有 RNN 以后,Transformer 怎么知道词序?

七、没有 RNN 以后,Transformer 怎么知道词序?

完全依赖 Attention 又产生了另一个问题。

Attention 本身并不知道顺序。

从纯粹的集合关系来看:

I love you

和:

You love me

都只是三个 token。

但语言显然高度依赖顺序。

因此论文专门加入了:

Positional Encoding。

作者明确指出,因为 Transformer 不使用 recurrence 和 convolution,所以必须额外注入 token 的相对或绝对位置信息。

原始 Transformer 使用不同频率的 sine 和 cosine 构造位置编码:

PE(pos,2i)=sin⁡(pos/100002i/dmodel)PE(pos,2i) = \sin(pos/10000^{2i/d_{model}})
PE(pos,2i+1)=cos⁡(pos/100002i/dmodel)PE(pos,2i+1) = \cos(pos/10000^{2i/d_{model}})

因此输入 Transformer 的信息实际上不只是:

Token EmbeddingToken\ Embedding

而是:

Token Embedding+Positional InformationToken\ Embedding + Positional\ Information

Embedding 负责告诉模型:

这个 token 是什么。

Position 则负责告诉模型:

它出现在什么位置。

现代 LLM 的位置编码方法已经出现很多变化,但“必须让模型知道 token 的顺序”这个基本问题并没有改变。


08 / 八、Transformer 为什么如此适合做“大模型”

八、Transformer 为什么如此适合做“大模型”

Transformer 真正具有历史意义的地方,并不只是它在机器翻译上取得了更好的结果。

更重要的是,它具备非常强的 scalability。

论文第 6 页专门比较了 Self-Attention、Recurrent 和 Convolutional architectures。

其中 Self-Attention 的最小 sequential operations 为:

O(1)O(1)

而 recurrent layer 是:

O(n)O(n)

同时 Self-Attention 中任意两个位置之间的最大路径长度也是:

O(1)O(1)

而 recurrent architecture 为:

O(n)O(n)

这两个指标非常重要。

第一,训练更容易并行化

RNN 天然存在:

t1→t2→t3t_1\rightarrow t_2\rightarrow t_3

这样的计算依赖。

而 Self-Attention 可以同时计算大量 token 之间的关系。

这意味着 GPU 的大规模矩阵运算能力能够被更充分地利用。


第二,长距离关系的路径更短

在 recurrent network 中,一个很早出现的信息要影响一个很晚出现的位置,需要经过很多中间状态。

而 Self-Attention 可以直接建立:

Token1↔Token1000Token_1 \leftrightarrow Token_{1000}

这样的联系。

论文也将 long-range dependencies 作为比较不同网络结构的重要标准,并指出更短的信息传播路径有利于学习远距离依赖。

这两件事情结合在一起,带来的结果就是:

Transformer 非常适合被继续放大。

更多 GPU、更多数据、更大的参数规模,都可以继续投入其中。

于是 Transformer 后来从一种机器翻译架构,逐渐成为了大语言模型的基础架构。


09 / 九、从 6500 万参数,到“大语言模型”

九、从 6500 万参数,到“大语言模型”

回看 2017 年的 Transformer,今天甚至会觉得它相当小。

原始论文中的 Transformer base:

  • N=6
  • d_{model}=512
  • d_{ff}=2048
  • 8 attention heads
  • 约 6500 万参数

Transformer big 约为:

2.13 亿参数。

而后来真正推动 LLM 出现的路径,本质上是不断扩大这套架构:

TransformerTransformer

↓

更多参数

↓

更多训练数据

↓

更多计算资源

↓

更大规模的预训练

↓

更强的语言建模能力

于是,语言模型不再只擅长某一个固定任务。

过去可能需要分别训练:

  • 翻译模型;
  • 摘要模型;
  • 问答模型;
  • 分类模型。

而大规模预训练后的 Transformer 开始能够使用同一个模型完成大量不同语言任务。

这才逐渐形成了今天所说的:

Large Language Model。


10 / 十、理解 LLM,可以记住这一条信息链

十、理解 LLM,可以记住这一条信息链

如果把现代大语言模型极度压缩,它的核心信息流大致可以写成:

TokenToken

↓

Embedding+PositionEmbedding + Position

↓

Q,K,VQ,K,V

↓

Self AttentionSelf\ Attention

↓

Multi-Head AttentionMulti\text{-}Head\ Attention

↓

Feed Forward NetworkFeed\ Forward\ Network

↓

Transformer LayersTransformer\ Layers

↓

Next Token ProbabilityNext\ Token\ Probability

↓

不断自回归生成

这条链条里,2017 年《Attention Is All You Need》几乎奠定了中间最重要的结构。

当然,今天的 LLM 已经远远超过论文中最初的 Transformer:训练方法、位置编码、激活函数、归一化方式、注意力实现、模型规模和推理系统都发生了大量演进。

但如果只问:

现代大语言模型最重要的技术转折点在哪里?

Transformer 仍然是无法绕开的答案。

它真正改变的,不只是某一个网络结构,而是一种计算语言的方式:

不再要求信息按照序列逐级传递,而是允许每个 token 根据当前上下文,动态寻找与自己最相关的信息。

这也是为什么一篇最初以机器翻译为目标的论文,最终成为了整个大语言模型时代最重要的技术起点之一。

Vaswani, A., Shazeer, N., Parmar, N., Uszkoreit, J., Jones, L., Gomez, A. N., Kaiser, L. and Polosukhin, I. (2017). Attention is All you Need., pp. 5998-6008.

https://doi.org/10.48550/arXiv.1706.03762