当前位置:   article > 正文

Transformer小白入门_transformer入门

transformer入门

Transformer小白入门

一、举例说明Transformer的整体工作原理

\quad 首先将这个模型看成是一个黑箱操作。在机器翻译中,就是输入一种语言,输出另一种语言。
在这里插入图片描述
\quad 那么拆开这个黑箱,我们可以看到它是由编码组件、解码组件和它们之间的连接组成。
在这里插入图片描述
\quad 编码组件部分由一堆编码器(encoder)构成(论文中是将6个编码器叠在一起——数字6没有什么神奇之处,你也可以尝试其他数字)。解码组件部分也是由相同数量(与编码器对应)的解码器(decoder)组成的。
在这里插入图片描述
\quad 最后一层编码器的输出与所有的解码器相连
在这里插入图片描述
\quad Transformer的总体架构: 左边为编码模块,右边为解码模块。
在这里插入图片描述

二、Transformer的编码

\quad 编码器在结构上都是相同的(但它们不共享权重)。每一层又分为两个子层:
在这里插入图片描述
\quad 编码器的输入首先流经自注意力层——该层帮助编码器在编码特定单词时查看输入句子中的其他单词。自注意力层的输出被馈送到前馈神经网络。完全相同的前馈网络独立应用于每个位置。
在这里插入图片描述
从微观视角看自注意力机制:
在这里插入图片描述

\quad Embedding位置编码相加:

在这里插入图片描述

1、自注意力机制的计算公式:

在这里插入图片描述
第一步就是从每个编码器的输入向量(每个单词的词向量)中生成三个向量。也就是说对于每个单词,我们创造一个查询向量、一个键向量和一个值向量。这三个向量是通过词嵌入与三个权重矩阵后相乘创建的。
在这里插入图片描述
X1与WQ权重矩阵相乘得到q1, 就是与这个单词相关的查询向量。最终使得输入序列的每个单词的创建一个查询向量、一个键向量和一个值向量。
第二步是计算得分
在这里插入图片描述
第三步和第四步是将分数除以8(8是论文中使用的键向量的维数64的平方根,这会让梯度更稳定。这里也可以使用其它值,8只是默认值),然后通过softmax传递结果。softmax的作用是使所有单词的分数归一化,得到的分数都是正值且和为1。
在这里插入图片描述

在这里插入图片描述

2、残差和层归一化:

在这里插入图片描述
在这里插入图片描述

3、多头注意力机制:

(1)它扩展了模型专注于不同位置的能力:it具体指代的什么?
(2)它给出了注意力层的多个“表示子空间”(representation subspaces):有利于前景相同而背景不同的目标的识别。
在“多头”注意机制下,我们为每个头保持独立的查询/键/值权重矩阵,从而产生不同的查询/键/值矩阵。
在这里插入图片描述
这给我们带来了一点挑战。前馈层不需要8个矩阵,它只需要一个矩阵(由每一个单词的表示向量组成)。所以我们需要一种方法把这八个矩阵压缩成一个矩阵。那该怎么做?其实可以直接把这些矩阵拼接在一起,然后用一个附加的权重矩阵WO与它们相乘。
在这里插入图片描述
这几乎就是多头自注意力的全部。这确实有好多矩阵,我们试着把它们集中在一个图片中,这样可以一眼看清。
在这里插入图片描述

三、Transformer的解码

(1)Masked Multi-head Attention:相对于多头注意力机制将当前输入的后面输入都抹去,原因是在测试的过程中我们并不知道后面的什么,因此在训练的过程中我们应该尽可能的模拟测试的过程,提高墨香的泛化能力。
在这里插入图片描述

(2)解码器中的Multi-head Attention:解码器中的“编码-解码注意力层”工作方式基本就像多头自注意力层一样,只不过它是通过在它下面的解码层来创造查询矩阵(Q),并且从编码器的输出中取得键(V)/值矩阵(K)。
在这里插入图片描述

四、Transformer相关面试题

1、Transformer为何使用多头注意力机制?(为什么不使用一个头)
2、Transformer为什么Q和K使用不同的权重矩阵生成,为何不能使用同一个值进行自身的点乘? (注意和第一个问题的区别)
3、Transformer计算attention的时候为何选择点乘而不是加法?两者计算复杂度和效果上有什么区别?
4、为什么在进行softmax之前需要对attention进行scaled(为什么除以dk的平方根),并使用公式推导进行讲解
5、在计算attention score的时候如何对padding做mask操作?
6、为什么在进行多头注意力的时候需要对每个head进行降维?(可以参考上面一个问题)
7、大概讲一下Transformer的Encoder模块?
8、为何在获取输入词向量之后需要对矩阵乘以embedding size的开方?意义是什么?
9、简单介绍一下Transformer的位置编码?有什么意义和优缺点?
10、你还了解哪些关于位置编码的技术,各自的优缺点是什么?
11、简单讲一下Transformer中的残差结构以及意义。
12、为什么transformer块使用LayerNorm而不是BatchNorm?LayerNorm 在Transformer的位置是哪里?
13、简答讲一下BatchNorm技术,以及它的优缺点。
14、简单描述一下Transformer中的前馈神经网络?使用了什么激活函数?相关优缺点?
15、Encoder端和Decoder端是如何进行交互的?(在这里可以问一下关于seq2seq的attention知识)
16、Decoder阶段的多头自注意力和encoder的多头自注意力有什么区别?(为什么需要decoder自注意力需要进行 sequence mask)
17、Transformer的并行化提现在哪个地方?Decoder端可以做并行化吗?
18、简单描述一下wordpiece model 和 byte pair encoding,有实际应用过吗?
19、Transformer训练的时候学习率是如何设定的?Dropout是如何设定的,位置在哪里?Dropout 在测试的需要有什么需要注意的吗?
20、引申一个关于bert问题,bert的mask为何不学习transformer在attention处进行屏蔽score的技巧?

答案下载链接:

链接:https://pan.baidu.com/s/1PLeYaxnkoz0vVOLzwjvpww
提取码:7pr9

后续将继续更新~

参考链接:

(1) https://www.bilibili.com/video/BV1Di4y1c7Zm?p=1
(2) https://blog.csdn.net/longxinchen_ml/article/details/86533005

注:本文仅供笔者学习使用,如有侵权,请及时与笔者联系~

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/593669
推荐阅读
相关标签
  

闽ICP备14008679号