基础Seq2Seq架构
-
编码器:将输入序列 X=(x1,...,xT) 编码为上下文向量 c
ht=fenc(xt,ht−1),c=q(h1,...,hT)
通常取最后一个隐藏状态 c=hT
-
解码器:基于 c 生成输出序列 Y=(y1,...,yT′)
si=fdec(yi−1,si−1,c)
P(yi∣y<i,X)=g(yi−1,si,c)
注意力机制动机
-
传统模型缺陷:
- 上下文向量成为信息瓶颈
- 长序列信息丢失严重
- 缺乏对输入序列的动态关注
-
核心思想:解码时动态关注输入序列的不同部分
注意力机制原理
计算注意力权重
对于解码器时刻 i:
eij=a(si−1,hj)
αij=∑k=1Texp(eik)exp(eij)
其中:
- a 是注意力评分函数
- 常用评分方式:
- 加性注意力:a(s,h)=v⊤tanh(W1s+W2h)
- 乘性注意力:a(s,h)=s⊤Wh
生成上下文向量
ci=∑j=1Tαijhj
解码器改进
si=fdec(yi−1,si−1,ci)
P(yi∣y<i,X)=g(yi−1,si,ci)
注意力机制优势
- 解决信息瓶颈问题
- 支持显式的对齐学习
- 提升长序列处理能力
- 提供可解释的注意力分布
常见变体
| 类型 | 公式 | 特点 |
|---|
| 加性注意力 | eij=v⊤tanh(W1si−1+W2hj) | 计算稳定 |
| 乘性注意力 | eij=si−1⊤Whj | 计算高效 |
| 缩放点积 | eij=dsi−1⊤hj | Transformer使用 |