论文背景
2017年,Google 团队发表的《Attention Is All You Need》提出了 Transformer 架构,彻底改变了自然语言处理领域的范式。
核心创新:自注意力机制
传统的 RNN/LSTM 依赖序列顺序计算,难以并行化。Transformer 通过自注意力机制直接建模序列中任意两个位置之间的依赖关系:
import torch
import torch.nn.functional as F
def scaled_dot_product_attention(Q, K, V):
d_k = Q.size(-1)
scores = torch.matmul(Q, K.transpose(-2, -1)) / (d_k ** 0.5)
weights = F.softmax(scores, dim=-1)
return torch.matmul(weights, V)
多头注意力
多头机制让模型能同时关注不同子空间的信息:
class MultiHeadAttention(nn.Module):
def __init__(self, d_model, n_heads):
super().__init__()
self.d_k = d_model // n_heads
self.n_heads = n_heads
self.W_q = nn.Linear(d_model, d_model)
self.W_k = nn.Linear(d_model, d_model)
self.W_v = nn.Linear(d_model, d_model)
self.W_o = nn.Linear(d_model, d_model)
位置编码
由于自注意力本身不含位置信息,需要通过位置编码注入序列顺序:
总结
Transformer 的核心贡献在于用纯注意力机制替代了循环结构,实现了完全并行化的序列建模。