Transformer是目前最流行的特征抽取器,在大部分的场景中已经取代了RNN。
从BERT、T5到GPT其基座都是Transformer, 不管哪一个的出现都在相应领域引发了轰动。
RNN
TRANSFORMER
上述两点奠定了transformer是目前最流行的特征抽取器。
从整个深度学习流程来描述Transformer所处的工作位置,我们可以简单的把Transformer看成一个盒子:
将上述的盒子展开后会发觉transformer是由encoder与decoder构成,而每个encoder与decoder又由6个相同的层组成,如此盒子变成如下形式:
后续,我们陆续展开transformer内部的结构加以分析与阐述
大部分神经序列转导模型都有一个编码器-解码器结构。 编码器输入序列用x(x1,...,xn)表示,输出用z(z1,...,zn)有示。 根据z解码器生成符号的一个输出序列有用y(y1,...,ym)表示 ,一次一个元素。 在每一步中,模型都是自回归的,当生成下一个时,使用先前生成的符号作为附加输入。
transformer也遵循了encoder-decoder架构,encoder和decoder都使用self-attention和Feed Forward。论文《Attention Is All You Need》中给出transformer的模型架构图如上所示,其中Encoder和Decoder都包含6个block,这6个block除了参数各自随机初始化外结构相同基本相同。
Encoder:每一层都有两个子层。
Decoder: 除了每个编码器层中的两个子层之外,解码器还插入第三个子层:
为了方便残差连接,Transformer模型中的所有子层以及嵌入层产生的输出维度都为dmodel=512d_{model} = 512dmodel=512。
transformer的输入用到了的嵌入(Embedding)将输入词符和输出词符转换为维度为dmodeld_{model}dmodel的向量。
encoder的输入层和decoder的输入层是一样的结构,都是token embedding(词向量)+ positional embedding(位置向量) , 得到最终的输入向量。
其中Word Embedding(词嵌入) 负责将自然语言转化为与其对应的独一无二的词向量表达, 而Position Embedding(位置嵌入) 表示单词出现在句子中的位置。理由是Transformer是使用全局信息,无法捕捉到序列顺序信息的,需要使用Position Embeddin表示句子位置。关于位置编码transform采用了正弦和余弦函数,公式如下:
Attention函数可以描述为将query和一组key-value对映射到输出,其中query、key、value和输出都是向量。 输出为value的加权和,其中分配给每个value的权重通过query与相应key的兼容函数来计算。
query、key、value 在后面的章节中会描述为 Q、K、V
图中红色圈中的部分为 Multi-Head Attention,是由多个Self-Attention组成的,可以看到 Encoder 包含一个 Multi-Head Attention,而 Decoder 包含两个 Multi-Head Attention 。
多头注意力机制的内部结构:
在transformer中 h=8,dmodel=512dk =dv =dmodel∕h =512/8=64h=8, d_{model} = 512 \\ d_k = d_v = d_{model}∕h = 512/8 = 64h=8,dmodel=512dk =dv =dmodel∕h =512/8=64
在进行了Attention操作之后,Encoder和Decoder中的每一层都包含了一个完全连接前馈网络,对每个position的向量分别进行相同的操作,由两个线性变换组成,之间有一个ReLU激活。:
Encoder由2部分组成: 多头注意力、前馈神经网络
Decoder结构与Encoder相似,但是存在一些区别。
Mask 表示掩码,它对某些值进行掩盖,使其在参数更新时不产生效果。
Transformer 模型里面涉及两种 mask,分别是 Padding Mask 和 Sequence Mask。其中,Padding Mask 在所有的 scaled dot-product attention里面都需要用到,而 Sequence Mask只有在Decoder的Self-Attention里面用到。
其实这块与上文 Encoder 中 的 Multi-Head Attention 具体实现细节上完全相同,区别在于Encoder的多头注意力里的Q、K、V是初始化多个不同的矩阵得到的。而Decoder的K、V是来自于Encoder的输出,Q是上层Masked Self-Attention的输出。
Decoder最后会输出一个实数向量。再通过过一个linear layer将decoder的输出扩展到与vocabulary size一样的维度上。经过softmax 后,选择概率最高的一个word作为预测结果。
总结记录于2023-10-24 修改于2023-11-10 修改原因: 研读了论文的部分内容,感觉文章有误做了修改 优化文章结构,便于阅读
[参考]
阅读量:2022
点赞量:0
收藏量:0