云计算百科
云计算领域专业知识百科平台

一文梳理 Transformer:从模型结构、Self-Attention 到大模型训练与推理

这篇笔记主要用于快速梳理 Transformer、大语言模型、Self-Attention、训练流程和推理流程。

不追求复杂数学推导,而是尽量把各个概念串成一条完整的逻辑链。


一、先理解 Transformer 在做什么

Transformer 本质上是一种深度学习模型架构。

在大语言模型中,大量计算最终都会转化为:

矩阵运算
+
前向传播
+
损失计算
+
反向传播
+
参数更新

训练模型时,可以先把整个过程简单理解成:

输入训练数据
↓
模型进行预测
↓
与正确答案比较
↓
计算 Loss
↓
反向传播
↓
计算梯度
↓
Optimizer 更新参数
↓
继续下一批数据
↓
不断重复

也就是说,大语言模型训练的核心就是:

不断根据模型预测结果和正确答案之间的误差,调整模型内部大量参数。

训练过程中:

参数的值
会不断变化

但是

参数的数量
通常不会变化


二、Transformer、GPT 和大语言模型是什么关系?

首先需要区分:

Transformer

和:

GPT

Transformer 是一种通用模型架构。

原始 Transformer 采用:

Encoder
+
Decoder

也就是:

输入序列
↓
Encoder
↓
中间表示
↓
Decoder
↓
输出序列

而 GPT 系列采用的是 Transformer 的一种变体:

Decoder-only

即主要保留 Decoder 结构。

可以简单理解为:

Transformer
│
├── Encoder-only
│
├── Encoder + Decoder
│
└── Decoder-only
↓
GPT

需要注意:

GPT 只使用 Decoder,并不代表它不会处理和理解输入。

输入信息的处理、上下文建模以及后续 Token 预测,都可以在 Decoder Block 中完成。


三、GPT 类大语言模型整体结构

先看一遍完整流程:

输入文本
例如:

"人工智能正在改变世界"

↓

Tokenizer
【分词器】

把文本切分成 Token

↓

Token ID
【Token 对应的数字编号】

↓

Token Embedding
【把 Token ID 转换成向量】

↓

Position Embedding
【加入 Token 的位置信息】

↓

输入向量

↓

Transformer Block 1

↓

Transformer Block 2

↓

Transformer Block 3

↓

…

↓

Transformer Block N

↓

预测下一个 Token

↓

得到下一个 Token 的概率分布

因此,大语言模型可以粗略理解成:

Tokenizer
↓
Embedding
↓
大量 Transformer Block
↓
预测下一个 Token


四、Token、Token ID、Embedding 分别是什么?

这几个概念非常容易混。

可以直接记成:

文本
↓
Token
↓
Token ID
↓
Embedding
↓
向量


1. Token

Token 是大语言模型处理文本的基本单位。

一个 Token 可能对应:

一个字

一个词

一个词的一部分

一个标点符号

因此:

Token 不一定等于一个汉字,也不一定等于一个完整英文单词。


2. Token ID

模型不能直接处理文字。

所以 Token 会被转换成数字编号。

例如:

"AI"
↓
Token ID
↓
12345

这个数字本质上相当于:

Token 在词表 Vocabulary 中的编号。


3. Embedding

Token ID 本身只是一个整数,并不能直接表达复杂语义。

所以还需要经过 Embedding:

Token ID

12345

↓

Embedding

↓

[0.21, -0.53, 0.76, …]

最终,一个 Token 会被表示成一个向量。


五、Position Embedding 是什么?

Transformer 本身需要知道:

Token 出现在句子的什么位置。

例如:

我 喜欢 AI

与:

AI 喜欢 我

即使包含相似 Token,顺序不同,含义也可能完全不同。

因此通常需要加入位置信息:

Token Embedding
+
Position Embedding
↓
最终输入向量

可以简单理解为:

Token Embedding
告诉模型:

“这是什么”

Position Embedding
告诉模型:

“它在哪里”


六、Transformer 模型内部到底是什么结构?

Transformer 并不是一个巨大的单层网络。

而是由很多层不断堆叠。

整体层级可以表示成:

Model
模型
│
├── Layer / Block 1
│
├── Layer / Block 2
│
├── Layer / Block 3
│
├── …
│
└── Layer / Block N

其中:

Layer

和:

Block

在很多情况下都可以理解成一个完整的 Transformer 处理单元。


七、Layer、Block、Module、Linear 的关系

这是理解 Transformer 结构非常重要的一组概念。

从大到小可以记成:

Model
↓
Layer / Block
↓
Module
↓
Linear
↓
Weight / Bias

更加完整一点:

GPT Model
│
├── Transformer Block 1
│ │
│ ├── Attention Module
│ │ │
│ │ ├── Linear
│ │ ├── Linear
│ │ ├── Linear
│ │ └── Linear
│ │
│ ├── Feed Forward Module
│ │ │
│ │ ├── Linear
│ │ └── Linear
│ │
│ └── LayerNorm 等
│
├── Transformer Block 2
│
├── Transformer Block 3
│
└── …

所以可以总结为:

Model
由很多 Block 组成

Block
由很多 Module 组成

Module
内部又包含 Linear 等基础结构

Linear
内部包含 Weight、Bias 等参数


八、一个 Transformer Block 内部有什么?

一个 Transformer Block 通常主要包含两大部分:

Multi-Head Self-Attention

和:

Feed Forward Network

再配合:

Residual Connection

LayerNorm

可以简化成:

输入 X
↓

Multi-Head Self-Attention
【让不同 Token 之间进行信息交互】

↓

Residual Connection
【保留原始信息】

↓

LayerNorm
【让训练更加稳定】

↓

Feed Forward Network
【进一步处理特征】

↓

Residual Connection

↓

LayerNorm

↓

输出 X'

然后:

Block 1 输出
↓
Block 2 输入
↓
Block 2 输出
↓
Block 3
↓
…

这样就可以连续堆叠很多层。


九、Self-Attention 是什么?

Self-Attention 可以理解成:

模型在处理当前 Token 时,判断序列中其他 Token 对它有多重要。

例如一句话:

小明拿起苹果,因为他饿了。

当模型处理:

他

的时候,需要判断:

“他”和“小明”关系很强

“他”和“苹果”关系相对弱一些

这就是 Attention 要解决的问题之一。


十、Q、K、V 是什么?

Self-Attention 中最核心的三个概念就是:

Q
K
V

分别是:

Q = Query

K = Key

V = Value

可以简单类比成一次“搜索”。


Query

Query 表示:

我现在想找什么?


Key

Key 表示:

每个 Token 可以用什么特征被匹配?


Value

Value 表示:

这个 Token 真正携带了什么信息?

于是整个流程可以理解成:

Query
↓
和所有 Key 进行匹配
↓
判断哪些 Token 更重要
↓
得到注意力权重
↓
根据权重读取对应 Value
↓
得到新的表示


十一、Self-Attention 完整计算流程

可以把 Attention 计算过程记成下面这张文字流程图:

输入向量 X
│
├─────────────┬─────────────┐
↓ ↓ ↓

Linear Linear Linear

↓ ↓ ↓

Q K V

Query Key Value

│ │
└──────┬──────┘
↓

Q × Kᵀ
【计算 Token 之间的相关性】

↓

缩放处理

↓

Softmax
【把分数变成注意力权重】

↓

Attention Weight
【每个 Token 应该关注多少】

↓

Attention Weight × V

↓

Attention Output

核心可以压缩成:

Q 和 K
↓
决定关注谁

V
↓
提供真正的信息


十二、为什么要用 Softmax?

在 Attention 中:

Q × Kᵀ

会得到一组相关性分数。

例如:

Token 1:2.3
Token 2:7.8
Token 3:1.5
Token 4:4.2

这些只是原始分数。

经过 Softmax 后,可以转成更容易使用的权重分布:

Token 1
↓
一定的注意力权重

Token 2
↓
更大的注意力权重

Token 3
↓
较小的注意力权重

因此可以简单记:

Softmax 把一组分数转换成一个概率式的权重分布,让模型知道应该重点关注哪些 Token。


十三、Attention 和余弦相似度不要混淆

这是一个很容易混的知识点。

在 Transformer Self-Attention 中,标准 Attention 主要使用:

Q × Kᵀ

也就是 Q 和 K 之间的点积关系。

而在 RAG、Embedding、向量数据库中,经常会看到:

Cosine Similarity
余弦相似度

因此可以这样记:

Transformer Self-Attention
↓
Q 和 K 点积

RAG / Vector Database
↓
经常使用余弦相似度

不要把两个场景混在一起。


十四、Feed Forward Network 是什么?

Attention 做完 Token 之间的信息交互之后,还需要进一步处理每个 Token 的特征。

这通常由:

Feed Forward Network

完成。

可以简单表示成:

Attention 输出
↓

Linear
↓

激活函数
↓

Linear
↓

新的特征表示

因此一个 Block 中两大核心部分可以简单记成:

Attention
↓
负责 Token 之间的信息交互

FFN
↓
负责进一步处理 Token 自身特征


十五、Transformer 完整前向传播流程

把前面的内容串起来:

输入文本
↓

Tokenizer
↓

Token
↓

Token ID
↓

Token Embedding
↓

Position Embedding
↓

输入向量
↓

Transformer Block 1
↓

Transformer Block 2
↓

Transformer Block 3
↓

…

↓

Transformer Block N
↓

模型输出
↓

预测下一个 Token

其中每一个 Transformer Block 内部又是:

输入
↓
Self-Attention
↓
Residual
↓
LayerNorm
↓
Feed Forward
↓
Residual
↓
LayerNorm
↓
输出


十六、大语言模型完整训练流程

训练阶段最重要。

完整流程可以记成:

训练文本

↓

Tokenizer
【把文本转换成 Token】

↓

Token ID

↓

Embedding
【Token 转换成向量】

↓

Transformer

↓

预测下一个 Token

↓

和正确 Token 比较

↓

Loss
【计算预测结果和正确答案之间的差距】

↓

Backward
反向传播

↓

Gradient
梯度

↓

Optimizer

↓

更新模型参数

↓

下一批训练数据

↓

再次进行前向传播

↓

不断重复

把它再压缩一下,其实训练只有四个最重要的阶段:

Forward
前向传播
↓

Loss
计算损失
↓

Backward
反向传播
↓

Optimizer
更新参数


十七、Forward 前向传播是什么?

Forward 就是:

输入数据从模型前面一路计算到模型输出。

例如:

文本
↓
Embedding
↓
Attention
↓
FFN
↓
多层 Transformer
↓
预测结果

这整个过程就是:

Forward Pass
前向传播


十八、Loss 是什么?

模型训练时,模型会预测答案。

例如正确 Token 是:

世界

但模型预测成:

社会

就需要计算:

模型预测
↓
和正确答案比较
↓
差多少?
↓
Loss

因此可以简单理解:

Loss 表示模型当前预测得有多差。

Loss 越大:

说明预测误差越大

Loss 越小:

说明预测结果通常越接近训练目标


十九、Backward 反向传播是什么?

有了 Loss 之后,还需要知道:

到底应该调整哪些参数?

于是进行:

Backward
反向传播

大致过程:

Loss
↓
从模型输出向前反推
↓
经过最后一层
↓
经过前面的 Transformer Block
↓
一直传播到模型前面
↓
计算各参数对应的梯度


二十、Gradient 梯度是什么?

Gradient 可以简单理解成:

参数应该朝什么方向调整,以及调整趋势有多大。

例如:

参数 W
当前值:

0.53

模型通过反向传播得到对应梯度。

Optimizer 再根据梯度决定如何修改:

0.53
↓
调整一点
↓
新的参数值


二十一、Optimizer 是什么?

Optimizer 就是:

根据梯度真正更新模型参数的工具。

整个关系可以表示成:

Loss
↓
模型错多少

Backward
↓
计算错误如何影响各参数

Gradient
↓
得到参数调整方向

Optimizer
↓
真正更新参数

所以不要把这些概念混在一起。

可以简单记成:

Loss
负责衡量误差

Backward
负责计算梯度

Gradient
表示调整方向

Optimizer
负责更新参数


二十二、Transformer 的参数到底是什么?

Transformer 内部存在大量参数。

主要包括:

Embedding 参数

Attention 参数

Feed Forward 参数

LayerNorm 参数

各种 Weight

各种 Bias

例如最普通的 Linear 层:

Y = XW + b

其中:

W
=
Weight

b
=
Bias

这些 Weight 和 Bias 就属于:

模型参数

训练模型,本质上就是不断调整这些参数。


二十三、为什么大语言模型会有几十亿甚至更多参数?

因为 Transformer 中存在大量:

Linear

Attention

Feed Forward

Embedding

而每一个 Linear 层中又可能存在非常大的权重矩阵。

例如:

Transformer Block 1
↓
大量参数

Transformer Block 2
↓
大量参数

Transformer Block 3
↓
大量参数

…

Transformer Block N
↓
大量参数

大量 Block 堆叠后:

参数量
不断累积

因此模型可能达到:

亿级参数

十亿级参数

百亿级参数

千亿级参数

甚至更大规模


二十四、训练时参数数量会不会变化?

通常情况下:

参数的数值
不断变化

但是:

参数数量
不会因为普通训练过程不断变化

例如:

训练之前:

W = 0.52

训练之后:

W = 0.47

变化的是:

参数值

而不是:

参数个数


二十五、训练和推理有什么区别?

这是学习大语言模型时非常重要的一组区别。

训练

输入数据
↓
Forward
↓
预测结果
↓
Loss
↓
Backward
↓
Gradient
↓
Optimizer
↓
更新参数

训练阶段的核心:

参数会更新


推理

模型训练完成之后,就进入推理阶段。

推理可以简化成:

用户输入 Prompt

↓

Tokenizer

↓

Token ID

↓

Embedding

↓

Transformer

↓

预测下一个 Token

↓

选择一个 Token

↓

追加到当前序列

↓

继续预测下一个 Token

↓

不断重复

推理阶段主要进行:

Forward

而不会像普通训练那样:

Loss
↓
Backward
↓
Optimizer
↓
更新参数


二十六、什么是自回归生成?

GPT 类大语言模型通常采用:

Autoregressive Generation
自回归生成

意思是:

每次预测下一个 Token,然后把新生成的 Token 加到已有序列中,再继续预测下一个。

例如:

输入:

我喜欢学习

↓

预测下一个 Token

↓

人工

↓

新的序列:

我喜欢学习人工

↓

继续预测

↓

智能

↓

新的序列:

我喜欢学习人工智能

真正处理的是 Token,所以更加准确的流程是:

Token 1
↓
预测 Token 2

Token 1 + Token 2
↓
预测 Token 3

Token 1 + Token 2 + Token 3
↓
预测 Token 4

…

这就是:

自回归生成


二十七、训练和推理流程对比

把两个流程放在一起就非常清楚了。

============ 训练 ============

输入文本
↓
Tokenizer
↓
Embedding
↓
Transformer
↓
预测 Token
↓
与正确 Token 比较
↓
Loss
↓
Backward
↓
Gradient
↓
Optimizer
↓
更新参数

============ 推理 ============

用户 Prompt
↓
Tokenizer
↓
Embedding
↓
Transformer
↓
预测下一个 Token
↓
选择 Token
↓
加入当前序列
↓
再次 Forward
↓
预测下一个 Token
↓
不断重复

一句话总结:

训练
=
Forward + Backward + Update

推理
=
不断 Forward + 生成 Token


二十八、Attention、RAG 中的相似度再对比一次

这个知识点非常容易混,所以最后再总结一次。

Transformer Self-Attention

Q
↓
和 K 做点积
↓
计算相关性
↓
Softmax
↓
得到 Attention Weight
↓
加权 V

而:

RAG / Vector Database

Query
↓
Embedding
↓
向量
↓
与文档向量计算相似度
↓
找最相关的文档

所以:

Transformer Attention

重点:
Q × Kᵀ

RAG

经常关注:
Cosine Similarity


二十九、PyTorch、TensorFlow、Hugging Face Transformers 的关系

实现 Transformer 时经常会遇到:

工具可以简单理解成
PyTorch 深度学习框架
TensorFlow 深度学习框架
Hugging Face Transformers 预训练 Transformer 模型库,方便加载、训练和推理模型

例如:

PyTorch
↓
负责底层 Tensor、梯度、神经网络计算

Hugging Face Transformers
↓
在上层提供 GPT、BERT 等模型实现


三十、模型结构总复习图

最后把整个模型结构压缩成一张图:

大语言模型
GPT 类模型
│
↓
Tokenizer
│
↓
Token ID
│
↓
Embedding
│
↓
┌─────────────────────────┐
│ Transformer Block 1 │
│ │
│ Self-Attention │
│ ↓ │
│ Residual + LayerNorm │
│ ↓ │
│ Feed Forward │
│ ↓ │
│ Residual + LayerNorm │
└─────────────────────────┘
│
↓
Transformer Block 2
│
↓
Transformer Block 3
│
↓
…
│
↓
Transformer Block N
│
↓
预测下一个 Token
│
↓
下一个 Token 概率分布

而 Attention 内部是:

输入 X
│
├── Linear → Q
│
├── Linear → K
│
└── Linear → V

Q × Kᵀ
↓
相关性分数
↓
Softmax
↓
Attention Weight
↓
Attention Weight × V
↓
Attention Output


三十一、训练完整总复习图

训练文本
↓
Tokenizer
↓
Token ID
↓
Embedding
↓
Transformer
↓
Self-Attention
↓
FFN
↓
多层 Block
↓
预测下一个 Token
↓
与正确 Token 比较
↓
Loss
↓
Backward
↓
Gradient
↓
Optimizer
↓
更新 Weight / Bias
↓
继续下一批数据
↓
不断重复


三十二、推理完整总复习图

用户 Prompt
↓
Tokenizer
↓
Token ID
↓
Embedding
↓
Transformer
↓
预测下一个 Token
↓
得到 Token 概率分布
↓
选择一个 Token
↓
加入当前序列
↓
重新进行 Forward
↓
预测下一个 Token
↓
…
↓
完成生成


三十三、最后只需要记住这条主线

如果只是快速复习 Transformer 和大语言模型,可以只记下面这一条:

文本
↓
Token
↓
Token ID
↓
Embedding
↓
Transformer Block × N
↓
Self-Attention + FFN
↓
预测下一个 Token
│
├───────────────┐
↓ ↓
训练 推理
↓ ↓
Loss 选择 Token
↓ ↓
Backward 加入序列
↓ ↓
Gradient 再次 Forward
↓ ↓
Optimizer 下一个 Token
↓
更新参数

进一步压缩:

Transformer 模型结构:

Embedding
↓
Attention
↓
FFN
↓
重复多层
↓
预测 Token

训练:

Forward
↓
Loss
↓
Backward
↓
Optimizer
↓
更新参数

推理:

Forward
↓
预测 Token
↓
追加 Token
↓
再次 Forward
↓
持续生成

掌握这三条主线之后,Transformer、大语言模型训练和推理的整体逻辑基本就串起来了。


📮 关注【YoanAILab】,持续分享 AI 工程实战 × 模型部署技巧 × 转型成长经验
💬 如果你觉得本文有帮助,欢迎点赞、收藏、转发支持!

赞(0)
未经允许不得转载:网硕互联帮助中心 » 一文梳理 Transformer:从模型结构、Self-Attention 到大模型训练与推理
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!