attention mechanism evolution

注意力机制演进史:从 Bahdanau 到 Flash Attention 3

1. 注意力机制的起源:Bahdanau Attention (2014) 注意力机制的故事始于机器翻译。2014 年,Bahdanau 等人提出了 Additive Attention,解决了 seq2seq 模型中固定长度编码瓶颈的问题。 核心思想:解码器的每一步不再只依赖一个固定的上下文向量,而是"关注"源序列的不同部分。 # Bahdanau Additive Attention 的 PyTorch 实现 class BahdanauAttention(nn.Module): def __init__(self, hidden_size): super().__init__() self.W_query = nn.Linear(hidden_size, hidden_size, bias=False) self.W_key = nn.Linear(hidden_size, hidden_size, bias=False) self.V = nn.Linear(hidden_size, 1, bias=False) def forward(self, query, keys, values): """ query: (batch, hidden) - 解码器当前状态 keys: (batch, src_len, hidden) - 编码器所有隐状态 values: 同 keys """ # 扩展 query 以与 keys 对齐 query_expanded = query.unsqueeze(1) # (batch, 1, hidden) # 加性注意力: score = V^T * tanh(W_q * q + W_k * k) scores = self.V( torch.tanh( self.W_query(query_expanded) + self.W_key(keys) ) ) # (batch, src_len, 1) scores = scores.squeeze(-1) # (batch, src_len) # 注意力权重 attn_weights = F.softmax(scores, dim=-1) # (batch, src_len) # 加权求和 context = torch.bmm(attn_weights.unsqueeze(1), values) # (batch, 1, hidden) context = context.squeeze(1) # (batch, hidden) return context, attn_weights 1.1 Luong Attention (2015) Luong 提出了多种变体,其中 Dot-Product Attention 影响最为深远: ...

2026-06-25 · 7 min · 1453 words · 硅基 AGI 探索者
鲁ICP备2026018361号