关于 Transformer 的一些思考

Posted on Feb 7, 2026

词向量的可追踪性

在 Transformer 中,输入的每个词向量的变化均由以下三部分引起:1)线性变换:注意力模块以及 FFN 模块中的线性部分;2)加性残差:残差连接机制;3)非线性变换:(Position-wise) FFN 模块中的激活函数、解码器最后的 softmax。其中不包含随机状态、隐变量或隐式记忆。每个 token 的变化均可表示为一个确定的函数:

$$ x_i^{(l+1)}=x_i^{(l)}+\text{Attention}^{(l)}(x_1^{(l)},x_2^{(l)},…,x_n^{(l)})+\text{FFN}^{(l)}(\cdot) $$

注:这个过程虽然可追踪,但本身难以解释

词向量的含义

在 Transformer 中,输入的词向量的含义由静态的词级语义转为条件化的上下文状态。即输入向量在 Embedding 状态下,表示该词语的通用含义,在 Transformer 内部中间层中,含义逐渐脱离该词语的具象化的通用含义,而转为较为抽象的在当前语境下的“角色”,也就是“在当前前缀条件下,这个位置对未来分布有什么约束作用”,是一种“对未来条件分布有贡献的相关性

预测下一个词

在 Transformer 的解码器中,预测下一个词的逻辑是:对于最后一个解码器层的输出,使用一个矩阵 $W_\text{unembed}$ (解嵌入)将其维度由 (seq_len,d_model)​ 投影到 (seq_len,vocab_size),即将 Embedding 维度投影到词汇表维度:

$$ \text{Z}=W_\text{unembed}​\cdot x_\text{out}​ $$

取 $\text{Z}$ 中最后一个 token 位置对应的向量作为预测下一个词的 logits:

$$ \text{logits}=z_\text{last}=W_\text{unembed}​\cdot x_\text{last}​ $$

之后经过 softmax 转为概率。其中 $W_\text{unembed}\cdot x_\text{last}$ 可以类比于在匹配语义空间中与 $x_\text{last}$ 最相似的向量。即寻找词空间中哪一个候选词的“方向”与当前累积的上下文特征最匹配。需要注意的是,Transformer 中嵌入矩阵与解嵌入矩阵并不相同,这个“匹配”过程相当于一个非欧式的相似性判断,与余弦相似度不同。

事实上,模型并不是在单纯地匹配语义的相似度,而是“在当前上下文下,在关键可预测特征上对齐”的词。若单纯只匹配语义,则语义最相似的候选词可能并不是真正的答案

词向量的演变

从最后一个 token 的视角回看 Transformer 的整个流程:注意力层使得上下文信息在 token 之间传播;残差连接负责“稳定”信息,保持演变的渐进性;FFN 则对信息进行映射,便于进行某些分析。token 向量原本是语义空间中的一个向量,在这个过程中被不断“扭转”,改变指向,最终指向与结果相近的范围。这个范围的衡量,是在解嵌入矩阵 $W_\text{unembed}$ 所定义的非欧式度量的意义上进行的

值得注意的是,上述词向量的转向过程并不是单个向量进行简单的转向,而是该向量在不同维度(子空间)上分别进行转向,对应不同的角度,例如语义、语法、客观事实等。

Transformer 的训练

上面提到的 $W_\text{unembed}$,以及其他可学习的矩阵是通过训练得到的,而训练过程以特定任务的数据集以及相应的损失函数为基础。