NLP |
您所在的位置:网站首页 › transformer机器翻译 › NLP |
文章目录
框架简介Transformer结构EncoderDecoderScaled Dot-Product AttentionMulti-Head AttentionLayer NormalizationMaskPositional EmbeddingPosition-wise Feed-Forward NetworkTransformer优点
框架
Transformer就是一个升级版的Seq2Seq,也是由Encoder和Decoder组成。Transformer抛弃了以往深度学习任 务使用的CNN和RNN,整个网络结构完全是由Attention机制组成,更准确地说是由Self-Attention和Feed Forward Neural Network组成。由于Transformer的Attention(Self-Attention机制)将序列中的任意两个位置之间的距离缩小为一个常量,所以和RNN顺序结构相比具有更好的并行性,更符合现有的GPU框架,和CNN相比,具有直接的长距离依赖。Transformer模型被广泛应用于NLP领域,例如机器翻译,问答系统,文本摘要以及语音识别等。 和经典的Seq2Seq模型一样,Transformer模型也采用了Encoder-Decoder结构。框架图的左半边用Nx框出来 的,就代表一层Encoder,Transformer一共有6层这样的结构。右半边用Nx框出来的则代表一层Decoder,同样也有6层。输入序列首先会转换为词嵌入向量,再与位置编码向量相加后可作为Multi-Head Attention模块的输入, 该模块的输出再与输入相加后将投入层级归一化函数,得出的输出再馈送到全连接层后可得出编码器模块的输出。这样相同的6个编码器模块可构成整个编码器架构。解码模块首先同样构建一个自注意力模块,然后再结合编码器的输出实现Multi-Head Attention,最后送入全连接网络并输出预测词概率。 EncoderTransformer的Encoder由6层相同的层组成,每一层分别由两部分组成: • 第一部分是multi-head self-attention • 第二部分是position-wise feed-forward network,是一个全连接层 两个部分,都有一个残差连接(residual connection),然后接一个Layer Normalization Transformer的Decoder也是由6层相同的层组成,每一层分别由三部分组成: • 第一部分是multi-head self-attention • 第二部分是multi-head context-attention • 第三部分是position-wise feed-forward network,是一个全连接层 和Encoder一样,上面三个部分,都有一个残差连接(residual connection),然后接一个Layer Normalization。 和self-attention不同的context-attention,其实就是普通的attention(Encoder和Decoder之间)。 Step1:输入X,通过3个线性转换把X转换为Q、K、V。如下图,两个单词Thinking,Machines通过嵌入变换会得到两个[1x4]的向量X1,X2。分别与Wq,Wk,Wv三个[4x3]矩阵做点乘得到6个[1x3]向量{q1,q2},{k1,k2},{v1,v2} 理解了Scaled Dot-Product Attention,Multi-Head Attention也很容易理解。Transformer论 文提到将Q、K、V通过一个线性映射之后,分成h份,对每一份进行Scaled Dot-Product Attention效果更好。然后,把各个部分的结果合并起来,再次经过线性映射,得到最终的 输出。这就是所谓的Multi-Head Attention。这里的超参数h就是heads的数量,默认是8。 上面说的分成h份是在dQ、dK和dV的维度上进行切分。因此进入到Scaled Dot-Product Attention的dK实际上等于DK/h。 Multi-head attention的公式如下: Normalization有很多种,但是它们都有一个共同的目的,那就是把输入转化成均值为0 方差为1的数据。在把数据送入激活函数之前进行Normalization,可以避免输入数据落在激 活函数的饱和区。Layer Normalization和Batch Normalization的区别如下图: Mask表示掩码,它对某些值进行掩盖,使其在参数更新时不产生效果。Transformer模型里 面涉及两种Mask,分别是padding mask和sequence mask,其中padding mask在所有的Scaled Dot- Product Attention里面都需要用到,而sequence mask只有在Decoder的Self-Attention里面用到。 Padding Mask:因为每个批次输入序列长度是不一样的,所以我们需要对输入序列进行补齐。具 体来说,就是在给较短的序列后面填充0。由于这些填充的位置其实是没什么意义的,所以 Attention机制不应该把注意力放在这些位置上,需要进行一些处理。具体做法就是把这些位置 的值加上一个非常大的负数(负无穷),这样的话,经过softmax,这些位置的概率就会接近0。 Sequence Mask:为了使得Decoder不能看到未来的信息,也就是对于一个序列,在t时刻,解码 器输出应该只能依赖于t时刻之前的输出,而不能依赖t之后的输出,因此就需要通过Sequence Mask把t之后的信息给隐藏起来。具体做法是产生一个上三角矩阵,上三角的值全为0,下三角 的值全为1,对角线也是1。把这个矩阵作用在每一个序列上,就可以达到目的。 Positional Embedding到目前为止,Transformer结构还没有提取序列顺序的信息,这个信息对于序列而言非常重要,如果缺失 了这个信息,可能我们的结果就是:所有的词语都对了,但是无法组成有意义的语句(此时的Transformer就 相当于一个词袋模型)。为了解决这个问题,Transformer的作者使用了Positional Embedding:对序列中的词 语出现的位置进行编码。 在实现的时候使用正余弦函数。公式如下: 上面的位置编码是绝对位置编码。但是词语的相对位置也非常重要。这就是论文为什么使用三角函数的 原因。正弦函数能够表达相对位置信息,主要数据依据是以下两个公式: 这是一个全连接网络,包含两个线性变换和一个非线性函数(实际上就是ReLU)。公式如下: 1.并行计算,提高训练速度 Transformer用attention代替了原本的RNN;而RNN在训练的时候,当前step的计算要依赖于上一 个step的hidden state的,也就是说这是一个sequential procedure,每次计算都要等之前的计算完成才能展开。而Transformer不用RNN,所有的计算都可以并行进行,从而提高训练速度。 2.建立直接的长距离依赖 原本的RNN,如果第一帧要和第十帧建立依赖,那么第一帧的数据要依次经过第二三四五…九帧传给第十帧,进而产生二者的计算。而在这个传递的过程中,可能第一帧的数据已经产生了 biased,因此这个交互的速度和准确性都没有保障。而在Transformer中,由于有self attention的存在,任意两帧之间都有直接的交互,从而建立了直接的依赖,无论二者距离多远。 3.捕捉层级化信息 构建多层神经网络 4.引入指代信息等丰富上下文信息 Self-attention,Multi-head attention |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |