1.简单介绍下LLMs,有什么优点跟缺点

大模型一般指代1亿以上参数的模型,标准一直在升级,目前万亿参数以上的模型也有了,大语言模型是针对语言的大模型。

优点:语言理解和生成能力强;跨领域知识广泛;支持多语言;快速部署和适应

缺点:缺乏事实准确性;计算资源消耗非常大;可能产生偏见;隐私和安全问题

2. 常见的大模型分类有哪些?

语言大模型,视觉大模型,多模态大模型

自回归语言模型,自编码语言模型,序列到序列语言模型

3.目前主流的LLMs开源模型体系的有哪些?

Prefix Decoder,Causal Decoder,Encoder-Decoder

Encoder-Decoder(原始的Transformer也使用了这一架构):在编码器端采用了双向自注意力机制对输入信息进行了编码处理,在解码器端则使用了交叉注意力机制和掩码自注意力机制,进而通过自回归的方式对输出进行生成(T5)。在偏理解的NLP任务上效果好,在长文本生成任务上效果差,训练效率低。

Causal Decoder(因果语言模型):使用的是单项注意力掩码,以确保每个输入token只能注意到过去的token和它本身,输入和输出的token通过Decoder以相同的方式进行处理(GPT)。文本生成任务效果好,训练效率高,zero-shot能力更强,具有涌现能力。

Prefix Decoder(非因果解码器架构,前缀语言模型):前缀解码器对于输入部分使用双向注意力进行编码,而对于输出部分利用单向的掩码注意力利用该词本身和前面的词进行自回归预测(GLM,PaLM)。与Encoder-Decoder不同在于,前缀解码器在编码和解码过程中是共享参数的,并没有划分为独立的解码器和编码器。部分的token能够互相看到,文本生成任务效果好。

 4.LLMs中,常用的预训练任务包含哪些?(预训练的目标是什么?)

常见的预训练任务主要分为三类:语言建模,去噪自编码以及混合去噪器

语言建模的含义就是自回归生成,任务核心是在于预测下一个词;去噪自编码就是类似选词填空

语言建模的预训练可以作是一种多任务学习过程,例如情感分析任务,数学算数任务等。

去噪自编码的预训练类似于bert里的mask,目标是根据这些损坏的文本恢复出被替换或删除的词片段,任务更复杂,需要设定额外的优化策略,如词替换,替换片段,替换词比例等。

混合去噪器的预训练是将语言建模和去噪自编码器的目标均视为不同类型的去噪任务,对训练任务进行统一建模。

5.LLMs中,涌现能力是啥原因?

简单来说就是一些小的现象慢慢拼凑出来变成一个大的现象,量变到质变

猜想一:评价指标不够平滑,评价指标很严格,就会看到涌现现象的出现,如果给出几个候选答案要LLMs自己选,那么随着模型的不断增大,任务效果在持续稳定变好,但涌现消失。

猜想二:复杂任务和子任务,每个子任务提升20%,最终任务提升6%

 6.什么是Scaling Law,谈谈你对它的理解

Scaling Law的目标是在训练前了解模型的能力,以改善关于大模型的对齐、安全和部署的决定,简单来说训练前知道边界,训练的时候就不用花那么多时间和资源了。

定义:用计算量。数据集规模和模型规模,来预测模型的最终能力

openai:三者中任何一个因素受限制时,Loss与其之间存在幂律关系,当没有其他两个瓶颈是,性能会急剧上升,影响程度为计算量>参数>>数据集大小,更大的模型在样本效率方面表现更好,在实际应用中,应该优先考虑训练较大的模型。

deepmind:在给定计算量下,数据量和模型参数之间的选择平衡存在一个最优解,如果模型的大小加倍,训练数据量也应该加倍,对于给定参数量的模型,最佳训练数据集大小约为模型中参数量的20倍,大模型训练需要更加关注数据集的扩展。

7.什么是LLMs的幻觉问题?

定义:当模型生成的文本不遵循原文一致性或者不符合事实,我们就可以认为模型出现了幻觉问题。

传统任务重的模型幻觉跟LLMs中的模型幻觉的区别:

在传统中,幻觉是一致性问题,与输入的信息产生了冲突,比如输出的摘要跟文档不一致;输出了一些没有体现在输入中的额外信息。

在LLMs中,通常考虑的是事实性问题,因为LLM是open-domain-chat,而不是局限于特定任务,所以数据源可以看做任意的世界知识,如果生成了不在input中但符合事实的,那就也是有用的。

 8.为什么LLMs会出现幻觉问题?

从数据角度看:训练数据可能存在虚假信息;过多的重复信息也可能导致模型的知识记忆出现偏差。

从模型角度看:如果使用不确定性较高的采样算法,会诱导出现更严重的幻觉问题,故意在解码中加一些随机性进一步让其胡编乱造;训练和测试阶段不匹配的问题也会导致幻觉,特别是才长文本生成;模型在预训练阶段记忆的错误的知识,导致严重幻觉。

9.如何评估大模型幻觉问题?

基于参考的评估:使用参考文本或原始信息源作为对比基准

优点:可以通过参考标准的答案来评估生成内容相似性,适合一些标准化生成任务

缺点:许多任务中,参考答案可能并非唯一,生成的内容具有多样性,该方法缺少灵活性,对于大语言模型生成的开放式内容,也不一定有完美的答案

无参考评估:不用标准答案或特定参考来检测模型生成内容的准确性和一致性

基于信息抽取的:先用一个信息抽取模型抽取三元组,通过另外一个模型验证是否准确

缺点:抽取可能出错,信息受限

基于问答的使用一个问题生成模型,根据模型的生成内容产生一系列相关的问题,利用原信息,使用问答模型回答这些问题,奖问答模型的答案与最初生成的答案对比,通过匹配度生成内容的真实性

缺点:抽取可能出错,源信息不一定包括所有所需知识

基于自然语言推理:一个句子在逻辑推导上能推出另一个句子

缺点:性能有限,难以处理需要世界知识的幻觉检测,通常在句子级别进行核查,无法进行更细粒度的分析

基于事实性分类指标:通过人工标注或构造包含幻觉和真是信息的数据集,训练分类模型检测新生成文本是否符合事实,进而判断是否发生了幻觉

缺点:依赖大量标注数据集训练,过程成本较高,且分类模型在检测复杂幻觉是可能有局限

10.如何缓解大模型幻觉问题

从数据方面:构建高质量数据,一般从人工标注和自动筛选

人工标注:训练数据通过人工标注构建高质量适用于某些特定任务的数据集,还可以构建一个细粒度的幻觉评估基准集

自动筛选:利用模型筛选出那些可能导致幻觉的数据;在预训练时,可以给可靠度更高的数据赋予更高的权重,对不可靠的数据降低其权重

从模型层面:从模型结构和训练方法入手

模型结构:编码更多的信息,减少生成随机性,检索增强

训练方式:可控文本生成,提前规划内容框架,强化学习,多任务学习,后处理

现有文章:通过使用外部知识验证主动监测和减轻幻觉

主要思路就是通过联网检索,当出现幻觉时通过检索,将错误的信息进行更改之后再放到模型里进行生成

 11.什么是RAG,它有什么特点?

定义:为生成式模型提供了与外部世界互动,类似一个搜索引擎,找到用户提问最相关的知识或者是相关的对话历史,结合原始提问,创造promt,指导模型生成标准输出,直接一点就是检索技术+LLM提示

特点:依赖大语言模型来强化信息检索和输出;能与外部数据有效集成;数据隐私和安全保障;表现效果因多方面因素而异

12.RAG技术体系的总体思路

主要流程:知识文档的准备;嵌入模型;向量数据库;查询检索和生成回答

知识文档准备:各种文件,需要使用专门的文档加载器或多模态模型,将丰富的知识转换成大语言模型可理解的纯文本数据。文档切片

嵌入模型:转换成向量模式,向量表示更加密集和精确,能够捕捉到句子的上下文关系和核心含义,用向量做一个相似度计算

13. 如何评价RAG项目效果的好坏

针对检索环节的评估:MRR(平均倒数排名);Hits;NDCG

针对生成环节的评估:

非量化:完整性,正确性,相关性

量化:Rouge-L,通过最长公共子序列来测量生成文本和参考文本之间的相似性,类似于F1

14.在使用RAG时候,有哪些优化策略

知识文档准备阶段:

数据清洗:规范文本格式,去除特殊字符和冗余信息;实体解析,消除实体和术语以实现一致的引用;合理划分不同文档;数据增强,使用同义词或者其他语言的翻译来增加语料库的多样性;更新

分块处理:在保持语义连贯性的同时,尽可能减少嵌入内容中的噪声,从而更有效地找到与用户查询最相关的文档部分

分块方法选择:固定大小的分块;内容分块;递归分块;从小到大的分块;特殊结构块

分块大小选择:openai的模型在256跟512大小的快上效果更好,对于长篇文章和书籍,大的块儿更好保留上下文,对于社交媒体新闻帖子,小的块更能捕捉精确语义

嵌入模型:

Word2Vec:有局限性,生成的词向量是静态的

BERT:能够提供动态的词义理解,根据上下文动态调整词义

还有很多其他的模型根据时间来,用最新最好的就ok

向量数据库阶段:某些数据库支持将向量与元数据(即非向量化的数据)一同存储,为向量添加元数据标注,提高检索效率

查询索引阶段:

多级索引:元数据无法充分区分不同上下文类型的情况,多层索引的核心思想是将庞大的数据和信息需求按类别划分,并在不同层级中组织,意味着系统部依赖于单一索引,多级路由机制帮助更有效更精准的获取相关信息的提取

索引/查询算法:如何找到一种合理的匹配。

聚类

位置敏感哈希:哈希值相同的向量被分配到同一组汇总,空间上距离较近的向量更有可能被分到一起

量化乘积:用中心代替周围,图像中有一种损压缩方法是把一个像素周围的几个像素合并,来减少需要存储的信息

分层导航小世界:和六度分隔理论类似

查询转换:

结合历史对话重新表述

假设文档嵌入:提问先生成没有外部知识的回复,然后和原始查询一起进行检索

退后提示:如果原始查询太复杂,可以选择生成一个抽象层次更高的退后问题,与原始问题一起用于检索,以增加返回结果的数量

多查询检索:一个问题分成多个子问题进行查询

检索参数:

稀疏和稠密搜索权重:稠密搜索代表通过向量进行搜索,尝试使用原始字符串进行关键字匹配和稀疏搜索

结果数量(topk):结果数量过多可能导致信息过载,降低回答准确性并增加系统的事件和资源成本

相似度计算:余弦相似度

高级检索策略:上下文压缩;句子窗口搜索;父文档搜索;自动合并(桉树的形状进行父文档搜索);多向量检索;多代理检索(多个策略合并使用);

Self-RAG:与传统的区别是通过检索评分(令牌)和反思评分(令牌)来提高质量,分三步骤,检索、生成和批评。先用检索评分评估用户提问是否需要检索,如果需要检索,就调用外部检索模块查找相关文档,接着LLM分别为每个检索到的知识块生成答案,然后为每个答案生成反思评分来评估检索到的文档是否相关,最后将评分高的交给大模型生成最终的答案

重排模型:语义最相似是否总代表最相关?不一定,使用RAG构建系统时都应该尝试重排方法

生成回答阶段:

提示词:通过改变提示词的形式,可以有效的影响模型对不同类型问题的接受程度和回答方式

大语言模型:根据需求选择对应的LLM就ok

15.什么是知识蒸馏?

定义:把一个大的教师模型的知识萃取出来,把他浓缩到一个小的学生模型里

16.传统的知识蒸馏的方法有哪些?

基于反馈的知识蒸馏方法和基于特征的知识蒸馏方法

基于反馈的知识蒸馏:主要关注教师模型最后一层输出的logits,这些logits经过softmax变换后,可用作学生模型的“软标签”来进行学习,核心目标是让学生模型的logits近似教师模型的logits

基于特征的知识蒸馏:基于中间特征表示的蒸馏,关注与教师模型的中间层输出的激活值,并使用这些激活值作为监督信息训练学生模型,中间层特征提供了更丰富的模型信息,有助于在模型蒸馏过程中实现更为有效的知识迁移

17.大语言模型的知识蒸馏方法有哪些?

根据大模型权重是否可以获得,分别使用白盒模型蒸馏方法和黑盒模型蒸馏方法

白盒蒸馏方法:可以获取模型权重来指导学生模型,典型的方法为MINILLM,其最大可以吧13BLLaMa蒸馏到7B

黑盒蒸馏方法:只能使用其输出信息来训练小模型

18. 谈一下对模型量化的了解

模型量化是一种优化深度学习模型的技术,其目标是减小模型的存储需求和计算复杂度,从而使模型在资源有限的设备上运行的更有效

模型量化的主要方式:

使用更小的数据集:将传统的32为浮点数转化为16为浮点数或8位整数,进一步降低存储空间

使用压缩算法:使用Huffman编码,为频率较高的符号分配更短的编码,为频率较低的符号分配较长的编码

模型量化的优势:减少存储空间,降低内存占用,加速推理速度

模型量化的挑战:精度损失,权衡效率与精度

模型量化是在一种资源受限场景中提升模型效率的必要技术,但需要仔细调优以保持精度和效率的平衡

19.模型压缩和加速的方法有哪些呢?

知识蒸馏

参数剪枝:通过分析模型中各参数对性能的贡献,删除那些冗余或贡献较小的参数,适合模型过大且过拟合的情况

网络剪枝:通过分析神经网络结构,删除冗余或不重要的神经元

蒸馏对抗网络:结合知识蒸馏和对抗训练,对需要高可靠性和稳定性的场景效果显著

层次化剪枝:根据每一层对整体性能的影响,针对不同层设置不同程度的剪枝策略

低秩分解:将较大的权重矩阵分解成几个小矩阵,减少采纳数数量和计算开销

卷积分解:将复杂的卷积操作分解为简单的计算模块,适合实时任务

 20.训练的四个关键阶段

预训练,有监督微调,奖励模型,强化学习

预训练:极高的硬件和计算成本,以及长时间的运行

微调阶段(后三个):相对轻量,仅需几块GPU和较短时间

微调的核心目标是为了在预训练模型的基础上,针对特定任务进一步优化模型

21.什么时候需要对大模型进行微调

任务复杂度高,情境学习效果不足 

零样本或少样本推理效果欠佳

零样本推理:模型仅根据问题上下文和提示进行推理,不依赖任何示例

少样本推理:在提示中加入一到多个示例,帮助模型更精确地生成期望的输出

领域或任务需求高度专业化

输出结果不符合用户需求

22.微调方法有哪些?

全量微调参数高效微调 

全量微调还会损失多样性,存在灾难性遗忘的问题

在微调策略方面,有有监督微调基于人类反馈的强化学习

有监督微调:通过标注数据指导模型的学习,使模型在特定任务上进行优化

基于超参数调整:调整学习率、批量大小等超参数(炼丹)

迁移学习:利用预训练模型,通过少量数据进行微调

多任务学习:同时训练多个任务

少样本学习:从少量数据中学习新任务

任务特定微调

基于人类反馈的强化学习:通过人类反馈优化模型,使其生成符合人类期望的结果

奖励模型:根据人类评分进行调整

邻近策略优化:跑步者逐步增加训练强度

比较排名:通过人类评估不同输出的优劣

偏好学习:从人类偏好中学习,优化输出

参数高效微调:最小化训练参数数量,提高特定任务性能

23. 参数高效微调有哪些方法?

AdapterPrefix Tuning以及LoRA

Adapter:在预训练模型的各层之间插入较小的神经网络模块,只需对适配器参数进行训练便能实现高效微调的目标(层之间)

Prefix Tuning:在模型的输入或隐层添加K个额外可训练的前缀标记(调整K和V)

LoRA:通过学习小参数的低秩矩阵来近似模型权重矩阵W的参数更新(调W矩阵)

24.怎么理解 Adapter类?

在预训练模型每层中插入用于下游任务的参数,模型主体冻结,仅训练特定于任务的参数

针对每一个Transformer层,增加两个Adapter结构(多头注意力和第二个feed-forward)

每个Adapter由两个前馈子层组成,先将原始输入d维度投影到m维度,中间经过一个非线性层,输出再还原维度

25. 怎么理解Prefix类?

在输入token之前构造一段任务相关的virtual token作为Prefix,然后训练的时候只更新Prefix部分的参数,而LLM中的其他部分参数固定

Prompt Tuning:通过反向传播更新参数来学习Prompts,而不是人工设计Prompts;同时冻结模型原始权重,之训练Prompts参数,训练完以后,用同一个模型可以做多任务推理(软提示)

给小提示就不用像之前每一个对应一个下游任务,现在直接给提示然后整个丢进去

Prompt Tuning只在输入层添加参数,Prefix Tuning是每一层都添加了参数

Prompt Tuning更适合分类任务,Prefix Tuning更适合生成任务

P-tunning:设计了一种连续可微的virtual token,将Prompt转换为可学习的Embedding层,并对Prompt Embedding进行一层处理

P-tunning v2:在每一层都加入Prompts tokens作为输入,而不是仅仅加在输入层

26.怎么理解LoRA类?

通过低秩分解来模拟参数的改变量,从而以极小的参数量来实现大模型的间接训练

原模型参数保持不动,降维矩阵A用高斯分布,升维矩阵B初始化为零矩阵

 27.LoRA作用于Transformer的那个参数矩阵?

应当将可微调参数分配到多种类型的权重矩阵里,而不是用更大的秩单独微调某种类型的权重矩阵

28.如何在已有的LoRA模型上继续训练?

直接在现有的模型上继续训练:新的数据与之前的数据类似,注意过拟合

与之前的基础模型合并之后,再训练新的LoRA:任务不同但是有相关性

从头开始训练一个新的LoRA模型:任务完全不同

 29.LoRA权重是否可以合入原模型?

可以,将训练好的低秩矩阵和原模型的权重合并,计算出新的权重就可以

30.LoRA微调方法为什么能加速训练?

只更新部分参数,减少通信时间,采用各种低精度加速技术

低秩分解很直观,预测阶段不增加推理成本

31.Rank如何选取?

 原论文面向下游单一监督任务,对比了1-64,效果上Rank在4-8之间最好

32.LoRA高效微调如何避免过拟合

减小秩, 增加数据集大小,增加优化器的权重衰减率,增加dropout

33.AdaLoRA 的思路是怎么样的?

根据重要性评分动态分配参数预算给权重矩阵,将关键矩阵分配高秩,不重要就低秩

34.QLoRA 的思路是怎么样的? 

把预训练模型量化为4bits,添加一小组可学习的低秩适配器权重进行微调,减少内存使用

35.在进行微调的时候选择什么模型?

假如是生成对话回复,情感分析,多轮对话就CHAT,非对话或单轮生成任务就使用Base,只是建议 

36.预训练和微调哪个阶段注入知识的?

预训练是通过在海量文本上训练,模型学到了广泛的语言特征和常识性知识

微调则是在标注了人物标签的数据集上训练,模型学到了任务特定的模式和知识

一个是未标注数据,一个是标注数据

Logo

中国智能体开发者社区,聚焦智能体与大模型开发,提供前沿资讯、实用工具链、开源项目及行业案例。通过技术沙龙、开发者大赛等活动,促进经验交流与协作,助力开发者快速构建创新智能应用。

更多推荐