注意力机制概述
什么是注意力机制?
- 加权求和机制/模块
传统注意力机制
加权求和模块:神经网络中的一个组件,可以单独使用,但更多地用作网络中的一部分。
注意力模型结构
输入:Q,K
输出:Att-V
功能:对于集合K,求相对Q各个元素的权重,然后按权重相加形成Q要的结果
步骤:
1、计算f(Q,K)
2、 s o f t m a x ( f ( Q , K i ) ) softmax(f(Q,K_{i})) softmax(f(Q,Ki))(计算对于Q各个Ki的权重)
3、计算输出(各Ki乘以自己的权重,然后求和)
注意力模块训练
将模块放入整体模型中,不需要额外的训练数据权重可以由模块中的参数学到
注意力模块评价
放到各个任务中检验,通过任务指标的提升证明模块的效果
注意力模块应用
应用场景:网络中有“求和”的地方都可以用
优点:
- 根据不同场景动态选择不同的关注对象
- 不考虑词之间的距离直接计算依赖关系,提升任务性能
作用:等权处理->加权处理->提升任务效果
软注意力Soft Attention
在求注意力分配概率分布的时候,对于输入句子X中任意一个单词都给出个概率,是个概率分布
硬注意力Hard Attention
直接从输入句子里面找到某个特定的单词,然后把目标句子单词和这个单词对齐,而其他输入句子中的单词硬性地认为对齐概率为0
全局注意力Global Attention
考虑所有词,全为k
局部注意力Local Attention
本质是Soft AM和Hard AM的一个混合或折衷,选一部分为k
注意力编码机制
通过建立序列各元素之间的关联关系形成一种序列表示(按元素之间关系对序列进行编码);或通过不同序列元素之间的关联关系形成不同序列间的融合表示
注意力机制作为编码机制主要有:
1、单一向量编码:将输入序列按规则编码成单一向量表示
2、不同序列间编码:将2个序列编码成二者的融合的表示序列
3、同一序列自编码:利用多头自注意力编码对一个句子编码可以起到类似句法分析器的作用
单一向量编码
通过建立序列K各元素与Q之间的关联关系形成单一向量表示(按元素之间关系对序列进行编码)
- Q为确定值的句向量编码(句表示)
- Q为隐变量的句向量编码(句表示),可根据需要设定, 可以是变量
- 对序列中某元素的真正上下文编码(词编码)
不同序列间编码
将二个序列编码成二者的融合的表示序列(如,匹配任务和阅读理解任务常用的融合层表示)
同一序列自编码
利用多头自注意力编码对一个句子编码可以起到类似句法分析器的作用
Q=K=V
多头注意力机制:
多头(Multi-Head)就是做多次同样的事情(参数不共享),然后把结果拼接