大语言模型面试问题【持续更新中】

news2024/11/17 23:38:56

自己在看面经中遇到的一些面试题,结合自己和理解进行了一下整理。

transformer中求和与归一化中“求和”是什么意思?
求和的意思就是残差层求和,原本的等式为y = H(x)转化为y = x + H(x),这样做的目的是防止网络层数的加深而造成的梯度消失,无法对前面网络的权重进行有效调整,导致神经网络模型退化(这种退化不是由过拟合造成的,而是较深模型后面添加的不是恒等映射反而是一些非线性层)。已经学习到较饱和的准确率(或者当发现下层的误差变大时),那么接下来的学习目标就转变为恒等映射的学习,也就是使输入x近似于输出H(x),以保持在后面的层次中不会造成精度下降。

注意力机制中计算注意力分数时为什么会除以根号dk?
这和softmax的求导有关,softmax的计算公式=exp(x1)/exp(x1)+exp(x2),另p=exp(x1)/exp(x1)+exp(x2),那么softmax求导之后=p*(1-p),当p趋近于1时,softmax的导数就趋近于0。故除以根号dk的原因是:为了避免softmax计算的结果过大,造成偏导数为0。

多头注意力比单头注意力的好处?
注意力的计算是并行进行的,多头可以提高计算效率。并且多头可以捕获不同子空间内的特征。

transformer比起RNN的优势?
RNN在传播的过程中会出现信息衰减,而transformer当前词不管距离其他词多远,其只有这个词与其他词的相关性有关。并且transformer的encode可以并行计算,RNN不可以。

transformer为什么使用层归一化?
(当前值减均值)/ 标准差。减小梯度消失和梯度爆炸的问题,并提高网络的泛化性能。*

批量归一化是不同训练数据之间对单个神经元的归一化,层归一化是单个训练数据对某一层所有神经元之间的归一化。

transformer中解码器的注意力与编码器的区别
decode中的自注意力是带掩码的,不让decode看到后文。还有一个encode-decode注意力层,这一层注意力层只有q来源于上一层decode单元的输出,剩下的k、v都来源于encode最后一层的输出。

前馈层
两层relu激活函数,一层全连接神经网络。

BERT的训练任务
1.在输入数据中选择15%用于预测,这15%的数据中有80%被替换为mask,10%的单词被替换为其他词,10%的单词保持不变。2.上下段落匹配,其中50%使用正确的上下句关系,50%随机抽取一个句子拼在后面。

BERT的优缺点
1.预训练阶段会出现特殊的[MASK]字符,而在下游任务中不会出现,造成预训练和微调之间的不匹配。
2.每个batch只有15%的token会被预测,所有收敛速度会比传统语言模型慢。
3.缺乏生成能力。

chatgpt的训练过程
1.SFT阶段(有阶段微调):使用问答对微调GPT3。这一阶段的损失是交叉熵。
2.RM奖励模型:使用1的SFT模型收集每个问题的4-9个回答,并对其进行人为排序。这一阶段使用的损失是排序损失函数,排序高的回答的奖励值-排序低的回答的奖励值,我们希望这个值越大越好。
3.PPO算法更新策略:

LLAMA作出的改进
1.归一化又LN改为了RMS Norm。
2.SwiGLU替代ReLU。
3.旋转位置编码替代位置编码。

ChatGLM作出的改进
1.重新排列了层归一化和残差连接的顺序
2.用GeLU替。换ReLU激活函数
3.在结构和训练目标上兼容这三种预训练模型,需要GLM中同时存在单向注意力和双向注意力,当attention_mask为全1时为双向的attention,当attention_mask为三角矩阵时为单向的attention。
4.使用P-tuning进行的微调。

ChatGLM的训练任务
1.文档级别的预测/生成:从文档中随机采样一个文本片段进行掩码,片段的长度为文档长度的50%-100%。
2.句子级别的预测/生成:从文档中随机掩码若干文本片段,每个文本片段必须为完整的句子,被掩码的词数量为整个文档长度的15%。
既保证了模型的自编码能力又有自回归能力。

Baichuan作出的改进
1.RoPE位置编码
2.RMSNorm归一化
3.SwiGLU激活函数
4.1.2万亿训练数据/上下文窗口4096

参数微调的方法
1.Adapter Tuning:将其嵌入Transformer的结构里面,在训练时,固定住原来预训练模型的参数不变,只对新增的Adapter结构进行微调。
2.Prefix Tuning:构造隐式的输入token,加入到输入前缀(我的理解是将prompt变成可以调整参数的格式)
3.P-tuning:同样加了可微的virtual token,但是仅限于输入,没有在每层加。且virtual token的位置也不一定是前缀,插入的位置是可选的,这里的出发点实际是把传统人工设计模版中的真实token替换成可微的virtual token。
4.P-tuning V2:在输入前面的每层加入可微调的参数。
5.LoRA:冻结了预训练的模型权重,在需要训练的矩阵开通一个旁路矩阵,分为一个降秩矩阵和一个升秩矩阵(比如一个100×100的矩阵可以替换为一个100×2和一个2×100两个矩阵,参数量减少了10000-400),将最后的结果加到原始矩阵上。
6.QLoRA:引入了4位量化、双量化和利用nVidia统一内存进行分页。所有这些步骤都大大减少了微调所需的内存,同时性能几乎与标准微调相当。

模型量化
比如8位量化需要最大值为127,那么选取模型中参数最大的值/127为缩放比例a,将所有的数都除以这个缩放比例a。

Actor-Critic架构
在这里插入图片描述
Actor演员使用SFT模型初始化,使用问答对来更新其策略;Critic评论家使用RM模型初始化,用来拟合旧价值估计;Reward Model用来产生当前状态和策略下获得的奖励值;奖励值减掉SFT旧策略与新策略之间的KL散度作为reward,优势函数等于reward减掉旧状态价值估计。当优势函数大于0时,就要鼓励当前的动作;当优势函数小于0时,就要抑制当前动作。

优化器
SGD:随机梯度下降,它使用数据集中的单个样本或一批样本的梯度来更新模型参数。计算过程为原始参数=原始参数-学习率×梯度。
Adam:自适应学习率的梯度下降,Adam算法将不同的梯度给予不同的权重,使得神经网络在学习率稳定时,能快速、稳定的收敛到最佳点。
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
当m0很小时,使用修正因子重新计算了mt。

为什么sigmoid函数和tanh函数会出现梯度消失
这和两者的求导有关,sigmoid(x) = 1/(1+exp(-x)) = p,求导后表达式为p(1-p),当x趋于正无穷或负无穷时,p趋于1或0,求导后的结果趋于0,因此会出现梯度消失。
tanh(x) = (exp(x)-exp(-x))/(exp(x)+exp(-x)) = p,求导后表达式为1-p2,当x趋于正无穷或负无穷时,p趋于1或-1,求导后的结果趋于0,因此会出现梯度消失。

BERT为什么会做编码任务、完型填空任务、段落匹配任务
BERT本身的结构就是transformer的Encode,其会使用位置编码、词级编码以及段级编码作为输入,经过Encoder的单元之后形成嵌入向量。
当BERT在做完型填空任务时,BERT会将需要预测的位置,通过将最后的输出linear线性变换后,将Embedding_size转化为vovab_size,再进行softmax激活函数之后得到最后单词的概率,使用交叉熵函数进行损失计算。
在这里插入图片描述
当BERT在做段落匹配任务时,会将CLS处进行linear线性变换后将Embedding_size转化为2,再通过sigmoid函数计算概率来判断这两个句子是否构成上下句的关系。
在这里插入图片描述

BERT模型为什么要将15%的词语进行80%mask、10%替换、10%什么也不做,而不是全部mask
在训练时,不是用这种方式,而是全部mask掉的话,模型就会把虽有的注意力集中到“mask”这个词汇上了,模型就能知道不出现“mask”的地方我不用管,啥时候出现“mask”我在管,这对模型提取语义关系是不利的。使用(80% mask,10% 随机替换,10% 保持原词)的方式之后呢,模型不只是需要在“mask”位置做工作,还要时刻预防着随机替换的情况呀,也就是检查这个句子对不对,这就大大提高了模型提取语义效果的能力。

为什么relu激活函数要优于sigmoid激活函数?
1.relu激活函数在正区间内不会出现梯度消失。
2.relu的偏导数计算量比sigmoid小。
3.relu使得一部分神经元的输出为0,这样就造成了网络的稀疏性,并且减少了参数的互相依存关系,缓解了过拟合问题的发生。
缺点:函数导致负梯度在经过该ReLU单元时被置为0,在下一层传播时也为0,即流经该神经元的梯度永远为0,不对任何数据产生响应。

为什么会出现梯度消失?
采用了不合适的激活函数。
隐藏层数太多。
解决:使用合适的激活函数,使用归一化,残差网络。

为什么会出现梯度爆炸?
参数初始化太大
隐藏层数太多。
解决:使用梯度裁剪策略,使用合适的激活函数,使用归一化,使用残差网络。

lora为什么可以映射到低秩维度?
lora论文中指出常见的预训练模型具有非常低的内在维度(如果你有一个在三维空间中分布的数据集,但所有的数据点都严格地位于同一平面上,那么这个数据集的内在维度就是2,因为你只需要两个坐标就能准确地描述每个数据点);换句话说,存在一个低维度的重新参数化,对于微调来说与完整参数空间一样有效。用少量数据微调大语言模型可能不需要那么多维度的参数,而因为尽管模型可能有数亿个参数,但这些参数中的大部分可能并不需要改变,或者它们的改变对模型的性能没有太大影响。

LSTM为什么选择sigmoid和tanh而不选择relu?
因为sigmoid和tanh都是饱和函数,当输入达到一定值时,输出几乎不发生变化;而relu难以实现门控的效果。
sigmoid用于“开关”,控制信息能流出多少;tanh符合0中心分布,此外tanh函数在输入为0附近相比 Sigmoid函数有更大的梯度,通常使模型收敛更快。

LSTM如何缓解RNN的梯度消失或梯度爆炸
因为每个LSTM都有门控机制,中间记忆细胞通过输入门和遗忘门之后进行累加,而不像RNN那样的累乘,从而缓解了RNN的梯度消失或梯度爆炸。

Deepspeed分布式计算
1.数据并行,在几张GPU卡上平均把训练的数据分开。
2.模型并行,分为层间并行和层内并行(比如多头注意力分开多个卡进行训练)。
在这里插入图片描述
3.混合并行

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

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

相关文章

Spring Boot中加@Async和不加@Async有什么区别?设置核心线程数、设置最大线程数、设置队列容量是什么意思?直接在yml中配置线程池

在 Spring 中,Async 注解用于将方法标记为异步执行的方法。当使用 Async 注解时,该方法将在单独的线程中执行,而不会阻塞当前线程。这使得方法可以在后台执行,而不会影响主线程的执行。 在您提供的代码示例中,a1() 和…

【conda】pip安装报错,网络延时问题解决记录(亲测有效)

【conda】pip安装报错,网络延时问题解决记录 1. pip install 报错如下所示2. 解决方案: 1. pip install 报错如下所示 pip._vendor.urllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool(hostfiles.pythonhosted.org, port443): Read timed out.…

Spring Boot 中批量执行 SQL 脚本的实践

在Spring Boot应用中,有时候我们需要批量执行存储在数据库中的 SQL 脚本。本文将介绍一个实际的案例,演示如何通过 Spring Boot、MyBatis 和数据库来实现这一目标。 0、数据库层 CREATE TABLE batchUpdate (id INT AUTO_INCREMENT PRIMARY KEY,update_…

现阶段Python和Java哪个更吃香?

现阶段Python和Java哪个更吃香? 在开始前我有一些资料,是我根据网友给的问题精心整理了一份「Java的资料从专业入门到高级教程」, 点个关注在评论区回复“888”之后私信回复“888”,全部无偿共享给大家!!&…

基于pyqt5+scapy 根据ip 具体端口 进行扫描 的程序

先给出代码 import sysfrom PyQt5 import uic from PyQt5.QtWidgets import *from scapy.all import * import argparse import logging from scapy.layers.inet import IP, TCP from scapy.sendrecv import sr1class MyWindow(QWidget):def __init__(self):super().__init__(…

2024.1.14周报

目录 摘要 一、文献阅读 1、题目 2、摘要 3、模型架构 4、文献解读 一、Introduction 二、实验 三、结论 二、PINN 一、PINN简介 二、PINN比传统数值方法有哪些优势 三、PINN方法 四、正问题与反问题 总结 摘要 本周我阅读了一篇题目为Deep Residual Learning …

还有人不知道开源知识库吗?低成本搭建就靠它了

在德拉克洛瓦笔下的乔治华盛顿看着蔽日的凯特,可能也没想到他的一句“知识就是力量”会穿越几个世纪,直到互联网时代。在这个信息爆炸的年代,知识管理成为了企业发展的重要支柱,而开源知识库,则成为了低成本搭建公司知…

Git核心知识总结

✅作者简介:大家好,我是Leo,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉 🍎个人主页:Leo的博客 💞当前专栏: 工具教程 ✨特色专栏: MyS…

centos7配置时间同步网络时间

centos7配置时间同步网络时间 1、安装 NTP 工具。 sudo yum install -y ntp2启动 NTP 服务。 sudo systemctl start ntpd3、将 NTP 服务设置为开机自启动。 sudo systemctl enable ntpd4、验证 date

液晶偏振光栅

1、偏振 光是横波.在垂直于光的传播方向的平面内光波振动(即E矢量振动) 各方向振幅都相等的光为自然光; 只在某一方向有光振动的光称为线偏振光;各方向光振动都有,但振幅不同的光叫部分偏振光.螺旋着振动的光称圆偏振光,分旋和右旋 2、庞加莱球表示法 庞加莱球是用…

Java开发或调用WebService的几种方式

Java开发或调用WebService的几种方式 一.JDK自带的 JAX-WS 方式开发WebService服务 1.服务端开发与发布 编写接口 WebService public interface JaxWsDemo {String helloJaxWS(String userName); }编写接口的实现类 WebService public class JaxWsDemoImpl implements Jax…

微服务架构设计核心理论:掌握微服务设计精髓

文章目录 一、微服务与服务治理1、概述2、Two Pizza原则和微服务团队3、主链路规划4、服务治理和微服务生命周期5、微服务架构的网络层搭建6、微服务架构的部署结构7、面试题 二、配置中心1、为什么要配置中心2、配置中心高可用思考 三、服务监控1、业务埋点的技术选型2、用户行…

数据结构学习 leetcode31 下一个排列

关键词:下一个排列 字典序 排列 这是我在做jz38字符串的排序的时候,一种解题方法是字典序,用到的就是这种方法。这种方法支持不重复地输出全排列。 题目:下一个排列 思路: 我看了官方题解和这位大哥的题解&#xff…

聚合收益协议 InsFi :打开铭文赛道全新叙事的旋转门

​“InsFi 协议构建了一套以铭文资产为基础的聚合收益体系,该体系正在为铭文资产捕获流动性、释放价值提供基础,该生态也正在成为铭文赛道掘金的新热土。” 在 2023 年年初,Ordinals 协议在比特币链上被推出后,为比特币链上带来了…

RFID服装物流零售管理系统设计解决方案

一、方案概述 本方案是广东航连科技根据服装企业客户的需求量身定制的解决方案,该方案综合了RFID技术、网络技术、计算机技术、数据库技术和无线通信技术,结合服装企业的实际需求以及航连科技的丰富经验和独特技术,提出了以下基于RFID的物流…

132基于matlab的采集信号模极大值以及李氏指数计算

基于matlab的采集信号模极大值以及李氏指数计算, 1)计算信号的小波变换。 2)求出模极大曲线。 3)计算其中两个奇异点的Lipschitz指数,程序已调通,可直接运行。 132matlab模极大曲线Lipschitz (xiaohongshu.com)

Windows Server调整策略实现999999个远程用户用时登录

正文共:1234 字 23 图,预估阅读时间:2 分钟 上篇文章中(Windows Server 2019配置多用户远程桌面登录服务器),我们主要介绍了Windows Server 2019在配置远程桌面时,如何通过3种方式创建本地用户账…

Hive使用shell调用命令行特殊字符处理

1.场景分析 数据处理常用hive -e的方式,通过脚本操作数仓,过程中常常遇到特殊字符的处理,如单双引号、反斜杠、换行符等,现将特殊字符用法总结使用如下,可直接引用,避免自行测试的繁琐。 2.特殊字符处理 …

获取当前设备的IP

背景: 在本地使用自带webUI的项目时,需要制定webUI的访问地址。 一般本地访问使用:127.0.0.1,配置为可以从其他设备访问时,需要指定当前设备的IP,或者指定为0.0.0.0。 例如:使用locust的时候&a…

中间件框架知识进阶

概述 近期从不同渠道了解到了一些中间件相关的新的知识,记录一下收获。涉及到的中间件包括RPC调用、动态配置中心、MQ、缓存、数据库、限流等,通过对比加深理解,方便实际应用时候更明确如何进行设计和技术选型。 一、RPC框架中间件系列 1、…