Transformer位置前馈层Add and Norm残差连接维度匹配问题
Transformer FFN层Add&Norm机制与跨维度残差连接实现解答
1. Position-wise FeedForward Layer中Add and Norm的完整工作机制
Add and Norm是Transformer所有子层的标配后置模块,在Position-wise FFN中的完整执行流程如下:
- 残差加和(Add):首先获取FFN层的原始输入
x,以及FFN层的输出F(x)(即经过两个线性层+ReLU激活后的计算结果),对两个张量做逐元素加和,得到中间结果x + F(x)。标准Transformer原始实现中FFN的输入输出维度保持一致,此处可直接完成加和运算。 - 层归一化(Norm):对加和后的结果做层归一化(Layer Normalization),归一化范围为最后一维的特征维度:即对每个样本、每个序列位置对应的特征向量单独做归一化,将其均值调整为0、方差调整为1,再经过可训练的缩放参数
γ和偏移参数β做线性变换,避免归一化损失模型的表达能力,最终得到Add and Norm模块的输出。
2. 输入输出维度不匹配时的残差连接实现逻辑
当FFN的输入维度input_dim和输出维度output_dim不一致时,x和F(x)形状不匹配,无法直接做逐元素加和,此时必须对输入x做维度对齐处理,具体逻辑如下:
- 新增一个可训练的维度投影线性层,将原始输入
x从形状(num_samples, sequence_length, input_dim)线性映射为形状(num_samples, sequence_length, output_dim)的张量,记为x_proj。 - 残差加和运算调整为
x_proj + F(x),此时两个张量形状完全匹配,逐元素加和运算可合法执行。
这种维度投影的设计是Transformer架构中处理残差连接维度不匹配的通用方案,除跨维度FFN外,编码器/解码器堆叠调整隐层维度、跨模块残差连接等场景也会使用该方案做形状兼容。
内容的提问来源于stack exchange,提问作者Sachin Saxena
相关产品推荐
相关产品推荐

