下面,我主要总结一些在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
如上图所示:通过双向LSTM进行Self-Attention
对应的矩阵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)
= (batch_size, seq_length)=(64, 128, 1)
R = (batch_size, hidden_size)=(64, 100)
4. Transformer-based Text Classification
Scaled Dot-Product Attention如上图所示。
一、上图在Q=K=V 且是 self-Attention (Self-Encoder) 时候可以如下图理解:
当以下输入时:
Q=(batch,, embedding_size)=(128, 32, 20)
K=V=(batch, , embedding_size)=(128, 32, 20)
1.得到 =(batch, , )=(128, 32, 32)
2.通过key masking和query masking,将原本padding token的地方注意力系数进行置0
3.为了得到每个位置上对应的输出embedding=(batch, , embedding_size)=(128, 32, 20), 可将
4. 之后再进行Add & Layer Normalization + Feed Forward Network
5. 通过上述的编码成固定的向量,再做分类即可。
所以,得到单个句子下自注意力权重矩阵 masking alpha score,示意图如下:
上图 score矩阵图中,行代表的是 序列,列代表的是 序列。
二、上图在Q=K=V 且是 self-Attention (Self-Decoder) 时候可以如下图理解:
由于Q的状态 (这里是指decoder时) 是只由当前的输入状态和前面的输入状态有关,与将来的输入状态无关,所以会得到单个句子下自注意力权重矩阵 masking alpha score,示意图如下:
上图 alpha score矩阵图中,行代表的是 序列,列代表的是 序列。
三、在Q != K=V时,即Encoder-Decoder Attention时如下图所示:
上图的意思是:
1. 将要翻译的输入句子 (, hidden_size) 通过多层 Self-Encoder ,编码成一个固定的向量 (, hidden_size) 。
2. 将上述的 Encoder 的向量作为Decoder的=(, hidden_size)。Decoder中上一个输出状态作为=(, hidden_size)。将这两个输入进行 Multi-Head Attention 这个Decoder再得到下一个输出状态 (, hidden_size)。
3. 循环 步骤2 多次,最后将得到的输出状态 (, hidden_size) 进行再映射到字典中,得到 (, vocab_size),从而得到翻译后的句子结果。
参考文献:
细讲 | Attention Is All You Need
从 Transformer 说起