零基础学习Transformer:multi-head self-attention layer and multi-head attention layer

Multi-Head Attention

Multi-Head Self-Attention

零基础学习Transformer:multi-head self-attention layer and multi-head attention layer_第1张图片
单头self-attention layer就是由单一的self-attention构成。多头self-attention是由多个单头self-attention组成,其具有单独的参数矩阵,互相不共享参数。
零基础学习Transformer:multi-head self-attention layer and multi-head attention layer_第2张图片
在多头self-attention layer中,单头self-attention的输入都是相同的,但是参数矩阵不相同,因此不同的单头self-attention的输出c矩阵也是不相同的。将多个单头self-attention的输出堆叠起来作为多头self-attention的输出。
零基础学习Transformer:multi-head self-attention layer and multi-head attention layer_第3张图片

Multi-Head Attention

在多头attention layer中,每一个的单头attention的输入都是x和x’,同样的,各个单头attention互相不共享参数,因此输出的结果也是不同的。单头attention的输出堆叠起来就是多头attention layer的输出。
零基础学习Transformer:multi-head self-attention layer and multi-head attention layer_第4张图片

Stacked Self-Attention Layer

通过multi-Head Self-Attention 和全连接层搭建一个encoder网络。
x 1 , x 2 , . . . , x m x_1,x_2,...,x_m x1,x2,...,xm作为encoder网络的输入,首先进入多头self-attention layer,其中是多个单头self-attention,输出c矩阵。接着c矩阵作为下一层dense layer的输入进行计算,最终输出u矩阵。encoder网络的输入和输出的大小是相通的。
零基础学习Transformer:multi-head self-attention layer and multi-head attention layer_第5张图片
u : i u_{: i} u:i依赖于所有 x i x_i xi向量,改变其中任意x的值, u : i u_{: i} u:i都会发生改变,但是影响 u : i u_{: i} u:i最大的是其相对应的 x i x_i xi。因为在多头self-attention layer中,各个单头self-attention是有各自的参数且在dense layer中相互不共享权重,因此输出的u矩阵结果是不相同的。堆叠Multi-Head Self-Attention Layer可以搭建多层,类似多层RNN。
零基础学习Transformer:multi-head self-attention layer and multi-head attention layer_第6张图片

Transformer’s Encoder

encoder网络中一个Block包含一个Multi-Head Self-Attention和一个全连接层,其中m是输入序列的长度,输入序列中的向量x都是512维的。
encoder网络结构如图所示。输入和输出的大小相同,可以采用resnet的skip-connection把输入加到输出上(?)。transformer中的encoder网络一共有6个blocks,每个block都有两层且有自己的参数,blocks之间不共享参数,最终输出和输入的大小实现相同的。
零基础学习Transformer:multi-head self-attention layer and multi-head attention layer_第7张图片

Transformer’s Decoder

利用attention层来搭建transformer的decoder网络。transformer是一个Seq2Seq模型,其有一个编码器和一个解码器,输入是两个序列。还是英语翻译德语的例子,那么encoder网络的输入 x 1 , x 2 , . . . , x m x_1,x_2,...,x_m x1,x2,...,xm是需要翻译的英语句子,decoder网络的输入 x 1 ′ , x 2 ′ , . . . , x t ′ x'_1,x'_2,...,x'_t x1,x2,...,xt是生成的德语单词。
零基础学习Transformer:multi-head self-attention layer and multi-head attention layer_第8张图片
transformer是一个Seq2Seq模型,其有一个编码器和一个解码器,输入是两个序列。
零基础学习Transformer:multi-head self-attention layer and multi-head attention layer_第9张图片
搭建decoder网络的第一个block。 block的第一层是一个Multi-Head Self-Attention 输入是 x 1 ′ , x 2 ′ , . . . , x t ′ x'_1,x'_2,...,x'_t x1,x2,...,xt,输出是 c : 1 , c : 2 , . . . , c : t c_{:1},c_{:2},...,c_{:t} c:1,c:2,...,c:t,其大小都是512维。
零基础学习Transformer:multi-head self-attention layer and multi-head attention layer_第10张图片
第二层是Multi-Head Attention,有两个输入。一个输入是 u : 1 , u : 2 , . . . , u : m u_{:1},u_{:2},...,u_{:m} u:1,u:2,...,u:m,是encoder网络的输出;一个输入是 c : 1 , c : 2 , . . . , c : t c_{:1},c_{:2},...,c_{:t} c:1,c:2,...,c:t,是Multi-Head Self-Attention的输出。有一个输出 z : 1 , z : 2 , . . . , z : t z_{:1},z_{:2},...,z_{:t} z:1,z:2,...,z:t,其各个向量的大小都是512维。
零基础学习Transformer:multi-head self-attention layer and multi-head attention layer_第11张图片
第三层是一个全连接层。全连接层的输入是 z : 1 , z : 2 , . . . , z : t z_{:1},z_{:2},...,z_{:t} z:1,z:2,...,z:t,其中的参数都是相同的,计算公式: S : i = ReLU ⁡ ( W S Z : i ) \mathbf{S}_{: i}=\operatorname{ReLU}\left(\mathbf{W}_{S} \mathbf{Z}_{: i}\right) S:i=ReLU(WSZ:i)。将所有的输入 z : 1 , z : 2 , . . . , z : t z_{:1},z_{:2},...,z_{:t} z:1,z:2,...,z:t都映射到 s : 1 , s : 2 , . . . , s : t s_{:1},s_{:2},...,s_{:t} s:1,s:2,...,s:t向量上。零基础学习Transformer:multi-head self-attention layer and multi-head attention layer_第12张图片
decoder网络的一个block一共有三层,分别是:Multi-Head Self-Attention层、Multi-Head Attention层和全连接层。一个block需要两个输入序列,其序列的长度分别是m和t,序列中的向量都是512维的;有一个输出序列,输出序列的长度是t,同样是512维。英语翻译成德语的例子中,这个block中m的大小就是英语句子的长度,t就是已经生成德语单词的数量。
零基础学习Transformer:multi-head self-attention layer and multi-head attention layer_第13张图片

Transformer Model

Encoder和Decoder网络相结合就是transformer模型。 X X X矩阵是encoder网络的输入,经过encoder后得到输出矩阵 U U U,输入和输出的大小是相同的。decoder网络中有两个输入和一个输出,在decoder网络中最底层的block一个输入是encoder网络的输出矩阵 U U U,另一个输入是序列 x 1 ′ , x 2 ′ , . . . , x t ′ x'_1,x'_2,...,x'_t x1,x2,...,xt。在英语翻译德语的例子中,m是英语句子的长度,t是已经生成的德语单词长度,每一个向量都是512维的。decoder的输出大小与 x 1 ′ , x 2 ′ , . . . , x t ′ x'_1,x'_2,...,x'_t x1,x2,...,xt相同。零基础学习Transformer:multi-head self-attention layer and multi-head attention layer_第14张图片

Compare with RNN Seq2Seq Model

RNN Seq2Seq Model和Transformer模型都有两个序列作为输入,都有encoder 和decoder。RNN Seq2Seq模型与transformer模型的输入/输出大小是一样的。因此transformer模型的使用和RNN是完全相同的,RNN能做的transformer模型一样能做。
零基础学习Transformer:multi-head self-attention layer and multi-head attention layer_第15张图片

总结

通过单头Self-attention的堆叠构建多头self-attention。其中每一个单头self-attention有自己的参数,输出各自的结果矩阵 C C C
零基础学习Transformer:multi-head self-attention layer and multi-head attention layer_第16张图片

  • 单头self-attention通过堆叠构成多头self-attention layer
  • 单头attention同样也是通过堆叠构成多头attention layer
    transformer中的encoder网络就是通过多头self-attention和全连接层搭建而成。encoder网络中每一个block都包含两层,一层是多头self-attention layer,一层是dense layer。每一个block的输入输出大小都是512Xm,m是输入序列的长度。encoder网络一共用了6个这样的block。
    零基础学习Transformer:multi-head self-attention layer and multi-head attention layer_第17张图片
    transformer中decoder网络通过Multi-Head Self-Attention层、Multi-Head Attention层和全连接层构成。decoder的一个block由一层多头self-attention layer,一层多头attention layer和一层dense layer构成,decoder网络由6个这样的block组成。两个输入序列的大小分别为512Xm和512Xt,输出序列的大小是512Xt
    零基础学习Transformer:multi-head self-attention layer and multi-head attention layer_第18张图片
    transformer是一个Seq2Seq模型,其包含一个encoder网络和一个decoder网络。在transformer中没有RNN架构,是直接基于attention和self-attention搭建的。零基础学习Transformer:multi-head self-attention layer and multi-head attention layer_第19张图片

你可能感兴趣的:(transformer,深度学习,人工智能,attention)