1、主流的开源大模型体系有哪些,并简要介绍它们的特点?
这个问题考察面试者对当前大模型生态的了解,包括如 Transformer-based 模型(如 BERT, GPT 系
列)、T5、Switch Transformer 等,以及它们的架构特点和应用场景。
2、解释 prefix LM 和 causal LM 的区别,并给出实际应用案例。
本题涉及语言模型的两种不同模式,前者可用于双向上下文预测,后者仅基于过去的信息进行预测,例如 GPT 系列就是典型的 causal LM。
3、如何定义和理解大模型中的“涌现能力”,并举例说明?
考察面试者对大模型高级特性的理解,涌现能力通常指模型在处理复杂任务时展现出的、未被直接编程的高级技能,如解决谜题、代码生成等。
4、简述 GPT 和BERT 模型的主要区别,以及它们各自的优势。
GPT 是生成式的 decoder-only 模型,而 BERT 是预训练的 encoder 模型,用于理解和生成文本的
侧重点不同。
5、描述生成式语言模型的工作原理,并解释它如何不同于判别式模型。
包括如何通过学习数据分布来生成新样本,与判别式模型(如分类器)专注于区分不同类别的方法对比。
6、大模型训练中如何应对“灾难性遗忘”问题?
可以讨论连续学习中的策略,如经验回放、正则化方法、参数隔离等。
7、哪些因素可能导致大模型(LLMs)出现偏见,如何减轻这种偏见?
包括数据偏差、算法设计、训练过程中的强化等,减轻偏见的方法可能涉及数据多样化、去偏算法、公平性评估工具等。
8、解释并比较 AE(自动编码器)、VAE(变分自动编码器)、GAN
(生成对抗网络)的工作机制及其差异。
关注它们的结构、训练目标和应用场景,特别是 VAE 的似然下界最大化与 GAN 的对抗训练过程。
9、在微调大模型时,选择合适的数据集和微调策略至关重要,请阐述其考虑因素。
包括数据的相关性、规模、质量,以及微调时的学习率、迭代次数、早停策略等。
10、如何评价大模型的性能指标,除了准确率之外,还有哪些关键指标?
包括但不限于 perplexity、BLEU、ROUGE、F1 分数、AUC-ROC 曲线等,以及对计算效率、模型大小的考量。
11、目前主流的大模型体系有哪些?
目前主流的开源大模型体系包括以下几个:
GPT(Generative Pre-trained Transformer)系列:由 OpenAI 发布的一系列基于 Transformer 架构的语言模型,包括 GPT-1、GPT-2、GPT-3、ChatGPT 等。GPT 模型通过在大规模无标签文本上进行预训练,然后在特定任务上进行微调,具有很强的生成能力和语言理解能力。
BERT ( Bidirectional Encoder Representations from Transformers ) : 由 Google 发 布 的 一 种 基 于Transformer 架构的双向预训练语言模型。BERT 模型通过在大规模无标签文本上进行预训练,然后在下游任务上进行微调,具有强大的语言理解能力和表征能力。
XLNet:由 CMU 和 Google Brain 发布的一种基于 Transformer 架构的自回归预训练语言模型。XLNet 模型通过自回归方式预训练,可以建模全局依赖关系,具有更好的语言建模能力和生成能力。
RoBERTa:由 Meta 发布的一种基于 Transformer 架构的预训练语言模型。RoBERTa 模型在 BERT 的基础上进行了改进,通过更大规模的数据和更长的训练时间,取得了更好的性能。 T5(Text-to-Text Transfer Transformer):由 Google 发布的一种基于 Transformer 架构的多任务预训练语言模型。T5 模型通过在大规模数据集上进行预训练,可以用于多种自然语言处理任务,如文本分类、机器翻译、问答等。
这些大模型在自然语言处理领域取得了显著的成果,并被广泛应用于各种任务和应用中。
12、涌现能力是啥原因?
大模型的涌现能力主要是由以下几个原因:
数据量的增加:随着互联网的发展和数字化信息的爆炸增长,可用于训练模型的数据量大大增加。更多的数据可以提供更丰富、更广泛的语言知识和语境,使得模型能够更好地理解和生成文本。
计算能力的提升:随着计算硬件的发展,特别是图形处理器(GPU)和专用的 AI 芯片(比如:TPU)的出现,计算能力大幅提升。这使得训练更大、更复杂的模型成为可能,从而提高了模型的性能和涌现能力。
模型架构的改进:近年来,一些新的模型架构被引入,比如:Transformer,它在处理序列数据上表现出色。
这些新的架构通过引入自注意力机制等技术,使得模型能够更好地捕捉长距离的依赖关系和语言结构,提高了模型的表达能力和生成能力。
预训练和微调的方法:预训练和微调是一种有效的训练策略,可以在大规模无标签数据上进行预训练,然后在特定任务上进行微调。这种方法可以使模型从大规模数据中学习到更丰富的语言知识和语义理解,从而提高模型的涌现能力。
综上所述,大模型的涌现能力是由数据量的增加、计算能力的提升、模型架构的改进以及预训练和微调等因素共同作用的结果。这些因素的进步使得大模型能够更好地理解和生成文本,为自然语言处理领域带来了显著的进展。
13、解释Transformer 架构,并说明为什么它在大模型中如此重要。
答案:Transformer 是一种基于自注意力机制的深度学习模型,它通过并行处理输入序列的所有位置,显著提高了处理速度。它放弃了传统 RNN 或 LSTM 中的循环结构,使用多头自注意力和位置编码来捕获序列中的长距离依赖关系。在大模型中,Transformer 架构因其高效并行计算能力和强大的语言理解能力而成为首选。
14、模型的“预训练+微调”范式是什么意思?
答案:预训练+微调是指首先在一个大规模无标注数据集上对模型进行预训练,学习通用的语言表示。之后,根据特定任务对模型进行微调,即在有标签的数据集上进行额外训练,使其适应特定任务如问答、翻译或情感分析。这种方法有效利用了大数据,并显著提升了模型在各种任务上的性能。
15、如何在大模型训练中解决计算资源和成本问题?
答案:解决资源和成本问题的策略包括:使用更高效的硬件(如 TPU、高性能 GPU),分布式训练以分散计算负担,模型并行化技术,以及模型压缩和量化技术减少模型大小和运算需求。此外,使用数据增强和活跃学习策略减少所需数据量也是有效手段。
16、解释过拟合和欠拟合,以及在大模型训练中如何避免这些问题。
答案:过拟合指模型在训练数据上表现很好,但在新数据上泛化能力差;欠拟合则是模型在训练和测试数据上均表现不佳。避免过拟合可通过正则化、早停、dropout 等方法;避免欠拟合则需要增加模型复杂度、更多训练数据或改进模型架构。
17、如何评估大模型的生成质量?
答案:生成质量可以通过多种指标评估,包括 Perplexity(对于语言模型)、BLEU、ROUGE、METEOR等用于机器翻译或文本摘要的指标,以及更主观的评估如人类评价。最近,像 BERTScore 这样的基于语义相似度的指标也变得流行。
18、解释“注意力机制”及其在大模型中的应用。
答案:注意力机制允许模型在处理输入序列时动态地分配不同的权重给不同的部分,重点关注最相关的部分。在大模型中,多头自注意力是 Transformer 架构的核心,使得模型能够同时关注输入的不同方面,从而更有效地捕捉复杂的语言结构和语境信息。
19、如何在大模型中实现公平性和可解释性?
答案:实现公平性需要从数据收集开始,确保数据多样性且无偏见,使用去偏算法和公平性评估工具。可解释性可通过提供注意力权重可视化、特征重要性解释、以及使用更简单的解释模型(如 LIME、SHAP)来实现,帮助理解大模型决策过程。
20、微调大模型时,如何选择合适的数据集和调整策略?
答案:选择数据集时需考虑数据的相关性、质量和规模,确保数据能反映目标任务的需求。调整策略包括选择合适的初始学习率、使用学习率调度、正则化防止过拟合、以及早停等。此外,小样本微调和数据增强也是提升效果的策略。
21、如何处理大模型中的“长尾分布”问题?
答案:长尾分布意味着数据集中某些类别或事件的频率远低于其他类别。解决此问题的方法包括重采样(过采样少数类或欠采样多数类)、使用加权损失函数给予不同样本不同权重,以及生成合成数据来平衡各类别。
22、在大模型开发中,如何监控和调试模型性能?
答案:监控模型性能通常涉及设置性能指标(如准确率、损失函数值)的实时跟踪,以及对模型训练过程中的资源使用(CPU/GPU 利用率、内存占用)进行监测。调试时,可以使用梯度检查、模型可视化工具(如 TensorBoard)来观察模型内部状态,以及进行错误分析来定位问题。
23、大模型如何选型?如何基于场景选用 ChatGLM、LlaMa、 Bert 类大模型?
选择使用哪种大模型,取决于具体的应用场景和需求。下面是一些指导原则。
ChatGLM 大模型:ChatGLM 是一个面向对话生成的大语言模型,适用于构建聊天机器人、智能客服等对话系统。如果你的应用场景需要模型能够生成连贯、流畅的对话回复,并且需要处理对话上下文、生成多轮对话等,ChatGLM 模型可能是一个较好的选择。ChatGLM 的架构为 Prefix Decoder,训练语料为中英双语,中英文比例为 1:1。所以适合于中文和英文文本生成的任务。
LlaMA 大模型:LLaMA(Large Language Model Meta AI)包含从 7B 到 65B 的参数范围,训练使用多达 14,000 亿 tokens 语料,具有常识推理、问答、数学推理、代码生成、语言理解等能力。
它由一个 Transformer 解码器组成。训练预料主要为以英语为主的拉丁语系,不包含中日韩文。所以适合于英文文本生成的任务。
Bert 大模型:Bert 是一种预训练的大语言模型,适用于各种自然语言处理任务,如文本分类、命名实体识别、语义相似度计算等。如果你的任务是通用的文本处理任务,而不依赖于特定领域的知识或语言风格,Bert 模型通常是一个不错的选择。Bert 由一个 Transformer 编码器组成,更适合于NLU 相关的任务。
在选择模型时,还需要考虑以下因素:
数据可用性:不同模型可能需要不同类型和规模的数据进行训练。确保你有足够的数据来训练和微调所选择的模型。计算资源:大模型通常需要更多的计算资源和存储空间。确保你有足够的硬件资源来支持所选择的模型的训练和推理。
预训练和微调:大模型通常需要进行预训练和微调才能适应特定任务和领域。了解所选择模型的预训练和微调过程,并确保你有相应的数据和时间来完成这些步骤。
最佳选择取决于具体的应用需求和限制条件。在做出决策之前,建议先进行一些实验和评估,以确定哪种模型最适合你的应用场景。
24、各个专业领域是否需要专用的大模型来服务?
A4:各个专业领域通常需要各自的专用大模型来服务,原因如下:
领域特定知识:不同领域拥有各自特定的知识和术语,需要针对该领域进行训练的大模型才能更好地理解和处理相关文本。比如:在医学领域,需要训练具有医学知识的大模型,以更准确地理解和生成医学文本。
语言风格和惯用语:各个领域通常有自己独特的语言风格和惯用语,这些特点对于模型的训练和生成都很重要。专门针对某个领域进行训练的大模型可以更好地掌握该领域的语言特点,生成更符合该领域要求的文本。
领域需求的差异:不同领域对于文本处理的需求也有所差异。比如:金融领域可能更关注数字和统计
数据的处理,而法律领域可能更关注法律条款和案例的解析。因此,为了更好地满足不同领域的需求,需要专门针对各个领域进行训练的大模型。
数据稀缺性:某些领域的数据可能相对较少,无法充分训练通用的大模型。针对特定领域进行训练的大模型可以更好地利用该领域的数据,提高模型的性能和效果。
尽管需要各自的大模型来服务不同领域,但也可以共享一些通用的模型和技术。比如:通用的大模型可以用于处理通用的文本任务,而领域特定的模型可以在通用模型的基础上进行微调和定制,以适应特定领域的需求。这样可以在满足领域需求的同时,减少模型的重复训练和资源消耗。
25、解释一下“大模型”(Large Language Models, LLMs)的概念,并列举几个知名的大模型。
答案:大模型,特别是大型语言模型,指的是那些参数量达到数十亿乃至数千亿级别的深度学习模型,主要应用于自然语言处理领域。它们通过海量数据预训练获得丰富的语言表达能力,能够完成生成文本、问答、翻译等多种任务。知名的大型语言模型包括 OpenAI 的 GPT 系列(如 GPT-3)、Google的T5、BERT 系列,以及阿里云的通义千问等。
26、在训练大模型时,如何有效地管理内存?
答案:管理大模型训练时的内存通常涉及以下几个策略:使用梯度累积来减少每一步更新所需的内存;实施模型并行和数据并行策略,将模型或数据分割到多个设备上;采用混合精度训练,利用半精度浮点数减少内存占用;以及使用交换空间或外存来扩展内存容量。
27、如何评估大模型的泛化能力?
答案: 泛化能力可以通过保留一部分未参与训练的数据作为验证集或测试集来评估。常用的指标包括准确率、召回率、F1 分数等。此外,可以设计特定的任务或场景测试,如领域迁移测试,考察模型在未见过的数据或新情境下的表现。
28、解释一下“Prompt Engineering”在大模型中的作用。
答案:Prompt Engineering 是指精心设计输入提示,引导大模型产生期望输出的过程。通过构造合适的提示,可以激发模型的潜力,让其执行特定任务,比如生成特定风格的文本、解决数学问题等,而无需额外的微调。好的 Prompt Engineering 能够显著提高模型的实用性和表现力。
29、大模型在处理多语言任务时面临哪些挑战?
答案:多语言任务面临的挑战包括语言差异性(如语法结构、表达习惯)、数据不平衡(某些语言数据较少)、跨语言噪声(翻译不准确或文化差异)、以及模型偏向(可能偏向于训练数据中占主导地位的语言)。解决这些挑战通常需要多语言预训练、特定的去偏技术以及跨语言数据增强。
30、解释“嵌入(Embedding)”在大模型中的作用。
答案:嵌入是将高维稀疏的输入(如词、句子或实体)转换为低维稠密向量的过程,这些向量能捕捉输入的语义信息。在大模型中,嵌入层是模型的第一层,它将每个输入词汇映射到一个向量空间,使得模型能够理解和处理语言的语义关系,这对于后续的计算和预测至关重要。
31、如何处理大模型中的“过热”(Hugging Face 术语)现象?
答案:“过热”通常指的是模型在生成文本时,生成的内容偏离了预期或变得不连贯。处理过热的一种方法是使用温度参数(Temperature)控制生成的随机性,降低温度可以使得生成更加保守和连贯。另外,可以采用 top-k 或 top-p 采样策略限制候选词汇的选择范围,以及设定生成的最大长度和强制关键词等策略。
32、解释“微调(Fine-tuning)”和“适应性微调(Adaptive Fine-tuning)”,并说明两者区别。
答案:微调是将预训练好的大模型在特定任务的有标签数据集上进行额外训练,以适应特定任务需求的过程。而适应性微调是一种更为精细的微调策略,它可能仅针对模型的一部分(如最后一层或几层)、少量参数或特定模块进行调整,旨在保持模型的泛化能力的同时,快速适应新任务,减少过拟合风险和计算成本。
33、在大模型开发中,如何处理数据隐私和安全问题?
答案:处理数据隐私和安全问题的方法包括:使用去标识化技术去除敏感个人信息;实施差分隐私来添加随机噪声保护数据;利用联邦学习技术在不集中数据的情况下进行模型训练;以及采用加密计算技术保护数据传输和处理过程的安全。
34、问题:如何在大模型中实现持续学习(Continuous Learning)?
答案:实现持续学习的关键在于设计模型架构和训练策略,使模型能够在不断遇到新数据时,既保留已学到的知识又学习新技能。这可以通过增量学习(逐步添加新数据而不覆盖旧数据的训练)、经验回放(存储旧数据并定期重训)、或使用可生长网络结构(如添加新层或节点)等方式来实现。同时,正则化技术和遗忘机制也可以帮助减轻灾难性遗忘问题。
35、LangChain Agent 是如何工作和使用?
LangChain Agent 是 LangChain 框架中的一个组件,用于创建和管理对话代理。
最新发布的首个稳定版本 v0.1.0 支持了 LangGraph 组件库,把 Agent 创建为图的组件库,提供创建更加定制化的循环行为。
代理是根据当前对话状态确定下一步操作的组件。LangChain 提供了多种创建代理的方法,包括OpenAI Function Calling、Plan-and-execute Agent、Baby AGI 和 Auto GPT 等。这些方法提供了不同级别的自定义和功能,用于构建代理。
代理可以使用工具包执行特定的任务或操作。工具包是代理使用的一组工具,用于执行特定的功能,如语言处理、数据操作和外部 API 集成。工具可以是自定义构建的,也可以是预定义的,涵盖了广泛的功能。
通过结合代理和工具包,开发人员可以创建强大的对话代理,能够理解用户输入,生成适当的回复,并根据给定的上下文执行各种任务。
以下是使用 LangChain 创建代理的示例代码:
from langchain.chat models import ChatOpenAI
36:基于大模型 + 向量数据库如何更好地实现企业级知识库平台?
主要进行以下 6 方面的优化工作:
数据准备:准备大量高质量的训练数据,包括 Query、Context 和对应的高质量 Response。
确保数据的多样性和覆盖性,以提供更好的训练样本。
模型架构:选择合适的模型架构,比如:Transformer 等,以便提取 Query 和 Context 中的重要信息,并生成相应的高质量 Response。确保大模型具有足够的容量和复杂性,以适应各种复杂的查询和上下文。
微调和优化:使用预训练的模型作为起点,通过在特定任务上进行微调和优化,使模型能够更好地理解 Query 和 Context,并生成更准确、连贯的 Response。可以使用基于强化学习的方法,比如:强化对抗学习,来进一步提高模型的表现。
评估和反馈:定期评估模型的性能,使用一些评估指标,比如:BLEU、ROUGE 等,来衡量生成的 Response 的质量。根据评估结果,及时调整和改进模型的训练策略和参数设置。同时,收集用户反馈和意见,以便进一步改进模型的性能。
多模态信息利用:如果有可用的多模态信息,如图像、视频等,可以将其整合到大模型中,以提供更丰富、准确的 Response。利用多模态信息可以增强模型的理解能力和表达能力,从而生成更高质量的 Response。
37、请简述大模型性能评估的主要步骤。
解答:大模型性能评估的主要步骤包括:首先,根据业务需求确定评估指标,如准确率、召回率、F1值等;其次,收集并准备测试数据集,确保数据集的代表性和多样性;然后,在测试数据集上运行模型,并记录评估指标的结果;最后,对评估结果进行分析和解释,识别模型的优点和不足。
38、在大模型性能评估中,你通常使用哪些评估指标?请举例说明。
解答:在大模型性能评估中,常用的评估指标包括准确率、召回率、F1 值、AUC-ROC 曲线等。准确率衡量了模型正确分类的样本比例,召回率衡量了模型找出所有正例的能力,F1 值则是准确率和召回率的调和平均值。AUC-ROC 曲线则展示了模型在不同阈值下的性能表现。具体使用哪些指标取决于任务需求和业务场景。
39、请解释什么是过拟合和欠拟合,并说明如何在大模型评测中避免它们。
解答:过拟合是指模型在训练数据上表现良好,但在测试数据上性能下降,即模型过于复杂以至于“记住”了训练数据的噪声。欠拟合则是指模型在训练数据上表现不佳,即模型过于简单无法捕捉数据的内在规律。为了避免过拟合,可以采用正则化、增加数据集多样性、使用 dropout 等方法;为了解决欠拟合,可以尝试增加模型复杂度、优化模型结构或使用更强大的特征表示。
40、在大模型评测中,你如何进行特征选择和模型调优?解答:特征选择通常涉及分析特征的重要性、相关性以及冗余性,以确定哪些特征对模型性能有积极影响。可以使用如特征重要性评分、相关性矩阵或特征选择算法(如递归特征消除)等方法进行特征选择。模型调优则涉及调整模型的超参数,如学习率、批次大小、正则化系数等,以优化模型的性能。
可以使用网格搜索、随机搜索或贝叶斯优化等方法进行模型调优。
41、请谈谈你对A/B 测试的理解,并说明它在大模型评测中的应用。
解答:A/B 测试是一种比较两种或多种模型性能的方法,通过将用户随机分配到不同的模型版本中,收集并分析它们在实际环境中的表现数据。在大模型评测中,A/B 测试可以帮助我们确定哪个模型在实际应用中更具优势。通过 A/B 测试,我们可以评估模型在真实场景下的性能,包括用户满意度、业务指标提升等,从而做出更明智的决策。
42、请解释什么是大模型微调,以及它在自然语言处理任务中的作用。
解答:大模型微调是指利用预训练的大模型作为基础,针对特定任务的数据进行模型参数的调整,以优化模型在该任务上的性能。微调在自然语言处理任务中起着关键作用,它可以使模型更好地适应特定领域或场景的数据分布,提高模型的准确性和泛化能力。
43、为什么需要对大模型进行微调?
解答:预训练的大模型虽然具备强大的表示学习能力,但由于训练数据和任务目标的差异,直接应用于特定任务可能效果不佳。通过微调,模型可以针对特定任务的数据分布和目标进行优化,提高在该任务上的性能。此外,微调还可以加速
44、在进行大模型微调时,有哪些常见的策略或技巧?
解答:在进行大模型微调时,常见的策略或技巧包括选择合适的学习率、使用早停法避免过拟合、利用正则化技术提高模型泛化能力、采用数据增强技术扩充训练数据等。此外,还可以考虑使用集成学习、迁移学习等方法进一步提升微调效果。
关于 prompt tuning 和 prefix tuning 在微调上的区别,以下是它们的详细解释:
Prompt Tuning
Prompt Tuning 是一种新颖的微调方法,它利用了近年来自然语言处理领域的 prompting 技术。这种方法通过修改预训练模型的输入来适应特定任务,使模型在输入阶段就考虑到任务的特定需求。具体而言,Prompt Tuning 会在输入序列前添加一些可学习的“提示”标记,这些标记在训练过程中会被优化以更好地引导模型理解任务。这种方法的好处是可以保持预训练模型的大部分参数不变,从而减少过拟合的风险,并加速训练过程。
Prefix Tuning
Prefix Tuning 方法则是通过微调预训练模型的特定部分(称为“前缀”)以适应特定任务。这种方法只微调前缀部分,而不是整个模型,从而减少了计算成本和过拟合的风险。Prefix Tuning 的性能通常优于传统的微调方法,但可能不及完整的模型微调。它的核心思想是将任务相关的信息编码在前缀中,并通过优化前缀参数来使模型适应特定任务。
两者的区别
1. 调整对象不同:Prompt Tuning 主要调整的是模型的输入,通过在输入中添加提示来引导模型;而 Prefix Tuning 则是直接调整模型的部分参数,特别是前缀部分的参数。
2. 调整范围不同:Prompt Tuning 的调整范围相对较小,主要关注输入层面的变化;而 Prefix Tuning 的调整范围则相对较大,涉及模型内部的部分参数。
- 对模型的影响不同:由于Prompt Tuning 主要修改输入,因此它对模型的影响较为间接;而Prefix Tuning 直接修改模型参数,对模型的影响更为直接和显著。
45、解释一下“Transformer”架构,并说明它为何在现代大模型中如此重要。
答案:Transformer 是一种基于自注意力(Self-Attention)机制的深度学习架构,由 Google 在2017 年提出。它摒弃了传统的循环神经网络(RNN)中的序列处理方式,转而使用注意力机制来并行处理输入序列的所有位置,极大地提升了处理速度和模型容量。Transformer 在处理长距离依赖关系方面表现出色,因此成为构建大规模语言模型(如 BERT、GPT 系列)的基础,对自然语言处理领域产生了革命性影响。
46、什么是“微调(Fine-tuning)”,并说明它在大模型应用中的作用。
答案:微调是指在预训练好的大模型基础上,针对特定下游任务,使用特定领域的数据进行二次训练的过程。这允许模型在保持大量通用知识的同时,学习任务特定的细微差别。微调是大模型实际应用中非常关键的一环,它使模型能够适应从情感分析、问答系统到文本生成等各种特定任务。
47、解释一下“Prompting”技术,并举例说明。
答案:Prompting 是一种通过巧妙设计输入文本(即提示),引导大模型产生所需输出的技术。而不是直接对模型进行微调,Prompting 通过改变模型接收输入的方式,使其在特定任务上表现更好。
例如,在问答任务中,不是直接输入问题和答案让模型学习,而是构造如“问:… 答:…”这样的模板,促使模型在生成答案前理解问题的上下文。
48、如何评估大模型的性能?有哪些常见的评估指标?
答案:大模型的性能评估通常涉及多个维度,包括准确性、生成质量、响应速度和资源消耗等。常见的评估指标包括:准确率(Accuracy)、精确率(Precision)、召回率(Recall)、F1 分数、BLEU分数(用于评估文本生成的质量)、Perplexity(评估语言模型的不确定性)以及运行时的吞吐量和延迟。
49、解释“模型蒸馏(Model Distillation)”概念,并说明它在大模型场景中的应用。
答案:模型蒸馏是一种将复杂、大型模型(教师模型)的知识转移到小型、高效模型(学生模型)的技术。通过让小模型模仿大模型的行为,可以在保持一定性能水平的同时,减少模型的计算和存储成本。在大模型场景中,蒸馏常用于部署模型到资源受限的环境,或者优化模型的推理速度。
50、简述“模型膨胀(Model Bloating)”问题,并提供解决方案。
答案:模型膨胀指的是随着模型规模的增大,其性能提升逐渐减缓甚至出现边际效用递减的现象。解决模型膨胀的策略包括:引入正则化项限制模型复杂度;使用模型剪枝剔除不重要的权重;实施模型量化减少模型参数的位宽;以及开发更高效的模型架构和训练方法,如稀疏激活、动态路由等。
51、解释一下“自我监督学习(Self-Supervised Learning)”,并说明它如何帮助训练大模型。
答案:自我监督学习是一种无监督学习方法,它通过设计预训练任务,使模型从未标注数据中学习有用的特征。在大模型训练中,自我监督学习尤为重要,因为它允许模型在没有昂贵的人工标注数据的情况下,通过预测掩码的单词、句子排序或上下文信息等任务,学习到丰富的语言结构和语义知识。
52、如何理解“多模态学习”在大模型中的应用?
答案:多模态学习是指模型同时处理和整合不同类型的数据(如文本、图像、声音等)的能力。在大模型中,多模态学习使得模型能够理解更复杂的场景,如图文匹配、视频内容理解等。通过联合训练或跨模态融合技术,模型可以学习到不同模态间的关系,提升综合理解和生成能力。
53、问题:简述“对抗性攻击”对大模型的影响,以及如何防御。
答案:对抗性攻击指通过给输入添加人眼难以察觉的微小扰动,导致模型错误预测。对大模型而言,这种攻击可能导致严重的安全和信任问题。防御策略包括:使用对抗性训练,即在训练过程中加入对抗样本以增强模型鲁棒性;输入净化,移除或减轻输入数据中的潜在扰动;以及检测和拒绝可疑输入,使用统计或机器学习方法识别异常输入。
54、解释“模型可解释性”的重要性,并说明在大模型中实现可解释性的挑战。
答案:模型可解释性指的是理解模型内部工作原理和决策过程的能力,对于建立信任、合规性检查以及错误诊断至关重要。然而,大模型由于其复杂性和规模,实现可解释性面临巨大挑战,包括高度非线性、高维度参数空间和黑箱特性。解决方法包括开发专门的解释技术,如注意力机制可视化、特征重要性分析以及局部可解释模型(如 LIME、SHAP)。
55、Transformer为何使用多头注意力机制?(为什么不使用一个头)
(1)Transformer使用多头注意力机制的主要原因
捕捉不同的特征:每个头可以学习和捕捉输入序列中的不同特征或模式。
增强模型的表达能力:多个头的并行计算可以丰富模型的表达能力,使其能够关注到输入的不同方面。
具体而言,多头注意力机制通过并行计算多个不同的注意力头,每个头有自己的一组权重矩阵,最后将这些头的
输出拼接起来,再进行线性变换,从而综合各个头的信息。
(2)并且作者发现这样效果好,如下图:
56、Transformer为什么Q和K使用不同的权重矩阵生成,为何不能使用同一个值进行自身的点乘?
Q(查询)和K(键)使用不同的权重矩阵生成,是为了在计算注意力得分时能够捕捉到输入序列中不同的特征。如果使用同一个值进行自身的点乘,模型无法有效区分查询向量和键向量的不同特征,导致注意力机制失去灵活性和区分能力。因此,通过不同的权重矩阵生成Q和K,可以增强模型的表达能力,确保注意力机制能够更好地识别和利用输入序列中的信息。
57、不用[CLS]的语义输出,有其他方式可以代替吗?
这个问题还是考察到了[CLS]的核心内涵,也就是如何获得整个sentence的语义表示。既然不让使用特意训好的[CLS],那我们就从每个token得到的embedding入手,把所有的token弄到一起。很直观的思路,就是对BERT的所有输出词向量(忽略[CLS]和[SEP])应用MaxPooling和AvgPooling,然后将得到的两个向量拼接起来,作为整个序列的表示。这样做的话可以同时保留序列中最显著的特征(通过MaxPooling)和整体的,均衡的特征(通过AvgPooling)。
当然这种做法我本人并没有尝试过,或许也不是一个很好做的研究/工作方向。
58、Bert中有哪些地方用到了mask?
预训练任务Masked Language Model (MLM)self-attention的计算下游任务的decoder
59、预训练阶段的mask有什么用?
虽然MLM现在被主流LLM抛弃了,但是也是一项很重要的任务。
主要的思想是,把输入的其中一部分词汇随机掩盖,模型的目标是预测这些掩盖词汇。这种训练方式使得每个位置的BERT都能学习到其上下文的信息。
60、attention中的mask有什么用?(BERT中)
这是nlp任务很重要的问题,就是不同样本的seq_len不一样。但是由于输出的seq_len需要一致,所以需要通过补padding来对齐。而在attention中我们不希望一个token去注意到这些padding的部分,因为实际场景下它们是不存在的,所以attention中的mask就是来处理掉这些无效的信息的。
具体来说就是在softmax前每个都设为-inf(或者实际的场景一个很小的数就可以),然后过完softmax
后"padding"部分的权重就会接近于零,query token就不会分配注意力权重了。
61、Bert是如何处理传统方法难以搞定的溢出词表词(oov)的语义学习的?
前面提到了,关键词是subword。
62、中文是如何处理溢出词表词(oov)的语义学习的?
subword处理中文都是字符级别的,所以就不会有词级别oov的问题了。
63、为什么说GPT是单向的Bert是双向的?
这也是decoder-only和encoder-only的区别。
decoder-only架构的生成模型在输出的时候只能看到当前位置前的tokens,也就是屏蔽了序列后面的位置,以适配NTP任务。
encoder-only架构的编码模型在输出的时候可以利用前后位置的tokens,以适配MLM任务。
具体的做法是self-attention加不加casual mask,也就是遮不遮住序列后面的内容。
64、Bert如何处理一词多义?
一词多义指的是在不同句子中token有不同的含义。
这正是self-attention解决的,搭配上MLM的任务,就可以让每个token会注意到上下文的其他token来得到自己的embedding。
65、Bert中的transformer和原生的transformer有什么区别?
其实很多,如果我们只讨论模型架构,也就是对比Attention is All You Need的encoder和BERT的话,最重点的区别在于位置编码。
原生的transformer是最经典的Sinusoidal绝对位置编码。而BERT中变成了可以学习的参数,也就是可学习位置编码。变得可学了的话,只要模型学习能力强,数据量够,确实不会差。可以类比卷积核从手工变成了模型自己学。
关于位置编码,如果你有时间的话,建议从下面的链接一直往后看,苏神的内容质量都很高。位置编码确实大有可为,最近RoPE+NTK的方法来外推context length也挺让人热血沸腾的。
66、Albert是通过什么方法压缩网络参数的?有什么问题?两个技巧,其一是参跨层数共享,其二是对嵌入参数化进行因式分解,也就是“不再将 one-hot 向量直接映射到大小为 H 的隐藏空间,先映射到一个低维词嵌入空间 E,然后再映射到隐藏空间”。
问题也是“模型压缩”通用的问题,网络表达能力和容量下降。然后推理速度也不会有很直观的提升。
67、attention计算方式以及参数量,attention layer手写,必考。
如果你找的工作是比较基础的,比如说本科生找llm相关实习,那基本会让你手写多头。
68、ransformer模型的基本结构是什么?它是如何改变深度学习领域的?
基本结构:Transformer模型由编码器和解码器组成,每个编码器包含多层自注意力和前馈网络,解码器增加了编码器-解码器注意力。模型中广泛使用了残差连接和层归一化。影响:Transformer引入了自注意力机制,使得模型能够并行处理序列数据,显著提高了长距离依赖项的处理能力,改变了序列建模和自然语言处理的主流方法。
69、Transformer为何能够有效地处理长距离依赖问题?与传统RNN和LSTM相比有哪些优势?
长距离依赖处理:Transformer通过自注意力机制直接计算序列中任意两点间的依赖关系,避免了RNN和LSTM中的逐步传播,因此能有效捕捉长距离依赖。
优势:相比RNN和LSTM,Transformer具有并行化处理的优势,缩短了训练时间。同时,它避免了梯度消失问题,提高了对长序列的建模能力。
70、多头注意力的作用是什么?
作用:多头注意力允许模型同时从不同的表示子空间捕获信息,增强了模型对不同位置和语义信息的捕捉能力,提高了注意力机制的表达能力
1、能不能手写下attention?
71、Transformer模型如何平衡模型性能与计算资源的消耗?
平衡策略:Transformer通过调整模型大小(层数、维度等)、使用注意力机制的有效变体(如稀疏注意力)和优化技术(如混合精度训练)来平衡性能和计算资源消耗
72、Transformer模型的自注意力机制如何实现并行处理?
在自注意力机制中,模型对输入序列的每个元素计算其与序列中所有其他元素之间的注意力得分。这一计算是矩阵乘法形式的,可以高效地利用现代硬件(如GPU或TPU)进行并行计算。这种并行化大大提升了模型的训练和推理速度,特别是对于长序列数据。
73、在Transformer模型中,位置编码(Position Encoding)的作用是什么
作用:位置编码赋予模型对输入序列中元素位置的感知能力,因为自注意力机制本身不具备区分不同位置信息的能力。
74、Transformer模型如何处理变长输入序列?
处理方式:Transformer通过位置编码处理变长输入,配合掩码(masking)技术来处理不同长度的序列,确保模型在自注意力计算中只关注有效的输入部分。
75、Transformer模型的缩放点积注意力(Scaled Dot-Product Attention)是什么,其重要性在哪里?
定义:缩放点积注意力是一种计算注意力权重的方法,它通过对查询(Q)、键(K)的点积结果进行缩放,并应用softmax函数获取权重。
重要性:此机制允许模型在给定查询的情况下,动态地聚焦于关键的信息,缩放因子能避免在高维空间中点积结果过大,导致梯度消失问题。
76、Transformer模型在实践中如何优化以处理超长序列?
优化方法:针对超长序列,可以采用分块注意力、稀疏注意力、记忆压缩技术或者长序列专用的Transformer变体来降低计算复杂度
77、Transformer模型在自注意力层中如何解决多尺度表示问题?
解决方式:通过多头注意力设计,模型能够在不同的表示子空间中捕捉信息,从而同时考虑不同尺度的序列特征。
78、Transformer模型中的自注意力机制在计算效率和表示能力之间是如何权衡的?
自注意力机制通过并行处理序列数据提高计算效率,而多头注意力设计则提升了模型的表示能力。权衡通常通过调整头的数量和维度大小来实现。
79、Transformer模型的参数共享策略对模型性能有何影响?
影响:参数共享能减少模型参数量,避免过拟合,同时在多任务学习中可以提高模型的泛化能力。
80、Transformer encoder和decoder的区别?
区别:编码器负责处理输入序列,解码器则在此基础上增加了编码器-解码器注意力层,用于将编码器的输出与当前生成的序列相结合,进行序列生成。
81、Transformer模型中的前馈网络(Feed-Forward Networks)的作用是什么?
作用:前馈网络对自注意力层的输出进行非线性变换,增加了模型的表达能力,并可以捕捉局部特征。
82、Transformer网络很深,是怎么避免过拟合问题的?
Transformer网络采用以下机制以避免过拟合并促进深层结构的训练:
Dropout: 在自注意力、前馈层和嵌入层中随机抑制节点激活,提高泛化性。
权重衰减:引入L2正则化惩罚过大的权重参数,限制模型复杂度。标签平滑:在损失函数中对真实标签分布进行平滑,避免模型对某些类别的过度自信。残差连接:通过跳跃连接,实现特征直传,缓解梯度消失问题并加速收敛。
83、Transformer的两个mask机制是什么?
两种掩码:
序列掩码:用于屏蔽输入序列中的填充(padding)部分,确保这些位置不影响自注意力的计算。
查找掩码:用于解码器中防止未来信息泄露,确保在预测下一个词时只能使用之前的词。
84、Transformer为什么要用Layer norm?作用是什么
层归一化(Layernormalization)可以加速训练并提高稳定性,通过对输入的特征进行归一化,减少了不同初始化和批量数据分布差异带来的影响。
85、Encoder和decoder是如何进行交互的?
交互方式:在解码器中,编码器-解码器注意力层允许解码器的每个位置访问编码器的所有位置的输出。这种机制使解码器能够根据编码器的上下文信息生成输出序列。
86、Transformer计算attention的时候为何选择点乘而不是加法?两者计算复杂度和效果上有什么区别?
捕捉相关性:点乘能够更好地捕捉查询(Q)和键(K)之间的相关性。点乘可以视为一种元素级别的加权求和,权重由Q和K的对应元素共同决定,这使得模型能够更精确地衡量它们之间的匹配程度。
计算效率:虽然点乘和加法在单个元素操作的计算复杂度上相似,但在矩阵运算中,点乘可以利用现代硬件(如GPU)上的并行计算优势,实现高效的大规模运算。
可扩展性:点乘天然支持扩展到多头注意力(Multi-Head Attention),这是Transformer架构中的一个重要特性。在多头注意力中,模型并行地执行多个点乘操作,然后将结果合并,以捕获不同子空间的信息。
梯度传播:点乘在反向传播中具有更好的梯度传播特性。在深度学习中,梯度的传播对于模型的训练至关重要,点乘操作的梯度计算相对简单,有助于优化算法的稳定性和收敛速度。
泛化能力:点乘作为一种通用的操作,可以更容易地泛化到不同的任务和模型架构中。加法虽然简单,但在捕捉复杂模式和关系方面可能不如点乘有效。
87、在计算attention score的时候如何对padding做mask操作?
在计算注意力得分时,对padding进行mask操作目的是为了避免模型将注意力集中在填充位置上(因为这些位置不包含实际的有用信息)。具体做法是在计算注意力得分之前,对填充位置对应的得分加上一个非常大的负数(如负无穷),通过softmax后,这些位置的权重接近于零,从而不影响实际有效的序列位置。
注:什么是padding?
在处理自然语言时,输入的序列长度可能不同。为了让所有序列能够在一个批次中进行计算,我们会在较短的序列后面填充特殊的标记,通常是零(0)。这些填充标记就是padding。
注:为什么要对padding做mask操作?
如果不对padding做mask操作,模型可能会误把这些填充位置当作有效信息进行处理,从而影响注意力得分的计算,最终影响模型的性能。因此,需要在注意力计算时忽略这些填充位置。
88、为什么在进行多头注意力的时候需要对每个head进行降维?(可以参考上面一个问题)
回答:在进行多头注意力时,需要对每个头进行降维,以保证每个头的计算复杂度不会过高,同时能够并行计算。
将输入的维度分成多个头,可以让每个头处理更小维度的数据,从而降低单头的计算复杂度,减小参数量,提高计算效率。并且通过多个头的组合,增强模型的表达能力和鲁棒性。
详细讲解:
1. 降低计算复杂度
假设输入的维度是d,每个头的输出维度也是d。如果不进行降维,每个头的输出维度仍然是d,那么在拼接多个头的输出时,最终的维度将是d * num_heads(num_heads表示头的数量)。这样维度会变得非常大,计算复杂度和内存需求都大大增加。通过对每个头进行降维,每个头的输出维度变为d / num_heads。这样,即使拼接多个头的输出,最终的维度也仍然是d,保持了与输入相同的维度,避免了计算复杂度和内存需求的急剧增长。
2. 保持模型的参数数量可控
模型的参数数量直接影响训练的难度和时间。如果每个头都不进行降维,那么模型的参数数量会大大增加,训练起来会非常困难。而对每个头进行降维,可以控制每个头的参数数量,从而使得整个模型的参数数量保持在一个可控范围内。
3. 维持信息的多样性
通过对每个头进行降维,可以确保每个头在一个更小的子空间中进行注意力计算。这意味着每个头可以在不同的子空间中学习到不同的特征,增加了模型的多样性和鲁棒性。最终的拼接结果融合了不同子空间的信息,使得模型能够更全面地理解输入数据。
89、大概讲一下Transformer的Encoder模块?
Transformer的Encoder模块由N层堆叠组成,每层包括两个子层:
1. 多头自注意力机制(Multi-Head Self-Attention)
2. 前馈神经网络(Feed-Forward Neural Network)
每个子层后都接一个残差连接(Residual Connection)和层归一化(Layer Normalization)。输入首先通过
嵌入层(Embedding),然后通过位置编码(Positional Encoding)加上位置信息,再依次经过各层编码器,
最终输出编码后的序列表示。
90、为何在获取输入词向量之后需要对矩阵乘以embedding size的开方?意义是什么?
在获取输入词向量之后,需要对矩阵乘以embedding size的平方根,是为了保持向量的尺度稳定。Embedding的值通常是随机初始化的,乘以开方后的结果能保证在后续的点乘计算中,值的尺度不会过大或过小,从而有利于模型的训练稳定性。
91、简单介绍一下Transformer的位置编码?有什么意义和优缺点?
Transformer的位置编码(Positional Encoding)是为了给模型提供序列中各个位置的信息,因为Transformer本身不具备顺序信息。位置编码通过正弦和余弦函数生成,对不同位置生成不同的编码。
优点是能够显式地提供位置信息,易于计算,缺点是位置编码固定,不能根据上下文动态调整。
92、你还了解哪些关于位置编码的技术,各自的优缺点是什么?
除了位置编码,其他位置表示技术还有:
可学习的位置编码(Learnable Positional Encoding):位置编码作为可学习的参数,优点是灵活,能够根据数据调整,缺点是可能需要更多的训练数据。
相对位置编码(Relative Positional Encoding):考虑到相对位置关系,优点是能够捕捉相对位置信息,适用于长序列,缺点是实现复杂度高。
混合位置编码(Hybrid Positional Encoding):结合绝对和相对位置编码,优点是综合两者优点,缺点是实现复杂度增加。
93、简单讲一下Transformer中的残差结构以及意义。
Transformer中的残差结构(Residual Connection)是在每个子层输出后,加入输入的原始信息,通过直接相加实现。这有助于缓解深层网络中的梯度消失问题,保证信息流的顺畅,促进训练过程的稳定和快速收敛。
94、为什么transformer块使用LayerNorm而不是BatchNorm?LayerNorm 在Transformer的位置是哪里?
Transformer块使用LayerNorm而不是BatchNorm,因为LayerNorm在序列模型中表现更好。BatchNorm在处理变长序列和小批量数据时不稳定,而LayerNorm对每个样本独立进行归一化,更适合变长序列数据。LayerNorm通常位于每个子层的残差连接之后。
95、简答讲一下BatchNorm技术,以及它的优缺点。
BatchNorm(批量归一化)是对每个小批量数据进行归一化,减去均值除以标准差,再引入可学习的缩放和平移参数。
优点是加快训练速度,缓解梯度消失和爆炸问题。缺点是在小批量或变长序列中效果不稳定,不适合序列模型。
96、简单描述一下Transformer中的前馈神经网络?使用了什么激活函数?相关优缺点?
Transformer中的前馈神经网络FeedForward由两个线性变换和一个激活函数组成,激活函数通常是ReLU。如下公式:max相当于Relu优点是增加模型的非线性表达能力,结构简单高效。缺点是ReLU可能导致部分神经元输出恒为零(死神经元),需要慎重选择超参数。
97、Encoder端和Decoder端是如何进行交互的?(在这里可以问一下关于seq2seq的attention知识)
Encoder端和Decoder端通过注意力机制进行交互。Encoder将输入序列编码成隐藏表示,Decoder通过多头注意力机制,将编码器的输出作为键和值,解码器的输出作为查询,计算注意力得分,从编码器的输出中提取相关信息,生成新的输出序列。
下面用一个更通俗的类比来解释Transformer中编码器(Encoder)和解码器(Decoder)之间的交互。想象一下,编码器和解码器是两个团队,它们要共同完成一个任务:把一种语言翻译成另一种语言。
1. 编码器团队(Encoder):
编码器团队的任务是仔细阅读原始语言(比如英语)的句子,并理解它的意思。
每个团队成员(编码器层)都会贡献自己对句子的理解,最终形成一个整体的理解(隐藏状态)。
2. 解码器团队(Decoder):
解码器团队的任务是根据编码器团队的理解,逐字逐句地把句子翻译成目标语言(比如法语)。
3. 交互的桥梁:注意力机制:
当解码器团队开始工作时,他们需要不断地与编码器团队沟通,以确保翻译的准确性。
他们通过一个特殊的“对讲机”(注意力机制)来沟通。解码器团队的每个成员(解码器层)都会问编码器团队:“在这个翻译步骤中,原文中的哪个部分最重要?”
4. 编码器团队的回答:
编码器团队会根据解码器团队的问题,给出一个“重要性评分”(注意力权重),告诉解码器团队在当前翻译步骤中,原文的哪些部分是重要的。
5. 解码器团队的翻译:
根据编码器团队给出的重要性评分,解码器团队会综合考虑这些信息,并决定下一个翻译出的词是什么。这个过程会一直重复,直到整个句子被翻译完成。
6. 防止作弊的规则(掩码):
在翻译过程中,有一个规则:解码器团队不能提前看到未来的词(不能作弊)。所以他们会用一个“遮盖布”(掩码)来确保在翻译当前词时,只能看到已经翻译出来的部分。
通过这种方式,Transformer模型中的编码器和解码器可以协同工作,完成复杂的任务,比如语言翻译、文本摘要等。编码器团队深入理解输入信息,而解码器团队则利用这些理解,一步步构建出高质量的输出。
(Seq2seq(序列到序列)模型中,注意力机制用来解决长序列依赖问题。传统的seq2seq模型在解码时只能使用Encoder的最后一个隐状态,这对于长序列可能效果不好。注意力机制通过计算Decoder的每个时间步与Encoder输出的所有时间步之间的相关性,动态地选择信息,提升了翻译效果。)
98、Decoder阶段的多头自注意力和encoder的多头自注意力有什么区别?(为什么需要decoder自注意力需要进行 sequence mask)
Decoder阶段的多头自注意力需要进行sequence mask,以防止模型在训练时看到未来的单词。Encoder的多头自注意力没有这种限制。Sequence mask确保模型只关注已生成的部分,避免信息泄露,提高训练的效果。
99、Transformer的并行化提现在哪个地方?Decoder端可以做并行化吗?
Transformer的并行化体现在注意力机制和前馈神经网络上,因为每个时间步的计算彼此独立。
Decoder端不能完全并行化,因为当前步的输出依赖于前一步的结果,但自注意力机制部分可以并行化。
100、简单描述一下wordpiece model 和 byte pair encoding,有实际应用过吗?
WordPiece Model和Byte Pair Encoding(BPE)都是子词分割技术。
WordPiece将词分割成子词,提高模型的词汇覆盖率。BPE是合并最频繁的字对。
1. WordPiece Model:
想象一下,你有一个工具箱,里面有各种各样的拼图碎片,每个碎片代表一个语素或词的一部分。WordPiece模型就像这个工具箱,它把单词分解成更小的、有意义的片段。
这样做的好处是,即使工具箱里没有某个完整的单词,你也可以通过拼凑这些小片段来表达这个单词的意思。在机器学习中,这可以帮助模型理解和生成新的、未见过的词汇。
2. Byte Pair Encoding(BPE):
BPE更像是一种编码技巧,它观察文本数据,找出最常见的字节对,然后把这些字节对合并成一个单一的单元。
比如,“power”和“ful”这样的词,如果它们经常一起出现,BPE就会把它们看作一个单元。这样做可以减少词汇表的大小,同时保持词汇的多样性。
实际应用:
这两种技术在自然语言处理(NLP)中非常实用,特别是在机器翻译、文本生成等任务中。它们帮助模型处理那些在训练数据中很少见或完全没见过的词汇。
101、Transformer训练的时候学习率是如何设定的?Dropout是如何设定的,位置在哪里?Dropout 在测试的需要有什么需要注意的吗?
(1)预热策略: Transformer通常使用预热(warm-up)策略和学习率衰减相结合的方法。在训练的前一部分
迭代中,学习率逐渐增加,然后按照预定的方式逐渐减少。
其中,d model 是模型的维度,step_num 是当前训练步数,warmup_steps 是预热步数。
(2)Transformer中使用Dropout层来防止过拟合,具体位置包括:自注意力机制中的注意力权重计算后。前馈神经网络的输出。残差连接后的输出。设定:通常Dropout概率设定为0.1,但可以根据具体任务和数据进行调整。
(3)测试时:不使用Dropout:在测试或推理阶段,Dropout不再使用,即不会随机丢弃节点,而是使用所有节点参与计算。
102、引申一个关于bert问题,bert的mask为何不学习transformer在attention处进行屏蔽score的技巧?
BERT的掩码设计目的是为了在预训练过程中让模型学习丰富的上下文表示,而不是为了防止信息泄漏,这与Transformer中attention mask的用途不同。
BERT中的mask:
1. 预训练任务:BERT使用掩码语言模型(Masked Language Model, MLM)进行预训练,即在输入序列中随机选择一些单词进行掩码,然后让模型预测这些掩码位置的单词。
2. 原因:独立于位置的预测:BERT的掩码操作是对输入的特定位置进行掩码,目的是让模型能够学习到每个单词的上下文表示,而不需要关注具体位置。
3. 不同任务:BERT的设计目标是让模型学习到每个单词的上下文表示,而Transformer的attention掩码(mask)主要用于在序列生成中防止信息泄漏,如自回归模型中防止预测未来的单词。
Transformer的注意力掩码(attention mask):
1. 屏蔽未来信息:在自回归模型中,如GPT,使用注意力掩码来屏蔽未来的单词,以防止信息泄漏,从而确保模型只能利用当前和过去的信息进行预测。
2. 序列长度不同:在处理不同长度的序列时,使用掩码来标识实际存在的部分和填充部分(padding),从而保证模型的注意力计算只在有效部分进行。
103、请描述一下你认为的把 self-attention 复杂度从 O(n2) 降低到 O(n)有效方案.
局部注意力机制: 在全局self-attention中,每个位置的词语都与整个序列中的所有其他位置计算注意力权重。但实际上,相对较远的词语之间的关联性可能并不是那么重要。因此,我们可以采用一种局部注意力机制,只计算每个位置与其周围一定范围内的词语之间的注意力。
窗口化注意力: 在局部注意力机制中,可以使用一个固定大小的窗口来定义每个位置与其相邻词语的范围。例如,可以选择一个固定大小的窗口,如5或7,然后只计算每个位置与其相邻的5个或7个词语之间的注意力权重。
可学习的位置偏移: 为了使模型能够学习到适合不同任务和数据的局部注意力模式,可以引入可学习的位置偏移参数。这些参数可以学习到不同位置之间的相对关系,从而指导模型在计算注意力权重时选择正确的窗口范围。
多尺度注意力: 除了固定大小的窗口,还可以引入多尺度的注意力机制。例如,在每个位置处可以同时计算多个不同大小的窗口范围的注意力,然后将它们进行加权平均,以综合考虑不同范围内的词语之间的关联性。
104、如果使用 Transformer 对不同类别的数据进行训练,数据集有些类别的数据量很大(例如有 10 亿条),而大多数类别的数据量特别小(例如可能只有 100 条),此时如何训练出一个相对理想的 Transformer 模型来对处理不同类别的任务?
类别加权损失函数: 使用加权损失函数来平衡不同类别之间的数据量差异。对于数据量较小的类别,可以赋予更高的权重,以便模型更加关注这些类别的训练样本。这样可以确保模型在训练过程中更加平衡地学习到每个类别的特征。
数据增强: 对于数据量较小的类别,可以采用数据增强的方法来扩充训练数据集。数据增强技术可以通过对原始数据进行随机变换、旋转、剪裁等操作来生成新的训练样本,从而增加数据集的大小和多样性。
迁移学习: 利用在数据量较大的类别上预训练的模型参数作为初始化参数,然后在数据量较小的类别上进行微调。这种迁移学习的方法可以利用大规模数据集中学习到的通用特征来加速和提高在小规模数据集上的性能。
数据重采样: 对于数据量较大的类别,可以采用数据重采样的方法来减少其样本数量,以使不同类别之间的数据量更加平衡。常见的重采样方法包括随机欠采样、SMOTE(Synthetic Minority Over- sampling Technique)等。
类别分层采样: 在训练过程中,可以采用类别分层采样的方法来确保每个批次中包含各个类别的样本,从而防止某些类别的样本被忽略。这样可以确保模型在每个批次中都能够观察到不同类别的样本,有助于模型更全面地学习到每个类别的特征。
105、如何使用使用多种类小样本对 Transformer 训练而取得很好的分类效果,请详述背后的架构设计和数学机制
类别加权损失函数: 设计一种损失函数,对不同类别的样本赋予不同的权重,使得模型在训练时更关注那些类别数据量较小的样本。常见的做法是使用加权交叉熵损失函数,其中每个类别的权重与其样本数量的倒数成正比。这样可以确保模型更加关注样本量少的类别,从而提高对小类别数据的分类性能。
过采样和欠采样: 通过过采样来增加小类别的样本量,或者通过欠采样来减少大类别的样本量,从而使得不同类别的样本数量更加平衡。这样可以帮助模型更好地学习到所有类别之间的特征和区分性信息。
类别嵌入: 引入类别嵌入向量作为Transformer模型的输入,以将类别信息融入到模型中。类别嵌入向量可以通过预训练的方式得到,或者通过模型训练过程中学习到。这样可以帮助模型更好地理解和区分不同类别之间的语义差异。
类别自适应注意力: 在Transformer模型的注意力机制中引入类别自适应注意力,使得模型在不同类别之间可以动态调整注意力权重,更好地关注样本量较小的类别。这样可以提高模型对小类别数据的分类性能。
迁移学习: 利用已经在大数据集上预训练好的Transformer模型进行迁移学习,然后在小样本数据上微调。这样可以借助大数据集上学到的特征和知识,帮助模型更快地收敛并且更好地泛化到小样本数据。
106、在给 Transformer 输入 Embeddings 的时候是否可以使用多方来源的词嵌入训练模型?请阐述背后的数学原理及工程上的具体实现机制
是的,Transformer模型在输入Embeddings时可以使用来自多方来源的词嵌入进行训练。这种方法被称为多嵌入(multi-embedding)策略,它可以结合来自不同数据集、不同语料库或不同预训练模型的词嵌入,以提高模型在不同任务或不同领域的性能。下面是一些数学原理和工程上的具体实现机制:
数学原理: 在Transformer模型中,Embeddings层的目的是将输入的离散词汇映射到连续的词嵌入空间中,以便模型能够理解输入文本的语义和语法信息。使用多方来源的词嵌入进行训练时,实际上是在为模型提供更丰富的语义信息,从而增强模型的泛化能力和表征能力。通过结合多个来源的词嵌入,可以充分利用不同数据集或不同领域的语义信息,从而提高模型的性能。
具体实现机制: 实现多嵌入策略的具体方法有几种:
简单融合: 将来自多个来源的词嵌入简单地拼接在一起或者取平均,作为模型的输入Embeddings。这种方法简单直观,但可能无法很好地利用不同来源的语义信息。
加权融合: 对来自不同来源的词嵌入进行加权融合,权重可以通过训练得到或者手动设定。这样可以根据不同来源的词嵌入的重要性对其进行更灵活的控制。
门控机制: 使用门控机制(如门控单元或者注意力机制)来动态地调整不同来源的词嵌入的贡献,以适应不同任务或不同上下文的需求。
领域特定嵌入: 为不同的领域或任务训练独立的词嵌入,并将其与通用的词嵌入进行融合。这样可以使模型在不同领域或任务中更好地泛化。
107、更深更宽的 Transformer 网络是否意味着能够获得更强的预训练模型?请至少从3个角度,例如架构的工程化落地、参数的信息表达能力、训练任务等,来展开具体的分析
架构的工程化落地: 更深更宽的Transformer网络通常具有更多的层和更多的注意力头,这意味着模型可以捕捉更复杂和更丰富的语义信息。在工程化落地中,更大的模型可能能够更好地适应不同的任务和数据,因为它们具有更强大的表示能力,能够更好地理解和处理复杂的语言现象。
参数的信息表达能力: 更深更宽的Transformer网络具有更多的参数,因此具有更强大的信息表达能力。
更多的参数可以使模型学习到更复杂和更细粒度的特征,从而提高模型对输入数据的建模能力。这意味着更大的Transformer模型可以更好地捕捉语言的结构和语义,从而产生更具有泛化能力的预训练模型。
训练任务: 更深更宽的Transformer网络可能可以在更大规模的数据集上进行训练,从而提高模型的泛化能力。通过在更大的数据集上进行训练,模型可以更好地学习到语言的统计规律和语义信息,从而提高对新任务的适应能力。此外,更大的模型还可以通过更长时间的训练来获得更好的性能,因为它们具有更多的参数和更强大的表示能力,可以更好地利用数据集中的信息。
108、如何大规模降低 Transformer 中 Embedding 中的参数数量?请至少具体分析一种具体方法背后的数学原理和工程实践
降低Transformer中Embedding层参数数量的一个常见方法是使用低维度的嵌入矩阵和共享参数。其中,一种具体方法是使用词嵌入的哈希技巧(Hashing Trick)来减少词嵌入的维度和参数数量。下面我将详细解释这种方法的数学原理和工程实践:
数学原理:
哈希技巧的基本思想是将原始词嵌入的高维向量通过哈希函数映射到低维空间中。这种方法的数学原理是通过哈希函数将每个词语映射到固定数量的桶(buckets)中,然后在每个桶中使用一个共享的词嵌入向量。因此,每个桶中的所有词语都共享同一个词嵌入向量,从而减少了词嵌入层的参数数量。
工程实践:
选择哈希函数: 首先需要选择一个哈希函数,它将词语映射到固定数量的桶中。常用的哈希函数包括简单的取模运算或者更复杂的一致性哈希(Consistent Hashing)。
确定桶的数量: 确定每个词嵌入向量被映射到的桶的数量。通常会根据词嵌入的维度和期望的参数数量来决定桶的数量。较大的桶数量会导致更多的参数共享,但可能会降低词嵌入的表达能力。
构建哈希表: 对词汇表中的每个词语应用哈希函数,并将它们映射到对应的桶中。这样就可以构建一个哈希表,将每个桶和共享的词嵌入向量关联起来。
模型训练: 在训练过程中,使用哈希表中的共享词嵌入向量来表示输入文本中的词语。对于每个词语,首先应用哈希函数得到其对应的桶,然后使用桶中的共享词嵌入向量来表示该词语。
109、请描述 Trasnformer 不同的 Layer 之间的 FeedForward 神经网络之间的联系,例如在 Bert 中不同 Layer 之间的 CLS 有什么关系、对角矩阵随着 Layer 的加深有何变化等
在Transformer中,不同层之间的FeedForward神经网络(FFN)之间存在一定的联系,虽然它们在每一层中的作用是相同的,但在整个模型中的效果可能会有所不同。以Bert为例,描述不同层之间的FeedForward神经网络之间的联系:
CLS之间的关系: 在Bert中,每个Transformer层的最后一个CLS标记的输出被用作整个句子的表示,即句子级别的表示。这意味着每个层的CLS输出在语义上应该是相似的,因为它们都代表了整个句子的语义信息。因此,不同层之间的CLS输出应该在语义上是相似的,但可能会有一些微小的差异,这可能是由于模型在不同层学到了不同的语义表示。对角矩阵的变化: 在Transformer的Self-Attention机制中,每个位置的词语都会与其他位置的词语计算注意力权重,这些权重被组成一个注意力矩阵。对角矩阵可以表示每个位置与自己的关注程度,通常在模型的不同层之间会有一些变化。在Bert中,随着层数的加深,对角矩阵可能会发生变化,因为不同层之间学习到的语义信息可能有所不同。但通常情况下,对角矩阵应该保持稳定或者有一定的模式变化,以确保模型能够正确地捕捉输入序列中的关系。
110、Transformer 的 Layer 深度过深,例如 512 个 Layer,会可能导致什么现象?请详述背后的数学机制
梯度消失或爆炸: 随着层数的增加,梯度在反向传播过程中可能会逐渐消失或爆炸,导致模型难以收敛或训练不稳定。
计算资源消耗: 更深的Transformer模型需要更多的计算资源来进行训练和推理,可能超出了可用的资源限制。
过拟合: 更深的模型可能会增加过拟合的风险,特别是在数据集较小的情况下,模型可能会过度学习训练数据的噪声。
训练时间增加: 更深的模型需要更长的训练时间来收敛,这可能会增加训练成本和时间成本。
111、请描述至少三种判断 Transformer 中神经元 Neuron 相对重要程度的具体方法及其背后的数学原理
梯度重要性(Gradient Importance): 梯度重要性方法通过分析神经元对损失函数的梯度大小来判断其相对重要程度。在训练过程中,梯度值越大的神经元通常表示对于损失函数的影响越大,因此被认为是比较重要的神经元。数学上,可以计算神经元的梯度范数作为其重要性指标,即梯度范数越大,神经元越重要。
激活值重要性(Activation Importance): 激活值重要性方法通过分析神经元的激活值分布来判断其相对重要程度。在训练过程中,激活值较大的神经元通常表示对于模型的决策具有较大的影响,因此被认为是比较重要的神经元。数学上,可以计算神经元的激活值分布的某种统计量(如均值、方差)作为其重要性指标,即激活值分布的某种统计量越大,神经元越重要。
信息熵重要性(Information Entropy Importance): 信息熵重要性方法通过分析神经元的输出信息熵来判断其相对重要程度。在训练过程中,信息熵较高的神经元通常表示对于模型的输出具有较大的不确定性,因此被认为是比较重要的神经元。数学上,可以计算神经元的输出信息熵作为其重要性指标,即信息熵越高,神经元越重要。
112、为什么说 Transformer 的注意力机制是相对廉价的?注意力机制相对更对于RNN 系列及 Convolution 系列算法而言在计算上(尤其是计算复杂度)有什么优势?
并行计算: 注意力机制中的计算可以高度并行化,每个注意力头都可以独立计算,而不受其他头的影响。这意味着可以同时计算多个头的注意力权重,大大加快了计算速度。相比之下,RNN和CNN等序列模型通常需要顺序计算,难以实现高效的并行计算。
局部连接性: 在注意力机制中,每个位置只与其他位置进行注意力计算,而不是与整个序列进行计算。这种局部连接性使得注意力机制的计算复杂度不会随着序列长度的增加而呈现线性增长。相比之下,RNN和CNN等序列模型通常需要在每个时间步或每个位置上进行固定的计算操作,导致计算复杂度随着序列长度的增加而线性增长。
自注意力机制的简化: 在Transformer中使用的自注意力机制相对于传统的注意力机制更加简化和高效。通过使用矩阵乘法和softmax操作,可以快速计算出每个位置对其他位置的注意力权重,而无需显式计算所有可能的组合。这种简化使得注意力机制的计算成本大大降低。
113、请分享一下至少三种提升 Transformer 预测速度的具体的方法及其数学原理
注意力头的减少: 通过减少注意力头的数量来降低计算量。在Transformer中,每个注意力头都需要计算查询(query)、键(key)和值(value)之间的注意力权重,然后将值加权求和以生成输出。减少注意力头的数量可以大大减少计算复杂度。
局部注意力机制: 使用局部注意力机制来减少每个位置计算注意力时需要考虑的范围。在局部注意力机制中,每个位置只与其周围一定范围内的位置进行注意力计算,而不是与整个序列进行计算。这样可以显著降低计算量,特别是在处理长序列时。数学上,局部注意力机制可以通过限制注意力权重矩阵中的非零元素范围来实现。
参数量的减少: 减少Transformer模型中的参数量可以降低模型的计算量。例如,可以通过减少隐藏层的维度、减少编码器和解码器的层数或减少词嵌入的维度来降低模型的参数量。这样可以降低模型的计算复杂度,并且可以提高模型的训练和推理速度。数学上,参数量的减少会直接影响模型中矩阵乘法和参数更新的计算量。
114、请分别描述 Bert 的 MLM 和 NSP 技术(例如 Sampling) 的问题及具体改进方式
MLM(Masked Language Model):
问题:MLM任务中,部分输入词被随机掩盖(用MASK符号替换),模型需要预测这些被掩盖的词。然而,由于随机地掩盖词语,可能会导致模型在训练过程中学习到过于简单或者不太自然的预测模式,使得模型在实际应用中表现不佳。
具体改进方式:可以采用更加智能的掩盖策略,例如选择更具语义相关性的词进行掩盖,或者通过结合其他任务(如词义消歧)来指导掩盖策略。另外,还可以尝试使用更加复杂的训练目标,例如通过引入额外的噪声来增加模型的鲁棒性。
NSP(Next Sentence Prediction):
问题:NSP任务中,模型需要判断两个句子是否是连续的,这种二分类任务可能会过于简化,无法充分利用句子之间的语义关系,尤其是对于复杂的语义关系和长文本。
具体改进方式:可以考虑引入更多的语义相关性指导模型的学习,例如通过更丰富的句子对策略来选择训练样本,或者结合其他任务(如句子级别的语义匹配)来增强模型的语义理解能力。另外,可以尝试引入更复杂的模型结构,例如使用更多的注意力头或者更深的网络层来提高模型的表示能力。
115、请阐述使用 Transformer 实现 Zero-shot Learning 数学原理和具体实现流程
数学原理:
Transformer模型在预训练阶段学习到了词嵌入和句子表示,这些表示具有丰富的语义信息,可以很好地捕捉单词和句子之间的语义关系。零样本学习的关键在于将未见过的类别与已知类别之间的语义关系进行建模。Transformer模型学习到的语义表示可以用来衡量不同类别之间的语义相似度,从而实现对未见过类别的分类。
具体实现流程:
准备数据: 首先,需要准备一个包含已知类别和未知类别的语义表示。可以使用预训练的Transformer模型,如BERT、RoBERTa等,将每个类别的文本描述转换为语义表示。
计算相似度: 对于给定的未见过的类别,将其文本描述转换为语义表示,并与所有已知类别的语义表示计算相似度。可以使用余弦相似度或其他距离度量来衡量相似度。
分类预测: 根据计算得到的相似度,选择与未见类别语义表示最相似的已知类别作为预测结果。可以使用最近邻分类器或其他机器学习算法来实现分类预测。
116、为什么上面那个公式要对QK进行scaling
scaling后进行softmax操作可以使得输入的数据的分布变得更好,你可以想象下softmax的公式,数值会进入敏感区间,防止梯度消失,让模型能够更容易训练。
117、self-attention一定要这样表达吗?
不一定,只要可以建模相关性就可以。
当然,最好是能够高速计算(矩阵乘法),并且表达能力强(query可以主动去关注到其他的key并在value上进行强化,并且忽略不相关的其他部分),模型容量够(引入了project_q/k/v,att_out,多头)。
118、为什么transformer用Layer Norm?有什么用?
任何norm的意义都是为了让使用norm的网络的输入的数据分布变得更好,也就是转换为标准正态分布,数值进入敏感度区间,以减缓梯度消失,从而更容易训练。当然,这也意味着舍弃了除此维度之外其他维度的其他信息。为什么能舍弃呢?请看下一题。
119、为什么不用BN?
首先要明确,如果在一个维度内进行normalization,那么在这个维度内,相对大小有意义的,是可以比较的;但是在normalization后的不同的维度之间,相对大小这是没有意义的BN(batch normalization)广泛应用于CV,针对同一特征,以跨样本的方式开展归一化,也就是对不同样本的同一channel间的所有像素值进行归一化,因此不会破坏不同样本同一特征之间的关系,毕竟“减均值,除标准差”只是一个平移加缩放的线性操作。在“身高体重”的例子中,这就意味着“归一化前是高个儿的归一化后仍然是高个儿,归一化前胖的归一化后也不会变瘦”。这一性质进而决定了经过归一化操作后,样本之间仍然具有可比较性。但是,特征与特征之间的不再具有可比较性,也就是上一个问题中我所说的“舍弃了除此维度之外其他维度的其他信息”。
既然前面说了是CV中用BN,那为什么NLP中不用BN,而用LN呢?道理一样,因为NLP中:
对不同样本同一特征的信息进行归一化没有意义:
三个样本(为中华之崛起而读书;我爱中国;母爱最伟大)中,“为”、“我”、“母”归一到同一分布没有意义。
舍弃不了BN中舍弃的其他维度的信息,也就是同一个样本的不同维度的信息:
“为”、“我”、“母”归一到同一分布后,第一句话中的“为”和“中”就没有可比性了,何谈同一句子之间的注意力机制?
加强一下,我们再回顾CV中:对不同样本同一特征(channel)的信息进行归一化有意义:因为同一个channel下的所有信息都是遵循统一规则下的大小比较的,比如黑白图中越白越靠近255,反之越黑越靠近0
可以舍弃其他维度的信息,也就是同一个样本的不同维度间(channel)的信息:
例来说,RGB三个通道之间互相比较意义不大
120、transformer为什么要用三个不一样的QKV?
前面提到过,是为了增强网络的容量和表达能力。更极端点,如果完全不要project_q/k/v,就是输入x本身来做,当然可以,但是表征能力太弱了(x的参数更新得至少会很拧巴)
121、为什么要多头?举例说明多头相比单头注意力的优势和上一问一样,进一步增强网络的容量和表达能力。你可以类比CV中的不同的channel(不同卷积核)会关注不同的信息,事实上不同的头也会关注不同的信息。
假设我们有一个句子"the cat, which is black, sat on the mat"。在处理"sat"这个词时,一个头(主语头)可能会更关注"cat",因为"cat"是"sat"的主语;另一个头(宾语头)可能会更关注"on the mat",
因为这是"sat"的宾语;还有一个头(修饰头)可能会关注"which is black",因为这是对"cat"的修饰。
当然,这只是为了方便你理解,事实上就和卷积核一样,不同头关注的内容是很抽象的。
你当然可以就用一个头同时做这个事,但是还是这个道理,我们的目的就是通过增加参数量来增强网络的容量从而提升网络表达能力。
经过多头之后,我们还需要att_out线性层来做线性变换,以自动决定(通过训练)对每个头的输出赋予多大的权重,从而在最终的输出中强调一些头的信息,而忽视其他头的信息。这是一种自适应的、数据驱动的方式来组合不同头的信息。
122、为什么Bert中要用WordPiece/BPE这样的subword Token?
避免OOV(Out Of Vocabulary),也就是词汇表外的词。在NLP中,通常会预先构建一个词汇表,包含所有模型能够识别的词。然而,总会有一些词没有出现在预先构建的词汇表中,这些词就是 OOV。
传统的处理方式往往是将这些 OOV 映射到一个特殊的符号,如 ,但这种方式无法充分利用OOV 中的信息。例如,对于词汇表中没有的词 “unhappiness”,如果直接映射为 ,则模型就无法理解它的含义。
WordPiece/Byte Pair Encoding (BPE) 等基于子词的分词方法提供了一种解决 OOV 问题的方式。现在更多的语言大模型选择基于BPE的方式,只不过BERT时代更多还是WordPiece。BPE 通过将词分解为更小的单元(子词或字符),可以有效地处理词汇表外的词。对于上面的 “unhappiness” 例子,即使 “unhappiness” 本身不在词汇表中,但是它可以被分解为 “un”、“happiness” 等子词,而这些子词
可能在词汇表中。这样,模型就可以通过这些子词来理解 “unhappiness” 的含义。
另一方面就是,BPE本身的语义粒度也很合适,一个token不会太大,也不会小到损失连接信息(如一个字母)。
123、如何提高Transformer模型中自注意力机制的计算效率?
1. 在计算注意力分数时仅考虑部分词元,通过限制 Query-Key 对的数量,使计算复杂度与n呈线性关系,而非二次方关系。这类方法就称为稀疏注意力(Sparse Attention)机制。可以将稀疏化方法进一步分成两类:基于位置信息和基于内容。
2. Flash Attention 在绝大多数的神经网络中,都含有大量的Memory-bound操作,但是绝大多数Efficient Transformer把改进方法集中在降低模型的FLOPS上。这就导致这些方法的计算速度并没有显著降低。于是FlashAttention将优化重点放在了降低存储访问开销(MAC)上
- 多查询注意力(Multi Query Attention)是一种多头注意力的变体,它在轻微牺牲模型质量的前提下显著减少计算成本。在多查询注意力中key-value对在不同的注意力头之间共享,即,所有注意力头使用同一个key投射和一个value投射,只单独保留了query。因此键和值的矩阵仅有一份,这大幅度减少了显存占用和解码所需的内存带宽需求。
124、逻辑回归为什么用交叉熵不用mse
逻辑回归模型不用MSE作为损失函数的原因主要有两个,一个从背景意义来说,交叉熵函数更贴切
“概率”的意义。另一方面是从求解的角度,交叉熵损失函数比MSE损失函数更易于求解。
125、gat有什么缺点
尽管GAT模型在处理图结构数据时具有很高的表现能力,但它也存在一些缺陷。首先,GAT模型的计算复杂度较高。由于每个节点都需要与其邻居节点进行注意力计算,这导致了计算量的显著增加。其次,GAT模型对于大规模图结构的处理效果不佳。由于注意力机制需要考虑每个节点与其所有邻居节点
之间的关系,当图的规模较大时,GAT模型的计算和存储开销将会非常大。此外,GAT模型的注意力机制可能会受到噪声节点的影响,从而导致模型性能下降。
126、mape有什么缺点
平均绝对百分比误差。优点在于以百分比形式表示预测值与真实值之间的相对误差,更关注相对误差,对于不同量级的预测问题更具可比性。此外,MAPE在金融领域中常用于评估投资组合风险模型的表现。然而,MAPE的缺点在于当真实值接近零时,计算会出现分母为零的情况,导致评价结果不可用。同时,MAPE对小的误差较为敏感,可能会放大真实值较小的样本的误差。
127、怎么处理冷启动问题
1、数据
首先思考数据,能够帮助我们了解现状,知道手上有哪些底牌。数据一般包括用户数据和物品数据。按数据来源的不同,考虑:内部数据、外部数据。
1.1、内部数据
内部数据包括:本产品线的数据、其他产品线的数据。
注意,在冷启动问题中,对于数据是“缺乏”而非“没有”。这意味着我们手上可能还是有一些数据的。
● 对于用户冷启动问题,用户在注册时填写的信息(手机号、地址、性别、年龄等)和注册时的环境信息(IP地址、GPS),可以帮助我们做出粗粒度的推荐。例如可以根据专家意见或决策树模型建立一些针对于不同年龄段、不同性别的用户的个性化榜单,然后在用户完成注册后,根据注册时填写的信息进行推荐。
● 对于物品冷启动问题,物品的一些属性信息也同样可以起到作用。在酒店推荐的场景下,可以根据新上线酒店的位置、价格、面积等信息,为酒店指定聚类,找到相似酒店,利用相似酒店的推荐逻辑完成冷启动过程。
另外,如果公司还有其他业务线,那么其他业务线的数据也可以拿过来使用。例如用户在美团已经积累了外卖数据,可以根据消费金额、家庭地址等分析得出用户的消费水平,那么在用户第一次使用美团的酒店服务时,也可
以推荐出符合消费习惯的酒店。
1.2、外部数据
常见获取数据的手段包括:爬虫、平台对接。
● 爬虫是近乎于零成本的方案,但是可能会有一些法律风险。平台之间互相告对方非法爬取数据的新闻屡见不鲜。
● 有些第三方 DMP(Data Management Platform,数据管理平台)也会提供用户信息。像国外的 BlueKai、Nielsen,国内的 Talking Data 等公司都提供匹配率非常高的数据服务,可以极大地丰富用户的属性特征。像腾讯、百度、网易、Google等企业都与这些 DMP 平台有合作。
那 DMP 的数据是哪里来的呢?数据交换。通过合作的方式,企业给 DMP 提供用户的一些基本数据,DMP 对数据进行分析、挖掘,给企业提供更加全方位的用户信息。这样一来,企业就能获取到本来完全得不到的用户兴趣、收入水平、广告倾向等一系列高阶特征。
2、算法
在梳理完数据现状之后,接下来考虑算法的问题。
推荐系统的目标就是推荐给用户正确的商品,评价方式可以是点击率、在线观看时长等。在解决冷启动问题的过程中,无论用什么算法,算法的优化目标都要与总体目标一致。
算法可以从实现方式的不同,分为 3 类:基于规则、基于ML/DL、探索与利用。
2.1、基于规则的算法
基于规则的算法,一般给出的都是榜单类型的推荐结果。
在用户冷启动场景下,可以使用“热门排行榜”、“最新流行趋势榜”、“最高评分榜”等作为默认的推荐列表,实现非个性化推荐。可以根据专家意见建立一些针对于不同年龄段、不同性别的用户的个性化榜单,然后在用户完成注册后,根据注册时填写的信息进行粗粒度的个性化推荐。另外,在 LBS(Location Based Services,基于位置的服务)场景下,可以根据用户在注册时填写的地址信息、GPS 信息,按一定规则推荐周围的店家/商品。
在物品冷启动场景下,可以按一定规则寻找相似商品进行绑定,完成推荐。
需要注意的是,基于规则的算法更多依赖的是专家对业务的洞察。因此在制定规则时,需要充分了解业务,充分利用已有数据,才能让冷启动规则合理且高效。
2.2、基于ML/DL
基于 ML/DL 的算法要解决的是用户冷启动或物品冷启动问题,而非系统冷启动问题。因此前提是,系统已经上线,同时也已经有了一定的数据积累。
机器学习(ML)的思路是,将基于规则的算法改造为机器学习模型,按学习方式的不同,又可以分为有监督学习和无监督学习(当然还有半监督学习,此处不展开)。
● 有监督学习:在前面的例子中,可以利用点击率目标构造一个用户属性的决策树,在每个决策树的叶节点建立冷启动榜单,然后新用户在注册后,根据其有限的属性信息,寻找到决策树上对应的叶节点榜单,完成冷启动过程。
● 无监督学习:例如使用聚类算法,来寻找相似物品,但要注意维度灾难问题。需要注意的是,由于数据的缺乏,不能选用复杂的机器学习模型,否则容易造成过拟合问题。而对于新用户,由于其特征非常的稀疏,使用基于深度学习(DL)的推荐系统效果会比较差,那有什么方法呢?可以考虑迁移学习和强化学习。
● 迁移学习如果有其他业务线的数据,也可以拿过来使用。冷启动问题本质上是某领域的数据或知识不足导致的,如果能够将其他领域的知识用于当前领域,那么冷启动问题自然迎刃而解。我们称这种做法为“迁移学习”,常见的做法是共享特征(在深度学习模型中就是共享 Embedding)或共享模型参数。例如将 CTR 模型中的用户Embedding 和物品 Embedding 应用到 CVR 模型中,直接用于训练。Embedding 是一种高维特征到低维特征的映射,训练好的 Embedding 可以反映用于与隐变量、商品与隐变量之间的内在联系。
● 强化学习:所谓强化学习,就是指智能体(即模型)根据环境(即用户、物品等)的反馈(即点击或不点击)来采取行动(即推荐商品列表)并改变自身状态(更新模型参数),然后再获得反馈再采取行动再改变状态的循环过程。在一次次的迭代过程中,让推荐系统尽快度过冷启动状态。
2.3、运筹优化
运筹优化在推荐系统中的应用场景是多样的,而在冷启动问题里,主要是用于解决物品冷启动问题。当然,同样也可以用来解决系统冷启动的问题。
具体而言,就是是在“探索新数据”和“利用旧数据”之间进行平衡,使系统既能够利用旧数据进行推荐,达到推荐系统的商业目标,又能高效地探索冷启动的物品是否是“优质物品”,使冷启动物品获得曝光的倾向,快速收集冷启动数据。我们又称这个过程为“探索与利用”。
显然,这是一个多目标优化问题。
一个经典的解决办法是 UCB(Upper Confidence Bound,置信区间上界)。公式如下。其中 为观测到的第几个物品的平均回报(这里的平均回报可以是点击率、转化率等), 是目前为止向该用户曝光第 个物品的次数, 是到目前为止曝光所有物品的次数之和。
在新物品刚上架的时候, 比较低,但是因为曝光次数 也比较小,所以 会比较大,最后 值会比较大,新物品的曝光机会较大。随着曝光次数的增加, 在公式中的相对值逐渐减小,最后 就主要取决于 了。也就是说,使用 UCB方法进行推荐,推荐系统会倾向于推荐“效果好”或“冷启动”的物品。随着冷启动物品被有倾向性的推荐,能够快速收集反馈数据,最后快速通过冷启动阶段。
3、产品
最后讨论一下从产品的角度,要怎么帮助解决冷启动问题。
冷启动问题之所以出现,就是因为缺乏有价值的数据,那么在产品功能方面,就要尽量帮助收集数据。
● 用户冷启动:有些应用会在用户第一次登录时,引导用户输入一些冷启动特征。例如,一些音乐类产品会引导用于选择“音乐风格”;一些视频类产品会引导用户选择几部自己喜欢的电影。
● 物品冷启动:有些应用会以积分奖励的方式引导用户输入一些物品特征。像大众点评上的评论体系,淘宝上的评价系统,都是帮助商家、商品快速度过冷启动解决的利器。
128、怎么处理数据分布不均问题
重采样(Resampling):
对数据进行过采样(增加少数类样本)或欠采样(减少多数类样本)以平衡类别。
合成数据生成(Synthetic Data Generation):
使用技术如SMOTE(Synthetic Minority Over-sampling Technique)来生成少数类的合成样本。
改变损失函数(Modifying Loss Function):
使用如加权交叉熵等损失函数,对不同类别的样本赋予不同的权重。
使用集成学习(Ensemble Learning):结合多个模型的预测结果,如随机森林或提升方法,可以帮助处理类别不平衡。
专注于评价指标(Focusing on Evaluation Metrics):
使用像精确率-召回率曲线(Precision-Recall Curve)或F1分数等更适合处理不平衡数据的评价指标。
129、进行领域大模型预训练应用哪些数据集比较好?
通过分析发现现有的开源大模型进行预训练的过程中会加入书籍、论文等数据。主要是因为这些数据的数据质量较高,领域相关性比较强,知识覆盖率(密度)较大,可以让模型更适应考试。给我们自己进行大模型预训练的时候提供了一个参考。同时领域相关的网站内容、新闻内容也是比较重要的数据。
130、领域数据训练后,通用能力往往会有所下降,如何缓解模型遗忘通用能力?
如果仅仅使用领域数据集进行模型训练,模型很容易出现灾难性遗忘现象,为了解决这个问题通常在领域训练的过程中加入通用数据集。那么这个比例多少比较合适呢?目前还没有一个准确的答案。主要与领域数据量有关系,当数据量没有那么多时,一般领域数据与通用数据的比例在1:5到1:10之间是比较合适的。
131、进行SFT操作的时候,基座模型选用Chat还是Base?
在进行SFT实验的时候,大模型选用Chat还是Base作为基座,需要根据SFT的数据量进行决定。如果你只拥有小于10k数据,建议你选用Chat模型作为基座进行微调;如果你拥有100k的数据,建议你在Base模型上进行微调。
132、用于大模型微调的数据集如何构建?
进行大模型微调时,数据是比较重要的,数据的高度决定模型效果的高度,因此数据的质量重要性大于数据的数量的重要性,因此对于构建微调数据时的几点建议如下所示:
(1)选取的训练数据要干净、并具有代表性。
(2)构建的prompt尽量多样化,提高模型的鲁棒性。
(3)进行多任务同时进行训练的时候,要尽量使各个任务的数据量平衡。
133、预训练和微调是哪个阶段注入知识的?
知识是在预训练阶段注入的,而微调阶段是指在特定任务上的训练,以使预训练模型的通用知识和特定任务的要求相结合,使模型在特定任务上表现更好。
134、想让模型学习垂直领域的知识,是应该预训练还是微调?对于大模型来说是在预训练的阶段注入领域知识的,因此在训练行业大模型的时候最佳的方案是使用预训练与微调相结合的方案,先用篇章数据进行预训练以获取广泛的知识,再用问答数据进行微调,使模型更好的学习到特定领域的知识。
不过GPT系列大模型的预训练和微调,从实现方式上来讲是没有什么差别的,都是用decoder only的语言模型进行训练并更新参数,如果样本数量比较少,没有大量的篇章文档数据,个人认为只进行微调也能够注入知识,就不必再进行预训练了。如果特定的垂直领域跟预训练模型的分布差别不是很大,也不用再进行二次预训练。
135、微调后的大模型出现灾难性遗忘是什么原因?
灾难性遗忘是指大模型在学习了某个行业的新知识后,遗忘掉了最初学习的通用知识,减缓该问题的出现可以从如下两方面进行着手:
(1)加入通用知识:在用行业数据进行训练的时候增添一些通用的数据一块训练。
(2)调整学习率LR:出现这种情况也有可能是训练参数调整导致的,微调初始学习率不要设置的太高,LR=2e-5或者更小,最好不要设置大于预训练时的学习率,能够缓解此问题
136、什么是LLM的复读机问题?
大模型LLM的复读机问题是指大型语言模型在生成文本时出现的一种现象,也就是模型倾向于无限地复制输入的文本或者以过渡频繁的方式生成重复相同的句子或短语。这种现象使得模型的输出缺乏多样性和创造性,给用户带来了不好的体验。
137、出现复读机问题的可能原因有哪些?
通过分析发现导致大模型的复读机问题出现可能是以下几个方面的原因。
(1)数据偏差:大型语言模型通常是通过预训练阶段使用大量的无标签数据进行训练的。如果训练数据中含有大量的重复文本或者某些特定的句子或短语出现频率较高,模型在生成文本时就有可能倾向于复制这些常规的模式。
(2)训练目标的限制:大型语言模型的训练通常是基于自监督的学习方法,通过预测下一个词或掩盖词、短语来学习语言模型。这样的训练目标可能使得模型更倾向于生成与输入相似的文本,导致复读机问题的出现。
(3)缺乏多样性的训练数据:虽然大型语言模型能够处理大规模的数据,但如果训练数据中缺乏多样性的语言表达和语境,模型可能无法学习到足够的多样性和创造性,导致复读机问题的出现。
(4)模型结构和参数设置:大型语言模型的结构和参数也可能对复读机问题产生影响。比如,模型的注意力机制和生成策略可能导致模型更倾向于复制输入的文本。
138、解决大模型复读机问题可用哪些策略?
如何缓解大模型的复读机问题是一个复杂的任务,并没有一个通用的解决方案。不同的方法可能适用于不同的业务场景和任务,需要根据具体的情况进行选择和调整。下面是几种用于缓解大模型复读机问题的几种解决方案。
(1)多样性训练数据:在训练阶段,使用具有多样性的语料进行训练模型,避免数据偏差和重复文本的问题。比如可以从不同来源、不同领域、不同风格的文本中获取数据。
(2)加入噪声:在文本生成时,可以引入一些随机性或噪声,以增加生成文本的多样性。
(3)温度参数调整:温度参数是用于控制生成文本多样性的一个参数,通过调整温度参数值,可以控制生成文本的独特性和多样性。较高的温度值能够增加随机性,从而减少复读机问题的出现。
(4)解码参数调整:目前在生成文本时常用的解码算法有Beam搜索算法,可以通过调整Beam大小和搜索宽度,控制文本的多样性和创造性。
(5)重复惩罚参数调整:repetition_penalty用于减少生成文本中重复词汇的出现。它可以设置为大于1的值,以惩罚重复的词汇。这有助于生成更自然、不重复的文本。
(6)后处理和过滤:对生成的文本进行后处理和过滤,去除重复的句子或短语,以提高生成文本的质量和多样性。可以通过文本相似度计算方法或规则来检测和去除重复的文本。
139、目前有哪几种流行的大模型架构
BART (bi Encoder+casual Decoder,类bert的方法预训练)、T5(Encoder+Decoder,text2text预训练)、GPT(Decoder主打zero-shot)、GLM(mask的输入部分是双向注意力,在生成预测的是单向注意力)。
140、RLHF流程讲一下
a.Step1:语言模型根据问题生成答案或续写;
b.Step2:使用函数/模型/人类反馈或它们的某种组合来评估问题和答案。并映射至一个分数,即奖励reward;
c.Step3:在PPO优化步骤中,<问题+回复>pair用于计算序
列中标记的对数概率。经过训练的模型(actor)和参考模型(critic) 分别得到new_logit和old_logit,参考模型是上一阶段的指令微调 模型。两个输出之间的KL 散度用作附加奖励信号,以确保生成的响应不会偏离参考语言模型太远。然后使用 PPO算法训练语言模型
141、instruction tuning和prompt learning 的区别
instruction tuning和prompt learning的目的都是去挖掘语言模型本身具备的知识。不同的是Prompt是激发语言模型的补全能力,例如根据上半句生成下半句,或是完形填空等(few- shot)。
Instruct是激发语言模型的理解能力,它通过给出更明显的指令,让模型去做出正确的行动(zero- shot)。
142、LoRA怎么做的,讲一下?
即在原始的预训练模型旁边增加一个新的通路,通过前后两个矩阵A,B相乘,做一个降维再升维的操作。
外挂层和预训练模型层维度都为d,A会先将维度d降维到r,B再升回d。一般是针对Q/K/V的投影矩阵W分解成低秩矩阵BA作为外挂,B一般以0初始化,A以高斯分布初始化
143、为什么可以用LoRA ?
专有任务的微调权重与初始预训练权重之间的差异往往表现出“低固有秩(low intrinsicrank)”差异,这意味着它可以很好地近似为一个低秩矩阵。即微调权重和初始预训练权重之间的这种差距可以表示为两个较小矩阵的乘积。
144、LoRA的参数
a. rank秩8:选择更高秩的分解矩阵将抵消LoRA的效率优势,而且设到16也差别不大。
b. Alpha:16。Alpha用于对学习到的权重进行扩展。通常建议固定Alpha的值为16,不调节。
c.目标模块:所有密集层。初始只对QV,但应用所有有效,且更接近全参数。
d.基础学习率:1e-4。只有当训练不稳定时降到3e-5。
145、LoRA和全参微调的对比
a.对普通文本任务如生成sql差别不大,对小模型推理影响很多,但到70B的时候差别不大。此外,数据偏离分布外太远可能会导致LoRA难以处理,有提示对LoRA训练更稳定,没有提示用特殊词元代替(需训练比如4个特殊 start/end等)
b. LoRA虽然在内存方面十分高效,但可能会影响模型达到收敛的速度。
163、国外开源的LLaMA的词表实际上兼容中文效果可能会大打折扣,那么扩充词表该怎么做?
a.准备一份中文训练预料,用sentencepiece训练切词,得到扩增的中文词表,然后增加到模型原来的词表中
b. embedding矩阵随机初始化(或均值初始化)新增的token对应的向量
c.进一步做pretraining或者sft
2024最新版优快云大礼包:《AGI大模型学习资源包》免费分享**
一、2025最新大模型学习路线
一个明确的学习路线可以帮助新人了解从哪里开始,按照什么顺序学习,以及需要掌握哪些知识点。大模型领域涉及的知识点非常广泛,没有明确的学习路线可能会导致新人感到迷茫,不知道应该专注于哪些内容。
我们把学习路线分成L1到L4四个阶段,一步步带你从入门到进阶,从理论到实战。
L1级别:AI大模型时代的华丽登场
L1阶段:我们会去了解大模型的基础知识,以及大模型在各个行业的应用和分析;学习理解大模型的核心原理,关键技术,以及大模型应用场景;通过理论原理结合多个项目实战,从提示工程基础到提示工程进阶,掌握Prompt提示工程。
L2级别:AI大模型RAG应用开发工程
L2阶段是我们的AI大模型RAG应用开发工程,我们会去学习RAG检索增强生成:包括Naive RAG、Advanced-RAG以及RAG性能评估,还有GraphRAG在内的多个RAG热门项目的分析。
L3级别:大模型Agent应用架构进阶实践
L3阶段:大模型Agent应用架构进阶实现,我们会去学习LangChain、 LIamaIndex框架,也会学习到AutoGPT、 MetaGPT等多Agent系统,打造我们自己的Agent智能体;同时还可以学习到包括Coze、Dify在内的可视化工具的使用。
L4级别:大模型微调与私有化部署
L4阶段:大模型的微调和私有化部署,我们会更加深入的探讨Transformer架构,学习大模型的微调技术,利用DeepSpeed、Lamam Factory等工具快速进行模型微调;并通过Ollama、vLLM等推理部署框架,实现模型的快速部署。
整个大模型学习路线L1主要是对大模型的理论基础、生态以及提示词他的一个学习掌握;而L3 L4更多的是通过项目实战来掌握大模型的应用开发,针对以上大模型的学习路线我们也整理了对应的学习视频教程,和配套的学习资料。
二、大模型经典PDF书籍
书籍和学习文档资料是学习大模型过程中必不可少的,我们精选了一系列深入探讨大模型技术的书籍和学习文档,它们由领域内的顶尖专家撰写,内容全面、深入、详尽,为你学习大模型提供坚实的理论基础。(书籍含电子版PDF)
三、大模型视频教程
对于很多自学或者没有基础的同学来说,书籍这些纯文字类的学习教材会觉得比较晦涩难以理解,因此,我们提供了丰富的大模型视频教程,以动态、形象的方式展示技术概念,帮助你更快、更轻松地掌握核心知识。
四、大模型项目实战
学以致用 ,当你的理论知识积累到一定程度,就需要通过项目实战,在实际操作中检验和巩固你所学到的知识,同时为你找工作和职业发展打下坚实的基础。
五、大模型面试题
面试不仅是技术的较量,更需要充分的准备。
在你已经掌握了大模型技术之后,就需要开始准备面试,我们将提供精心整理的大模型面试题库,涵盖当前面试中可能遇到的各种技术问题,让你在面试中游刃有余。
因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取