Attention & Transformer
由Jay Alammar的博客总结
链接:1. seq2seq and attention 2. transformer
Attention
以下的内容都以机器翻译任务举例。
Seq2seq for translation
传统的seq2seq架构在做机器翻译任务时,encoder部分获取输入句子的embedding,也就是最后一个时间步的hidden state向量,输入到decoder中,经过多个时间步后,得到输出的序列。
但其中存在的问题是:
- 长距离依赖难以获取
- 并行化程度低
Attention mechanism
Attention机制可以在一定程度上解决以上两个问题,针对第一个问题,在计算attention score时,没有距离概念,也就是每一个词和当前词的attention score计算与其距离无关,所以可以避免长距离依赖难以获取的问题。针对第二个问题,attention机制不像RNN那样,每一个时刻输入依赖于上一时刻的输出,而是可以并行计算attention score,得到context vector。
context vector的计算方式(以encoder-decoder架构中decoder部分的计算为例):
比如encoder部分输入三个词,每个词经过encoder,得到的hidden state为: h 1 , h 2 , h 3 h_1, h_2, h_3 h1,h2,h3。
decoder部分:
- 首先输入一个初始化的hidden state向量和标志句子开始的token 的embedding,得到一个hidden state向量