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

news2024/11/15 21:47:10

文章目录

  • 1. 请简述一下Transformer的基本结构和原理
  • 2. Transformer为什么使用多头注意力机制
  • 3. Transformer计算attention为什么选择点乘而不是加法?两个计算复杂度和效果上有什么区别?
  • 4. 为什么在softmax之后要对attention进行scaled(为什么除以d_k的平方根)
  • 5. 在计算attention score时,如何对padding做mask操作
  • 6. 简单介绍一下Transformer的位置编码,有什么意义和缺点?
  • 7. Transformer相比于RNN有什么优势
  • 8. encoder和decoder是如何交互的
  • 9. decoder里的多头注意力和encoder里的多头注意力有什么区别
  • 10. Transformer中的mask是怎么样的?
  • 11. Transformer在哪里做了权重共享?
  • 12. Transforme中的Q、K为什么使用不同的权重生成,为什么不使用同一个值进行自身的点乘
  • 13. 为什么在进行多头注意力的时候需要对每个head降维?
  • 14. Transformer如何处理可变长度的数据?
  • 15. Transformer为什么要用残差的结构?
  • 16. 为什么Transformer用LayerNorm而不用BatchNorm?
  • 17. Transformer前馈神经网络用的是什么激活函数?
  • 18. Transformer块的输入输出大小有什么关系?
  • 19. Transformer有哪些变体?
  • 20. Transformer有哪些可调的参数?

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越大模型越宽。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2095913.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

dubbo之时间轮算法分析

文章目录 前言一、参数说明二、具体实现1、HashedWheelTimer2、createWheel3、newTimeout4、start5、run6、waitForNextTick7、transferTimeoutsToBuckets8、expireTimeouts 总结 前言 时间轮(TimingWheel)是一种高效利用线程资源进行批量化调度的算法&…

ffmpeg音频编码

音视频播放的流程 根据我之前的文章 我们已经从解复用,解码得到原始数据,现在我们逆向,将frame转化packet。也就是原始数据转化为压缩后的数据文件。 介绍 PCM样本格式 PCM(Pulse Code Modulation,脉冲编码调制)⾳频数据是未经…

离散数学------关系理论

一、序偶和笛卡尔积 序偶 两个序偶如果相等,那么他们相对应的第一第二元素分别相等 笛卡尔积 笛卡尔积是集合之间的一种运算,运算的结果是个序偶,第一元素来自前面的集合,第二元素来自后面的集合。 两集合进行笛卡尔积运算后集合…

UE5学习笔记20-给游戏添加声音

一、准备音频资源 1.Jump文件夹中有跳跃的音频资源wav文件夹中是SoundCue的音波资源 2.音乐衰减文件,右键->音频->音效衰减 二、 在对应的动画资源处将音频添加 1.找到对应的动画帧 2.在对应的行右键添加通知->播放音效 3、选中添加的音效选择对应的音频资…

拦截通信助理,拦截小秘书技术

有人叫做空号识别,有人称为彩铃识别,磐石云通过嵌入软交换进行实时识别前期媒体 案例: 王总公司有20坐席的员工回访用户服务满意度业务,由于用户开通了语音秘书和通信助理,漏话提醒等等,坐席拨打时对方由…

【HTML】开源模拟输入框动画

代码地址: https://uiverse.io/eslam-hany/strange-goose-48代码地址: https://uiverse.io/vnuny/moody-swan-60代码地址: https://uiverse.io/boryanakrasteva/hard-pig-16代码地址: https://uiverse.io/Harsha2lucky/lovely…

TCP和UDP的主要区别以及应用场景

目录 1.主要区别 2.应用场景 1.主要区别 TCP(Transmission Control Protocol):有连接,可靠传输,面向字节流,全双工通讯; UDP(User Datagram Protocol):无连…

树莓派的启动

我的板子是树莓派3B。 [ 0.000000] Booting Linux on physical CPU 0x0 [ 0.000000] Linux version 6.6.31rpt-rpi-v7 (sergeraspberrypi.com) (gcc-12 (Raspbian 12.2.0-14rpi1) 12.2.0, GNU ld (GNU Binutils for Raspbian) 2.40) #1 SMP Raspbian 1:6.6.31-1rpt1 (202…

【C++ Primer Plus习题】8.6

问题: 解答: #include <iostream> using namespace std;template <typename T> T maxn(T arr[], int len)//通用 {T max 0;for (int i 0; i < len; i){if (max < arr[i]){max arr[i];}}return max; }template<> const char* maxn<const char*&g…

SpringBoot+Vue实现大文件上传(断点续传-后端控制(一))

SpringBootVue实现大文件上传&#xff08;断点续传&#xff09; 1 环境 SpringBoot 3.2.1&#xff0c;Vue 2&#xff0c;ElementUI&#xff0c;spark-md5 2 问题 在前一篇文章&#xff0c;我们写了通过在前端控制的断点续传&#xff0c;但是有两个问题&#xff0c;第一个问题&…

怎么在Windows操作系统部署阿里开源版通义千问(Qwen2)

怎么在Windows操作系统部署阿里开源版通义千问&#xff08;Qwen2&#xff09; | 原创作者/编辑&#xff1a;凯哥Java | 分类&#xff1a;人工智能学习系列教程 添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff09; GitHub上qwen2截图 随着人工智能技术的不断…

【华为】轻松get!eNSP登录无线AC Web界面的新姿势

【华为】轻松get&#xff01;eNSP登录无线AC Web界面的新姿势 无线AC&#xff1a;web界面实验准备华为云配置01 拉取设备02添加UDP端口03再添加VMnet1(VMnet8 也行)网段连接AC的端口04最后设置端口映射 无线AC配置01拉取AC设备和连接华为云02配置AC的g0/0/1端口&#xff08;SVI…

AI时代,需要什么样的服务器操作系统?

文&#xff5c;刘俊宏 编&#xff5c;王一粟 AI时代&#xff0c;中国的服务器系统正在面临一场双重挑战。 今年6月底&#xff0c;最主流的开源服务器操作系统CentOS正式停服&#xff0c;找一个合适的操作系统进行迁移成为了必选项。同时&#xff0c;AI时代的到来&#xff0c…

笔记:《利用Python进行数据分析》之数据聚合

观前提示&#xff1a;这节内容不多&#xff0c;但难度较大&#xff0c;尤其是要能熟练运用时很不容易的 数据聚合 聚合指的是任何能够从数组产生标量值的数据转换过程。之前的例子已经用过一些&#xff0c;比如mean、count、min以及sum等。你可能想知道在GroupBy对象上调用me…

网络原理 - 初识

文章目录 局域网(LAN)广域网(WAN)网络设备IP地址格式 端口号格式 认识网络协议协议分层 OSI七层模型(只是理论,没有实际运用)TCP/IP五层&#xff08;或四层&#xff09;模型网络设备所在分层 封装和分用 计算机之间通过网络来传输数据&#xff0c;也称为网络通信。 根据网络互连…

AI问答:.NET核心组成概要、程序运行步骤和查询SDK版本的方法

.NET三大组成 ①Runtime (运行时)&#xff1a; CLR&#xff1a;公共语言运行时&#xff0c;执行程序、内存管理、垃圾回收&#xff08;GC&#xff09;、安全性检查、异常处理&#xff0c;是跨平台的关键要素。 JIT&#xff1a;实时编译器&#xff0c;将中间语言…

JDBC与数据库之间的操作(增删改查、获取主键、业务逻辑分离、属性文件配置)

参考视频哔哩哔哩 1、Service和Servicelmpl的概念 java中service和servicelmpl是常见的代码组织方式 Service是指业务逻辑的接口&#xff0c;定义了系统对外提供的功能。Servicelmpl是Service接口的具体实现&#xff0c;实现了具体的业务逻辑。 Service和Servicelmpl的好处…

Android自定义View实现不同朝向字体变色

实现效果&#xff1a; 1.一个文字两种颜色 2.实现不同朝向 3.结合ViewPager 思路&#xff1a;TextView可行&#xff1f;系统提供的只能够显示一种颜色&#xff0c;需要自定义View extends TextView&#xff1a;onMeasure()不需要实现 textColor颜色&#xff0c;textSize字体大小…

OpenAI Whisper API (InvalidRequestError)

题意: OpenAI Whisper API&#xff08;无效请求错误&#xff09; 问题背景&#xff1a; Im trying to use OpenAI Whisper API to transcribe my audio files. When I run it by opening my local audio files from disk, it worked perfectly. Now Im developing a FastAPI e…

学习WebGl基础知识(二)

学习目标&#xff1a; 掌握WebGl基础知识 学习内容&#xff1a; 创建一个Webgl程序 创建三维上下文对象创建顶点着色器和片元着色器创建和编译顶点着色器和片元着色器创建着色器程序对象绘制图元 创建一个Webgl程序 1.第一步获取画布&#xff0c;创建三维上下文对象 <ca…