首页 > 其他分享 >Transformer面试真题详解——覆盖99%的Transformer面试问题(建议收藏)

Transformer面试真题详解——覆盖99%的Transformer面试问题(建议收藏)

时间:2024-09-01 22:21:03浏览次数:9  
标签:Transformer 真题 模型 attention mask encoder 面试 计算

文章目录

1. 请简述一下Transformer的基本结构和原理

在这里插入图片描述
具体可以之前的博客:Transformer——逐步详解架构和完整代码搭建

2. Transformer为什么使用多头注意力机制

一方面,多头保证了Transformer可以注意到不同子空间的信息,捕捉到更加丰富的特征信息。假设多头的头数为h,那么就相当于模型有h次的学习机会,有一些类似于卷积的多通道输出。另一方面,多头可以让参数矩阵形成多个子空间,矩阵整体size不变,只改变了每个head对应的维度大小,这样使得矩阵对多方面进行学习,但是计算量和单个head差不多。

3. Transformer计算attention为什么选择点乘而不是加法?两个计算复杂度和效果上有什么区别?

为了计算更快,矩阵加法计算虽然比较简单,但是现代GPU适合矩阵乘法的运算,Transformer中的attention设计多个头的矩阵运算,因此选择点乘更合适一些。点乘的计算复杂度大致是O(n2*d),其中n是序列长度,d是模型的维度。

4. 为什么在softmax之后要对attention进行scaled(为什么除以d_k的平方根)

为了避免softmax输出one-hot从而梯度消失。假设Q、K的均值为0,方差为1,矩阵乘积将有均值为0,方差为d_k,因为使用的d_k的平方根进行缩放。因为Q K的矩阵乘积本应均值为0,方差为1,这样可以获得更平缓的softmax,避免梯度消失。

5. 在计算attention score时,如何对padding做mask操作

将padding需要mask的位置取负无穷,一般去一个负的足够大的数即可,比如-1000,softmax计算之后该位置就会变成0。

6. 简单介绍一下Transformer的位置编码,有什么意义和缺点?

self-attention是位置无关的,即打乱句子的排序,计算出来的self-attention结果是一样的,但是文本信息的前后序列有着很大的语义关系,因此需要加入位置编码来保存这种序列化的信息。Transformer中使用了固定的positional encoding来表示token在句子中的绝对位置,相对位置编码(RPE)针对此做出了改进。绝对位置编码也可以替换成可学习的位置编码。

7. Transformer相比于RNN有什么优势

RNN的计算是有前后依赖关系的,即当前轮的输出必须要等上一轮的输出计算完成之后才可以计算,因此并行能力较差,有序列的依赖关系。Transformer的并行计算能力更强,并且特征提取能力也更好。也正是因为Transformer的并行计算,是的Transformer更能够进行

8. encoder和decoder是如何交互的

在解码器中有一个编码解码多头注意力机制,接受来自编码器的KQ和解码器的V,通过计算来自不同位置的KQV达到编码器和解码器交互的目的。

9. decoder里的多头注意力和encoder里的多头注意力有什么区别

encoder中的都有注意力机制不带mask掩码,而encoder中的第一个多头注意力机制带mask掩码,目的是为了防止模型看到当前时刻之后的信息,encoder中还有个多头注意力机制,接收来自encoder中的KQ以及decoder中的V计算attention score。

10. Transformer中的mask是怎么样的?

Transformer中的mask有两种,分别是padding mask和sequence mask,padding用来处理不定长输入,sequence mask为了防止未来信息被泄露。

11. Transformer在哪里做了权重共享?

两个地方做了权重共享:1)encoder宇decoder间的embedding层共享权重;2)decoder中的embedding与FC权重共享。

12. Transforme中的Q、K为什么使用不同的权重生成,为什么不使用同一个值进行自身的点乘

主要是为了增加模型的表示能力(MLP的作用也是增加模型的学习能力),通过不同的权重Wq和Wk生成对应的Q,K,模型可以在不同的表示空间中学习元素之间的关系。这种设计允许模型学习更复杂的模式。如果用同一个值进行自身的点击,那么他们在同一个表示空间,这样的学习能力就被限制住了。

13. 为什么在进行多头注意力的时候需要对每个head降维?

从模型参数效率的角度看,对每个head进行降维,可以在不显著增加模型参数和计算负担的前提下,提高模型的宽度,使得模型能够在不同的表示子空间中捕获输入之间的不同方面的信息,从而提高学习能力。对每个head进行降维,相当于将原来的空间表示成不同的特征子空间,从而提高模型的表达能力。降维也可以增强模型的泛化能力,降维可以有助于正则化模型,当模型需要学习将信息压缩到一个更小的表示空间,通常能更好地泛化到未见到的数据上,提高模型的鲁棒性。

14. Transformer如何处理可变长度的数据?

对不等长的数据,按最长或者固定长度进行补齐,利用padding mask机制,补齐的数据并不参加训练。

15. Transformer为什么要用残差的结构?

残差结构来源于Resnet论文,可以有效缓解梯度消失的问题。在Transformer中,每个子层的输出都用了残差的结构,在深度网络中,当模型网络层数很深的时候,容易产生梯度消失的问题。通过引入残差的结构,相当于在每个模块中添加了一条直接的通路,减少了每个模块需要学习的内容,使得梯度能够直接传播,从而减少了梯度消失的问题。并且引入残差的结构,也可以显著减少模型训练所需的迭代次数。

16. 为什么Transformer用LayerNorm而不用BatchNorm?

主要是因为LayerNorm更适合处理序列数据,在NLP中输入序列经常会出现序列长度不一的情况。BatchNorm依赖一个批次中的所有数据来计算均值和方差,对于长度不一的序列数据处理起来比较困难。二LayerNorm则对每个样本在特征维度上进行归一化,因此可以自然的处理不同长度的序列。在推理时,BatchNorm在计算均值和方差时依赖整个批次的数据,使得性能收到批大小的影响。如果出现推理的样本长度比批量中文本长很多的话,推理的性能会下降很多。

17. Transformer前馈神经网络用的是什么激活函数?

用的是Relu激活函数,引入激活函数,增加模型非线性变化的能力,后续也有针对激活函数进行的改进,比如GELU函数等。

18. Transformer块的输入输出大小有什么关系?

Transformer块中的输入输出维度是一样的,因为整个Transformer模型是由一个个Transformer块堆叠而成,因此需要保证块的输入输出是一致的,这样才能正确的完成堆叠。

19. Transformer有哪些变体?

Transformer提出之后,引起了巨大的震撼,比较有名的工作包括Bert,GPT,T5,VIT,SwinTransformer等,后两者将Transformer架构引入CV领域。

20. Transformer有哪些可调的参数?

主要有两个可调的参数,一个是N,堆叠块的数量。N越大,模型越深。另外一个参数是d,FFN中隐藏层的维度,d越大模型越宽。

标签:Transformer,真题,模型,attention,mask,encoder,面试,计算
From: https://blog.csdn.net/weixin_63866037/article/details/141102027

相关文章

  • 关于jmeter的一些面试题及回答
    1、说明jmeter的工作原理jmeter就像一个虚拟用户模拟器,你创建一个测试计划,指定这些虚拟用户(线程)要做什么,比如你要访问网站的不同页面,jmeter会按照你设定的规则,让这些虚拟用户同时发起请求,然后记录下这些请求的响应时间和结果,最后,你可以通过查看这些数据来分析网站在不同负载下......
  • 互联网 Java 工程师面试题(Java 面试题四)
    下面列出这份Java面试问题列表包含的主题多线程,并发及线程基础数据类型转换的基本原则垃圾回收(GC)Java集合框架数组字符串GOF设计模式SOLID抽象类与接口Java基础,如equals和hashcode泛型与枚举JavaIO与NIO常用网络协议Java中的数据结构和算法正则表达式JVM底......
  • 大厂面试官:你真的了解WebSocket么?
    希望大家能关注点赞,创作不易且没收益,您的小小举动却能给予我大大的鼓励,会激励我继续创作出高质量文章......
  • Mesh-gpt(点处理、保存脚本,Transformer)
    小结:1、配置了学长的环境,并编写点处理(旋转、镜像)和保存(由内存numpy数组到shp文件)脚本。2、初步阅读mesh-gpt论文,思考Transformer网络架构(翻译模型和补全模型的训练区别)环境配置pipinstalltorch==2.1.2torchvision==0.16.2torchaudio==2.1.2--index-urlhttps://downloa......
  • Transformer网络架构
    只有理解了,才能在超越经验的情况下,生成出合理的内容编解码encoder-decoder结构什么是“码”?剥离形式的表示(各种语言的不同),剩下的语义关系(上下文语义)“码”的要求:1、数字化2、语义关系的距离分词器和one-hot编码在2不足需要找到一个纬度高,但是又没那么高的空间(潜......
  • Java并发编程面试必备:如何创建线程池、线程池拒绝策略
    一、线程池1.线程池使用1.1如何配置线程池大小如何配置线程池大小要看业务系统执行的任务更多的是计算密集型任务,还是I/O密集型任务。大家可以从这两个方面来回答面试官。(1)如果是计算密集型任务,通常情况下,CPU个数为N,设置N+1个线程数量能够实现最优的资源利用率。因为N......
  • Vue面试常见知识总结2——spa、vue按需加载、mvc与mvvm、vue的生命周期、Vue2与Vue3区
    SPASPA(SinglePageApplication,单页面应用)是一种Web应用程序架构,其核心特点是在用户与应用程序交互时,不重新加载整个页面,而是通过异步加载页面的局部内容或使用JavaScript动态更新页面。以下是对SPA的详细解析,包括其优点和缺点:SPA的优点更好的用户体验:SPA无需重新加载......
  • 嵌入式全栈开发学习笔记---Linux网络编程(面试/开发重点)
    目录网络概述Linux网络基础网络模型TCP/IP协议族体系结构数据封装TCP协议TCP协议头部结构TCP三次握手TCP四次挥手UDP协议UDP协议头部结构套接字Socket端口号和IP地址地址转换字节序转换TCP服务器服务器建立步骤第一步,创建socket--socket()第二步,绑定信息Bin......
  • 消息队列面试题 -- 一问一个准
    消息队列 RabbitMQ的死信队列和延时队列?消息被拒,requeue设置为false消息过期,队列达到最大程度这时候会存放到死信队列中去。设置消息过期时间:采用队列中的x-message-ttl参数去设置,单位是毫秒关于ActiveMQ、RocketMQ、RabbitMQ、Kafka一些总结和区别为什么使用消息......
  • 面试SQL题的水到底有多深?一文带你揭晓
    不谋万世者,不足谋一时;不谋全局者,不足谋一域目录0面试现状1面试SQL题目的难度及特点1.1题目场景化1.2题目算法化1.3方法多元化2破局之道3总结数字化建设通关指南主要内容:(1)SQL进阶实战技巧(2)数仓建模实战技巧和个人心得0面试现状  最近有不少参加面......