图解Transformer模型(Multi-Head Attention)

本文内容主要源于Attention is all you need: https://arxiv.org/abs/1706.03762

由于本人最近在研究文本的判别式模型,如文本分类任务,所以学习了Transformer,并根据自己的理解制作了PPT介绍总结Transformer中几个比较重要的部分.

文章内容为本人制作的PPT,同时在需要解释的slide写上了补充说明;

主要内容包括

1.Transformer的提出背景;

2.Transformer的Encoder(Scaled Dot-Product Attention,Multi-head-Attention)较为详细的图解,部分图引自《Attention is all you need》一文;

3.虽然本人主要是应用于判别式模型,但是最后简单介绍了包含Decoder部分,梳理了Transformer的整个流程;

Slide 1

Slide 2

Slide 3

 

slide 4,其实很明显,Multi-Head Attention是Transformer最突出的贡献,所以直入主题:

图解Transformer模型(Multi-Head Attention)_第1张图片

slide5 Multi-Head Attention的核心组件-Scaled Dot-Product Attention,以实例"华南"一词的Scaled Dot-Product Attention过程为例逐一图解每个模块的对应工作

图解Transformer模型(Multi-Head Attention)_第2张图片

(1)此处仅以"华南"为例,图解Scaled Dot-Product Attention是如何避免通过Reccurent model来捕获上下文信息,具体做法就是如图通过当前Q与每个K(包括自己)的MatMul;

(2)同时此处为什么要进行放缩(Scale),对应图中有解释;

(3)Mask具体操作如图中文本框解释,作用于红框步骤中,将(1)(2)步骤的计算结果score针对性的屏蔽Mask)

具体屏蔽的是文本向量化过程中,由于文本长度小于Fix_length的Padding部分,在Padding部分对应index的score设为-inf

最后的效果就是使得经过softmax之后,Padding部分给予的attention权重为近似0.

这种类似的操作在Decoder部分也使用了,目的是为了Decoder只关注早于当前输出位置的部分!

slide 6-理解了Scaled-Dot Product Attention ,继续了解Multi-Head Attention,先看其中的Multi-Head是什么意思?

如图蓝框部分为Multi-Head部分的解释,实际上n个head 就是进行n次linear映射出不同的子区域表征空间,更加全面的挖掘不同位置在不同子空间下的信息,同时此设计出于并行计算的考虑。

slide 7 Multi-Head Attention中的Scaled Dot-Product Attention部分(前面详细图解)

slide 8 经过Multi-Head映射多个子空间→Scaled Dot-Product Attention

接下来:

1.将n_Head个子空间得到的编码信息融合(本文中concat拼接)

2.拼接后,Linear回与Transformer模型空间维度(d_model)一致,方便如下图与原始输入INPUTS进行Resnet以及LayerNormalization

图解Transformer模型(Multi-Head Attention)_第3张图片

slide 9

Multi-Head Attention部分已经图解解释完了,Encoder部分后续还经过一个Feed Forward,其实就是两层Linear以及在第一层加入了ReLu激活函数,就不继续讲了。

接下来简单讲下Transformer中是如何应用在生成式模型,如机器翻译任务:

图解Transformer模型(Multi-Head Attention)_第4张图片

在slide中,以中文:"我是中国人" 翻译为 英文为例

1.编码部分(Encoder):

1.1输入文本:"我是中国人" 直接INPUTS ,此处图中为了简洁,省略了word_embedding以及position_embedding过程

1.2绿色框"Encoder"部分对应单个transformer模型的Encoder部分,Encoder的最终输出结果为"K","V"

2.解码部分(Decoder):

2.1初始状态:输出结果仅包含输出起始标志"Start of result"

2.2绿色框"Decoder"部分对应单个transformer模型的Decoder部分,注意transformer结构框图中,在Decode-Encoder Attention部分,即Decoder部分的第二次Multi-Head Attention:其K V 输出是采用Encoder的输出,目的是利用Encoder编码好的K V,帮助Decoder在合适的位置处放置更多的"注意力"(Attention)

2.3Transformer中的Decoder部分的第一个Multi-Head Attention ,也进行了Masked操作,此操作实现及原因在前文提到解释过,上翻!

2.4Decoder部分整体是一个自回归过程,即在Decoder过程中:是一个词一个词预测出来的,当前预测的结果output1,会作为Decoder的输入,参与下一个词的预测,如当前slide预测结果为"I",在下一个预测,见slide10

slide 10

依此循环,直至预测出结束标识符,完成整个模型的任务。

 

至此,大概介绍了Transformer的结构,主要是Encoder部分的Multi-Head Attention部分,同时也简单梳理了整个结构。

希望有所收获的读者能点个“喜欢” 给个赞,谢谢支持!

另外如有误解之处还请原谅指出,谢谢!

你可能感兴趣的