本文的目的是为了帮助大家面试transformer,会结合我的面试经历以及看法去讲解transformer,并非完整的技术细致讲解,介意请移步。
结构
提到transformer网络模型,大家脑海中是否有这张图呢?
这是网络结构中经典的编解码网络结构。
编码器:由𝑁层编码层组成,每层对输入序列进行编码。
解码器:也由𝑁层解码层组成,并结合编码器输出生成最终输出序列。
编码器
位置编码
可以看到,输入到编码其中,首先经过了一个位置编码,这个位置编码是怎么设计的?有什么用?
看公式
- 有什么用?
众所周知,transformer结构依赖于自注意力机制,可以并行的计算整个序列的关系,但是他没有固有的顺序意识,这时候就需要位置编码了。 - 怎么设计的?
位置编码是一组具有固定模式的向量,其计算方式主要是基于正弦和余弦函数。句子长度为n,维度索引为i,总维度为d,通过这种方法确保不同位置的编码值是唯一的,并且在维度上保留平滑的变化。 - 作用?
周期性变化
:正弦和余弦的周期性确保了相邻词的编码差异较小,随着位置增大变化逐渐减缓,适应长距离依赖。
平滑的位置信息
:正弦和余弦的值随着位置的变化以非线性的方式增加,使模型能够学习词的相对位置信息和词序关系。
距离敏感性
:较近的词之间的编码相似度较高,而远距离的词编码差异较大,便于捕捉长短期依赖。
注意力机制(attention)
输入内容经过位置编码后,ctrl +c,v
复制成了三份完全一样的,作为QKV。如何理解QKV呢,通俗易懂的讲,Q为搜索关键字,K为搜索相关的分类,V为搜索出的结果
,通过QK计算得到权重,然后V得到注意力的结果。
注意力机制的公式是这样的:
是不是向上面讲的QK*V的一个逻辑?那么又聪明的小朋友可能要问了,下面的这个dk是做什么的(高频考点)?
请参考我的这篇文章
【每日一问】transformer中的self-attention中为什么要除以dk?
讲完了注意力机制,那么多头是什么?
多头注意力机制
它将输入的注意力计算拆分为多个“头”,每个头分别计算一组不同的 Q、K、V 向量,并在每个头上并行计算注意力。然后将所有头的输出拼接在一起,再通过线性变换层生成最终的注意力输出。
太官方了?
别急,通俗易懂的讲:
同一份内容,经过不同的处理,能够得到不同的结果。多头注意力中,每个头是一注意力机制,独立的计算词与词之间的相似度,每个头关注不同的细节信息,帮助模型更全面地理解句子中的含义
举例我们有三个头:
- 第一个头可能关注词之间的空间关系,比如“猫”在哪里坐。
- 第二个头可能关注词之间的时间顺序,比如“先有猫再有沙发”。
- 第三个头可能关注词的动作关系,比如“猫是在沙发上‘坐’的”
多头注意力机制就像给模型多副“眼镜”,每副眼镜看到的角度不一样,最终合成的结果让模型能从多方位理解句子。
这样,我们讲完了编码器,接下来讲解解码器
解码器
可以从网络结构图中看出,解码器结构与编码器结构几乎是相同的。但是有两点不同。
-
masked是什么?
masked是transformer中的蒙版。对于解码器来说,不同于以往的时序模型RNN中的解码器,它能够阅读到句子的整个上下文内容,所以在解码器中,需要一些特殊的操作对句子进行处理。
例如在生成句子 “我要吃饭”,生成 “要 时,只能基于 “我” 来生成,而不能提前知道 “吃饭”,如果模型知道了后面的内容,不就相当于透题了吗?这样模型的损失函数无法计算,自然结果会很烂。 -
masked是如何做的?
在解码器的 masked self-attention 中,使用了一个“掩码矩阵”来阻止模型访问未来的信息。
在这个矩阵中,1 表示可以看到对应位置的词,0 表示不能看到。因此,在生成第三个词时,模型只能关注到第一个和第二个词,而不能看到第四个词。
他的效果如下所示:
通过masked机制,强制保证解码器不偷看未来的答案,确保结果每次都是基于已经生成的词语。
底层实现
:其实这里masked的底层实现是给不是1的地方给了个很大的负数。还记得attention是怎么计算的吗?是不是有个softmax函数?在softmax函数中,x为很大的负数的时候,经过softmax处理后结果为0。这就是处理方式。 -
编码器对解码器的连线是什么?
其实就是多头注意力中的K和V啦。解码器传递过来的是Q,然后通过这种方式计算注意力机制。
这样来看是不是就好很多了呢?
讲解完啦,接下来看看这些面试题能不能答上来吧!
面试题
- 编码器中距离编码是什么?
- 讲解一下注意力机制。
- 多头注意力是什么?作用是什么?有什么优点?
- 编码器和解码器有什么不同?
- masked是什么机制?如何实现?
- 简单讲一下Transformer中的残差结构以及意义。
- Encoder端和Decoder端是如何进行交互的?
- 你还了解哪些关于位置编码的技术,各自的优缺点是什么?