趋近智
逐位置前馈网络(FFN)是每个编码器和解码器层中的一个重要组成部分。虽然注意力机制 (attention mechanism)旨在处理序列间的关联并整合来自不同位置的信息,但FFN提供额外的计算深度和非线性,对序列中的每个位置独立进行操作。
可以将注意力子层视为通信中心,允许令牌交换信息。然后,FFN则作为每个令牌的独立处理单元,转换通过注意力接收到的信息。
FFN通常是一个简单的全连接前馈网络,包含两个线性变换,中间夹有一个非线性激活函数 (activation function)。原始Transformer论文中,激活函数的标准选择是修正线性单元(ReLU)。
FFN在特定位置 的输入是来自前一个子层的输出向量 (vector) (无论是自注意力 (self-attention)还是交叉注意力,且在Add & Norm步骤之后,具体取决于Post-LN或Pre-LN等层配置)。计算过程如下:
综合这些步骤,对于单个位置 的完整FFN操作可以表示为:
或者,更一般地使用 代表激活函数:
该网络的一个重要方面是其“逐位置”应用。虽然在序列的所有位置都使用相同的FFN(指完全相同的权重 (weight)矩阵 和偏置 (bias) ),但它被独立应用于每个位置的向量 (vector)表示。
如果注意力子层后的输入序列表示是 ,其中 是序列长度,则FFN计算结果为:
这与注意力机制 (attention mechanism)形成鲜明对比,后者明确地建模不同位置之间的关联。FFN独立处理每个位置的表示,使得模型能够学习单个令牌表示的复杂变换,这些变换由通过注意力收集的上下文 (context)信息来辅助。
该图显示了相同的两个线性层(具有共享权重 和 )和ReLU激活函数 (activation function)如何独立应用于每个序列位置的输入向量 ()。
在原始Transformer论文《Attention Is All You Need》中,模型维度 为512,FFN的内层维度 设置为2048。这种四倍扩展()是一种常用的启发式方法,尽管也存在变体。这种扩展使得FFN能够将表示投影到更高维空间 (high-dimensional space),在那里可以更容易地学习复杂模式,然后再将其投影回标准模型维度。
从实现角度看,在每个位置独立应用相同的线性变换是计算高效的。它可以使用1x1卷积实现。如果将向量 (vector)序列 (形状:序列长度 )视为一个高度为1、宽度等于序列长度的“图像”,那么FFN的线性变换对应于核大小为1x1、输入通道为 、输出通道为 (对于第一层)或 (对于第二层)的卷积。这种形式使得深度学习 (deep learning)框架能够利用高度优化的卷积实现,以进行跨序列长度的并行处理。
FFN子层与注意力子层一起,构成每个编码器和解码器层中的核心计算块。理解其结构和逐位置操作对于掌握Transformer如何在序列交互层面(注意力)和单个令牌层面(FFN)处理信息是必要的。此子层之后是残差连接和层归一化 (normalization),我们将在接下来讨论。
这部分内容有帮助吗?
© 2026 ApX Machine LearningAI伦理与透明度•