Transformer模型-2-模型架构-灵析社区

小乔学算法

Transformer是什么

Transformer是目前最流行的特征抽取器,在大部分的场景中已经取代了RNN。
从BERT、T5到GPT其基座都是Transformer, 不管哪一个的出现都在相应领域引发了轰动。

Transformer vs RNN

RNN

  1. RNN不能并行。RNN会依赖前一时刻输出的隐层状态,导致RNN必须一步一步走完,无法并行结果是让运行变慢
  2. RNN词间距过长。词间距是两个词相隔的距离,当距离过长可能会导致梯度消失或梯度爆炸等问题。

TRANSFORMER

  1. transformer并行运行且速度极快;
  2. transformer每个词之间的词间距都是1;
上述两点奠定了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的模型架构图如上所示,其中EncoderDecoder都包含6个block,这6个block除了参数各自随机初始化外结构相同基本相同。

Encoder:每一层都有两个子层。

  • 第一层是一个Multi-Head Attention(多头注意机制)
  • 第二层是简单的、位置完全连接的Feed Forward(Feed Forward Neural Network 前馈神经网络),由两个线性变换组成,之间有一个ReLU激活。
  • 每个子层会叠加一个Add&Norm,  即采用残差连接,接着进行特征归一化(标准化),每个子层的输出都是LayerNorm(x +Sublayer(x)),其中Sublayer(x) 是由子层本身实现的函数。

Decoder: 除了每个编码器层中的两个子层之外,解码器还插入第三个子层:

  • 第一层是一个Masked Multi-Head Attention,妈注意力加入了masked 以防止位置关注到后面的位置。这种掩码结合将输出嵌入偏移一个位置,确保对位置的预测 i 只能依赖小于i的已知输出
  • 第二层是 (Cross) Multi-Head Attention,该层对编码器堆栈的输出执行multi-head attention
  • 与编码器类似,在每个子层都叠加一个Add&Norm, 即采用残差连接,接着进行特征归一化(标准化)。
为了方便残差连接,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 。

多头注意力机制的内部结构:

Scaled Dot-Product 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

FeedForward(前馈神经网络)

在进行了Attention操作之后,Encoder和Decoder中的每一层都包含了一个完全连接前馈网络,对每个position的向量分别进行相同的操作,由两个线性变换组成,之间有一个ReLU激活。

Encoder(编码器)

Encoder由2部分组成: 多头注意力前馈神经网络

Decoder(解码器)

Decoder结构与Encoder相似,但是存在一些区别。

  • Decoder 包含两个 Multi-Head Attention 层。
  • 最后有一个 Softmax 层计算下一个单词的概率。

Masked Self-Attention

Mask 表示掩码,它对某些值进行掩盖,使其在参数更新时不产生效果。

Transformer 模型里面涉及两种 mask,分别是 Padding Mask 和 Sequence Mask。其中,Padding Mask 在所有的 scaled dot-product attention里面都需要用到,而 Sequence Mask只有在Decoder的Self-Attention里面用到。

(Cross) Multi-Head Attention

其实这块与上文 Encoder 中 的 Multi-Head Attention 具体实现细节上完全相同,区别在于Encoder的多头注意力里的Q、K、V是初始化多个不同的矩阵得到的。而Decoder的K、V是来自于Encoder的输出,Q是上层Masked Self-Attention的输出。

Linear和softmax

Decoder最后会输出一个实数向量。再通过过一个linear layer将decoder的输出扩展到与vocabulary size一样的维度上。经过softmax 后,选择概率最高的一个word作为预测结果。

总结记录于2023-10-24 修改于2023-11-10 修改原因: 研读了论文的部分内容,感觉文章有误做了修改 优化文章结构,便于阅读

[参考]

papers.nips.cc/paper/2017/…

www.yiyibooks.cn/yiyibooks/A…

www.u72.net/chengxu/sho…

zhuanlan.zhihu.com/p/445856100

阅读量:2022

点赞量:0

收藏量:0