2017 年提出的 Transformer 放弃了循环结构,几乎完全建立在注意力之上,从此改变了整个领域的走向。本文逐层拆解它的编码器与解码器,说明位置编码、多头注意力和前馈层各自扮演什么角色。

核心要点

  • Transformer 用自注意力替代循环,使序列处理可以高度并行。
  • 位置编码补充了注意力本身缺失的先后顺序信息。
  • 多头注意力让模型同时从不同角度考察词与词之间的关系。

丢掉循环之后

循环网络必须按时间顺序一步步计算,前一步没算完就无法进行下一步,这严重限制了并行。Transformer 干脆去掉循环,只保留注意力与前馈层:所有位置同时计算,彼此之间通过注意力交换信息。代价是失去了天然的先后顺序,需要另行补上。

这个取舍极其划算。训练时整条序列可以一次性喂进去并行处理,序列越长节省的时间越多,这才让在海量文本上训练超大规模模型成为可能。可以说,架构对并行计算的友好程度,是后来模型规模得以快速膨胀的技术前提之一。

编码器里有什么

原始结构包含编码器与解码器两侧,每侧都是若干层堆叠。编码器每一层主要有两块:多头自注意力,和一层简单的前馈网络。注意力负责混合位置之间的信息,前馈层负责对每个位置独立做一次变换。两块之后都配有残差连接与归一化,用来稳住训练。

残差连接的作用是把输入直接加到输出上,让梯度有一条不受阻碍的通路;归一化则把每层的数值拉回稳定范围。这两样看似配角,实际上缺一不可:没有它们,几十层的堆叠根本训练不起来。后来的很多改进都集中在这些配套设施的位置与形式上。

多头注意力与位置编码

所谓多头,是把注意力分成几份并行计算,每份在不同的子空间里考察关系。有的头可能关注语法搭配,有的关注指代关系,有的关注相邻词。最后把各头的结果拼接并做一次变换,相当于让模型同时从多个角度审视同一句话。

位置编码补的是顺序信息。注意力本身对排列不敏感,打乱词的顺序结果不变,这显然不行。常见做法是给每个位置加上一组按位置生成的向量,可以直接按公式算出,也可以作为参数学出来。有了它,模型才知道谁在前、谁在后。

它带来的连锁反应

2017 年这个架构被提出时,针对的是机器翻译。之后几年,它迅速扩展到几乎所有序列建模任务,并衍生出只用编码器、只用解码器或两者混用的各种变体。大模型时代的很多能力,都建立在这套结构可以稳定扩展到极大规模这一事实之上。

它也有明显短板。注意力的计算量随序列长度大致呈平方增长,处理超长文档代价高昂;推理时每生成一个新位置都要回顾全部历史,缓存开销不小。围绕这些问题的改进仍在持续,包括更高效的注意力近似和更适合长序列的结构设计。

常见问题

为什么大模型都用 Transformer?

因为它对并行训练极其友好,能在海量数据上稳定扩展到很大的规模,而且这套结构已被验证能学到丰富的通用表示。工程生态也早已成熟,从训练框架到推理优化都有现成方案。这些因素叠加,让它成为当前最稳妥的选择。

本文为 AI 科普内容,仅用于知识普及,不构成任何技术选型、投资或职业决策建议。