1. 理解Attention与FFN的分工本质
在Transformer架构中,Attention和FFN(前馈神经网络)这两个核心组件各司其职,形成了完美的功能互补。用人类认知来类比:Attention机制就像我们的视觉焦点系统,决定把"注意力"投向哪里;而FFN则相当于大脑的理解中枢,负责解析聚焦后的信息含义。
1.1 Attention的视觉聚焦特性
Attention机制通过计算query-key的相似度得分,实现了动态权重分配。这个过程有三个关键特点:
-
动态聚焦:不同于CNN的固定感受野,自注意力能根据输入动态调整关注区域。例如在处理"The animal didn't cross the street because it was too tired"时,"it"的注意力权重会自然偏向"animal"而非"street"。
-
全局视野:多头注意力允许模型同时关注不同位置的信息组合。在机器翻译任务中,某个头可能专注主语-动词关系,另一个头则捕捉形容词-名词修饰关系。
-
位置无关:纯注意力机制本身不考虑位置信息,需要依靠位置编码注入序列顺序。这也是为什么Transformer必须配合sin/cos位置编码或相对位置编码使用。
实践提示:当注意力权重出现"弥散"现象(所有位置得分趋近均匀)时,可以尝试增大key的维度或调整温度系数√d_k来强化聚焦效果。
1.2 FFN的信息加工本质
FFN作为两层的全连接网络,其核心功能是:
-
非线性变换:通过ReLU/GELU激活函数,将注意力聚合的信息映射到更高维的语义空间。实验显示FFN层的输出维度通常需要是输入维度的4倍以上才能有效工作。
-
知识存储:研究表明FFN层实际存储了大量领域特定的知识模式。例如在GPT架构中,某些FFN神经元会专门激活特定类别的实体名词。
-
位置敏感:与Attention不同,FFN对输入位置非常敏感。这也是为什么Transformer中每个Attention层后面都要接FFN,形成"全局关注+局部处理"的完整认知闭环。
一个典型的FFN实现如下:
python复制class FeedForward(nn.Module):
def __init__(se
