这篇笔记主要用于快速梳理 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 工程实战 × 模型部署技巧 × 转型成长经验
💬 如果你觉得本文有帮助,欢迎点赞、收藏、转发支持!
网硕互联帮助中心



评论前必须登录!
注册