编程与 AI13 分钟阅读更新于 2026-08-03

Transformer 为什么堆叠相同结构,却不直接共享参数

围绕多层编码器、解码器和不同权重参数的描述,解释层结构复用与参数独立之间的关系,以及深层表示如何逐步形成。

相关工具

相同结构不等于同一层重复运行

Transformer 的编码组件和解码组件都由多层相似结构堆叠而成。这里介绍经典架构时提到,论文中使用了多层编码器和多层解码器;每个编码器包含 Self-Attention 和 FFN 等子层。

这里的“相同”主要指计算框架相同:每一层都按照类似的子层顺序处理输入。但上一层的输出会成为下一层的输入,下一层使用自己的权重参数。因此,堆叠不是把同一层的结果简单复制,而是让不同参数的层接力加工表示。

Transformer 多层编码器结构相同但逐层传递隐藏表示的示意图
相同结构的编码器层堆叠

多层编码器使用相似的子层结构,但每层接收上一层输出并继续加工。

为什么每层都保留 Self-Attention 和 FFN

Self-Attention 负责让当前位置读取序列中的其他位置,FFN 负责对当前位置的融合结果做非线性加工。每一层都保留这两个基本子层,意味着每一层都有机会重新调整跨位置关系,并继续转换当前位置的特征。

如果后续层只有一个完全不同的模块,前后层的接口和职责会变得不规则;复用结构则让每层都遵守相同的输入输出约定。结构稳定,表示内容却可以随着层数和参数变化逐步改变。

不同参数让不同层学会不同加工方式

如果所有编码器层完全共享同一组参数,那么它们面对不同深度的表示时,会执行同一种变换。模型仍然可以通过重复应用获得一定效果,但每层无法针对自己的深度学习不同的关注关系和特征组合。

经典 Transformer 让每个编码器使用不同的权重参数。底层可能更重视直接的词语关系,中间层可能继续组合局部结构,上层则可能形成更完整的上下文表示。具体分工不是人工指定的,而是在训练过程中由不同层的参数逐步形成。

Transformer 不同编码器层使用独立参数的示意图
不同层拥有各自参数

层结构保持一致,但每层的注意力投影和 FFN 参数独立,能够学习不同的表示变换。

底层和上层看到的输入已经不同

底层编码器接收词嵌入与位置编码形成的初始表示。经过 Self-Attention 和 FFN 后,输出已经包含一定上下文。上层编码器接收的不是原始词向量,而是上一层加工过的隐藏表示。

所以,即使两层使用完全相同的计算公式,输入分布也已经发生变化。再加上参数不同,下一层会在新的表示基础上做新的组合。层数的作用不是把同一句输入反复从头处理,而是让表示沿着深度逐步演化。

参数独立不会破坏层间接口

每层可以使用不同的权重,但输入输出仍然保持统一的 d_model。注意力和 FFN 内部可以有各自的投影,最终输出仍回到主干宽度,经过残差与 LayerNorm 后传给下一层。

统一的形状接口让参数独立和结构堆叠能够同时成立。可以把每层理解成不同的加工站:处理规则相似,内部工具不同,但交接的表示尺寸一致。

解码器也遵循相同的层堆叠逻辑

解码器每层包含目标端掩码自注意力、交叉注意力和 FFN 等子层。不同解码器层的结构相似,但使用不同参数;每层都接收上一层传来的目标表示,并继续查询编码器源记忆。

解码器的层堆叠还会不断重新整理目标前缀与源序列之间的关系。底层可能先建立较粗的连接,上层在更丰富的目标状态上继续调整。结构复用提供稳定流程,参数独立提供层间差异。

Transformer 编码器和解码器多层堆叠及隐藏表示传递的示意图
编码器与解码器的层级传递

编码器和解码器都通过多层相似结构逐层传递隐藏表示,解码器每层还会读取源记忆。

如果共享参数,模型会发生什么

参数共享可以减少模型规模,也可能带来更强的层间一致性,但不同深度的层失去了独立学习变换的自由度。共享参数并非绝对错误,某些模型会主动采用循环式或共享层设计,只是它们需要依靠重复应用同一变换完成深度建模。

阅读经典 Transformer 时,不能把“层数”直接当成“同一组参数重复次数”。论文结构中,层数增加通常意味着增加新的参数集合;要判断具体模型是否共享,还需要查看模型定义或参数组织方式。

层数、参数和表示深度是三个概念

层数描述隐藏表示经过多少次结构化加工,参数量描述模型拥有多少可学习权重,表示深度描述信息在多层处理后形成的复杂程度。三者相关,但不能互相替代。

增加层数并不只是增加计算步骤,也提供了更多独立参数和残差路径;减少层数但扩大每层宽度,则会改变另一组容量和计算分配。理解 Transformer 的规模时,要分别看层数、d_model、FFN 宽度、头数和参数是否共享。

用四个问题读懂层堆叠

第一,每层的子层结构是否相同;第二,每层是否使用独立参数;第三,层与层之间传递的表示形状是否一致;第四,输入表示经过多少层后才进入输出或交叉注意力。

只要把这四个问题分开,‘相同结构’和‘不同参数’就不会再冲突。Transformer 通过结构复用保持计算链条清晰,通过层间参数差异让隐藏表示能够逐步变化,最终形成适合任务的编码或解码状态。

常见问题

Transformer 的每一层都使用同一组参数吗?

经典 Transformer 通常让不同层使用不同权重参数。相同的是层的结构和输入输出接口,不代表参数完全共享。

为什么不把同一层重复运行来节省参数?

参数共享可以作为一种设计,但会限制不同深度学习不同变换的能力。是否共享取决于具体模型结构。

层数增加一定意味着效果更好吗?

不一定。层数会增加表示加工深度、参数量和计算成本,效果还取决于宽度、数据、训练稳定性和任务匹配。