赞
踩
2.1 自注意力模型(Self-Attention Model)的设计思想来源于解决循环神经网络在解决长序列数据时遇到的问题:
输入一个Xi[x1,x2x3,...xn]的序列。
Seq2Seq模型往往采用编码器-解码器(Encoder-Decoder)的结构设计,主要应用于异步的序列到序列的深度学习任务。其中编码器负责理解和抽象输入序列的信息,然后传递给解码器生成输出序列。解码器生成输出序列时需要两部分信息输入:一是编码器传递过来的抽象了全局输入的信息;二是解码器在上一个阶段的输出信息。
解码器使用Masked Self-Attention。Masked Self-Attention与Self-Attention的主要区别在于:Masked Self-Attention只根据当前位置和之前的输入片段来计算影响力,而不是使用每个qi和所有输入片段的ki来计算影响力。也就是说,我们只能根据历史信息预测现在,而不能根据未来信息预测现在。如图所示,第二个输入只会根据第一个输入的情况计算影响力,而不会去计算与第三和第四个输入的影响力。在生成模型的场景,我们还不知道后面会生成哪些内容,只知道之前生成了哪些内容。Self_Attention是需要计算全局的输入ki的情况。
将编码器的全局信息传递到解码器中去,一个常用的设计是使用Cross Attention结构。如图所示,将解码器本时刻的输入向量作为qi(解码器输入qi),按照自注意力的计算方法,qi分别与编码器中的ki和vi进行计算,从而实现将编码器生成的全局信息引入到解码器中。
Transformer模型包括编码器和解码器两部分,都是层次堆叠式的结构,不妨称之为Transformer Encoder Layer和Transformer Decoder Layer,(Transformer编码器使用的多头自注意力机制Self_Attention,解码器使用的是Masked Self-Attention)。如图所示,假设编码器和解码器都为6层,将Transformer的核心部分进行展开,Transformer编码器的输出向量会分别输入至每层的Transformer Decoder Layer中,与多头自注意力模块进行信息融合。
transformer是编码器和解码器的结构。
每个编码层包含四个模块:多头注意力层(Multi-Head Attention)、加与规范层(Add&Norm)、前馈层(Feed Forward)和加与规范层(Add&Norm)。
多头自注意力(Multi-Head Self-Attention,MHSA)的本质是多组自注意力计算的组合,每组注意力计算被称为一个"头",不同组注意力的计算是相互独立的。(Transformer一般是8头)
下图是多头自注意力计算示意图,是一个H头自注意力的计算。首先输入序列X∈RL×D被映射到了不同的Q、K、V向量空间,然后根据头数H将Q、K、V向量沿着最后一维等分为H份,然后在每一份Q、K、V子空间中分别执行自注意力计算得到[head1,…,headH],最后将输出结果进行拼接,作为最终的输出向量Z。
每个的Transformer Encoder Layer包含2个加与规范层(Add&Norm),其作用是通过加入残差连接和层规范化两个组件,使得网络训练更加稳定,收敛性更好。
这里以第1个加与规范层为例,假设多头自注意力的输入和输出分别为X∈RL×D和Z∈RL×D,那么加与规范层可以表示为
L=LayerNorm(X+Z)
其中L∈RL×D,LayerNorm表示层规范化。接下来,向量L将经过前馈层和第2个加与规范层的计算,获得本层Transformer Encoder的输出向量O∈RL×D。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。