Transformer抛弃了循环神经网络和卷积神经网络,完全基于注意力机制构建。其核心组件是自注意力层,能够捕捉序列中任意位置之间的依赖关系。
首先,输入序列经过词嵌入和位置编码。位置编码使用正弦和余弦函数,使模型感知词语的顺序。有些变体使用可学习的位置编码或旋转位置编码。
自注意力机制通过三个矩阵——查询Q、键K、值V——计算注意力分数。对于每个位置,Q与所有K的点积得到注意力权重,经过softmax归一化后,与V加权求和。多头注意力将Q、K、V投影到多个子空间,并行计算不同维度的注意力,然后拼接输出。
每个注意力层后接一个前馈网络(FFN),通常包含两个线性变换和ReLU激活。FFN对每个位置独立处理,增强了模型的非线性表达能力。
残差连接和层归一化是训练稳定性的关键。残差连接让梯度更容易传播,层归一化加速收敛并减少内部协变量偏移。
Transformer分为编码器和解码器。编码器由自注意力层和FFN堆叠而成;解码器额外包含交叉注意力层,用于关注编码器输出。在生成任务中,解码器使用掩码自注意力防止看到未来信息。
Transformer的参数量主要来自嵌入层、注意力投影矩阵和FFN。随着层数加深,模型容量增大,但训练难度也增加。后续研究提出了许多改进,如RoPE、GQA、FlashAttention等,在不牺牲效果的前提下提升效率。