前言
大模型应该是目前当之无愧的最有影响力的AI技术,它正在革新各个行业,包括自然语言处理、机器翻译、内容创作和客户服务等,正成为未来商业环境的重要组成部分。
截至目前大模型已超过200个,在大模型纵横的时代,不仅大模型技术越来越卷,就连大模型相关岗位和面试也开始越来越卷了。
我今天给大家分享一些梳理的面试题,内容较长,喜欢记得收藏、关注、点赞。
Transformer
1.attention
2.layer_normalization
3.位置编码
4.tokenize分词
5.token及模型参数
6.激活函数
2.Transformer
2.1 transformer中multi-head attention中每个head为什么要进行降维?
在Transformer的Multi-Head Attention中,对每个head进行降维是为了增加模型的表达能力和效率。
每个head是独立的注意力机制,它们可以学习不同类型的特征和关系。通过使用多个注意力头,Transformer可以并行地学习多种不同的特征表示,从而增强了模型的表示能力。
然而,在使用多个注意力头的同时,注意力机制的计算复杂度也会增加。原始的Scaled Dot-Product Attention的计算复杂度为O(d2)O(d2)O(d2),其中d是输入向量的维度。如果使用h个注意力头,计算复杂度将增加到O(hd2)O(hd2)O(hd2)。这可能会导致Transformer在处理大规模输入时变得非常耗时。
为了缓解计算复杂度的问题,Transformer中在每个head上进行降维。在每个注意力头中,输入向量通过线性变换被映射到一个较低维度的空间。这个降维过程使用两个矩阵:一个是查询(Q)和键(K)的降维矩阵WqW_qWq和WkW_kWk,另一个是值(V)的降维矩阵WvW_vWv。
通过降低每个head的维度,Transformer可以在保持较高的表达能力的同时,大大减少计算复杂度。降维后的计算复杂度为(hd^2)(h\hat d ^ 2)(hd2),其中d\hat dd是降维后的维度。通常情况下,d\hat dd^会远小于原始维度d,这样就可以显著提高模型的计算效率。
2.2 transformer在哪里做了权重共享,为什么可以做权重共享?
Transformer在Encoder和Decoder中都进行了权重共享。
在Transformer中,Encoder和Decoder是由多层的Self-Attention Layer和前馈神经网络层交叉堆叠而成。权重共享是指在这些堆叠的层中,相同位置的层共用相同的参数。
在Encoder中,所有的自注意力层和前馈神经网络层都共享相同的参数。这意味着每一层的自注意力机制和前馈神经网络都使用相同的权重矩阵来进行计算。这种共享保证了每一层都执行相同的计算过程,使得模型能够更好地捕捉输入序列的不同位置之间的关联性。
在Decoder中,除了和Encoder相同的权重共享方式外,还存在另一种特殊的权重共享:Decoder的自注意力层和Encoder的自注意力层之间也进行了共享。这种共享方式被称为"masked self-attention",因为在解码过程中,当前位置的注意力不能关注到未来的位置(后续位置),以避免信息泄漏。通过这种共享方式,Decoder可以利用Encoder的表示来理解输入序列并生成输出序列。权重共享的好处是大大减少了模型的参数数量,使得Transformer可以更有效地训练,并且更容易进行推理。此外,共享参数还有助于加快训练速度和提高模型的泛化能力,因为模型可以在不同位置共享并学习通用的特征表示。
2.3 transformer的点积模型做缩放的原因是什么?
使用缩放的原因是为了控制注意力权重的尺度,以避免在计算过程中出现梯度爆炸的问题。
Attention的计算是在内积之后进行softmax,主要涉及的运算是eq⋅ke^{q \cdot k}eq⋅k,可以大致认为内积之后、softmax之前的数值在−3d-3\sqrt{d}−3d到3d3\sqrt{d}3d这个范围内,由于d通常都至少是64,所以e3de^{3\sqrt{d}}e3d比较大而 e−3de^{-3\sqrt{d}}e−3d比较小,因此经过softmax之后,Attention的分布非常接近一个one hot分布了,这带来严重的梯度消失问题,导致训练效果差。(例如y=softmax(x)在|x|较大时进入了饱和区,x继续变化y值也几乎不变,即饱和区梯度消失)
相应地,解决方法就有两个:
像NTK参数化那样,在内积之后除以
d\sqrt{d}d
,使q⋅k的方差变为1,对应
e3,e−3e3,e{−3}e3,e−3
都不至于过大过小,这样softmax之后也不至于变成one hot而梯度消失了,这也是常规的Transformer如BERT里边的Self Attention的做法
另外就是不除以
d\sqrt{d}d
,但是初始化q,k的全连接层的时候,其初始化方差要多除以一个d,这同样能使得使q⋅k的初始方差变为1,T5采用了这样的做法。
标签:Transformer,模型,面试题,Encoder,含答案,复杂度,共享,注意力 From: https://blog.csdn.net/weixin_42924914/article/details/142496262