1.模型对比
-
RNN(马尔科夫链式编码)
- 通过递归计算逐个处理 token,当前编码结果 h t h_t ht仅依赖前一步的隐藏状态 h t − 1 h_{t-1} ht−1和当前输入 x t x_t xt
- 局限性:序列建模需严格串行,无法并行;长距离依赖易丢失(梯度消失/爆炸)
- 例:双向 LSTM 需正向+反向两次遍历才能捕获上下文,但仍是局部传递
-
CNN(局部窗口编码)
- 使用固定尺寸的卷积核(如窗口为3)聚合局部上下文信息
- 局限性:单层仅能捕获窗口内的局部特征,需多层堆叠扩大感受野
- 例:深度 CNN 需多层级联才能建模长距离依赖,信息传递路径长
-
Attention(全局交互编码)
- 通过 Query-Key-Value 矩阵计算,直接建立任意两个 token 间的关联
- 核心优势:单层即可全局交互,每个位置的编码融合了序列中所有 token 的信息
- 例:Self-Attention 中,每个词与整个序列计算相似度权重(如公式中的 Q K T / d QK^T/\sqrt{d} QKT/d)
2.Attention的实现方式
1.Attention的常见实现方式
-
加性 Attention (Additive Attention / Bahdanau Attention)
- 公式:
Score ( Q , K i ) = v T tanh ( W q Q + W k K i ) \text{Score}(Q, K_i) = v^T \tanh(W_q Q + W_k K_i) Score(Q,Ki)=vTtanh(WqQ+WkKi) - 特点:通过可学习的参数矩阵 W q , W k W_q, W_k Wq,Wk和向量 v v v计算注意力权重,适用于 Query 和 Key 维度不同的场景。
- 公式:
-
点积 Attention (Dot-Product Attention / Luong Attention)
- 公式:
Score ( Q , K i ) = Q ⋅ K i \text{Score}(Q, K_i) = Q \cdot K_i Score(Q,Ki)=Q⋅Ki - 特点:计算高效(矩阵乘法),但需 Query 和 Key 维度相同;当维度较高时,点积结果可能过大,导致 Softmax 梯度消失。
- 公式:
-
缩放点积 Attention (Scaled Dot-Product Attention)
- 改进点:在点积基础上引入缩放因子 d k \sqrt{d_k} dk,缓解高维点积结果过大的问题。
- 公式:
Attention ( Q , K , V ) = softmax ( Q K T d k ) V \text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V Attention(Q,K,V)=softmax(dkQKT)