attention机制说白了就是加权求和。
attention机制之所以看上去繁复冗杂是因为有很多的种类,按照不同的分类标准,可以分为以下几种类型:
1、计算区域
soft attention:对所有key求权重概率,参考所有key进行加权求和。hard attention:精准定位到某个key,此key权重概率为1,其余key为0。local attention:上述两者折中。先基于hard定位到某key,然后在key的一个窗口内应用soft。2、所用信息:假设要对一段原文进行attention处理,可能会用到内部信息和外部信息。
general attention:用到了外部信息,常见于用来构建两段文本关系的任务。query一般包含了外部信息,根据外部query对原文进行对齐。 l2. ocal attention:只使用内部信息,即query、key、value都只和输入原文有关系,如:self attention。3、结构层次
单层attention:用一个query对一段原文进行一次attention。多层attention:比如把一个文档划分成多个句子。第一层对每个句子使用attention计算一个句向量,第二层对所有句向量执行attention生成文档向量进行后续使用。多头attention:可参考《attention is all you need》中的multihead attention。4、模型结构
CNN+attention:可对卷积层输出做attention或者可用attention替换max pooling。LSTM+attention:如对所有step的hidden state进行加权,把注意力集中到整段文本中比较重要的hidden state信息。纯attention:最经典的方案,如《attention is all you need》就属于这种。参考: https://zhuanlan.zhihu.com/p/124218197 https://zhuanlan.zhihu.com/p/35739040