什么是self-attention、Multi-Head Attention、Transformer

本文紧接《什么是Encoder-Decoder、Seq2Seq、Attention?》,目的是从输入输出、以及内部数据流和详细的计算过程角度,去剖析self-attention、Multi-Head Attention、Transformer的原理。

  • self-attention、Multi-Head Attention内部结构和计算原理,我参考的是:《详解Transformer中Self-Attention以及Multi-Head Attention》
  • Transformer全貌结构和Attention结构之外的一些模块原理,我参考的是:《Transformer--论文理解:transformer结构详解》

目录

1 概述

2 Transformer全貌

3 Self-Attention内部结构图

4 Multi-Head Attention内部结构图

5 Transformer其他模块原理


1 概述

  • self-attention:attention机制的一种。
  • Multi-Head Attention:attention机制的一种(其实就是对self-attention做了更多改进)。
  • Transformer:一种模型,它和ResNet分类器模型、Yolo检测器模型平级,都能用这种模型端到端的解决一种问题(它解决的是端到端翻译问题),只是Transformer里面既没有用RNN也没有用CNN,主要用的是Multi-Head Attention以及全连接层等东西。

问题:为什么会提出Transformer模型?

  • RNN:记忆能力有限、无法并行化。
  • LSTM:相对RNN提升了记忆能力,但无法并行化!必须一个时序一个时序的计算。

基于上述难题,谷歌在《Attention is all you need》中,提出transformer:记忆长度可以无限长,且可以并行化。

2 Transformer全貌

论文中原图架构:

什么是self-attention、Multi-Head Attention、Transformer_第1张图片

《Transformer--论文理解:transformer结构详解》中绘制的结构:

(备注:下图encoder部分是6个encoder的堆叠串联,decoder部分也是6个堆叠串联,图中打字错了,右边方块中应该是“decoder”)

什么是self-attention、Multi-Head Attention、Transformer_第2张图片

3 Self-Attention内部结构图

  • Q代表query,后续会去和每一个K进行匹配。
  • K代表key,后续会被每个Q匹配。
  • V代表value,从输入向量中提取得到的信息。
     

什么是self-attention、Multi-Head Attention、Transformer_第3张图片

仔细研究观察输入输出的计算过程,你会发现,很多地方,计算是可以用矩阵计算并行完成的。我们知道,RNN它需要一个一个的去计算输入向量,但self-attention,可以一次性将所有输入向量同时输入,这就解决了计算并行问题。

4 Multi-Head Attention内部结构图

什么是self-attention、Multi-Head Attention、Transformer_第4张图片

Multi-Head Attention和Self-Attention没有太多区别,唯一不同的是,Multi-Head Attention中根据定义的head数,会将输入向量形成的Q,K,V向量均分为几等分。后续独立的对这些均分的东西进行self-attention处理,然后再把出来的结果进行向量长度方向的拼接。

5 Transformer其他模块原理

在《Transformer--论文理解:transformer结构详解》文章中,非常详细的讲解了Transformer中其他模块的原理和计算过程,具体讲解内容如下(每个红色序号都是他会分章节讲解的内容):

在这里插入图片描述

 由于上述博客已经讲的非常详细了,我这里就不重复剖析了,想进一步了解的,特别是Positional Embedding位置编码部分,后续可以去深入研究。

你可能感兴趣的:(主流算法解析,transformer,pytorch,自然语言处理,attention)