注意力模型

好记性不如烂笔头,现在整理一下attention model的各种类型。

什么是attention

一句话来说,attention是一个加权求和,重点是如何计算权重。我们有一个query向量(包含比较多信息的全局向量),一段key向量,利用query对所有key进行加权求和。

背景

在nlp领域,首先将attention用于机器翻译,显然,在进行翻译的时候,会关注不同的原文信息。
具体来说,在机器翻译任务中,query可以定义成decoder中某一步的hidden state,key是encoder中每一步的hidden state,我们用每一个query对所有key都做一个对齐,decoder每一步都会得到一个不一样的对齐向量。

Attention的多种形式

  1. 根据attention的计算区域,可以分为soft attention, hard attention 和 local attention。 Soft attention是比较常见的,也就是我们上面提到的对所有key进行加权求和。而hard attention是直接精确定位到某个key,其他key都忽略。Local attention是两者的折中,通过hard模式定位到某个地方,以此为中心得到一个区域,在该区域内用soft模式。
  2. 根据是否有外部信息,可以分为general attention和self attention。General attention利用了外部信息,即query和key不同。Self attention只使用了内部信息,即query=key=value。
  3. 根据是否划分层次结构,分为单层attention、多层attention和多头attention。前面介绍的都是单层attention。多层attention:对文档进行建模,word-level attention学的句子表示,然后进行sentence-level attention学的文档表示。多头attention是谷歌Attention is All You Need论文里提出的multi-head attention,详细请见笔者Transformer文章。

计算权重的多种方式

通过上面的介绍,我们知道需要计算query和key的相似度。常用的方法如下:
注意力模型
[1] https://blog.****.net/bvl10101111/article/details/78470716
[2] https://zhuanlan.zhihu.com/p/35739040