一、Attention
基于循环神经网络(RNN)一类的seq2seq模型,在处理长文本时遇到了挑战,而对长文本中不同位置的信息进行attention有助于提升RNN的模型效果。
1.1 Seq2Seq框架
全称是:sequence to sequence(序列到序列)
来源于两篇论文:
https://papers.nips.cc/paper/5346-sequence-to-sequence-learning-with-neural-networks.pdf
http://emnlp2014.org/papers/pdf/EMNLP2014179.pdf
seq2seq模型的输入可以是一个(单词、字母或者图像特征)序列,输出是另外一个(单词、字母或者图像特征)序列。
1.2 Seq2seq细节
seq2seq模型由编码器(Encoder)和解码器(Decoder)组成。
编码器:编码器会处理输入序列中的每个元素并获得输入信息,这些信息会被转换成为一个context向量。
解码器:解码器通过context向量中的信息,逐个元素输出新的序列。
seq2seq模型中的编码器和解码器一般采用的是循环神经网络RNN(Transformer模型还没出现的过去时代)。编码器将输入的法语单词序列编码成context向量,然后解码器根据context向量解码出英语单词序列。
RNN如何具体地处理输入序列的?
1、假设输入是一个句子,句子由n个词表示
2、RNN首先将句子中的每一个词映射成为一个向量得到一个向量序列: ,每个单词映射得到的向量通常又叫做:word embedding。
3、然后在处理第个时间步的序列输入
时,RNN网络的输入和输出可以表示为:
输入:RNN在时间步的输入之一为单词
经过映射得到的向量
。
输入:RNN另一个输入为上一个时间步得到的hidden state向量
,同样是一个向量。
输出:RNN在时间步t的输出为 hidden state向量。
例如:编码器首先按照时间步依次编码每个法语单词,最终将最后一个hidd