大语言模型基础微课版课件 第7章 提示工程与微调_第1页
大语言模型基础微课版课件 第7章 提示工程与微调_第2页
大语言模型基础微课版课件 第7章 提示工程与微调_第3页
大语言模型基础微课版课件 第7章 提示工程与微调_第4页
大语言模型基础微课版课件 第7章 提示工程与微调_第5页
已阅读5页,还剩68页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

浙江省普通本科高校“十四五”重点教材建设成果之一大语言模型基础大语言模型基础周苏教授QQ:81505050第7章提示工程与微调大语言模型正在发展成为人工智能的一项基础设施。作为像水、电一样的基础设施,预训练大模型这种艰巨任务只会有少数技术实力强、财力雄厚的公司去做,而大多数人则会是其用户。对用户来说,掌握用好大模型的技术更加重要。用好大模型的第一个层次是掌握提示(Prompt)工程,第二个层次是做好大模型的微调。第7章提示工程与微调提示工程关注提示词的开发和优化,帮助用户将大模型用于各场景和研究领域。掌握提示工程相关技能帮助用户更好地了解大模型的能力和局限性。另一方面,经过海量数据预训练后的语言模型虽然有了大量的“知识”,但由于其训练时的目标仅是进行下一个词的预测,还不能够理解并遵循人类自然语言形式的指令,为此,需要使用指令数据对其进行微调。如何构造指令数据,如何高效低成本地进行指令微调训练,以及如何在语音模型基础上进一步扩大上下文等问题,是大模型在有监督微调阶段的核心。第7章提示工程与微调01什么是提示工程02大模型为什么要微调03提示学习和语境学习04上下文窗口扩展目录/CONTENTS05指令数据的构建06微调及其PEFT流行方案PART01什么是提示工程提示扮演着至关重要的角色。提示工程应用于开发和优化提示词,帮助用户有效地将语言模型用于各种应用场景和研究领域。研究人员可利用提示工程来提高大模型处理复杂任务场景的能力,如问答和算术推理能力以及大模型的安全性。开发人员可通过提示工程设计和实现与大模型或其他生态工具的交互和高效接轨,借助专业领域知识和外部工具来增强大模型能力。提示不仅是用户与AI模型(如ChatGPT)交互的桥梁,更是一种全新的“编程语言”,用户通过精心设计的提示来指导AI模型产生特定的输出,执行各种任务。7.1什么是提示工程提示任务的范围非常广泛,从简单问答、文本生成到复杂的逻辑推理、数学计算和创意写作等。与传统的编程语言相比,提示通常更加即时和互动。用户可以直接在AI模型的接口中输入提示并立即看到结果,而无需经过编译或长时间的运行过程。7.1什么是提示工程作为通用人工时代的“软件工程”,提示工程涉及到如何设计、优化和管理提示内容,以确保人工智能模型能够准确、高效地执行用户的指令。图7-1提示工程的内容7.1.1提示工程的原理(1)设计:提示设计需要仔细选择词汇、构造清晰的句子结构,并考虑上下文信息,确保人工智能模型能够准确理解用户的意图并产生符合预期的输出。(2)优化:优化提示可能涉及调整词汇选择、改变句子结构或添加额外的上下文信息,以提高人工智能模型的性能和准确性。这可能需要多次尝试和迭代,以达到最佳效果。7.1.1提示工程的原理(3)管理:随着通用人工智能应用的不断增长和复杂化,管理大量的提示内容变得至关重要。这包括组织、存储和检索提示,以便在需要时能够快速找到并使用它们。同时,还需要定期更新和维护这些提示,以适应人工智能模型的改进和变化的需求。7.1.1提示工程的原理1.提示构成一个完整的提示应该包含清晰的指示、相关上下文、有助于理解的例子、明确的输入以及期望的输出格式描述。(1)指示:是对任务的明确描述,相当于给模型下达了一个命令或请求,它告诉模型应该做什么,是任务执行的基础。(2)上下文:是与任务相关的背景信息,它有助于模型更好地理解当前任务所处的环境或情境。在多轮交互中,上下文尤其重要,因为它提供了对话的连贯性和历史信息。7.1.1提示工程的原理(3)示例:给出一个或多个具体示例,用于演示任务的执行方式或所需输出的格式。这种方法在机器学习中被称为示范学习,已被证明对提高输出正确性有帮助。(4)输入:是任务的具体数据或信息,它是模型需要处理的内容。在提示中,输入应该被清晰地标识出来,以便模型能够准确地识别和处理。(5)输出格式:是模型根据输入和指示生成的结果。提示中通常会描述输出格式,以便后续模块能够自动解析模型的输出结果。常见的输出格式包括结构化数据格式如JSON、XML等。7.1.1提示工程的原理2.提示调优提示调优是一个人与机器协同的过程,需明确需求、注重细节、灵活应用技巧,以实现最佳交互效果。(1)人的视角:明确需求。·核心点:确保清晰、具体地传达自己的意图。·策略:简化复杂需求,分解为模型易理解的指令。7.1.1提示工程的原理(2)机器的视角:注重细节。·核心点:机器缺乏人类直觉,需详细提供信息和上下文。·策略:精确选择词汇和结构,避免歧义,提供完整线索。(3)模型的视角:灵活应用技巧。·核心点:不同模型、情境需要有不同的提示表达方式。·策略:通过实践找到最佳词汇、结构和技巧,适应模型特性。7.1.1提示工程的原理提示技术是引导人工智能模型进行深度思考和创新的有效工具。(1)链式思考提示。这是一种注重和引导逐步推理的方法。通过构建一系列有序、相互关联的思考步骤,使模型能够更深入地理解问题,并生成结构化、逻辑清晰的回答。

图7-2链式思考提示示例7.1.2提示工程应用技术链式思考提示的核心特点是:·有序性:要求将问题分解为一系列有序的步骤,每个步骤都建立在前一个步骤的基础上,形成一条清晰的思考链条。·关联性:每个思考步骤之间必须存在紧密的逻辑联系,以确保整个思考过程的连贯性和一致性。·逐步推理:模型在每个步骤中只关注当前的问题和相关信息,通过逐步推理的方式逐步逼近最终答案。7.1.2提示工程应用技术(2)生成知识提示。这是一种强调知识生成的方法,通过构建特定的提示语句,引导模型从已有的知识库中提取、整合并生成新的、有用的知识或信息内容。7.1.2提示工程应用技术生成知识提示的核心特点是:·创新性:旨在产生新的、原创性的知识内容,而非简单地复述或重组已有信息。·引导性:通过精心设计的提示语句,模型被引导去探索、发现并与已有知识进行交互,从而生成新的见解或信息。·知识整合:该过程涉及对多个来源、多种类型的知识进行融合和整合,以形成更全面、深入的理解。7.1.2提示工程应用技术(3)思维树。这是一种通过树状结构清晰展现思维过程,将复杂思维过程结构化为树状图,通过逐级分解主题或问题,形成具有逻辑层次和关联性的思维节点,从而帮助用户更清晰地组织和表达思考过程。

图7-3思维树提示7.1.2提示工程应用技术思维树提示的核心特点是:·层次性:将思考过程分解为多个层次,每个层次代表不同的思维深度和广度。·关联性:各思维节点之间逻辑联系紧密,形成一个相互关联、互为支撑的思维网络。·可视化:通过将思维过程以树状图的形式展现,增强了思考过程的可视化和直观性。7.1.2提示工程应用技术以下是设计提示时需要记住的一些技巧。(1)从简单开始。在设计提示时,记住这是一个迭代过程,需要大量实验来获得最佳结果。使用像OpenAI或Cohere这样的简单平台是一个很好的起点。可以从简单提示开始,随着目标获得更好的结果,不断添加更多的元素和上下文。在此过程中对提示进行版本控制至关重要。例子中的具体性、简洁性和简明性通常会带来更好的结果。7.1.3提示的通用技巧当有一个涉及许多不同子任务的大任务时,可以尝试将任务分解为更简单的子任务,并随着获得更好的结果而不断构建。这避免了在提示设计过程中一开始就添加过多的复杂性。7.1.3提示的通用技巧(2)指令。可以使用命令来指示模型执行各种简单任务,例如“写入”“分类”“总结”“翻译”“排序”等,从而为各种简单任务设计有效的提示。需要进行大量的实验,以查看哪种方法最有效。尝试使用不同的关键字、上下文和数据尝试不同的指令,看看哪种方法最适合特定的用例和任务。通常情况下,上下文与要执行的任务越具体和相关,效果越好。7.1.3提示的通用技巧也有人建议将指令放在提示开头,用一些清晰的分隔符,如“###”,来分隔指令和上下文。例如:提示:###指令###将以下文本翻译成西班牙语:文本:“hello!”7.1.3提示的通用技巧(3)具体性。对希望模型执行的指令和任务,提示越具体和详细,结果就越好。当有所期望的结果或生成样式时,这一点尤为重要。没有特定的词元或关键字会导致更好的结果。更重要的是具有良好的格式和描述性提示。实际上,在提示中提供示例非常有效,可以以特定格式获得所需的输出。在设计提示时,还应考虑提示的长度,因为长度有限制。包含太多不必要的细节并不一定是一个好方法。这些细节应该是相关的,并有助于完成手头的任务。鼓励大量实验和迭代,以优化应用程序的提示。7.1.3提示的通用技巧例如,我们来尝试从一段文本中提取特定信息的简单提示。提示:提取以下文本中的地名。所需格式:地点:<逗号分隔的公司名称列表>输入:“虽然这些发展对研究人员来说是令人鼓舞的,但仍有许多谜团。里斯本未知的香帕利莫德中心的神经免疫学家HenriqueVeiga-Fernandes说:‘我们经常在大脑和我们在周围看到的效果之间有一个黑匣子。’‘如果我们想在治疗背景下使用它,我们实际上需要了解机制。’”输出:地点:里斯本,香帕利莫德中心7.1.3提示的通用技巧(4)避免不精确。在关于详细和格式改进的提示中,很容易陷入那些过于聪明的提示陷阱,从而可能创建不精确的描述。通常最好是具体和直接,这里,类比非常类似于有效的沟通——越直接,信息传递就越有效。例如,如果有兴趣了解提示工程的概念。可以尝试这样做:解释提示工程的概念。保持解释简短,只有几句话,不要过于描述。从上面的提示中不清楚要使用多少句话和什么样的风格,仍然可以通过上面的提示获得良好的响应,但更好的提示是非常具体、简洁和直接的。例如:使用2~3句话向高中学生解释提示工程的概念。7.1.3提示的通用技巧(5)做还是不做?设计提示时的另一个技巧是避免说不要做什么,而是说要做什么。鼓励更具体化,并关注导致模型产生良好响应的细节。7.1.3提示的通用技巧以下是一个电影推荐聊天机器人的示例。提示:以下是向客户推荐电影的代理程序。代理负责从全球热门电影中推荐电影。它应该避免询问用户的偏好并避免询问个人信息。如果代理没有电影推荐,它应该回答“抱歉,今天找不到电影推荐。”。…顾客:请根据我的兴趣推荐一部电影。客服输出:抱歉,我没有关于您感兴趣的任何信息。不过,这是目前全球热门的电影列表:[电影列表]。希望您能由此找到自己喜欢的电影!7.1.3提示的通用技巧PART02大模型为什么要微调有监督微调,又称指令微调,是指在已经训练好的语言模型的基础上,通过使用有标注的特定任务数据做进一步的微调,使模型具备遵循指令的能力。通常,要对大模型进行微调,有以下一些原因:(1)因为大模型的参数量非常大,训练成本非常高,每家公司都去从头训练一个自己的大模型,这个事情的性价比非常低;7.2大模型为什么要微调(2)提示工程是一种相对来说比较容易上手的使用大模型的方式,但是它的缺点也非常明显。因为通常大模型的实现都会对输入序列的长度有限制,而提示工程方式会把提示搞得很长。提示越长,大模型的推理成本就越高,推理成本跟提示长度的平方正相关。另外,提示太长会因超过限制而被截断,进而导致大模型的输出质量打折,这也是一个比较严重的问题。7.2大模型为什么要微调对于个人使用者而言,如果是解决自己日常生活、工作中的一些问题,直接用提示工程方式通常问题不大。但对于提供对外服务的企业来说,要想在服务中接入大模型的能力,推理成本是不得不考虑的一个因素。相对来说,微调就是一个更优的方案。7.2大模型为什么要微调(3)提示工程的效果可能达不到要求,企业又有比较好的自有数据,能够通过自有数据,更好的提升大模型在特定领域的能力。这时候微调就非常适用。(4)要在个性化的服务中使用大模型的能力,这时候针对每个用户的数据,训练一个轻量级的微调模型就是一个不错的方案。(5)数据安全。如果数据不能传递给第三方大模型服务,那么搭建自己的大模型就非常必要。通常这些开源的大模型都需要用自有数据进行微调,才能够满足自身业务的需求。7.2大模型为什么要微调PART03提示学习和语境学习在指令微调大模型方法之前,如何高效地使用预训练好的基础语言模型是人们关注的热点,提示学习逐渐成为大模型使用的新范式。7.3提示学习和语境学习与传统的微调方法不同,提示学习直接利用在大量原始文本上进行预训练的语言模型,通过定义新的提示函数,使该模型能够执行小样本甚至零样本学习,以适应仅有少量标注或没有标注数据的新场景,适应下游各种任务。提示学习通常不需要参数更新,但由于涉及的检索和推断方法多种多样,不同模型、数据集和任务有不同的预处理要求,其实施十分复杂。7.3.1提示学习使用提示学习完成预测任务的流程非常简洁。如下图所示,原始输入x经过一个模板,被修改成一个带有一些未填充槽的文本提示x’,再将这段提示输入语言模型,语言模型即以概率的方式写入模板中待填充的信息,然后根据模型的输出导出最终的预测标签ŷ。使用提示学习完成预测的整个过程可以描述为三个阶段:提示添加、答案搜索、答案映射。

图7-4提示学习示例7.3.1提示学习步骤1:提示添加。借助特定模板,将原始的文本和额外添加的提示拼接起来,一并输入到语言模型中。例如,在情感分类任务中,根据任务的特性可以构建如下含有两个插槽的模板:“[X]我感到[Z]”其中,[X]插槽中填入待分类的原始句子,[Z]插槽中是需要语言模型生成的答案。7.3.1提示学习假如原始文本:x=“我不小心错过了公共汽车。”通过此模板,整段提示将被拼接成:x‘=“我不小心错过了公共汽车。我感到[Z]”7.3.1提示学习步骤2:答案搜索。将构建好的提示整体输入语言模型后,需要找出语言模型对[Z]处预测得分最高的文本ẑ。根据任务特性,事先定义预测结果z的答案空间为Z。在简单的生成任务中,答案空间可以涵盖整个语言,而在一些分类任务中,答案空间可以是一些限定的词语,例如:Z={“太好了”,“好”,“一般”,“不好”,“糟糕”}这些词语可以分别映射到该任务的最终标签上。将给定提示为x’而模型输出为z的过程记录为函数,对于每个答案空间中的候选答案,分别计算模型输出它的概率,从而找到模型对[Z]插槽预测得分最高的输出ẑ。7.3.1提示学习步骤3:答案映射。得到的模型输出ẑ并不一定就是最终的标签。在分类任务中,还需要将模型的输出与最终的标签做映射。而这些映射规则是人为制定的,例如,将“太好了”“好”映射为“正面”标签,将“不好”“糟糕”映射为“负面”标签,将“一般”映射为“中立”标签。提示学习方法易于理解且效果显著,提示工程、答案工程、多提示学习方法、基于提示的训练策略等已经成为从提示学习衍生出的新的研究方向。7.3.1提示学习语境学习,也称上下文学习,其概念随着GPT-3的诞生而被提出。语境学习是指模型可以从上下文中的几个例子中学习:向模型输入特定任务的一些具体例子(也称示例)及要测试的样例,模型可以根据给定的示例续写测试样例的答案。如下图所示,以情感分类任务为例,向模型中输入一些带有情感极性的句子、每个句子相应的标签,以及待测试的句子,模型可以自然地续写出它的情感极性为“正面”。图7-5语境学习示例7.3.2语境学习语境学习可以看作提示学习的一个子类,其中示例是提示的一部分。语境学习的关键思想是从类比中学习,整个过程并不需要对模型进行参数更新,仅执行前向的推理。大模型可以通过语境学习执行许多复杂的推理任务。7.3.2语境学习语境学习作为大模型的一种新的范式,具有许多独特的优势。首先,其示例是用自然语言编写的,提供了一个可解释的界面来与大模型进行交互。其次,不同于以往的监督训练,语境学习本身无须参数更新,这可以大大降低使大模型适应新任务的计算成本。在语境学习中,示例的标签正确性(输入和输出的具体对应关系)并不是有效的关键因素,起到更重要作用的是输入和样本配对的格式、输入和输出分布等。此外,语境学习的性能对特定设置很敏感,包括提示模板、上下文内示例的选择及示例的顺序。如何通过语境学习方法更好地激活大模型已有的知识成为一个新的研究方向。7.3.2语境学习PART04上下文窗口扩展由于大模型的参数量十分庞大,当将其应用到下游任务时,微调全部参数需要相当高的算力。为了节省成本,研究人员提出了多种参数的高效微调方法,旨在仅训练少量参数就使模型适应下游任务。随着更多长文本建模需求的出现,多轮对话、长文档摘要等任务在实际应用中越来越多,这些任务需要模型能够更好地处理超出常规上下文窗口大小的文本内容。当前,尽管大模型在处理短文本方面表现出色,但在支持长文本建模方面仍存在一些挑战,包括预定义的上下文窗口大小限制等。7.4上下文窗口扩展为了更好地满足长文本需求,有必要探索如何扩展现有的大模型,使其能够有效地处理更大范围的上下文信息。具体来说,主要有以下方法来扩展语言模型的长文本建模能力。7.4上下文窗口扩展(1)增加上下文窗口的微调。采用直接的方式,即通过使用一个更大的上下文窗口来微调现有的预训练Transformer,以适应长文本建模需求。(2)位置编码。改进位置编码,实现一定程度上的长度外推,这意味着它们可以在小的上下文窗口上进行训练,在大的上下文窗口上进行推理。(3)插值法:将超出上下文窗口的位置编码通过插值法压缩到预训练的上下文窗口中。7.4上下文窗口扩展PART05指令数据的构建因为指令数据的质量会直接影响有监督微调的最终效果,所以构建指令数据是一个非常精细的过程。从获得来源上看,构建指令数据的方法可以分为手动构建指令和利用大模型的生成能力自动构建指令两种。7.5指令数据的构建手动构建指令的方法比较直观,可以在网上收集大量的问答数据,再人为加以筛选过滤,或者由标注者手动编写提示与相应的回答。虽然这是一个比较耗费人力的过程,但其优势在于可以很好地把控指令数据的标注过程,并对整体质量进行很好的控制。7.5.1手动构建指令一些研究尝试寻找更高效的替代方法。具有代表性的工作是利用大模型的生成能力自动构建指令,它包含4个步骤。图7-6自动构建指令数据生成过程7.5.2自动构建指令步骤1:生成任务指令。手动构建一个例如包含175个任务的小型指令数据集,称为种子指令集,用于初始化指令池。然后让模型以自举的方式,利用指令池,生成新任务的指令:每次从指令池中采样8条任务指令(其中6条来自人工编写的种子指令,2条是模型迭代生成的),将其拼接为上下文示例,引导预训练语言模型GPT-3生成更多的新任务的指令,直到模型自己停止生成,或达到模型长度限制,或是在单步中生成了过多示例。7.5.2自动构建指令步骤2:确定指令是否代表分类任务。由于后续对于分类任务和非分类任务有两种不同的处理方法,因此需要在本步骤对指令是否为分类任务进行判断,同样是利用拼接几个上下文示例的方法让模型自动判断任务类型是否是分类。7.5.2自动构建指令步骤3:生成任务输入和输出。通过步骤1,语言模型已经生成了面向新任务的指令,然而指令数据中还没有相应的输入和输出。本步骤为此前生成的指令生成输入和输出,让指令数据变得完整。与之前的步骤相同,本步骤同样使用语境学习,使用来自其他任务的“指令”“输入”“输出”上下文示例做提示,预训练模型就可以为新任务生成输入-输出对。7.5.2自动构建指令针对不同的任务类别,分别使用“输入优先”或“输出优先”方法:对于非分类任务,使用输入优先的方法,先根据任务产生输入,然后根据任务指令和输入,生成输出;而对于分类任务,为了避免模型过多地生成某些特定类别的输入(而忽略其他的类别),使用输出优先的方法,即先产生所有可能的输出标签,再根据任务指令和输出,补充相应的输入。7.5.2自动构建指令步骤4:过滤低质量数据。为了保证数据的多样性,在将新生成的指令数据加入指令池之前,需要先衡量它和池中已有指令数据的相似度,只有当它和池中任何一条指令数据的相似度都低于0.7时,才可能将其加入指令池。为保证数据的质量,还制定了一系列的启发式规则进行筛选:删除包含某些关键词(如“图片”)的指令数据、重复的指令数据、过长或过短的数据等。7.5.2自动构建指令指令数据集对于有监督微调非常重要,无论手工还是自动构建都需要花费一定的时间和成本。目前已经有一些开源指令数据集,按照指令任务的类型划分,可以分为传统任务指令和通用对话指令两类。7.5.3开源指令数据集PART06微调及其PEFT流行方案微调的最终目的,是在可控成本的前提下,尽可能地提升大模型在特定领域的能力。从成本和效果的角度综合考虑,PEFT(参数高效微调)是比较流行的微调方案。7.6微调及其PEFT流行方案从参数规模的角度,大模型的微调分成两条技术路线:(1)对全量参数进行训练,这条路径叫全量微调(FFT)。FFT的原理就是用特定的数据对大模型进行训练,最大优点是在特定数据领域的表现会好很多。但FFT也会带来一些问题,其中影响比较大的问题主要有两个:一个是训练成本比较高,因为微调的参数量跟预训练的是一样多;另一个叫灾难性遗忘,用特定训练数据进行微调可能会把这个领域的表现变好,但也可能会把原来表现好的别的领域的能力变差。7.6.1微调技术路线(2)只对部分参数进行训练,这条路径叫参数高效微调(PEFT)。PEFT主要想解决的是FFT存在的两个主要问题,它是比较主流的微调方案。7.6.1微调技术路线从训练数据的来源以及训练的方法的角度,大模型的微调有以下几条技术路线:(1)监督式微调,用人工标注的数据通过监督学习的方法,对大模型进行微调。(2)基于人类反馈的强化学习微调,是把人类的反馈,通过强化学习的方式引入到对大模型的微调中去,让大模型生成的结果更加符合人类的一些期望。7.6.1微调技术路线(3)基于人工智能反馈的强化学习微调,这个方案大致跟基于人类反馈的方案类似,但是反馈的来源是人工智能。这里是想解决反馈系统的效率问题,因为收集人类反馈相对来说成本会比较高、效率比较低。不同的分类角度只是侧重点不一样,对同一个大模型

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论