理解 Transformer 中的注意力机制
为什么需要注意力机制?
在处理序列数据时,模型需要一种方式来决定”关注”输入的哪些部分。传统的 RNN 通过隐藏状态逐步传递信息,但这种方式在长序列上会遇到梯度消失的问题。
注意力机制提供了一种更直接的方式:让序列中的每个位置都能直接”看到”其他所有位置。
Self-Attention 的核心思想
Self-Attention 的计算可以分为三步:
- Query, Key, Value:对输入的每个 token,生成三个向量 Q、K、V
- 计算注意力分数:通过 Q 和 K 的点积来衡量 token 之间的关联度
- 加权求和:用 softmax 归一化后的分数对 V 加权求和
数学公式:
$$\text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V$$
其中 $\sqrt{d_k}$ 是缩放因子,防止点积值过大导致 softmax 饱和。
Multi-Head Attention
单个注意力头只能捕捉一种类型的关系。Multi-Head Attention 通过并行运行多个注意力头,让模型同时关注不同类型的模式——比如一个头关注语法结构,另一个关注语义关系。
后续探索
在下一篇文章中,我将讨论位置编码(Positional Encoding)的不同实现方式,包括 RoPE 和 ALiBi。