Transformer算法7个面试常见问题
1.Transformer为何使用多头注意力机制?(为什么不使用一个头)
英文论文中是这么说的:
Multi-head attention allows the model to jointly attend to information from different representation subspaces at different positions.
翻译:
多头注意使模型能够共同关注来自不同位置的不同表征子空间的信息。
直观上讲,多头的注意力有助于网络捕捉到更丰富的特征/信息。可以类比CNN中同时使用多个滤波器的作用。
举例:
当你浏览网页的时候,你可能在颜色方面更加关注深色的文字,而在字体方面会去注意大的、粗体的文字。这里的颜色和字体就是两个不同的表示子空间。同时关注颜色和字体,可以有效定位到网页中强调的内容。使用多头注意力,也就是综合利用各方面的信息/特征。
2.对缩放因子的解释:
-
1.为什么要除以一个缩放因子?
(1)论文解释为:我们怀疑,对于很大的dk值,点积大幅度增长,将softmax函数推向具有极小梯度的区域。为了抵消这种影响,我们缩小点积。
(2)我们理解为:
因为softmax的本质是一个e为底的指数,会随着指数的变大变化率很明显,例如当点积为100,200,500,那么e的500次方会占绝对权重,从而影响结果不准确。
- 2.那么要除以一个多大的缩放因子呢?
(1)论文脚注解释为:
为了说明点积变大的原因,假设q和k的分量是独立随机的均值为0和方差为1的变量。然后他们的点积 均值为0,方差为dk
(2)我们理解为:
假设q和k的分量是独立随机的均值为0和方差为1的变量,也就是说qi和ki是均值为0和方差为1,那么qiki也是均值为0,方差为1。所以qk的均值为0,方差为dk。
3.Decoder阶段的多头自注意力和encoder的多头自注意力有什么区别?
答:Decoder有两层mha,encoder有一层mha,Decoder的第二层mha是为了转化输入与输出句长,Decoder的请求q与键k和数值v的倒数第二个维度可以不一样,但是encoder的qkv维度一样。
4.Transformer的并行化提现在哪个地方?
答:Transformer的并行化主要体现在self-attention模块,在Encoder端Transformer可以并行处理整个序列,并得到整个输入序列经过Encoder端的输出,但是rnn只能从前到后的执行
5.Decoder端可以做并行化吗?
训练的时候可以,但是交互的时候不可以
6.bert的mask为何不学习transformer在attention处进行屏蔽score的技巧?
答:BERT和transformer的目标不一致,bert是语言的预训练模型,需要充分考虑上下文的关系,而transformer主要考虑句子中第i个元素与前i-1个元素的关系。
7、简单介绍一下Transformer的位置编码?有什么意义和优缺点?
Transformer 模型的核心是自注意力机制,它允许模型在处理序列数据时考虑序列中所有位置的信息。然而,传统的循环神经网络(RNN)和长短期记忆网络(LSTM)等模型能够自然地处理序列数据的时间信息,因为它们在处理序列时会逐个元素地传递状态。Transformer 模型则需要一种机制来模拟这种时间信息,这就是位置编码(Positional Encoding)的作用。
位置编码的意义:
1.时间信息的引入:位置编码为模型提供了序列中每个元素的位置信息,使得模型能够区分序列中的不同位置。
2.保持序列顺序:在自注意力机制中,位置编码帮助模型保持输入序列的顺序性,这对于理解语言结构至关重要,
位置编码的方法:
在原始的 Transformer 论文中,位置编码是通过以下方式添加到词嵌入(Word Embedding)中的:
其中,pos是词在序列中的位置,i是维度索引,dmodel 是模型的维度大小。这种方式生成的位置编码是固定的,并且随着位置的增加,编码的周期性变化。
优缺点:
优点:
灵活性:位置编码允许模型在处理不同长度的序列时保持灵活性
并行化:由于位置编码是预先定义的,它可以与词嵌入一起并行处理,这提高了模型的计算效率。
缺点:
固定模式:位置编码是预先定义的,可能不会很好地适应所有类型的序列数据。可解释性:位置编码的周期性模式可能不如 RNN 中的递归状态直观,这可能会影响模型的可解释性。
随着研究的发展,出现了一些改进的位置编码方法,例如相对位置编码(RelativePositionaEncoding),它通过考虑词与词之间的相对位置关系来增强模型对序列的理解能力。这些方法在某些任务中显示出比传统位置编码更好的性能。