Attention is all you need详细解读
transformer目的是解决NLP中使用RNN不能并行计算问题。
Encoder-Decoder, Attention, Transformer 三者关系
1.基础储备
(1)CV基础知识
1.首先拿CV中的分类任务来说,训练前我们会有以下几个常见步骤:
2.获取图片
3.定义待分类的类别,用数字标签或者one-hot向量标签表示
4.对图片进行类别的标注
5.图片预处理(翻转、裁剪、缩放等)
6.将预处理后的图片输入到模型中
7.对于分类任务来说,模型的输入为预处理过的图片,输出为图片的类别(一般为预测的向量,然后求argmax获得类别)
(2)NLP基础知识
在NLP中,拿翻译任务(英文翻译为中文)来说,训练模型前存在下面步骤:
1.获取英文中文对应的句子
2.定义英文词表(常用的英文单词作为一个类别)和中文词表(一个字为一个类别)
3.对中英文进行分词
4.将分好的词根据步骤2定义好的词表获得句子中每个词的one-hot向量
5.对每个词进行embedding(输入one-hot输出与该词对应的embedding向量)
6.embedding向量输入到模型中去
7.输出为当前预测词的类别(一般为词表大小维度的向量)
(3)tokenize
tokenize:分词 token:标记
text2token:单词 (word) 、字符 (character) 、子词 (subword)
(4)query、key、value
2.Transformer结构
典型的seq2seq结构(encoder-decoder结构)
transformer结构包含input、encoder、decoder、output
Input:输入是单词的Embedding+位置编码
Encoder:循环N次,N层。每一层又可以分成Attention层和全连接层,跳跃连接,加入Normalization层
Decoder:循环N次,第一次输入是前缀信息BOS(Begin of Sentence)标志,之后是上一次产出的embedding+位置编码,进入一个重复多次的模块,直到输出EOS(End of Sentence)。该模块可以分成三块:a.Attention层;b.Cross Attention,不是Self Attention;c.全连接层。也用了跳跃连接和Normalization。
Output:通过Linear层(全连接层),再通过Softmax输出为每个词的预测向量,概率最大对应词表查找对应单词