从注意力开始:一句话如何变成下一枚 token
沿着 token → 向量 → 注意力 → 概率分布,理解语言模型的一次前向计算。
先建立一张计算地图
把一句话送入模型,得到的并不是现成的答案。文本先被切成 token,再映射到向量;经过多层计算后,最后一个位置产生下一枚 token 的分数。采样或选择一个 token,再把它接回上下文,循环生成。
文本 → token ID → 向量表示 → 多层 Transformer → logits → 下一枚 token
Q、K、V 各自负责什么
在一个注意力头中,每个位置的表示经过三个投影,得到查询 Q、键 K 和值 V。Q 与 K 的相似度决定“看哪里”,V 决定从那些位置取回什么信息。用 softmax 把分数归一化,再加权汇总 V。
scores = Q @ K.T / sqrt(d_k)
weights = softmax(scores + causal_mask)
output = weights @ V这里是单头的简化表达。因果掩码阻止当前位置读取未来 token;它不是训练完之后才加上的规则。多头注意力则让多个投影空间同时参与信息聚合。
注意力之后还有什么
注意力不是整个 Transformer。前馈网络对各位置的表示做进一步变换;残差连接与归一化帮助多层网络稳定计算。位置信息也不可缺少,否则单靠内容匹配无法表达顺序。
动手:只观察一个现象
用纸画出三个 token 的 3×3 分数矩阵,把主对角线上方全部遮住。对每一行做归一化,观察第一个位置只能读取自己,第三个位置可以读取三个位置。先掌握这个约束,再看多头与位置编码。
原始资料与下一步
Attention Is All You Need 提出了 Transformer。原论文包含编码器和解码器;本文的自回归生成地图是学习现代语言模型的简化入口,并不代表所有模型都采用同一种实现。
下一步阅读 DeepSeek 的 MoE 与 MLA,观察同一张计算地图如何发生变化。