Transformer 架构

Transformer 通过注意力、前馈网络和位置信息处理序列,是许多语言模型的基础架构。

返回概念图谱 →

理解与应用

Transformer 是一种处理序列的神经网络架构。它把每个 token 转成向量,再经过多层计算,让一个位置的表示结合其他位置的信息。原始论文采用编码器与解码器组合;后来的模型可以只用其中一类结构。因此,“用了 Transformer”并不等于它必然是聊天模型,也不说明它支持哪些模态。

以“这笔报销缺少发票”为例,模型开始拿到的是一串 token 的向量。注意力层让“缺少”所在位置与“报销”“发票”等位置发生信息交互,前馈网络再逐位置进行非线性变换。残差连接帮助信息与梯度跨层传递,归一化则参与稳定这些计算。这些部件一起构成层,注意力不是整个模型。

序列的顺序同样重要。“报销缺发票”和“发票缺报销信息”涉及相近词语,关系却不同。位置编码或其他位置表示为网络提供顺序信息,否则仅靠一组 token 向量的内容,无法充分表达谁在前、谁在后。

自回归解码器在训练中用因果遮罩,保证某个位置预测后续 token 时看不到未来答案。已有的训练序列可以并行计算多个位置;实际生成时,后一个 token 又依赖前面已经生成的内容,通常需要逐步推进。这是“训练可并行”与“生成有顺序”能够同时成立的原因。

标准全连接注意力会比较序列中的位置对,长度增加时这部分计算和中间存储会迅速增长。缓存和优化实现能改变实际开销,但不会仅凭架构名给出无限上下文。应用选型仍要查看具体模型的窗口、输入形式和运行预算。

关系速览
Transformer 架构包含 →注意力机制

Transformer 的注意力子层用于按输入相关性混合表示;它不是模型全部结构。

动手试一试:用简化混合观察因果遮罩

第三个位置的 100 不能影响因果版本的前两个位置,无遮罩版本则会把它混入所有位置。这里省略了学习得到的投影、权重和其他网络层,只单独展示可见范围。

将代码保存为 example.py,使用 Python 3.10+ 运行 python3 example.py。仅使用标准库,无需密钥,不会调用外部模型。

Python 代码

values = [2.0, 4.0, 100.0]
# 只演示能访问哪些位置;每个可见位置采用相同权重。
causal = [sum(values[:i + 1]) / (i + 1) for i in range(len(values))]
unmasked = [sum(values) / len(values)] * len(values)
print("有遮罩:", [round(x, 2) for x in causal])
print("无遮罩:", [round(x, 2) for x in unmasked])

运行结果

有遮罩: [2.0, 3.0, 35.33]
无遮罩: [35.33, 35.33, 35.33]

常见误区

  • 注意力只是 Transformer 的组成部分,单次加权平均无法代表整个网络。
  • 训练阶段能并行计算多个位置,不等于自回归生成的所有 token 可以同时确定。
  • 模型同属 Transformer,也可能具有不同的上下文长度、位置机制和输入能力。

前置与延伸

建议先读

相关概念

参考与版本

Apollo 原创讲解与教学示例。参考资料用于核对技术定义;核验日不代表资料的发布日期。

  • Attention Is All You Need ↗

    核对原论文的架构、缩放点积、多头注意力和因果遮罩;不由原论文推断所有现代模型的结构或模态。 · 核验:2026-10-10