attention机制 简单理解(废弃) 说实话看不太懂 太抽象


在反复回卷的attention中,本人感觉心里憔悴

一定得总结一个俺能看懂的文章 最近发现了这样的一篇

感谢:

https://zhuanlan.zhihu.com/p/77307258

https://jalammar.github.io/illustrated-transformer/

https://zhuanlan.zhihu.com/p/91839581

阿里妹导读:曾被 paper 中各种各样的 Attention 搞得晕晕乎乎,尽管零零散散地整理过一些关于Attention 的笔记,重点和线索依然比较凌乱。今天,阿里巴巴工程师楠易,将 Attention 的知识系统性地梳理、回顾、总结,不求深刻,但求浅显,希望能帮助对 Attention 有疑惑的同学。

0. 什么是attention

Attention(注意力)机制如果浅层的理解,跟他的名字非常匹配。他的核心逻辑就是「从关注全部到关注重点

1. attention 分类

涉及所有的 attention 都继承于这个抽象类。这里我写了两个抽象类,一个叫 alignment-based,一个叫 memroy-based。

1.1 alignment-based 模型

c 为 context y1 y2 —–yn 为输入 input 输出为z

1.2 拆分 attention model

分为三部曲

  • score function :度量环境变量与当前输入向量的相似性;在当前环境下,应该关注哪些信息

  • alignment function:计算attention weight (权重) 通常使用softmax进行归一化

  • generate context vector function : 根据 attention weight 得到输出向量

在整体视角下,就像下图这个样子:

1.3 memory-based 模型 长得很像transformer

另一种视角是 QKV模型,假设输入为 q,Memory 中以(k,v)形式存储需要的上下文。感觉在 Q&A 任务中,这种设置比较合理,transformer 是采用的这种建模方式。k 是 question,v 是 answer,q 是新来的 question,看看历史 memory 中 q 和哪个 k 更相似,然后依葫芦画瓢,根据相似 k 对应的 v,合成当前 question 的 answer

1.4 建模方式

三步

  • address memory (score function): 在memory找相似的东西

  • normalize(alignment function) :

  • read content( gen context vector function ):

2. attention 细节

在attention机制中,其建模方式主要就是以下的三类 按人话说

  • 找相关 度量环境向量与当前输入向量的相似性;找到当前环境下,应该 focus 哪些输入信息( score-function )
  • 算权重 计算 attention weight,通常都使用 softmax 进行归一化 ( alignment function )
  • 出结果 根据 attention weight 得到输出向量 ( generate context vector function )

2.1 score function 的区别

score function 在本质上是度量两个向量的相似度。找出相关的部分

  • 两个向量在一个空间

使用 dot 点乘方式(或者 scaled dot product,scaled 背后的原因是为了减小数值,softmax 的梯度大一些,学得更快一些),简单好使。

  • 不在同一个空间

需要一些变换(在一个空间也可以变换),additive 对输入分别进行线性变换后然后相加,multiplicative 是直接通过矩阵乘法来变换

2.2 alignment function 区别

在 soft attention 中,又划分了 global/local attention 。

global attention 是所有输入向量作为加权集合,使用 softmax 作为 alignment function,local 是部分输入向量才能进入这个池子。

  • local的目的

背后逻辑是要减小噪音,进一步缩小重点关注区域。

  • 如何缩小关注区域

local-m 基于的假设生硬简单,就直接 pass了。local-p 有一个预估操作,预计当前时刻应该关注输入序列(总长度为S)的什么位置 pt(引入了两个参数向量,vp,wp),然后在 alignment function 中做了一点儿调整,在 softmax 算出来的attention wieght 的基础上,加了一个以 pt 为中心的高斯分布来调整 alignment 的结果。

在应用中 发现 从global/local 视角的分类来看,更常用的依然还是 global attention,因为复杂化的local attention 带来的效果增益感觉并不大

2.3 generate context vector function

soft/hard attention

最直观的一种理解是,hard attention 是一个随机采样,采样集合是输入向量的集合,采样的概率分布是alignment function 产出的 attention weight。因此,hard attention 的输出是某一个特定的输入向量。soft attention 是一个带权求和的过程,求和集合是输入向量的集合,对应权重是 alignment function 产出的 attention weight。hard / soft attention 中,soft attention 是更常用的(后文提及的所有 attention 都在这个范畴),因为它可导,可直接嵌入到模型中进行训练,hard attention 文中 suggests a Monte Carlo based sampling approximation of gradient。