【NLP 面经 7、常见transformer面试题】

发布于:2025-04-06 ⋅ 阅读:(32) ⋅ 点赞:(0)

目录

1. 为何使用多头注意力机制?

2. Q和K使用不同权重矩阵的原因

3. 选择点乘而非加法的原因

4. Attention进行scaled的原因

5. 对padding做mask操作

6. 多头注意力降维原因

7. Transformer Encoder模块简介

8. 乘以embedding size的开方的意义

9. 位置编码

10. 其他位置编码技术

11. Transformer中的残差结构及其意义

12. LayerNorm与BatchNorm

13. BatchNorm介绍

14. Transformer的前馈神经网络

15. Encoder与Decoder的交互

16. Decoder自注意力与Encoder的区别

17. Transformer的并行化

18. WordPiece Model与Byte Pair Encoding

19. Transformer训练中的学习率与Dropout

20. BERT与Transformer attention屏蔽技巧


你最擅长说狠话,然后转身就流泪

                                                —— 25.4.5

1. 为何使用多头注意力机制?

        多头注意力机制使得模型能够并行处理信息的不同方面,每个头可以专注于输入序列的不同位置或特征,从而捕捉更丰富、更细腻的上下文依赖。单头注意力虽然也能捕捉序列间的关系,但其关注范围相对有限。多头机制提高了模型的表达能力,相当于模型可以“多视角”地审视输入数据,每个多头可以学习到不同类型的注意力模式,共同提升整体性能。


2. Q和K使用不同权重矩阵的原因

        Q(查询)和K(键)使用不同的权重矩阵是因为这样能够增加模型的非线性表达能力,允许模型从不同角度(或维度)分别编码查询和键的信息。如果Q和K共享相同的权重矩阵,则它们会生成相同或高度相关的向量空间表示,限制了模型识别不同模式的能力。不同矩阵生成的Q和K进行点乘,可以更灵活地衡量不同部分输入之间的相关性。


3. 选择点乘而非加法的原因

        点乘在计算复杂度上与加法相似,但在效果上,点乘能够更好地捕捉向量间的相似度,因为它考虑了元素级别的乘积,这在数学上等价于内积,可以衡量两个向量的“方向”一致性。而加法则更多反映的是两个向量的总“大小”。在注意力机制中,我们关心的是向量间关系的密切程度,因此点乘更适合。


4. Attention进行scaled的原因

        除以 dk 是为了避免点积的结果因向量长度的增加而过分放大,导致softmax函数在计算概率分布时出现梯度消失或饱和问题。这有助于模型训练更加稳定,尤其是在维度较大的情况下。公式上, Attention(Q,K,V)=softmax(QKTdk)V ,其中, dk 是分母的缩放因子。


5. 对padding做mask操作

        在计算attention score时,可以为padding位置的值设置为非常小的负数(如-1e9),这样经过softmax后,这些位置的权重接近0,即在计算上下文表示时忽略padding位置的影响。


6. 多头注意力降维原因

        每个头进行降维是为了在不增加过多计算成本的前提下,允许模型探索更多的注意力子空间。多个低维头相比于单个高维头,可以在同样计算资源下学习更丰富的特征组合。


7. Transformer Encoder模块简介

        Encoder由多个相同的层堆叠而成,每一层包括Self-Attention子层和一个前馈神经网络(FFN)子层,两侧均有残差连接和Layer Normalization。Self-Attention帮助捕获输入序列的长距离依赖,FFN引入非线性,增强模型表达能力。


8. 乘以embedding size的开方的意义

        在输入词嵌入后乘以 dmodel 主要是为了初始化时调整词向量的尺度,使其初始分布更为合理,避免训练初期的爆炸或消失梯度问题,提高模型训练的稳定性。


9. 位置编码

        位置编码是为了让Transformer能够理解序列中元素的位置信息,因为Transformer架构本身不包含循环或卷积结构,无法直接捕获位置信息。位置编码通过在词嵌入上添加特定模式的向量来实现,这些模式通常是正弦和余弦函数的组合,能区分不同位置的输入。


10. 其他位置编码技术

绝对位置编码:如上述,直接添加到词嵌入中。

相对位置编码:仅编码词对之间的相对距离,更灵活,常用于Transformer-XL等模型中。

** Rotary Positional Embedding**:提出于RoPE,旋转式位置编码,利用复数旋转矩阵动态调整词嵌入,保持位置信息的相对性,适合长序列任务。


11. Transformer中的残差结构及其意义

        残差连接允许信息直接跳过复杂的子层(如Self-Attention和FFN),直接传递到下一层,减轻了梯度消失问题,加速了模型收敛,并且增加了模型深度,提高表达能力。


12. LayerNorm与BatchNorm

LayerNorm在Transformer中用于每个样本的每个特征维度上标准化,保证了不同层间输入的分布一致,适用于Transformer这种没有固定批量大小(尤其是解码器自注意力时)和顺序无关的场景。

LayerNorm一般置于每个子层的输入或输出端,有助于训练稳定性和速度。

BatchNorm基于整个batch的数据进行标准化,不适合Transformer这类序列到序列模型,因其依赖于固定长度的批次。


13. BatchNorm介绍

        BatchNorm在训练时对每个mini-batch的数据进行标准化,减少内部协变量偏移,加速收敛,提高模型泛化能力。缺点包括增加了训练时间,对小批量数据效果不佳,且不适用于RNN等序列模型。

14. Transformer的前馈神经网络

        Transformer的FFN通常包含两个线性变换层,中间夹着ReLU或GELU激活函数。这种结构引入非线性,增强了模型的表达能力。GELU相比ReLU,具有更好的非线性表达和光滑性,有助于模型学习更复杂的特征。


15. Encoder与Decoder的交互

        Encoder和Decoder通过编码器-解码器注意力(Encoder-Decoder Attention)机制交互。在Decoder阶段,每个位置的单词不仅关注自身序列内的其他单词(自注意力),还关注Encoder的输出,从而在生成目标序列时考虑源序列的全局信息。


16. Decoder自注意力与Encoder的区别

        Decoder的多头自注意力机制在训练时需要加入“未来遮挡”(sequence mask),确保在生成当前位置的输出时,模型只能看到过去的位置信息,不能看到未来的信息,符合自然语言的生成逻辑,避免信息泄露。


17. Transformer的并行化

        Transformer模型设计上天然支持并行计算,特别是在自注意力和前馈网络层。由于其计算可以被拆分为独立的向量运算,非常适合GPU等并行计算硬件。Decoder端虽然在自注意力层受到序列依赖的限制,但除自注意力外的其它部分仍可并行化。


18. WordPiece Model与Byte Pair Encoding

WordPiece: 是一种文本分词方法,将文本切分成一系列有意义的子词单元。广泛应用于BERT等模型,有利于处理罕见词汇。

Byte Pair Encoding (BPE): 通过统计文本中最频繁出现的字符对来构建词汇表。随着迭代,新的符号是由最频繁出现的字符对组成。适用于多种语言,包括稀有语种。


19. Transformer训练中的学习率与Dropout

学习率:通常采用预热(warmup)策略,初期缓慢增加,之后按预定策略衰减,如线性衰减或余弦退火,以平衡初期的快速学习和后期的精细调整。

Dropout:在训练期间随机“丢弃”一部分神经元,防止模型过度拟合。通常设置在0.1至0.5之间,应用在全连接层和自注意力输出。测试时不需要使用Dropout,以得到确定性的输出。


20. BERT与Transformer attention屏蔽技巧

        BERT在训练过程中使用了Masked Language Model任务,但它并未直接在注意力机制上进行屏蔽操作。这是因为BERT主要关注于如何从掩码输入中预测缺失的token,而Transformer的自注意力机制中加入的mask是用来确保解码器生成时只依赖于过去的上下文,这是两种不同的应用场景和目的。


网站公告

今日签到

点亮在社区的每一天
去签到