Transformer学习笔记
大模型自学笔记
大模型就两块内容:
- 推理原理
- 训练原理
Transformer架构图
从论文:《 Attention is all you need 》开始学习。先看看整个 Transformer 架构图:

图中,左边是编码器 Encoder,右边是解码器 Decoder。Transformer 架构的三大流派,本质就是:Encoder-only、Decoder-only、Encoder-Decoder:
- Encoder-only,只有编码器。模型代表:BERT。编码器用于理解、分类等任务。
- Decoder-only,只有解码器。模型代表:GPT、Qwen、Claude、Deepseek 等所有主流大模型。解码器用于预测下一个 token,简单说就是生成文本,跟你聊天。
- Encoder-Decoder,两者都有。模型代表:BART、T5。用于翻译
但是现在基本上都是 Decoder-only Transformer 的天下,因为 Scaling Law:参数量越大,数据越多,能力按照规律提升。
图中,无论是左边还是右边,都有 N×,意思是多个重复模块,也可以叫:block 。block 之间是串行工作的,前一个 block 的输出会给到后一个 block 作为输入。
需要注意的是单个 Block 不包含词嵌入、Positional Encoding、Linear、Softmax 等,只包含
圈起来的部分
接下来我们来细数一下 Transformer 有哪些模块:
- Input Embedding 和 Output Embedding,它们分别是 Encoder 和 Decoder 的编码模块,可以统称为 Token Embedding(词嵌入)。
- Positional Encoding(位置编码,简称:PE)。因为 Attention 是不管词之间的顺序的,所以需要额外处理位置信息。
- Multi-Head Attention 和 Masked Multi-Head Attention(多头注意力和掩码多头注意力)。多头注意力就是把单注意力在向量维度上进行分割(一般是平均分割),然后计算完注意力后,拼接矩阵(把维度又变回来)。
- Add & Norm(Add 就是 Residual,残差连接;Norm 是 Layer Normalization,层归一化,简称:LayerNorm)。残差连接的目的是解决深层网络梯度归零,训练不到深层的问题。层归一化使向量均值变成0,方差变成1,目的是稳定每层输入分布,控制特征分布波动。
- Feed Forward(前馈网络,简称:FFN)。FFN 的目的是引入非线性,存储大量长期知识。
- Linear(Vocab Projection(词表投影))。与 Token Embedding 共享同一个词汇表矩阵。输出 logits(对数得分),再经过 Softmax 就得到最后每个 token 的概率了。
- Softmax:一种归一化函数,可以把一组数变为相加等于1,也就是概率
需要注意的是,还有两个环节由于不属于 Transformer 结构没有列出来。
- Tokenizer 生成词汇表
- 解码策略(Decoding Strategy)
词汇表
词汇表就是存 token 字符串到 token id 的映射,比如 "cat" 查词汇表得到 token id 是 1245,然后再用 token id 去
解码策略
Transformer 只负责输出每个 token 的概率(一个
词嵌入
Token Embedding 需要依赖一个
程序上看,这个矩阵是一个数组, token id 就是数组 index,根据它就可以直接取到一条 token。
从数学角度看,Token Embedding 是一个矩阵乘法,输入序列可以看成一个 one-hot 矩阵(每一行是一个向量,每一行只有一个维度是1,其余维度是0,这样跟 Embedding 矩阵相乘后,就可以得到输入矩阵
文本 → Tokenizer → 字符串 → 查 Vocab → token_id → 用 id 索引
位置编码
由于抛弃了RNN的循环结构,而注意力只关注词之间的关联,而不考虑词之间的位置。所以需要专门做一下位置信息的处理。位置编码PE和RoPE就是用来干这个的。
PE
先来介绍一下 PE,也就是 Positional Embedding
它要解决的问题是,如何把 token 在输入序列中的位置,编码进
然后把得出的位置编码向量直接加到对应 token 向量上。
这个编码方式的特性有:
-
两组不同位置,如果偏移
相同,那么它们之间的换算矩阵就相同。从而可以让模型学习到它们的相对距离是相同的: -
每组奇偶维度,就像一个二维平面的时钟,它们的周期是不一样的,低维周期短,便于注意力观察相邻较近的 token 之间的关系,高维周期长,便于注意力观察相隔较远的 token 之间的关系。
-
标准正弦位置编码 不存在有限周期,不会出现有限位置
使得 对所有 成立。
RoPE
RoPE 旋转矩阵
需要注意的是,RoPE 不同于 PE,PE 只需要加一次,而 RoPE 在每一层 Block 的注意力计算都要计算
注意力
注意力矩阵就是一个
首先需要构造三个集合:Q、K、V。
- Q 代表 Query,查询集
- K 代表 Key,键值对中的键
- V 代表 Value,键值对中的值
每一个注意力计算模块都有自己独特的
然后再用注意力公式,算出注意力矩阵:
残差连接
首先区分两个概念:恒等式、恒等映射。
恒等式(Identity equation)
永远成立的等式(关系),属于 等式、代数表达式
一个等式,变量取定义域内任意值,等式永远成立。
例子:
重点:是一条等式,描述两个表达式相等关系,没有 “输入→输出” 的变换。
恒等映射(Identity mapping / Identity function)
属于 函数 / 映射
重点:是 变换规则:输入是什么,输出就原样返回什么;存在输入、输出。
- 标量场景:
- 矩阵场景:单位矩阵
,
残差连接的目的
残差连接的目的是为了让恒等映射天然存在,不用学习就可以直接拿来使用,当一层梯度为0的时候,就是恒等映射,相当于跳过这一层网络。如果没有残差连接,随着网络层数变深,梯度相乘最后会趋近0。
Plain 网络(普通堆叠网络) vs ResNet 残差网络梯度直观对比
先统一模型形式:
- Plain:
- ResNet:
一、梯度数学推导(极简版)
假设我们连续堆叠 L 层变换。
1)Plain 网络每一层:
链式求导:
激活函数导数值域大多小于 1(sigmoid/tanh/ 早期 ReLU)。
几十层连续相乘 → 梯度指数衰减 → 梯度消失。
深层梯度几乎为 0,浅层权重得不到有效更新。
2)ResNet 残差块单层残差块:
求导:
堆叠 L 个残差块后:
关键区别:每一层导数至少包含单位矩阵 I 这一项。
即便
梯度拥有一条直达浅层的恒等通路。
LayerNorm
全称:Layer Normalization,中文翻译:层归一化,简称:LN
计算公式:
公式含义:均值、方差归一化 + 可学习缩放 γ、偏移 β
层归一化的目的
- 稳定每层输入分布,缓解内部协变量偏移(Internal Covariate Shift)
网络不断前向传播时,参数持续更新,每层输入的数据分布一直在剧烈变化。
模型需要持续适应新分布,学习变慢、梯度容易爆炸 / 消失。
归一化把特征强制调整到均值≈0,方差≈1,让后续层不用持续适应变化的数据分布。
“防止输出越传越大” 只是现象之一;本质是控制特征分布波动,不只限制幅值变大,也防止幅值持续变小。 - 加速训练、允许使用更大学习率
分布稳定后梯度更加平滑,优化器收敛更快。 - 缓解梯度消失 / 梯度爆炸
激活输入不会持续偏移到激活函数饱和区域(比如 sigmoid 两端梯度接近 0)。 - 降低参数初始化、学习率调参压力
注意:
- 现代 GPT 大模型采用的是 Pre-LN,而非论文中提到的 Post-LN,二者有非常大的差别
- 现代 GPT 大模型采用的是RMSNorm,抛弃了减均值环节,因为发现减均值带来的增益几乎为0
FFN
全称:Feed Forward Network,中文翻译:前馈网络
标准公式:
-
:升维(通常 4 倍隐藏维度) - 激活函数
(GeLU/ReLU)引入非线性 -
:降维回原始维度
核心作用:引入非线性。如果没有非线性,无论堆叠多少层,本质上也只不过是一层网络,整个模型退化为线性模型,无法学习复杂函数。FFN 提供整层必不可少的非线性能力。
独立处理每个 token(无 token 间交互)
Attention:token 之间互相交换信息;
FFN:对每个 token 单独、并行变换,不跨 token 运算。
可以理解:
Attention = 通信、检索、关联匹配
FFN = 个体内部思考、推理、知识映射
ReLU
全称:Rectified Linear Unit,中文翻译:修正线性单元(也常译作:整流线性单元)
基础形式
逐元素运算:
- 当
: - 当
:
图像特征:正区间线性直通,负区间直接截断到 0。
拓展变体(顺带了解)
- Leaky ReLU:
,缓解神经元死亡 - PReLU:可学习斜率的 Leaky ReLU
- ReLU6:
,移动端量化常用
SwiGLU
SwiGLU 是 GLU 门控家族,2020 论文提出,2022 年后开源模型普及:PaLM、LLaMA 系列、Mistral、Qwen、DeepSeek 全部使用 SwiGLU。
注意:原生 OpenAI GPT-2、GPT-3、GPT-3.5 基座:没有 SwiGLU!
它们用的是标准单支路 FFN + GELU 激活
省略偏置的写法:
伪代码:
1 | def swiglu(x, W1, W2, W3): |
sigmoid
关键性质
值域:
中心:
导数(常用):
MLP
MLP = Multi-Layer Perceptron,多层感知机
linear
概念汇总:
- 论文:《Attention is all you need》
- Transformer
- RNN、CNN、DN
- 注意力公式:
- QKV,
softmax(), ,归一化,方差(Var()),标准差,平均绝对误差 MAE,期望,独立,同分布 - 矩阵,向量,向量点积,矩阵乘法,矩阵转置,轴对称,中心对称,镜像
- Token ID,词嵌入矩阵X(Embedding),词汇表,
, , - 编码器,解码器,Input Embedding,Output Embedding,Positional Encoding(位置编码,PE),Multi-Head Attetion多头注意力,Masked Multi-Head Attention带掩码多头注意力,Feed Forward Network(前馈网络,FFN),Add & Norm(Add是残差连接(Residual),Norm是Layer Normalization 层归一化),block堆叠N层,超参数(Hyperparameter),模型参数
- FP32、FP16、BF16
- 解码器输出的是词汇表上每个词的概率。之后还要用采样算法得到真实输出的词汇,采样算法有很多种:贪心(取概率最大的)、随机(按输出概率随机取)
- 正弦、余弦、两角和公式
我的一些感悟
- 神经网络用到大量数学工具,最常用的工具:矩阵,激活函数,归一化函数。
- 大模型的架构没有多复杂,全靠一个大字,堆叠几十层结构重复的网络。