Attention 就是对输入整体的各个部分分配不同的权重,每一个位置的输出由输入的不同权重加权求和得到
attention 工作实质:
对应于机器翻译时
- 阶段 1 :
z
z
z 对应于
Query
, h h h 对应于Key
,Q 与 K 进行相似度计算得到权值
- 阶段 2:对于求得的 α \alpha α 进行 softmax 归一化得到不同权重
- 阶段 3:Attention Value 等于 权重
α
^
\hat \alpha
α^ 和输入
h
h
h 对应的乘积求和。这里
h
h
h 对应于
Value
attention 框架
在自然语言任务中,往往 K 和 V 是相同的
优点
- 一步到位的全局联系捕捉,可以灵活的捕捉全局和局部的联系
- 并行计算减少模型训练时间(并行是 Encoder 并行,Decoder 还是串行,因为需要前一个状态的输入)
- 在输出序列与输入序列 “顺序” 不同的情况下表现较好,如翻译、阅读理解(输入输出顺序相同时并没有更好地优势,语音识别效果不如 CTC)
- 相比 RNN 可以编码更长的序列信息
缺点
- 不能捕捉语序顺序(一个精致的 “词袋” 模型)
参考链接