1. 注意力机制与FFN的协同作用解析
在Transformer架构中,Attention(注意力机制)和FFN(前馈神经网络)是两个核心组件,它们各司其职又相互配合。简单来说,Attention决定了模型"看哪里",而FFN则负责"理解看到的内容"。这种分工就像人类阅读时的眼睛和大脑的关系——眼睛负责扫描文本的重点区域,大脑则对获取的信息进行深度加工。
1.1 Attention机制的工作原理
Attention机制的核心是计算输入序列中各个位置的重要性权重。以自注意力(Self-Attention)为例,其计算过程可分为三个关键步骤:
- 通过Query、Key、Value三个矩阵将输入向量映射到不同的空间
- 计算Query和Key的点积得到注意力分数
- 对分数进行softmax归一化后与Value加权求和
python复制# PyTorch实现的自注意力简化代码
def self_attention(query, key, value, mask=None):
d_k = query.size(-1)
scores = torch.matmul(query, key.transpose(-2, -1)) / math.sqrt(d_k)
if mask is not None:
scores = scores.masked_fill(mask == 0, -1e9)
p_attn = F.softmax(scores, dim=-1)
return torch.matmul(p_attn, value), p_attn
这种机制使模型能够动态地关注输入序列的不同部分,而无需像RNN那样严格依赖序列顺序。在机器翻译任务中,解码器通过交叉注意力(Cross-Attention)机制可以灵活地查看源语言句子的相关部分,而不受固定窗口大小的限制。
1.2 FFN的结构与功能
FFN通常由两个全连接层和一个激活函数组成,其典型结构为:
code复制输入 → 全连接层(扩大维度) → ReLU → 全连接层(恢复维度) → 输出
FFN的作用可以理解为对Attention提取的特征进行非线性变换和特征整合。实验表明,FFN层中存在着大量与特定任务相关
