教程是来自https://github.com/datawhalechina/learn-nlp-with-transformers/blob/main/docs/
图解Attention
Attention出现的原因是:基于循环神经网络(RNN)一类的seq2seq模型,在处理长文本时遇到了挑战,而对长文本中不同位置的信息进行attention有助于提升RNN的模型效果。
seq2seq框架
seq2seq(sequence to sequence)是一种常见的NLP模型结构,也就是从一个文本序列得到一个新的文本序列,其典型的任务是机器翻译任务、文本摘要任务。
seq2seq模型的输入可以是一个单词、字母或者图像特征序列,输出是另外一个单词、字母或图像特征序列,以机器翻译任务为例,序列指的是一连串的单词。
seq2seq模型由编码器(Encoder)和解码器(Decoder)组成,绿色的编码器会处理输入序列中的每个元素并获得输入信息,这些信息会被转换成为一个黄色的向量(称为context向量),当我们处理完整个输入序列后,编码器把context向量发送给紫色的解码器,解码器通过context向量中的信息,逐个元素输出新的序列。

以机器翻译任务为例,seq2seq在Transformer还没出现的时候,编码器和解码器一般采用的是循环神经网络RNN,编码器将输入的法语单词序列编码成context向量,然后解码器根据context向量解码出英语单词序列。

context向量本质是一组浮点数,而context的数组长度是基于编码器RNN的隐藏层神经元数量,上图是长度为4的context向量,但在实际应用中,context向量的长度是自定义的,比如可能是256,512或1024。
RNN具体处理输入序列的过程如下:
- 假设输入是一个句子,这个句子可以由 n n n个词表示: s e n t e n c e = w 1 , w 2 , . . . , w n sentence={w_1,w_2,...,w_n} sentence=w1,w2,...,wn。
- RNN首先将句子中的每一个词映射成为一个向量,得到一个向量序列: X = x 1 , x 2 , . . . , x n X={x_1,x_2,...,x_n}

1697

被折叠的 条评论
为什么被折叠?



