Transformer 架构:Attention 全景
2017 年的「Attention Is All You Need」提出完全基于注意力的 Transformer,抛弃了 RNN 的循环结构,靠自注意力并行建模序列中任意两位置的关系,奠定了后续大语言模型的基础。
自注意力在算什么
自注意力把每个 token 映射为查询(Q)、键(K)、值(V)三个向量,用 Q 与所有 K 的点积衡量相关性,softmax 后得到权重再对 V 加权求和。这样每个位置都能直接「看到」序列中相关的其他位置,不受距离限制。
多头与位置编码
多头注意力把 Q/K/V 投影到多组子空间并行计算再拼接,让模型同时关注不同关系(语法、语义、位置)。由于注意力本身不含顺序信息,需要额外加入位置编码(如正弦编码或可学习编码)来保留词序。
编码器与解码器
原始 Transformer 由编码器(堆叠自注意力与前馈层)和解码器(额外含对编码器的交叉注意力与因果掩码)组成,用于翻译等序列到序列任务。后来的 GPT 只用解码器,BERT 只用编码器,演变出不同范式。
import torch.nn as nn
mha = nn.MultiheadAttention(embed_dim=512, num_heads=8, batch_first=True)
x = torch.randn(8, 20, 512)
out, attn = mha(x, x, x) # 自注意力:Q=K=V
为什么重要
自注意力可高度并行,训练高效;长程依赖不再随距离衰减。这些特性让它扩展到海量参数与数据,成为 GPT、BERT 等模型的共同骨架。
小结
Transformer 用自注意力直接建模全局依赖,配合多头机制与位置编码,并以编码器/解码器结构灵活适配各类任务。它用并行与可扩展性取代了循环,是现代大模型的事实标准。
参考与延伸阅读
- 原始论文「Attention Is All You Need」(Vaswani 等, 2017, NeurIPS)。已核验。https://arxiv.org/abs/1706.03762
- 交互式讲解「The Illustrated Transformer」(Jay Alammar)。已核验。https://jalammar.github.io/illustrated-transformer/
- PyTorch 多头注意力文档。已核验。https://pytorch.org/docs/stable/generated/torch.nn.MultiheadAttention.html
本文累计阅读 — 次