了解 Noam Shazeer 如何参与塑造 Transformer:自注意力、多头注意力,以及为何该设计成为现代大型语言模型(LLM)的骨干。

Transformer 是一种帮助计算机理解序列的方法——序列中顺序和上下文很重要,例如句子、代码或一连串搜索查询。与其一个标记一个标记地读取并把脆弱的记忆带到后面,Transformer 是在整个序列上观察并决定在解释每个部分时应该关注什么。
这个简单的转变证明意义重大。这是现代大型语言模型(LLM)能够保持上下文、遵循指令、写出连贯段落以及生成引用早期函数和变量的代码的主要原因之一。
如果你使用过聊天机器人、“摘要”功能、语义搜索或编程助手,你就与基于 Transformer 的系统打过交道。相同的核心蓝图支持:
我们会拆解关键部分——自注意力、多头注意力、位置编码以及基本的 Transformer 块——并解释为什么随着模型变大这种设计能很好地扩展。
我们还会简要介绍一些在同一核心思想上为速度、成本或更长上下文窗口做出调整的现代变体。
这是一次面向直觉的高层导览,使用通俗语言并尽量减少数学推导。目标是建立直观理解:各个部分的作用、它们为何协同工作,以及这些如何转化为真实产品能力。
Noam Shazeer 是一位 AI 研究工程师,最广为人知的是作为 2017 年论文 “Attention Is All You Need” 的合著者之一。该论文引入了 Transformer 架构,后来成为许多现代大型语言模型的基础。Shazeer 的工作属于团队努力的一部分:Transformer 是由 Google 的一组研究人员共同创造的,这点需要被明确归功。
在 Transformer 出现之前,许多 NLP 系统依赖递归模型按步骤处理文本。Transformer 提出,你可以通过将注意力作为在句子中组合信息的主要机制,在没有递归的情况下有效地建模序列。
这一转变之所以重要,是因为它使训练更容易并行化(可以同时处理多个标记),并为在实践中规模化模型和数据集打开了大门,使其迅速可用于真实产品。
Shazeer 与其他作者一起提出的贡献并没有仅限于学术基准。Transformer 成为一种可复用的模块,团队可以对其进行改造:替换组件、改变规模、为特定任务调优,并在后来对其进行大规模预训练。
许多突破就是这样传播的:一篇论文提出了一个干净、通用的配方;工程师对其精细化;公司将其投入生产;最终它成为构建语言功能的默认选择。
称 Shazeer 为该论文的关键贡献者与合著者是准确的,但把他刻画为唯一发明者就不准确了。影响力来自集体设计,以及社区在原始蓝图之上构建的众多后续改进。
在 Transformer 出现之前,大多数序列问题(翻译、语音、文本生成)以**递归神经网络(RNN)和随后出现的长短期记忆网络(LSTM)**为主。大体思路很简单:逐个标记读取文本,保持一个运行的“记忆”(隐藏状态),并用该状态预测下一步。
RNN 将句子视作链式处理。每一步基于当前词和先前的隐藏状态更新隐藏状态。LSTM 通过加入门控机制来改进它们,决定保留、遗忘或输出什么,从而更容易保留长期的有用信号。
在实践中,顺序记忆存在瓶颈:随着句子变长,很多信息必须被压缩进单一状态。即便有 LSTM,早期词语的信号也可能逐渐衰减或被覆盖。
这使得某些关系难以可靠学习——比如把代词与许多词之前的正确名词关联,或在多个子句中跟踪话题。
RNN 和 LSTM 也训练缓慢,因为它们不能在时间维度上完全并行化。你可以在不同句子间做批处理,但在一个句子内,第 50 步依赖第 49 步,49 步依赖 48 步,依此类推。
当你想要更大的模型、更多数据和更快的试验时,这种逐步计算成为严重的限制。
研究人员需要一种能在训练时不严格按从左到右顺序行进的设计——一种能直接建模长距离关系并更好利用现代硬件的方法。这种需求为 Attention Is All You Need 中提出的以注意力为先的方法奠定了舞台。
注意力是模型在问:“现在理解这个词时,我应该看哪些其他词?”。与其严格按左到右阅读并期望记忆保存,注意力让模型在需要时窥视句子中最相关的部分。
一个有帮助的心智模型是句子内部运行的微型搜索引擎。
所以,模型为当前位置形成查询,将其与所有位置的键进行比较,然后检索值的混合。
这些比较产生相关性得分:对“有多相关”的粗略判断。模型然后将它们转化为注意力权重,这些权重加总为 1。
如果某个词非常相关,它会获得模型更多的关注份额;如果有多个词重要,注意力可以分布在它们之间。
句子:"Maria told Jenna that she would call later."
为了解读 she,模型应该回看像 “Maria” 和 “Jenna” 这样的候选项。注意力会对最符合上下文的名字赋予更高的权重。
再比如:"The keys to the cabinet are missing." 注意力有助于将 “are” 与 “keys”(真正的主语)关联起来,而不是与更近的 “cabinet” 关联。这就是核心好处:注意力可以在距离上建立意义的直接链接。
自注意力的思想是序列中的每个标记都可以查看同一序列中的其他标记,以决定此刻什么重要。与老的递归模型严格地从左到右处理不同,Transformer 允许每个标记从输入的任何位置收集线索。
想象句子:"I poured the water into the cup because it was empty." 单词 “it” 应该连接到 “cup” 而非 “water”。通过自注意力,描述 “it” 的标记会给帮助解析其含义的标记(“cup”、“empty”)分配更高权重,而对无关的标记分配更低权重。
经过自注意力后,每个标记不再只是其自身。它变成了一个上下文感知的版本——是其他标记信息的加权混合。你可以把它看作每个标记为整个句子创建的个性化摘要,针对该标记的需求进行调优。
在实践中,这意味着 “cup” 的表示可以携带来自 “poured”、“water” 和 “empty” 的信号,而 “empty” 可以拉取它所描述对象的信息。
因为每个标记可以同时对整个序列计算注意力,训练不必等待前面的标记逐步处理。这种并行处理是 Transformer 在大数据集上高效训练并扩展到巨型模型的主要原因之一。
自注意力让连接文本中相距较远的部分变得更容易。一个标记可以直接集中注意力于远处的相关词——而无需通过一长串中间步骤传递信息。
这种直接路径有助于处理诸如共指(“she”、“it”、“they”)、跨段落跟踪实体以及处理依赖早期细节的指令等任务。
单一注意力机制已经很强大,但仍然像仅用一个摄像头角度来理解一场对话。句子通常同时包含多种关系:谁做了什么,“it” 指谁,哪些词设定了语气,整体话题是什么。
读到句子 "The trophy didn’t fit in the suitcase because it was too small" 时,可能需要同时跟踪多条线索(语法、含义、现实世界常识)。一个注意力“视角”可能锁定最近的名词;另一个可能使用动词短语来决定 “it” 指代谁。
多头注意力并行运行若干次注意力计算。每个“头”被鼓励从不同的子空间观察句子——实际上,这意味着各头可以专注于不同的模式,例如:
每个头产生自己的见解后,模型不会只选其中之一。它拼接这些头的输出(并列堆叠),然后用一层学习到的线性变换将其投影回模型的主工作空间。
把它想象为将几份部分笔记合并成一份干净的摘要供下一层使用。结果是一个能同时捕捉多种关系的表示——也是 Transformer 在扩规模时表现良好的原因之一。
自注意力擅长发现关系——但单独使用它不包含顺序感。如果你打乱句子中的词序,纯自注意力层可能会把打乱后的版本视为同等有效,因为它在比较标记时没有内建的位置信息。
位置编码通过将“我在序列中的第几位?”信息注入到标记表示中来解决这个问题。一旦添加了位置信号,注意力就可以学习像“紧跟在 not 之后的词很重要”或“主语通常出现在动词之前”这样的模式,无需从零推断顺序。
核心思路很简单:在标记进入 Transformer 块之前,将标记嵌入与位置信号结合。位置信号可以被视为为标记打上第 1 位、第 2 位、第 3 位……的特征标签。
常见方法包括:
位置选择会显著影响长上下文建模——比如总结长报告、在多段落中跟踪实体,或检索在数千个标记之前提到的细节。
对于长输入,模型不仅在学习语言本身,还在学习“去哪里找”。相对和旋转风格的方案通常更容易比较相距很远的标记并在上下文增长时保留模式,而某些绝对方案在超出训练窗口时会更容易退化。
在实践中,位置编码是那类会影响 LLM 在 2000 个标记时是否显得敏锐、在 100000 个标记时仍然连贯的悄然设计决策之一。
Transformer 不只是“注意力”。真正的工作发生在一个重复单元内——通常称为 Transformer 块——它在标记之间混合信息然后对其进行精炼。堆叠许多这样的块,你就得到了使大型语言模型如此强大的深度结构。
自注意力是通信步骤:每个标记收集其它标记的上下文。
前馈网络(FFN,也叫 MLP)是思考步骤:它对于每个标记的更新表示独立地运行同一个小型神经网络。
通俗地说,FFN 在标记收集到相关上下文后,会转换并重塑该标记所拥有的信息,帮助模型构建更丰富的特征(例如句法模式、事实或风格线索)。
这种交替很重要,因为两部分执行不同任务:
重复这一模式让模型逐步构建更高层次的含义:通信、计算、再次通信、再计算。
每个子层(注意力或 FFN)都用残差连接包裹:将输入加回到输出上。这有助于深层模型训练,因为梯度可以通过“跳跃通道”流动,即便某个层仍在学习。它也允许层做小的调整,而不是重学一切。
层归一化是一个稳定器,防止激活在多层传递时变得过大或过小。把它想象成保持音量一致,使后续层既不会被淹没也不会信号不足——这使训练更加平滑可靠,尤其是在 LLM 规模下。
原始的 Transformer 在 Attention Is All You Need 中是为机器翻译构建的,在该任务中你需要将一个序列(法语)转换为另一个序列(英语)。该任务自然分为两个角色:阅读输入和写出输出。
在编码器—解码器 Transformer 中,编码器一次性处理整个输入句子并生成丰富的表示。解码器随后一个标记一个标记地生成输出。
关键在于,解码器不仅依赖其自身过去的标记。它还使用跨注意力来查看编码器的输出,从而帮助其基于源文本保持扎实的输出。
这个设置在必须严格条件化输入的任务中仍然非常出色——翻译、摘要或基于特定段落的问答。
大多数现代大型语言模型是仅解码器的。它们被训练来完成一个简单而强大的任务:预测下一个标记。
为此,它们使用掩码自注意力(通常称为因果注意力)。每个位置只能关注更早的标记,不能关注未来的标记,这样生成就保持一致:模型从左到右写作,持续扩展序列。
这在 LLM 中占主导地位,因为它在大规模文本语料上训练直观、与生成用例直接匹配,并且随着数据和计算规模的增长能高效扩展。
编码器-only 的 Transformer(如 BERT 风格模型)不用于生成文本;它们双向读取整个输入。它们非常适合分类、搜索和嵌入——任何理解文本比产生长续写更重要的任务。
Transformer 证明异常适合扩展:如果你给它们更多文本、更多计算和更大的模型,它们往往以可预测的方式不断改进。
一个重要原因是结构上的简单性。Transformer 由重复的块(自注意力 + 小型前馈网络,加上归一化)构成,不论你是在百万词训练还是万亿词训练,这些块的行为相似。
早期的序列模型(如 RNN)必须逐个标记处理,这限制了可并行工作的量。相比之下,Transformer 在训练时可以并行处理序列中的所有标记。
这使它们非常适合 GPU/TPU 和大规模分布式设置——这正是训练现代 LLM 所需的环境。
上下文窗口是模型一次可以“看到”的文本块——你的提示加上最近的对话或文档文本。更大的窗口允许模型在更多句子或页面之间建立联系、跟踪约束并回答依赖早期细节的问题。
但上下文并非免费。
自注意力会比较标记与标记。随着序列变长,比较次数迅速增长(大致与序列长度的平方成比例)。
这就是为什么非常长的上下文窗口在内存和计算上成本高昂的原因,也解释了许多现代工作集中在使注意力更高效上的原因。
当 Transformer 在大规模上训练时,它们不仅仅在一个狭窄任务上变好。因为同样的通用学习机制应用于海量且多样的数据,它们常常开始展示广泛灵活的能力——摘要、翻译、写作、编码与推理等。
原始的 Transformer 设计仍然是参考点,但大多数生产级 LLM 都是“Transformer 加”:在保留核心模块(注意力 + MLP)的情况下做出小而实用的改动,以提高速度、稳定性或上下文长度。
许多升级更多是关于让模型更易训练或运行更好,而不改变其本质:
这些变动通常不改变模型的“Transformer 属性”——它们是在精细化。
将上下文从几千标记扩展到数万或数十万通常依赖于稀疏注意力(只关注选定的标记)或高效注意力变体(近似或重构注意力以减少计算)。
权衡通常涉及准确性、内存与工程复杂度的折中。
MoE 模型增加多个“专家”子网络,并为每个标记只路由到一部分专家。概念上:你得到一个更大的大脑,但并不是每次都激活全部。
这可以在给定参数量下降低每标记的计算,但它增加了系统复杂性(路由、专家平衡、服务)。
当一个模型宣称有新的 Transformer 变体时,应该询问:
大多数改进都是真实的——但很少有免费午餐。
自注意力与扩展等 Transformer 思想很有趣,但产品团队通常以权衡的形式感受到它们:你能喂入多少文本、得到答案有多快、每次请求花费多少。
上下文长度: 更长的上下文允许包含更多文档、聊天历史和指令,同时也会增加 token 花费并可能减慢响应速度。如果特性依赖于“阅读这 30 页后回答”,应优先考虑上下文长度。
延迟: 面向用户的聊天和助理体验取决于响应时间。流式输出有帮助,但模型选择、区域和批处理也很重要。
成本: 定价通常按 token(输入 + 输出)计费。一个“好” 10% 的模型可能成本是另一个的 2–5 倍。用定价式比较来决定值得为哪种质量买单。
质量: 为你的用例定义它:事实准确性、遵循指令、语气、工具使用或代码质量。使用来自你领域的真实示例评估,而不是通用基准。
如果你的主要需求是搜索、去重、聚类、推荐或“查找相似”,嵌入(通常是编码器风格模型)通常比调用对话模型更便宜、更快、更稳定。仅在检索之后将生成用于最终步骤(摘要、解释、起草)。
如需更深入的细分,请将团队链接到技术解释文档,例如 /blog/embeddings-vs-generation。
把 Transformer 能力转化为产品时,困难通常不在于架构本身,而在于围绕它的工作流:提示迭代、扎根(grounding)、评估和安全部署。
一种实用路径是使用像 Koder.ai 这样的 vibe-coding 平台来更快地原型并发布基于 LLM 的功能:你可以在聊天中描述 Web 应用、后端端点和数据模型,在规划模式中迭代,然后导出源码或部署并支持自定义域名与回滚快照。当你在尝试检索、嵌入或工具调用循环时,这对于快速迭代而不重建相同脚手架尤其有用。
Transformer 是一种用于序列数据的神经网络架构,使用自注意力来将输入中每个标记与同一输入中其他标记关联起来。
它不是像 RNN/LSTM 那样一步一步携带信息,而是通过决定*对整个序列的哪些部分“关注”*来构建上下文,这改善了长距离理解能力并使训练更易并行化。
RNN 和 LSTM 是按每次处理一个标记的方式工作,这使得训练难以并行化,并在建模长程依赖时形成瓶颈。
Transformer 使用注意力直接连接远处的标记,并且在训练时可以并行计算大量标记间的相互作用——这使其在更多数据和计算下更容易扩展。
注意力是用于回答:“当前标记理解时,哪些其他标记最重要?”的机制。
可以把它想象为句子内的检索:
输出是相关标记的加权混合,为每个位置生成上下文感知表示。
自注意力表示序列中的标记相互“看”同一序列中的其它标记。
它是让模型解决指代(例如“它”指谁)、跨子句的主谓关系以及相距较远的依赖关系的核心工具——而无需将所有信息通过单一的递归“记忆”传递。
多头注意力会并行运行多次注意力计算,每个头可以在不同的方式上专注。
实际上,不同的头通常会关注不同类型的关系(句法、长距关联、指代解析、主题信号等)。模型随后将这些视角合并,以便同时表示多种结构。
单纯的自注意力本身并不包含顺序信息——如果没有位置提示,词语重排可能看起来一样。
位置编码将序列中“我在第几位”的信息注入到标记表示中,这样模型就能学习诸如“在 not 后面的词很重要”或“主语通常出现在动词之前”之类的模式。
常见方案包括正弦固定编码、可学习的绝对位置编码以及相对/旋转(rotary)风格的方法。
一个典型的 Transformer 块通常包含:
将许多这样的块堆叠起来,就获得了在更高层次上构建丰富语义的能力。
原始论文的 Transformer 是 编码器—解码器(encoder–decoder):
但当下大多数 LLM 是 仅解码器(decoder-only) 的:它们通过预测下一个标记进行训练,使用**掩码自注意力(因果注意力)**保证左到右生成的正确性,这种方式在大规模语料上训练和扩展效率更高。
Noam Shazeer 是 2017 年论文《Attention Is All You Need》的合著者之一,该论文提出了 Transformer 架构。
说他是关键贡献者和合著者是准确的,但将其描述为唯一发明者则不妥:这个架构是 Google 团队共同工作的成果,其影响还来自社区与产业在后续对该蓝图的改进和推广。
当输入很长时,标准自注意力的计算量大致随着序列长度的平方增长,因而内存与计算成本都会迅速上升。
团队常用的解决办法包括: