Attention is all you need文献解读
时间: 2025-03-27 19:36:20 浏览: 40
### 关于 'Attention is all you need' 的详细解读
#### Transformer 架构概述
Transformer 是一种基于自注意力机制的神经网络模型,旨在解决序列建模和转换任务中的长期依赖问题。该模型完全摒弃了传统的循环神经网络 (RNN) 和卷积神经网络 (CNN),转而采用纯注意力机制来捕捉输入和输出之间的全局依赖关系[^1]。
#### 主要组成部分
##### 编码器-解码器结构
编码器由多个相同的层堆叠而成,每一层包含两个子层:一个多头自注意力机制子层和一个全连接前馈网络子层。这些子层之间通过残差连接和层归一化操作相连。同样地,解码器也由类似的多层组成,但在每个多头自注意力机制之后还增加了一个额外的“编码器-解码器注意力建议”,用于关注来自编码器的信息。
##### 多头自注意力机制
为了允许模型联合关注不同位置的不同表示子空间,在每个位置上并行运行 h 个独立的注意力函数。对于每一个这样的头部 i=1,...,h ,计算查询 Q_i、键 K_i 和值 V_i 后再加权求和得到最终输出 Z 。这种设计使得模型能够更有效地处理复杂的模式匹配任务。
```python
import torch.nn as nn
class MultiHeadedSelfAttention(nn.Module):
def __init__(self, d_model, num_heads):
super().__init__()
self.d_k = d_model // num_heads
self.h = num_heads
# 定义线性变换矩阵WQ,WK,WV
self.linear_layers = clones(nn.Linear(d_model, d_model), 3)
def forward(self, query, key, value, mask=None):
batch_size = query.size(0)
# 对query,key,value做线性变换,并拆分head维度
qkv = [l(x).view(batch_size, -1, self.h, self.d_k).transpose(1, 2)
for l, x in zip(self.linear_layers, (query, key, value))]
return attention(qkv[0], qkv[1], qkv[2], mask=mask)[0].transpose(1, 2).contiguous().view(batch_size, -1, self.h * self.d_k)
```
##### 前馈全连接网络
紧跟在每个自注意力层后面的是一个简单的两层前馈神经网络(FFN),它应用于各个位置的数据点。这个模块在整个架构中起到了特征映射的作用,帮助提取更高层次上的抽象特性。
#### 工作流程解析
按照论文描述,整个过程可以分为三个主要阶段:
1. **嵌入与位置编码**: 输入序列被转化为固定长度向量并通过加入绝对位置信息来进行增强;
2. **编码器栈运算**: 经过 N 层相同配置的编码单元逐级传递直至最顶层;
3. **解码器预测生成**: 利用已知的目标侧上下文以及源端表征逐步构建目标序列。
#### 性能评估
实验结果显示即使不针对具体应用场景调整超参数设置,仅依靠通用框架本身就能取得优异的成绩——超越除 RNN-Grammar 模型外所有先前报道的方法[^2]。
阅读全文
相关推荐

















