2019-02 Attention机制

 下面,我主要总结一些在NLP中,尤其结合文本分类的场景任务中,一些Attention思想的重要原理和细节。

1. Soft Attention & Hard Attention

 Soft Attention是我们通常认知的那个Attention,它主要是软对齐注意,也就是在一个文本中,每个词都有对应的注意力权重;
 Hard Attention则是一种强行对齐的注意力,也就是说在一个文本句子中,强行要挑选一个单词,其注意力权重是100%,其他单词的注意力权重是0。
 所以,在文本中,强行一一对应的难度很大,但是在图像处理领域,是有成功的应用的。

2. Global Attention & Local Attention

 这里的Global和Local是显而易见的,这是对于Encoder中所有的隐藏层状态而言。
 如果是Encoder时全部用到了hidden states, 那么就是Global
 如果是Encoder时局部用到了hidden states, 那么就是Local

3. Attention-based Text Classification

Attention_based Encoder.png

如上图所示:通过双向LSTM进行Self-Attention
\alpha = softmax(W \cdot tanh(H)); Here, H=[h_1,h_2,...h_6]
R = H \cdot \alpha
H_r= tanh(R)

对应的矩阵size分析如下:
 (hidden_size=100, seq_length=128, batch_size=64)
 W = (hidden_size, 1)=(100, 1)
 H = (batch_size, seq_length, hidden_size)=(64, 128, 100)
\alpha = (batch_size, seq_length)=(64, 128, 1)
 R = (batch_size, hidden_size)=(64, 100)

4. Transformer-based Text Classification

Transformer.png

 Scaled Dot-Product Attention如上图所示。

一、上图在Q=K=V 且是 self-Attention (Self-Encoder) 时候可以如下图理解:

self-encoder.png

  当以下输入时:
  Q=(batch,T_q, embedding_size)=(128, 32, 20)
  K=V=(batch, T_k, embedding_size)=(128, 32, 20)
  1.得到 \alpha=(batch, T_q, T_k)=(128, 32, 32)
  2.通过key masking和query masking,将原本padding token的地方注意力系数进行置0
  3.为了得到每个位置上对应的输出embedding=(batch, T_q, embedding_size)=(128, 32, 20), 可将 \alpha V=(128, 32, 32) \times (128, 32, 20)
  4. 之后再进行Add & Layer Normalization + Feed Forward Network
  5. 通过上述的编码成固定的向量,再做分类即可。

  所以,得到单个句子下自注意力权重矩阵 masking alpha score,示意图如下:

Self-Encoder.png

  上图 \alpha score矩阵图中,行代表的是 T_q 序列,列代表的是 T_k 序列。

二、上图在Q=K=V 且是 self-Attention (Self-Decoder) 时候可以如下图理解:

self-Decoder.png

  由于Q的状态 (这里是指decoder时) 是只由当前的输入状态和前面的输入状态有关,与将来的输入状态无关,所以会得到单个句子下自注意力权重矩阵 masking alpha score,示意图如下:

Self-Decoder.png

  上图 alpha score矩阵图中,行代表的是 T_q 序列,列代表的是 T_k 序列。

三、在Q != K=V时,即Encoder-Decoder Attention时如下图所示:

Encoder-Decoder Attention.png

  上图的意思是:
  1. 将要翻译的输入句子 (T_k, hidden_size) 通过多层 Self-Encoder ,编码成一个固定的向量 (T_k, hidden_size) 。
  2. 将上述的 Encoder 的向量作为Decoder的input_1=(T_k, hidden_size)。Decoder中上一个输出状态作为input_2=(T_q, hidden_size)。将这两个输入进行 Multi-Head Attention 这个Decoder再得到下一个输出状态 (T_q, hidden_size)。
  3. 循环 步骤2 多次,最后将得到的输出状态 (T_q, hidden_size) 进行再映射到字典中,得到 (T_q, vocab_size),从而得到翻译后的句子结果。



参考文献:
细讲 | Attention Is All You Need
从 Transformer 说起

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 本文参与#漫步青春#征文活动,作者:叶韵欣,本人承诺,文章内容为原创,且未在其他平台发布。 驻足 是否,有一个人,...
    欣欣_00a5阅读 195评论 0 0
  • 晚上吃的鸡腿便当牙缝里还留了几小块,舌头怎么也舔不出来,用手拔了半天,拔完再吃了。吃完觉得实在有点撑,本想出...
    安静地晕阅读 255评论 0 0
  • 文/大熊飞罐 又是一年春草绿,楼下和微信朋友圈里早已鲜花盛开。不过,恐怕不是每个人都有一份轻松而近于愉悦的心境。 ...
    大熊飞罐阅读 384评论 0 5