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

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

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.混合并行

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Visual Studio 2022 成功配置QT5.12.10

目录 下载并安装Visual Studio 2022 Qt5.12.10下载 Qt5.12.10安装 Qt VS Tools for Visual Studio 2022下载 Visual Studio 2022配置 测试 下载并安装Visual Studio 2022 下载社区版并安装,这个比较快。 Qt5.12.10下载 官网下载很慢,还不如百度网…

在visual studio中调试时无法查看std::wstring

1.问题 在调试的时候发现std::wstring类型的变量查看不了,会显示(error)|0,百思不得其解。 2.解决方法 参考的:vs2015调试时无法显示QString变量的值,只显示地址_vs调试qstring的时候如何查看字符串-CSDN博客 在工具/选项/调试…

Linux网络文件共享服务2(基于NFC)

目录 一、初步了解NFS 1、概念 2、工作原理 3、NFS优势和缺点 3.1优点 3.2缺点 二、NFS软件介绍 2.1 NFS共享配置文件格式 2.2 NFS工具 2.2.1 exportfs 2.2.2 showmount 2.2.3 mount.nfs 三、NFS服务部署 1、服务器部署配置 2、客户端配置 3、服务测试 一、初步…

解决英特尔无线网卡WiFi或者蓝牙突然消失问题

winR,输入“devmgmt.msc”,检查设备管理器中的无线网卡驱动是否安装好。 访问https://www.intel.cn/content/www/cn/zh/download/19351/windows-10-and-windows-11-wi-fi-drivers-for-intel-wireless-adapters.html下载对应系统版本的英特尔无线网卡WiFi…

VMware虚拟机忘记密码操作方法

下面已openEuler虚拟机为例: 1、点击重启时,一直按esc(鼠标点击一下,确保鼠标在你的虚拟机里面) 2、一直到进入到如下页面按e键(可能会略有不同) 3、按e键后跳转到如下页面 4、在该页面输入 in…

软件测试|使用selenium实现文件上传

简介 文件上传是我们web自动化测试工作中经常使用的场景&#xff0c;selenium同样也是支持我们实现自动化的文件上传操作&#xff0c;本文就来给大家介绍一下selenium如何实现自动化文件上传。 input标签文件上传 一般情况下&#xff0c;文件上传的按钮是一个<input>标…

纯c++简易的迷宫小游戏

一个用c写的黑框框迷宫 适合新手入门学习 也适合大学生小作业 下面附上代码 总体思路 初始化游戏界面&#xff1a;设置迷宫的大小&#xff08;WIDTH和HEIGH&#xff09;&#xff0c;生成迷宫地图&#xff08;map&#xff09;&#xff0c;包括墙壁、空地、起点和终点。显示…

设计模式-委托模式

设计模式专栏 模式介绍模式特点应用场景委托模式在GUI编程场景的应用代码示例Java实现委托模式Python实现委托模式 委托模式在spring中的应用 模式介绍 委托模式是一种软件设计模式&#xff0c;其中一个对象&#xff08;委托对象&#xff09;将某些操作委托给另一个对象&#…

关于queue的两道编程题

在蓝桥网站上面的两道题 https://www.lanqiao.cn/problems/1113/learning/?page1&first_category_id1&problem_id1113 #include <bits/stdc.h> using namespace std; int main() {queue<string> V,N;int m;cin>>m;while(m--){string op;cin>>…

5文件操作

包含头文件<fstream> 操作文件三大类&#xff1a; ofstream : 写文件ifstream &#xff1a;读文件fstream : 读写文件 5.1文本文件 -文件以ascii的形式存储在计算机中 5.1.1写文件 步骤&#xff1a; 包含头文件 #include "fstream"创建流对象 ofs…

Edge浏览器入门

关于作者&#xff1a; CSDN内容合伙人、技术专家&#xff0c; 从零开始做日活千万级APP&#xff0c;带领团队单日营收超千万。 专注于分享各领域原创系列文章 &#xff0c;擅长java后端、移动开发、商业化变现、人工智能等&#xff0c;希望大家多多支持。 目录 一、导读二、概览…

亚马逊店飞飞ERP系统,跟卖+铺货+物流发货模式综合一体的ERP系统

跨境电商亚马逊&#xff0c;目前为止电商行业比较靠前的电商平台&#xff01;那么有人做电商&#xff0c;就会有人出单&#xff0c;有人出单就会有中转仓需求&#xff0c;代打包&#xff0c;代贴单&#xff01;那么这一切都是有一套逻辑完善的ERP来完成&#xff01;前端通过授权…

MySQL面试题 | 07.精选MySQL面试题

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

乡镇档案有必要进行档案数字化吗?

乡镇档案进行数字化是有必要的。数字化可以将纸质档案转化为电子文件&#xff0c;提高档案的存储和管理效率。以下是一些数字化档案的好处&#xff1a; 1. 提高存储效率&#xff1a;数字档案可以节省大量的物理空间&#xff0c;减少纸质档案的存储和维护成本。 2. 方便检索和共…

VS QT 创建新的QT类后,编译报错无法解析的外部符号 “public: virtual struct QMetaObject const *

问题描述&#xff1a; 新建QT的 Widgets 类&#xff0c;创建新的窗口 在编译的时候出现以下报错信息&#xff1a; 1>vfhclassifydialog.obj : error LNK2001: 无法解析的外部符号 "public: virtual struct QMetaObject const * __cdecl VfhClassifyDialog::metaObject…

【python入门】day27: 模拟高铁售票系统

界面 代码 #-*- coding:utf-8 -*- import prettytable as pt#---------导入漂亮表格 import os.path filename ticket.txt#更新座位状态 def update(row_num):#------更新购票状态with open(filename,w,encodingutf-8) as wfile:for i in range(row_num):lst1 [f{i1},有票,有…

Vue-路由-声明式导航

1. 导航链接 vue-router 提供了一个全局组件 router-link (取代 a 标签) 能跳转&#xff0c;配置 to 属性指定路径(必须) 。本质还是 a 标签 &#xff0c;to 无需 #能高亮&#xff0c;默认就会提供高亮类名&#xff0c;可以直接设置高亮样式 如&#xff1a; <div class&…

数据结构及其简单实现

栈 先进后出栈顶操作&#xff08;栈顶进&#xff0c;栈顶出&#xff09; class Strock {constructor() {this.data [] // 可以是对象this.count 0}push(item) {// 实现有三种// 1. this.data.push(item); // 2. this.data[this.data.length] item; this.count// 3this.dat…

五种嵌入式经典通信总线协议

一.先前知识 1.并行与串行 并行通信和串行通信是两种不同的数据传输方式&#xff1a; 并行通信&#xff1a;并行通信是指在同一时间使用多条并行传输的线路传输多个比特的数据。每个比特使用独立的线路进行传输&#xff0c;同时进行。这样可以在一个时钟周期内传输多个比特&…

Kafka入门基本概念(详细)

什么是kafka Kafka是一种高吞吐量的分布式发布订阅消息系统&#xff08;消息引擎系统&#xff09;&#xff0c;它可以处理消费者在网站中的所有动作流数据。 这种动作&#xff08;网页浏览&#xff0c;搜索和其他用户的行动&#xff09;是在现代网络上的许多社会功能的一个关键…