Transformer的核心是解决RNN/CNN的长程依赖与并行计算瓶颈,通过Self-Attention(Q/K/V机制)、位置编码、残差连接与LayerNorm等设计实现高效建模。

Transformer 是大模型的基石,理解它不等于死记公式,而是抓住“为什么这样设计”——核心是解决 RNN/CNN 在长程依赖和并行计算上的瓶颈。
注意力机制:让模型自己决定“看哪里”
传统序列模型按固定顺序处理词,而注意力允许每个词在编码时动态聚合上下文中最相关的其他词。Self-Attention 的关键在于三组向量:Query(当前词想问什么)、Key(其他词能提供什么)、Value(其他词实际携带的信息)。通过 Q·Kᵀ 得到相似度得分,再 Softmax 归一化后加权求和 Value,就完成了“有侧重地汇总上下文”。
实际中要注意:
- 多头注意力(Multi-Head)不是简单堆叠,而是让模型在不同子空间里学习不同类型的依赖关系(比如语法结构、指代关系、语义角色)
- 缩放点积(Scale Factor √dₖ)防止 softmax 梯度饱和,尤其在 dₖ 较大时非常关键
- 掩码(Mask)用于解码器中防止信息穿越——训练时用 causal mask,确保第 t 步只能看到 1 到 t−1 的输出
位置编码:给无序的向量注入“顺序感”
Transformer 本身没有循环或卷积,无法感知词序。位置编码(Positional Encoding)以可学习(如 BERT)或固定函数(如原始论文中的 sin/cos)形式加到词向量上,使模型能区分 “猫追老鼠” 和 “老鼠追猫”。
立即学习“Python免费学习笔记(深入)”;
常见做法包括:
Magic CMS网站管理系统(政企版)采用PHP+Mysql架构,再原CMS系统的基础上精简出适合企业政府客户使用版本,继承了原系统的快捷,高效,灵活,实用的特点,保留了核心功能,系统支持自定义模版(极易整合dede模板)、支持扩展插件,自定义模型等功能,保留了文章模型,视频模型,图集模型,产品模型,能够胜任企业多种建站需求。BUG修复:1.修改了程序安装时部分数据无法正常导入的错误2.修改了程
- 正弦位置编码支持外推:因周期性结构,模型可能泛化到比训练更长的序列(但效果有限,实际仍需截断或重训练)
- 相对位置编码(如 T5、DeBERTa 使用)更关注两词间距而非绝对位置,对长文本和迁移更鲁棒
- ALiBi(Attention with Linear Biases)直接在 attention score 上加与距离成比例的偏置,无需显式编码,训练更稳定
层归一化与残差连接:稳定训练的“安全带”
深层 Transformer 容易梯度消失/爆炸,残差连接(x + Sublayer(x))保证信息直通,层归一化(LayerNorm)则在每个样本的特征维度做归一化,适配变长序列输入。二者常组合使用(Post-LN),但训练初期收敛慢;Pre-LN(先归一再子层)更稳定,被多数现代大模型采用(如 LLaMA、GPT-3 后期配置)。
值得注意:
- LayerNorm 对 batch size 不敏感,适合小批量微调
- Dropout 主要加在子层输出和 FFN 内部,而非残差路径上
- FFN(前馈网络)通常为两层全连接+GELU,隐藏层维度常设为 embedding 维度的 4 倍,是模型主要参数来源之一
从架构图到代码:一个极简 PyTorch 实现要点
不必从零写完整模型,重点理解模块间数据流。例如一个标准 Encoder Layer 输入是 [batch, seq_len, d_model],经过 MultiHeadAttention → Add & Norm → FFN → Add & Norm,输出形状不变。解码器则额外接收 Encoder 输出,并在第二个 Attention 中做 cross-attention。
动手建议:
- 用 torch.nn.MultiheadAttention 快速验证注意力逻辑,注意其 batch_first 默认为 False(seq_first)
- 手动实现 Self-Attention 有助于调试:检查 Q/K/V 是否正确投影、mask 是否生效、softmax 是否在正确维度(通常是 dim=-1)
- 用 torch.compile(model) 加速小规模实验,观察各子层耗时分布,识别瓶颈(常是 FFN 或 KV Cache 管理)
真正掌握 Transformer,是能在读论文、调模型、改结构时,一眼看出某个改动影响的是表达能力、训练稳定性,还是推理效率。它不是黑箱,而是一套精心权衡的设计选择。









