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

一文梳理 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)

评论 抢沙发

评论前必须登录!