最近看了很对关于attention机制的文章,发现很多都讲的很抽象,有的很难理解。在这里做一次归纳性的总结,语言尽可能的精简。有讲错的地方欢迎指正。
概念
attention机制的本质是从关注全部到关注整体。
举个例子,比如视线追踪,他可以实时的显示你关注的地方,比如下图,途中白色的圈表示关注的地方(忽略中国boy奇怪的关注点)
原理
下面是attention机制的工作过程,以翻译为例
它使用的是encoder-decoder架构,但并不是所有的attention机制都是这个架构的。比如在做情感分析时,很多models都用了attention机制,但是大部分都是把获得的注意力作为一个权重向量/矩阵使用。
下图是剥离encoder-decoder的attention机制
其中Q是查询向量,K={key1,key2,…,keyn}是键向量,V={value1,value2,…,valuen}是值向量。
大白话来说,就是在仓库(source)里面有很对的货物(value),每一个货物都有自己编号(key)。当我们想从仓库中找电脑(query)时,我们就可以找与电脑相关的货物(越是相关的分配的权重就越高)。
计算过程
下图是attention机制的计算过程图,主要分为三个阶段 阶段一,Q和K进行相似度计算,得到权重
阶段二,将权重进行归一化处理,得到直接可用的权重
阶段三,将权重进行加权求和
attention机制的优点
- 参数少
- 运行快
- 效果好