大家好,我是 Bob! 😊 一个想和大家慢慢变富的 AI 程序员💸 分享 AI 前沿技术、项目经验、面试技巧! 欢迎关注我,一起探索,一起破圈!💪
最近有小伙帮给我推荐了一个transformer的面试问,分享给大家
Transformer为何使用多头注意力机制? 答:多头注意力机制的主要目的是让模型在不同的子空间中学习信息,从而提高模型的表达能力。通过多个头,模型可以在不同的关注点上捕捉特征,比如词与词之间的不同关系。相较于单一注意力头,多头注意力可以更全面地理解输入序列的上下文信息。
Transformer为什么Q和K使用不同的权重矩阵生成,为何不能使用同一个值进行自身的点乘? 答:Q(查询)和K(键)使用不同的权重矩阵生成是为了让模型在计算注意力时能够在不同的表示空间中进行匹配。如果使用相同的权重矩阵,模型可能无法有效区分不同的查询和键,降低了学习灵活性和表达能力。不同的权重矩阵可以使得模型在处理相同输入时,能够得到不同的表示,从而进行更有效的匹配。
Transformer计算attention的时候为何选择点乘而不是加法?两者计算复杂度和效果上有什么区别? 答:点乘运算比加法运算在计算复杂度上更高效,因为点乘在向量层面上操作,可以直接利用矩阵运算的优势。而且,点乘可以更好地反映相似度,因为它是通过对向量的方向性和大小进行量化的方式来判断相似性;而加法则不具备这种特性。因此,点乘在捕捉特征相似度方面更有效。
为什么在进行softmax之前需要对attention进行scaled(为什么除以dk的平方根),并使用公式推导进行讲解? 答:在计算注意力分数时,由于点乘的数值可能会变得非常大,从而导致softmax函数的梯度过小,影响训练效果。因此,将点乘结果除以 ( \sqrt{d_k} ) 可以防止这种情况。推导如下: [ \text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V ] 这里,( d_k ) 是键的维度,通过缩放点乘结果,使得softmax的输入值更加平滑,避免数值过大或过小的问题。
在计算attention score的时候如何对padding做mask操作? 答:在计算注意力分数时,使用mask操作将padding的部分设置为一个非常小的值(例如负无穷大),确保在计算softmax时,这些padding部分的注意力得分趋近于零。通常,mask是一个与输入形状相同的矩阵,使用相应的逻辑操作将padding位置的值遮蔽。
为什么在进行多头注意力的时候需要对每个head进行降维? 答:在多头注意力中,通常会将每个注意力头的输出维度降到一个较低的值,这样可以有效地减少计算复杂度和内存占用,并且能够保持每个头的表达能力。通过降维,每个头可以专注于捕捉不同的特征,而在最后将所有头的输出拼接起来,以形成更丰富的表示。
大概讲一下Transformer的Encoder模块? 答:Transformer的Encoder模块由多个相同的层堆叠而成,每层主要包含两个部分:多头自注意力机制和前馈神经网络。每个部分都有残差连接和LayerNorm。输入首先经过Embedding层,接着经过多个Encoder层,最后输出编码后的表示。这种结构使得模型能够在不同层次上捕捉输入的特征。
为何在获取输入词向量之后需要对矩阵乘以embedding size的开方?意义是什么? 答:对输入词向量乘以embedding size的平方根是为了保持向量的标准差在训练过程中不变,从而确保在计算相似度时,数值的规模是合理的。这样做可以防止在训练初期,由于权重初始化带来的大方差问题,使得模型学习更为稳定。
简单介绍一下Transformer的位置编码?有什么意义和优缺点? 答:位置编码是用来为输入序列中的单词提供位置信息的,它能够帮助模型理解单词之间的顺序。位置编码可以是固定的(如正弦和余弦函数)或可学习的。优点是它允许模型处理任意长度的序列;缺点是它可能限制模型的表示能力,因为固定位置编码无法适应不同上下文。
你还了解哪些关于位置编码的技术,各自的优缺点是什么? 答:除了正弦和余弦函数的位置编码,还有可学习的位置编码和相对位置编码。可学习的位置编码在训练中自适应调整,可以更好地捕捉上下文信息,但会增加模型复杂度。相对位置编码则考虑了相对位置信息,更适合处理长序列,但实现起来较为复杂。
简单讲一下Transformer中的残差结构以及意义。 答:残差结构是在每个子层(如自注意力和前馈网络)之后添加输入的快捷连接。它的意义在于缓解深层网络的训练难度,帮助模型更容易地学习到恒等映射,同时促进梯度传播,提高模型训练的稳定性和效果。
为什么transformer块使用LayerNorm而不是BatchNorm?LayerNorm 在Transformer的位置是哪里? 答:Transformer使用LayerNorm而非BatchNorm是因为LayerNorm对每个样本独立进行归一化,适合变长输入序列的处理。而BatchNorm在序列建模中会受到批次大小和序列长度的影响,导致不稳定。LayerNorm通常放置在每个子层的输出之后,以保证每个子层的输入在统计上是稳定的。
简答讲一下BatchNorm技术,以及它的优缺点。 答:BatchNorm是一种通过规范化每个小批次的输入,来提高神经网络训练速度和稳定性的方法。优点包括加速收敛、减少对学习率的敏感性;缺点则是对于小批量数据不适用,且在某些情况下会导致模型性能下降,尤其是在序列模型中。
简单描述一下Transformer中的前馈神经网络?使用了什么激活函数?相关优缺点? 答:Transformer中的前馈神经网络通常由两个线性层和一个非线性激活函数(如ReLU)组成。输入首先经过线性层,再经过激活函数,最后再通过另一个线性层输出。优点是能够提高模型的非线性表达能力,但缺点是增加了计算复杂度。
Encoder端和Decoder端是如何进行交互的? 答:Encoder端通过生成的上下文向量与Decoder端进行交互。具体来说,Decoder在生成每个单词时,会将Encoder的输出作为上下文信息,使用注意力机制(如Encoder-Decoder Attention)来聚焦于与当前生成单词相关的Encoder输出。
Decoder阶段的多头自注意力和encoder的多头自注意力有什么区别? 答:Decoder阶段的多头自注意力需要进行序列mask操作,以防止模型在生成当前词时查看未来的词。而Encoder的多头自注意力则不需要mask,因为它可以同时看到输入序列的所有信息。
Transformer的并行化提现在哪个地方?Decoder端可以做并行化吗? 答:Transformer的并行化主要体现在Encoder的多个层和多头注意力机制的并行计算上。Decoder端在生成序列时,由于需要依赖前一个时间步的输出,通常难以完全并行化,但在Decoder的每层内部仍可以进行并行处理。
简单描述一下wordpiece model 和 byte pair encoding,有实际应用过吗? 答:WordPiece模型是一种将单词拆分为子词单元的分词方法,常用于BERT等模型;Byte Pair Encoding(BPE)是一种基于频率的子词分解算法,用于处理低频词和新词。两者都可以减少词汇表大小并提高模型的泛化能力。我自己没有直接应用过,但它们在许多自然语言处理任务中得到了广泛使用。
Transformer训练的时候学习率是如何设定的?Dropout是如何设定的,位置在哪里?Dropout 在测试的需要有什么需要注意的吗? 答:Transformer训练时通常使用学习率调度器(如Warmup和学习率衰减)来设定学习率。Dropout一般设定为0.1左右,适用于多头注意力和前馈神经网络的层之间,以防止过拟合。在测试阶段,Dropout需关闭,以确保模型输出稳定。
引申一个关于bert问题,bert的mask为何不学习transformer在attention处进行屏蔽score的技巧? 答:BERT的masking策略是为了训练模型在输入中缺失某些词时能够合理预测这些词。在BERT的架构中,遮蔽是通过输入时随机选定一些词进行屏蔽,而不是通过在attention中屏蔽score。这是因为BERT关注的是填空任务的效果而非单纯的注意力计算,旨在使模型更好地学习上下文关系。
1.【Bob 的 AI 成长陪伴群】门票 99/年
🔴AI 变现项目、AI 前沿技术、NLP 知识技术分享、前瞻思考、面试技巧、找工作等
🔴 个人 IP 打造、自媒体副业、向上社交、以及我的日常生活所见所闻,所思所想。
2.一对一的一小时咨询服务(49/次)
找一群人一起走,慢慢变富。期待和同频 朋的 友一起蜕变!
本文作者:Bob
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!