Attention
-
是隐藏状态 的权重
-
用 softmax 得到一个强度表征
-
为什么需要使用 softmax 做归一化 #card #incremental
-
避免 attention score 数值过大,导致优化不稳定(数值小的部分)
-
保证 score 非负
-
-
是注意力打分机制
-
代表 :-> 解码器状态 和解码器状态 之间的匹配程度
-
常用的注意力计算方式
- 加性模型 :->
- qkv 矩阵较大时效果超越 dot production
- 点积模型 :->
- 不需要额外参数,但是两个矩阵大小需相同
- 缩放点积模型 :->
- 双线性模型 :->
聚焦式(focus)注意力:
- 加性模型 :->
-
自上而下的有意识的注意力,主动注意——是指有预定目的、依赖任务的、主动有意识地聚焦于某一对象的注意力。
流程可视化
为什么要用 attention
-
参数少,速度快,能缓解神经网络模型复杂度。解决 RNN 不能并行计算问题
-
效果显著
按计算区域划分
-
soft-attention(global attention) :-> query 对所有 key 求相似度权重,得到 m*n 的 attention score
-
hard-attention :-> 直接精准定位到某个 key,其余的 key 不管,单个样本 query 仅对单个 key 进行相似度计算,得到 m*1 的 attention score
-
local-attention :-> hard定位单个key,以这个 key 为中心取周围区域,计算各个窗口的 soft-attention,得到 m*k 的 attention score
按所用信息 -
general-attention :-> 利用外部信息,用于构建两段文本之间关系的任务
-
[[self-attention]] :-> 只使用内部信息,寻找原文内部的关系。
按使用模型 -
CNN 是基于 N-gram 的局部编码,RNN 由于梯度消失问题也只能建立短距离依赖。
-
解决上面的问题有两种方法:利用深层神经网络来获取远距离的信息交互或者是使用全连接网络。
-
[[LSTM]] 对所有 step 的 hidden state 进行加权,注意力集中到整段文本中比较重要的 hidden state 信息。
[[Attention 按 QKV 划分]]
注意力计算方式 Neural Machine Translation by Jointly Learning to Align and Translate
Ref