一文读懂Attention
1. Attention本质是什么
Attention(注意力)机制模仿了生物观察行为的内部过程,核心逻辑就是从关注全局到关注重点。如人的视觉在处理一张图片时,会通过快速扫描全局图像,获得需要重点关注的目标区域,也就是注意力焦点。然后对注意力焦点投入更多的注意力资源,以获得更多所需要关注的目标的细节信息,并抑制其它无用信息。
2. Encoder-Decoder框架
要理解Attention机制,就需要先介绍下Encoder-Decoder框架,因为大多数的注意力模型是依附于该框架。但Attention机制是一种通用思想,本身并不依赖于特定框架。
2.1 Encoder-Decoder框架结构
下图是常用的Encoder-Decoder框架最抽象的一种表示。
文本处理领域的Encoder-Decoder框架可以这么直观地去理解:可以把它看作适合处理由一个句子(或篇章)生成另外一个句子(或篇章)的通用处理模型。
2.2 Encoder-Decoder 过程
对于句子对<Source,Target>,我们的目标是给定输入句子Source,期待通过Encoder-Decoder框架来生成目标句子Target。过程分为三步。
- Source和Target分别由各自的单词序列构成:
S o u r c e = < x 1 , x 2 . . . x m > T a r g e t = < y 1 , y 2 . . . y n > Source = < x_{1}, x_{2}...x_{m}> \\ Target = <y_{1}, y_{2}...y_{n}> Source=<x1,x2...xm>Target=<y1,y2...yn> - Encoder,对输入source进行编码,将输入句子通过非线性变换转化为中间语义表示C。
C = F ( x 1 , x 2 . . . x m ) C = F(x_{1}, x_{2}...x_{m}) C=F(x1,x2...xm) - Decoder, 根据句子Source的中间语义表达C和之前已经生成的历史信息
y 1 , y 2 . . . y i − 1 生成第i时刻的单词 y i y_{1}, y_{2}...y_{i-1} {\text{生成第i时刻的单词}}y_{i} y1,y2...y