Transformer中的Self-Attention未引入非线性操作

注意力机制

自注意力的输出与输入的张量形状相同,均为(批量大小batch_size,时间步的数目或词元序列的长度num_step,隐藏层大小hidden_size)。

自注意力机制(Self-Attention)未显式引入非线性操作(如ReLU、Sigmoid等)的主要原因可以归结为以下几点:

1. 核心设计目标:关联建模而非非线性变换

自注意力机制的核心功能是建模序列中元素之间的关联性。它通过计算输入元素之间的相似度(点积注意力)来分配注意力权重,再通过加权求和整合全局信息。这一过程本质上是线性组合(线性变换+加权求和),目的是更高效地捕捉长距离依赖和上下文关系。

  • 非线性并非主要需求:自注意力层的目标是建立元素间的关系,而非对输入进行复杂的非线性映射。如果在此处引入非线性,可能会干扰对全局关系的直接建模。

2. 后续模块(FFN)负责非线性表达

Transformer模型通过**前馈神经网络(FFN)**显式引入非线性(如ReLU)。FFN通常由两个线性层和一个激活函数构成,紧跟在自注意力层之后,负责对自注意力输出的特征进行非线性变换和增强。

  • 分工明确:自注意力层专注于全局关联建模,FFN负责特征的非线性转换。这种分工使模型结构更清晰,各模块各司其职。

3. Softmax的隐式非线性

自注意力机制虽然不显式使用激活函数,但其计算过程中包含Softmax归一化操作。Softmax本身是一个非线性函数,能够将注意力分数映射为概率分布。

  • 有限的非线性:Softmax提供了局部非线性,但整体自注意力层的表达能力仍以线性组合为主。这种设计平衡了计算效率和表达能力。

4. 多头注意力的隐式增强

多头注意力(Multi-Head Attention)通过并行多个独立的注意力头,将输入映射到不同的子空间,再拼接结果。虽然每个头的计算是线性的,但多头的组合相当于隐式引入了多组线性变换的联合表达

  • 表达能力提升:多头机制通过不同子空间的投影,增强了模型的表达能力,部分弥补了线性操作的局限性。

5. 简化梯度传播

自注意力层的线性操作(矩阵乘法)具有简单的梯度计算规则,若加入非线性激活函数,可能会增加梯度消失或爆炸的风险(如Sigmoid的饱和区)。

  • 稳定性考量:保持线性操作有助于优化过程的稳定性,尤其是在深层Transformer模型中。

6. 参数效率与计算效率

自注意力层本身已包含大量参数(如Q/K/V的投影矩阵)。若加入非线性激活函数,可能需要额外增加参数(如全连接层的偏置项),导致模型复杂度上升。

  • 轻量化设计:省略非线性操作减少了计算量和内存占用,使模型更适合处理长序列。

总结

自注意力机制未显式引入非线性操作,是为了更高效地建模全局关联性,而将非线性表达能力交给后续的FFN模块。这种设计实现了以下平衡:

  1. 全局关联建模(自注意力)与局部非线性变换(FFN)的分工;
  2. 计算效率表达能力的权衡;
  3. 梯度传播稳定性参数效率的优化。

这种分工明确的架构使得Transformer模型在多种任务中表现出色,同时保持了较高的可扩展性。


Transformer中的Self-Attention未引入非线性操作
https://cosmoliu2002.github.io/posts/self-attn-no-nonlinear/
作者
LiuYu
发布于
2025年3月11日
许可协议