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

目录

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是用来确保解码器生成时只依赖于过去的上下文,这是两种不同的应用场景和目的。

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

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

相关文章

【深度学习】CNN简述

文章目录 一、卷积神经网络(CNN)二、CNN结构特性1. CNN 典型结构2. 局部连接3. 权重共享4.空间或时间上的次采样 三、理解层面 一、卷积神经网络(CNN) 卷积神经网络(Convolutional Neural Network,CNN)是一种用于处理…

理解OSPF 特殊区域NSSA和各类LSA特点

本文基于上文 理解OSPF Stub区域和各类LSA特点 在理解了Stub区域之后,我们再来理解一下NSSA区域,NSSA区域用于需要引入少量外部路由,同时又需要保持Stub区域特性的情况 一、 网络总拓扑图 我们在R1上配置黑洞路由,来模拟NSSA区域…

论文阅读笔记:Denoising Diffusion Implicit Models (5)

0、快速访问 论文阅读笔记:Denoising Diffusion Implicit Models (1) 论文阅读笔记:Denoising Diffusion Implicit Models (2) 论文阅读笔记:Denoising Diffusion Implicit Models &#xff08…

蓝桥杯2024年第十五届省赛真题-R 格式

题目链接&#xff1a; 思路&#xff1a; 通过数组模拟d的每一位&#xff0c;逐位进行计算&#xff0c;从而实现对d的精确处理。 代码&#xff1a; #include<bits/stdc.h> #define int long long using namespace std; const int N 2020;int n; string s; vector<i…

深入探索 Linux Top 命令:15 个实用示例

在 Linux 系统管理中&#xff0c;top 命令是系统性能监控不可或缺的工具。它能够实时显示系统的 CPU、内存、进程等资源的使用情况&#xff0c;帮助您快速识别性能瓶颈和异常进程。本文将详细介绍 15 个实用的 top 命令使用示例&#xff0c;旨在帮助您更高效地进行系统管理与优…

15.1linux设备树下的platform驱动编写(知识)_csdn

上一章我们详细的讲解了 Linux 下的驱动分离与分层&#xff0c;以及总线、设备和驱动这样的驱动框架。基于总线、设备和驱动这样的驱动框架&#xff0c; Linux 内核提出来 platform 这个虚拟总线&#xff0c;相应的也有 platform 设备和 platform 驱动。 上一章我们讲解了传统的…

Eclipse 视图(View)

Eclipse 视图(View) Eclipse 视图(View)是 Eclipse 界面的重要组成部分,它提供了用户交互的平台,使得用户可以通过图形界面来编辑、调试、分析代码等。在本文中,我们将深入探讨 Eclipse 视图的功能、使用方法以及它们在软件开发中的作用。 1. 视图的功能 Eclipse 视图具…

Python解决“数字插入”问题

Python解决“数字插入”问题 问题描述测试样例解题思路代码 问题描述 小U手中有两个数字 a 和 b。第一个数字是一个任意的正整数&#xff0c;而第二个数字是一个非负整数。她的任务是将第二个数字 b 插入到第一个数字 a 的某个位置&#xff0c;以形成一个最大的可能数字。 你…

ubuntu部署ollama+deepseek+open-webui

ubuntu部署ollamadeepseekopen-webui 全文-ubuntu部署ollamadeepseekopen-webui 大纲 Ollama部署 安装Ollama&#xff1a;使用命令apt install curl和curl -fsSL https://ollama.com/install.sh | sh ollama-v网络访问配置&#xff1a;设置环境变量OLLAMA_HOST0.0.0.0:11434&…

Java的Selenium常用的元素操作API

click 触发当前元素的点击事件 clear() 清空内容 sendKeys(...) 往文本框一类元素中写入内容 getTagName() 获取元素的的标签名 getAttribute(属性名) 根据属性名获取元素属性值 getText() 获取当前元素的文本值 isDisplayed() 查看元素是否显示 get(String url) 访…

洛谷题单3-P1035 [NOIP 2002 普及组] 级数求和-python-流程图重构

题目描述 已知&#xff1a; S n 1 1 2 1 3 … 1 n S_n 1\dfrac{1}{2}\dfrac{1}{3}…\dfrac{1}{n} Sn​121​31​…n1​。显然对于任意一个整数 k k k&#xff0c;当 n n n 足够大的时候&#xff0c; S n > k S_n>k Sn​>k。 现给出一个整数 k k k&#xff0…

CMDB平台(进阶篇):3D机房大屏全景解析

在数字化转型的浪潮中&#xff0c;数据中心作为企业信息架构的核心&#xff0c;其高效、智能的管理成为企业竞争力的关键因素之一&#xff0c;其运维管理方式也正经历着革命性的变革。传统基于二维平面图表的机房监控方式已难以满足现代企业对运维可视化、智能化的需求。乐维CM…

小白速通:Verilog流水线实现及时序分析

目录 题目&#xff1a;时序分析&#xff1a;时钟频率为50MHz数据1: a10, b20, c30, d40, e2数据2: a5, b15, c25, d35, e3数据3: a8, b12, c16, d24, e4 流水线效率分析 题目&#xff1a; verilog中&#xff0c;y(abcd)*e&#xff0c;时钟频率为50Mhz&#xff0c;用流水线的形式…

【RK3588 嵌入式图形编程】-SDL2-扫雷游戏-创建网格

创建网格 文章目录 创建网格1、概述2、更新Globals.h文件3、创建单元4、创建网格5、传递事件6、清空单元7、反馈单元格已清除8、测试9、完整代码10、总结在本文中,将详细介绍如何构建一个二维的交互式扫雷单元格网格。 1、概述 在本文中,我们将专注于构建扫雷游戏的基础结构…

高精度矢量内积计算方法 (单精度浮点, 超长矢量)

高精度矢量内积计算方法 (单精度浮点, 超长矢量) 对于单精度浮点类型的超长矢量(超过1亿元素)内积计算&#xff0c;累加误差确实是一个重要问题。以下是几种减少误差的方法&#xff1a; 1. Kahan求和算法 这是最常用的补偿求和算法&#xff0c;可以有效减少累加误差&#xf…

Java基础:Logback日志框架

什么是日志 日志技术 可以将系统执行信息&#xff0c;方便的记录到指定位置&#xff08;控制台&#xff0c;文件中&#xff0c;数据库中&#xff09; 可以随时可以开关的形式控制日志的启停&#xff0c;无需侵入到源代码中去进行修改 LogBack日志框架 LogBack快速入门 logb…

MessageQueue --- RabbitMQ WorkQueue and Prefetch

MessageQueue --- RabbitMQ WorkQueue and Prefetch 什么是WorkQueue分发机制 --- RoundRobin分发机制 --- PrefetchSpring example use prefetch --- Fair Dispatch 什么是WorkQueue Work queues&#xff0c;任务模型。简单来说就是让多个消费者绑定到一个队列&#xff0c;共同…

RNN模型与NLP应用——(9/9)Self-Attention(自注意力机制)

声明&#xff1a; 本文基于哔站博主【Shusenwang】的视频课程【RNN模型及NLP应用】&#xff0c;结合自身的理解所作&#xff0c;旨在帮助大家了解学习NLP自然语言处理基础知识。配合着视频课程学习效果更佳。 材料来源&#xff1a;【Shusenwang】的视频课程【RNN模型及NLP应用…

详解AI采集框架Crawl4AI,打造智能网络爬虫

大家好&#xff0c;Crawl4AI作为开源Python库&#xff0c;专门用来简化网页爬取和数据提取的工作。它不仅功能强大、灵活&#xff0c;而且全异步的设计让处理速度更快&#xff0c;稳定性更好。无论是构建AI项目还是提升语言模型的性能&#xff0c;Crawl4AI都能帮您简化工作流程…

从零开始玩python--python版植物大战僵尸来袭

大家好呀&#xff0c;小伙伴们&#xff01;今天要给大家介绍一个超有趣的Python项目 - 用pygame制作植物大战僵尸游戏的进阶版本。相信不少小伙伴都玩过这款经典游戏&#xff0c;今天我们就用Python来实现它&#xff0c;让编程学习变得更加有趣&#xff01;&#x1f31f; 一、…