LLMS的适应调整
在预训练之后,LLMs可以获得解决各种任务的通用能力。然而,越来越多的研究表明,LLMs的能力可以根据特定目标进行进一步的适应调整。在本节中,我们介绍了两种主要的适应预训练LLMs的方法,即指令调整和对齐调整。前一种方法主要旨在增强(或解锁)LLMs的能力,而后一种方法旨在将LLMs的行为与人类的价值观或偏好相一致。此外,我们还将讨论快速模型适应的高效调整方法。接下来,我们将详细介绍这三个部分。
指令调整
实质上,指令调整是一种在自然语言形式的格式化实例集合上对预训练LLMs进行微调的方法[62],这与监督微调[61]和多任务提示训练[28]密切相关。为了进行指令调整,我们首先需要收集或构建指令格式的实例。然后,我们使用这些格式化实例以监督学习的方式微调LLMs(例如使用序列到序列的损失进行训练)。经过指令调整后,LLMs可以展示出优越的泛化能力,可以适应未见过的任务[28, 62, 64],甚至在多语言环境下[84]也可以做到。
一项最近的调查[214]对指令调整的研究进行了系统的概述。与此相比,我们主要关注指令调整对LLMs的影响,并提供详细的实例收集和调整指南或策略。此外,我们还讨论了使用指令调整来满足用户的实际需求,这已经广泛应用于现有的LLMs中,例如InstructGPT [61]和GPT-4 [46]。
格式化实例构建
通常,一个指令格式的实例由一个任务描述(称为指令)、一个输入-输出对和少量演示(可选)组成。作为重要的公共资源,现有的研究已经发布了大量用自然语言格式化的标记数据(请参见表6中可用资源的列表)。接下来,我们介绍两种构建格式化实例的主要方法(请参见图5中的示例),然后讨论实例构建的几个关键因素。
格式化现有数据集。在提出指令调整之前,一些早期的研究[211、213、215、216]从各种任务(例如文本摘要、文本分类和翻译)中收集实例,创建了监督式多任务训练数据集。作为指令调整实例的主要来源,将这些多任务训练数据集用自然语言任务描述进行格式化是很方便的。具体而言,最近的研究[28、61、62、79]使用人工编写的任务描述来增强标记数据集,这些描述通过解释任务目标来指导LLMs理解任务。例如,在图5(b)中,对于问答任务中的每个示例,都添加了一个任务描述“请回答这个问题”。经过指令调整后,LLMs可以通过遵循它们的任务描述很好地推广到其他未见过的任务[28、62、64]。特别地,已经表明指令是LLMs任务泛化能力的关键因素[62]:通过在去除任务描述的标记数据集上微调模型,会导致模型性能的显著下降。为了更好地为指令调整生成标记实例,提出了一个众包平台PromptSource [210],可以有效地创建、共享和验证不同数据集的任务描述。为了丰富训练实例,一些研究[28、213、217]还尝试使用特别设计的任务描述来反转现有实例的输入输出对进行指令调整。例如,给定一个问题-答案对,我们可以通过预测基于问题的答案来创建一个新实例(例如,“请根据答案生成一个问题:”)。此外,一些工作[218]还利用启发式任务模板将大量未标记的文本转换为标记实例。
格式化人类需求。尽管已经使用指令格式化了大量的训练实例,但它们主要来自公共NLP数据集,要么缺乏指令多样性,要么与真实的人类需求不匹配[61]。为了解决这个问题,InstructGPT [61]建议将真实用户提交给OpenAI API的查询作为任务描述。用户查询用自然语言表达,特别适合引出LLMs的指令跟随能力。此外,为了丰富任务多样性,还要求人类标注者为现实生活中的任务编写指令,包括开放式生成、开放式问答、头脑风暴和聊天。然后,他们让另一组标注者直接回答这些指令作为输出。最后,将一个指令(即收集的用户查询)和期望的输出(即人工编写的答案)配对作为一个训练实例。请注意,InstructGPT还使用这些以自然语言格式化的真实世界任务进行对齐调整(在第5.2节中讨论)。此外,GPT-4 [46]设计了潜在的高风险指令,并通过监督微调引导模型拒绝这些指令,以确保安全。此外,为了减轻人类注释的负担,还提出了几种半自动化方法[219-221],通过将现有实例输入LLMs以生成多样化的任务描述和实例来构建实例。
实例构建的关键因素。指令实例的质量对模型的性能有重要影响。在这里,我们讨论一些实例构建的关键因素。
- 扩展指令。已经广泛表明,扩展任务数量可以大大增强LLMs的泛化能力[28、62、79]。随着任务数量的增加,模型性能最初呈现连续增长的趋势,但当达到一定水平时,增益变得微不足道[64、79]。一个合理的推测是,一定数量的代表性任务可以提供相对充足的知识,添加更多的任务可能不会带来额外的收益[64]。此外,从长度、结构和创造力等多个方面增强任务描述的多样性也是有益的[28]。至于每个任务的实例数量,已经发现少量实例通常可以饱和模型的泛化性能[62、64]。然而,将某些任务的实例数量增加到很大的数量(例如几百个)可能会导致过拟合问题并损害模型性能[79]。
- 格式化设计。作为一个重要因素,自然语言格式的设计也高度影响LLMs的泛化性能[79]。通常,我们可以在现有数据集的输入输出对中添加任务描述和可选演示,其中任务描述是LLMs理解任务的最关键部分[79]。此外,使用适当数量的示例作为演示也可以大幅改善模型性能[64],这也缓解了模型对指令工程的敏感性[62、64]。然而,将其他组件(例如要避免的事情、原因和建议)纳入指令可能对LLMs的性能产生微不足道甚至不利的影响[79、208]。最近,为了引出LLMs的逐步推理能力,一些工作[64]提议在某些推理数据集(例如算术推理)中包括思维链(CoT)示例。已经表明,使用CoT和非CoT示例对LLMs进行微调可以在各种推理任务中获得良好的性能,包括那些需要多跳推理能力的任务(例如常识问题回答和算术推理)以及那些不需要这种推理方式的任务(例如情感分析和抽取式问题回答)[64、85]。
总的来说,指令的多样性比实例的数量更重要,因为表现良好的InstructGPT [61]和Alpaca [221]比Flan系列LLMs [62, 64]使用更少但更多样化的指令(或实例)。此外,邀请标注者组成人类需求任务比使用特定于数据集的任务更有用。然而,仍缺乏注释人类需求实例的指南,使任务组合有些启发式。为了减少人力成本,我们可以重复使用现有的格式化数据集(表6),或者使用现有的LLMs [219]自动构建指令。
指令调整策略
与预训练不同,指令调整通常更加高效,因为只使用了适量数量的实例进行训练。由于指令调整可以被视为一种监督式训练过程,因此它的优化在几个方面上与预训练不同[64],例如训练目标(即序列到序列损失)和优化配置(例如更小的批量大小和学习率),这些在实践中需要特别注意。除了这些优化配置外,还有两个重要方面需要考虑指令调整:
平衡数据分布。由于指令调整涉及不同任务的混合,因此在微调期间平衡不同任务的比例非常重要。一个广泛使用的方法是例子比例混合策略[73],即将所有数据集组合在一起,并从混合数据集中平等采样每个实例。此外,根据最近的研究结果[64, 85],增加高质量数据集(例如FLAN [62]和P3 [210])的采样比率通常可以带来性能提升。然而,在指令调整期间通常会设置最大限制,以控制数据集可以包含的最大示例数[73],这是为了防止较大的数据集压倒整个分布[73, 85]。在实践中,根据不同的数据集,最大限制通常设置为几千或几万个。
结合指令调整和预训练。为了使调整过程更加有效和稳定,OPT-IML [85]在指令调整期间加入了预训练数据,这可以被视为模型调整的正则化。此外,一些研究尝试使用多任务学习[73, 211]从头开始训练模型,使用预训练数据(即纯文本)和指令调整数据(即格式化数据集)的混合。具体而言,GLM-130B [83]和Galactica [35]将指令格式化数据集集成为预训练语料库的一小部分,以预训练LLMs,这可能同时实现预训练和指令调整的优点。
指令调整的影响
在这部分中,我们将讨论指令调整对LLMs的影响,主要从两个方面进行讨论。
性能提升。尽管只使用了适量数量的实例进行调整,但指令调整已成为提高或释放LLMs能力的重要方式[64]。最近的研究在多个规模的语言模型上进行了实验(从77M到540B),表明不同规模的模型都可以从指令调整中受益[64, 217],随着参数规模的增加,性能得到了改善[84]。此外,经过指令调整的较小模型甚至可以比没有微调的较大模型表现更好[28, 64]。除了模型规模外,指令调整在各种模型架构、预训练目标和模型适应方法中都表现出一致的改进[64]。在实践中,指令调整提供了一种通用的方法来增强现有语言模型的能力[64](包括小型PLMs)。此外,与预训练相比,指令调整的成本也要低得多,因为LLMs所需的指令数据量明显小于预训练数据。
任务泛化。指令调整鼓励模型理解完成任务的自然语言指令。它赋予LLMs能够遵循人类指令[31]执行特定任务的能力(通常被认为是一种新兴的能力),即使在未见过的任务上也能够执行。大量研究已经证实了指令调整在实现在已知和未知任务上的卓越性能方面的有效性[85, 217]。此外,指令调整已被证明对缓解LLMs的一些弱点(例如重复生成或补充输入而未完成某个任务)[61, 64]有用,从而使LLMs具有解决现实世界任务的优越能力。此外,使用指令调整训练的LLMs可以推广到跨语言的相关任务。例如,BLOOMZ-P3 [84]基于仅使用英语任务集P3 [210]的BLOOM [69]进行微调。有趣的是,与BLOOM相比,BLOOMZ-P3在多语言句子完成任务上可以获得超过50%的改进,这表明指令调整可以帮助LLMs从仅使用英语的数据集中获得通用任务技能,并将这些技能转移到其他语言[84]。此外,已经发现在多语言任务上使用仅英语指令可以产生令人满意的结果[84],这有助于减少针对特定语言的指令工程的工作量。
对齐调整
本部分首先介绍对齐的背景、定义和标准,然后重点讨论收集人类反馈数据以对齐LLMs的方法,最后讨论利用人类反馈进行强化学习的关键技术以进行对齐调整。
对齐的背景和标准
背景。LLMs在各种NLP任务中展现出了卓越的能力[55, 56, 62, 81]。然而,这些模型有时可能会表现出意外的行为,例如制造虚假信息、追求不准确的目标以及产生有害、误导和有偏见的表达[61, 222]。对于LLMs,语言建模目标通过单词预测来预训练模型参数,但缺乏考虑人类价值观或偏好的考虑。为了避免这些意外行为,人类对齐被提出,以使LLMs符合人类的期望[61, 100]。然而,与原始的预训练和适应调整(例如指令调整)不同,这种对齐需要考虑非常不同的标准(例如有用性、诚实和无害性)。已经表明,对齐可能在一定程度上损害LLMs的一般能力,这在相关文献中被称为对齐税[61, 223, 224]。
对齐标准。最近,越来越多的关注点集中在开发多样化的标准来规范LLMs的行为。在这里,我们以三个代表性的对齐标准(即有用、诚实和无害)为例进行讨论,这些标准已经被广泛采用在现有的文献中[61, 222, 223]。此外,还有其他从不同角度对LLMs进行对齐的标准,包括行为、意图、激励和内部方面[222],它们本质上是类似的(或至少具有类似的对齐技术)与上述三个标准。根据具体需求修改这三个标准也是可行的,例如用正确性替代诚实[100]或关注某些指定标准[224]。接下来,我们简要解释一下这三个代表性的对齐标准:
- 有用性。为了有用,LLM应该尽可能简洁高效地展示帮助用户解决任务或回答问题的明确尝试。在更高的层次上,当需要进一步澄清时,LLM应该通过相关的询问展示引出额外相关信息的能力,并表现出适当的敏感性、感知力和谨慎性[223]。实现有用行为的对齐对LLMs来说是具有挑战性的,因为很难精确地定义和衡量用户的意图[222]。
- 诚实性。在基本层面上,对齐为诚实的LLM应该向用户呈现准确的内容,而不是制造信息。此外,LLM传达其输出中适当程度的不确定性非常重要,以避免任何形式的欺骗或信息歪曲。这需要模型了解其能力和知识水平(例如,“知道未知”)。根据[223]中的讨论,诚实是一个更客观的标准,与有用性和无害性相比,因此诚实对齐可能潜在地可以更少地依赖于人类的努力。
- 无害性。为了无害,需要确保模型产生的语言不会冒犯或歧视。在其能力范围内,模型应该能够检测到旨在诱导恶意请求的隐蔽企图。理想情况下,当模型被诱导执行危险行为(例如犯罪)时,LLM应该礼貌地拒绝。然而,什么行为被认为是有害的,以及在多大程度上有害,因个体或社会而异[223],高度取决于谁在使用LLM,提出的问题类型以及LLM使用的上下文(例如时间)。
正如我们所看到的,这些标准非常主观,是基于人类认知而开发的。因此,直接将它们制定为LLMs的优化目标是困难的。在现有的工作中,有许多方法可以在对齐LLMs时满足这些标准。一种有前途的技术是红队测试[115, 225],它涉及使用手动或自动化手段以对抗方式探测LLMs以生成有害输出,然后更新LLMs以防止这种输出。
收集人类反馈
在预训练阶段,LLMs使用语言建模目标在大规模语料库上进行训练。然而,它无法考虑到人类对LLM输出的主观和定性评估(在本次调查中称为人类反馈)。高质量的人类反馈对于将LLMs与人类偏好和价值观对齐非常重要。在这部分中,我们讨论如何选择一个人类标注团队来收集反馈数据。
人类标注员的选择。在现有的工作中,生成人类反馈数据的主要方法是人工标注[61, 100, 226]。这凸显了选择适当的人类标注员的关键作用。为了提供高质量的反馈,人类标注员应该具有合格的教育水平和出色的英语能力。例如,Sparrow [100] 要求人类标注员是英国本土的母语英语人士,至少获得了本科以上的教育资格。此外,在[224]中,高优先级任务的约一半人类标注员是从美国的亚马逊机械土耳其工作人员中招募的,他们拥有硕士学位。即便如此,一些研究[112, 226]发现,研究人员和人类标注员之间仍存在意图不匹配的情况,这可能导致低质量的人类反馈并导致LLMs产生意外的输出。为了解决这个问题,InstructGPT [61] 进一步进行筛选过程,通过评估人类标注员和研究人员之间的一致性来过滤标注员。具体而言,研究人员首先标注少量数据,然后测量自己和人类标注员之间的一致性。一致性最高的标注员将被选中继续进行后续的注释工作。在其他一些工作中[227],使用“超级评分员”来确保人类反馈的高质量。研究人员评估人类标注员的表现,并选择一组表现良好的人类标注员(例如高一致性)作为超级评分员。超级评分员将优先与研究人员合作进行后续研究。当人类标注员注释LLMs的输出时,为标注员指定详细的说明并提供即时的指导是有帮助的[112],这可以进一步规范标注员的注释。
人类反馈收集。在现有的工作中,主要有三种方法从人类标注员那里收集反馈和偏好数据。
- 基于排名的方法。在早期的工作中[226, 228],人类标注员通常以粗略的方式评估模型生成的输出(即仅选择最佳输出),而不考虑更精细的对齐标准。然而,不同的标注员可能对最佳候选输出的选择持有不同的意见,而这种方法忽略了未被选中的样本,可能导致不准确或不完整的人类反馈。为了解决这个问题,随后的研究[100, 224]引入了Elo评分系统,通过比较候选输出来推导偏好排名。输出的排名作为训练信号,指导模型优先选择某些输出而不是其他输出,从而产生更可靠和更安全的输出。
- 基于问题的方法。此外,人类标注员可以通过回答研究人员设计的某些问题来提供更详细的反馈[72],涵盖LLMs的对齐标准以及其他约束条件。特别地,在WebGPT [72]中,为了帮助模型过滤和利用检索到的文档中的相关信息,要求人类标注员回答关于检索到的文档是否有用于回答给定输入的问题,问题有多个选项可供选择。
- 基于规则的方法。此外,许多研究开发了基于规则的方法来提供更详细的人类反馈。作为一个典型的案例,Sparrow [100] 不仅选择标注员认为最好的响应,而且还使用一系列规则来测试模型生成的响应是否符合有益、正确和无害的对齐标准。通过这种方式,可以获得两种人类反馈数据:(1)通过比较成对的模型生成输出的质量来获得响应偏好反馈,(2)通过收集人类标注员的评估(即表示生成的输出违反规则的程度的分数)来获得规则违反反馈。此外,GPT-4 [46] 利用一组零样本分类器(基于GPT-4本身)作为基于规则的奖励模型,可以自动确定模型生成的输出是否违反了一组人类编写的规则。
接下来,我们将重点关注一种广为人知的技术,即从人类反馈中进行强化学习(RLHF),这种技术已经被广泛应用于最近强大的LLMs,如ChatGPT。正如下面所讨论的,5.2.1节中介绍的对齐标准可以通过从人类反馈中学习LLMs对用户查询的响应来实现。
从人类反馈中进行强化学习
为了使LLMs与人类价值观保持一致,提出了从人类反馈中进行强化学习(RLHF)[70, 226],用于利用收集的人类反馈数据对LLMs进行微调,这对于改善对齐标准(例如有用性、诚实性和无害性)非常有用。RLHF采用强化学习(RL)算法(例如Proximal Policy Optimization(PPO)[111])通过学习奖励模型来使LLMs适应人类反馈。这种方法将人类纳入训练循环中,以开发良好对齐的LLMs,例如InstructGPT [61]。
RLHF系统。RLHF系统主要包括三个关键组件:待对齐的预训练LM、从人类反馈中学习的奖励模型和训练LM的RL算法。具体而言,预训练的LM通常是一个生成模型,其参数使用现有的预训练LM参数进行初始化。例如,OpenAI在其第一个流行的RLHF模型InstructGPT [61]中使用了175B GPT-3,而DeepMind在其GopherCite模型[227]中使用了2800亿参数的模型Gopher [59]。此外,奖励模型(RM)提供(学习的)指导信号,反映人类对LM生成的文本的偏好,通常以标量值的形式呈现。奖励模型可以采用两种形式:微调的LM或使用人类偏好数据进行全新训练的LM。现有的工作通常使用参数规模与对齐的LM不同的奖励模型[61, 227]。例如,OpenAI分别使用6B GPT-3和DeepMind使用7B Gopher作为奖励模型。最后,为了使用奖励模型的信号优化预训练的LM,需要为大规模模型调整设计特定的RL算法。具体而言,Proximal Policy Optimization(PPO)[111]是现有工作中用于对齐的广泛使用的RL算法[61, 100, 227]。
RLHF的关键步骤。图6展示了RLHF [61, 112]的整体三步过程,如下所介绍。
- 有监督的微调。为了使LM最初执行所需的行为,通常需要收集一个包含输入提示(指令)和所需输出的有监督数据集,以微调LM。这些提示和输出可以由人类标注员为某些特定任务编写,同时确保任务的多样性。例如,InstructGPT [61]要求人类标注员为多个生成任务(例如开放式QA、头脑风暴、聊天和重写)编写提示(例如“列出五个恢复职业热情的想法”)和所需输出。请注意,在特定的设置或场景下,第一步是可选的。
- 奖励模型训练。第二步是使用人类反馈数据训练RM。具体而言,我们使用LM生成一定数量的输出文本,使用采样的提示(来自有监督数据集或人类生成的提示)作为输入。然后,我们邀请人类标注员为这些对进行偏好注释。注释过程可以采用多种形式,常见的方法是通过对生成的候选文本进行排名来进行注释,这可以减少注释者之间的不一致性。然后,RM被训练以预测人类首选的输出。在InstructGPT中,标注员将模型生成的输出从最佳到最差进行排名,RM(即6B GPT-3)被训练以预测排名。
- RL微调。在这一步中,将LM的对齐(即微调)形式化为一个RL问题。在这种设置下,预训练的LM充当策略,以提示作为输入并返回输出文本,其动作空间是词汇表,状态是当前生成的标记序列,奖励由RM提供。为了避免显著偏离初始(调整之前)的LM,通常将惩罚项纳入奖励函数中。例如,InstructGPT使用PPO算法针对RM优化LM。对于每个输入提示,InstructGPT计算当前LM生成结果与初始LM之间的KL散度作为惩罚。值得注意的是,第二步和最后一步可以迭代多次,以更好地对齐LLMs。
高效微调
在上面,我们已经讨论了指令微调和对齐微调的方法,以根据特定目标调整LLMs。由于LLMs包含大量的模型参数,进行全参数微调将会非常昂贵。在本节中,我们将讨论如何对LLMs进行高效微调。我们首先回顾了几种代表性的Transformer语言模型参数高效微调方法,然后总结了现有工作中参数高效微调的LLMs。
参数高效微调方法
在现有文献中,参数高效微调[229, 229-232]一直是一个重要的主题,旨在在保持尽可能好的性能的同时减少可训练参数的数量。接下来,我们简要回顾了四种Transformer语言模型的参数高效微调方法,包括适配器微调、前缀微调、提示微调和LoRA。
- 适配器微调。适配器微调将小型神经网络模块(称为适配器)集成到Transformer模型中[233]。为了实现适配器模块,[233, 234]提出了瓶颈架构,首先将原始特征向量压缩到较小的维度(随后进行非线性变换),然后将其恢复到原始维度。适配器模块将被集成到每个Transformer层中,通常在Transformer层的两个核心部分(即注意力层和前馈层)之后使用串行插入。或者,也可以在Transformer层中使用并行适配器[235],其中它将两个适配器模块与注意力层和前馈层相对应地并行放置。在微调期间,适配器模块将根据特定任务目标进行优化,而原始语言模型的参数在此过程中被冻结。通过这种方式,我们可以在微调期间有效地减少可训练参数的数量。
- 前缀微调。前缀微调[230]在语言模型的每个Transformer层中添加一系列前缀,这些前缀是一组可训练的连续向量。这些前缀向量是任务特定的,可以被视为虚拟的标记嵌入。为了优化前缀向量,[230]提出了一种重新参数化技巧,通过学习将较小矩阵映射到前缀参数矩阵的MLP函数,而不是直接优化前缀。已经证明,这种技巧对于稳定的训练是有用的。优化后,映射函数将被丢弃,只保留派生的前缀向量以增强任务特定的性能。由于只有前缀参数将被训练,因此可以导致参数高效的模型优化。类似于前缀微调,p-tuning v2 [236]专门为自然语言理解将逐层提示向量纳入Transformer架构中,还利用多任务学习共同优化共享提示。已经证明,在自然语言理解任务上,它对不同参数规模的模型性能有所改善。
- 提示微调。与前缀微调不同,提示微调[231, 237]主要关注于在输入层中纳入可训练的提示向量24。基于离散提示方法[239, 240],它通过包含一组软提示标记(以自由形式[237]或前缀形式[231])来增强输入文本,然后将提示增强的输入用于解决特定的下游任务。在实现中,任务特定的提示嵌入与输入文本嵌入相结合,随后被馈送到语言模型中。P-tuning [237]提出了一种自由形式来组合上下文、提示和目标标记,可应用于自然语言理解和生成的架构。他们进一步通过双向LSTM学习软提示标记的表示。另一种代表性方法[231]称为提示微调,直接在输入中添加前缀提示。在训练期间,只有提示嵌入将根据任务特定的监督进行学习。然而,由于该方法仅在输入层包含少量可训练参数,因此发现其性能高度依赖
- 低秩适应(LoRA)。LoRA [232]对每个密集层的更新矩阵施加低秩约束,以减少适应下游任务的可训练参数。考虑优化参数矩阵W的情况。更新过程可以写成一般形式:W ← W ∆W。LoRA的基本思想是冻结原始矩阵W ∈ Rm×n,同时通过低秩分解矩阵来近似参数更新∆W,即∆W = A · B⊤,其中A ∈ Rm×k和B ∈ Rn×k是用于任务适应的可训练参数,r ≪ min(m, n)是降低的秩。LoRA的主要优点是它可以大大节省内存和存储使用(例如VRAM)。此外,可以仅保留单个大型模型副本,同时保持多个针对不同下游任务的任务特定低秩分解矩阵。此外,还有几项研究讨论如何以更有原则的方法设置秩,例如基于重要性分数的分配[241]和无搜索的最优秩选择[242]。
除了上述方法外,还有大量关于Transformer语言模型高效微调的研究。然而,更全面的高效微调讨论超出了本文的范围,可以在相关论文中找到更多相关内容[229, 235]。
LLM的参数高效微调
随着LLM的兴起,高效微调已经引起越来越多的研究关注,以开发更轻量级的适应方法来适应下游任务。
特别是,LoRA [232]已经广泛应用于开源LLM(例如LLaMA和BLOOM)的参数高效微调。在这些研究尝试中,LLaMA及其变体因其参数高效调整而受到了广泛关注。例如,Alpaca-LoRA [243]使用LoRA作为Alpaca [221]的轻量级调整版本进行训练(Alpaca是一个经过微调的7B LLaMA模型,具有52K个人类指令跟随演示)。在不同语言或模型大小方面,对Alpaca-LoRA进行了广泛的探索,可以在收藏页面25中找到。此外,LLaMA-Adapter [244]将可学习的提示向量插入到每个Transformer层中,其中提出了零初始化注意力来通过减轻欠拟合提示向量的影响来改善训练。此外,他们还将这种方法扩展到多模态设置,例如视觉问答。
此外,一项实证研究[234]已经进行,以检查不同微调方法对语言模型的影响。他们比较了四种高效微调方法,包括串行适配器微调[233]、并行适配器微调[235, 245]和LoRA [232],在三个开源LLM上进行评估,分别是GPT-J(6B)、BLOOM(7.1B)和LLaMA(7B)。基于对六个数学推理数据集的实验结果,他们表明这些高效微调方法在困难任务上表现不如参考基线GPT-3.5,而在简单任务上表现相当。总体而言,LoRA在这些比较方法中表现相对较好,使用的可训练参数显著更少。
作为一个重要的资源,PEFT库[246](代表参数高效微调)已经在GitHub上发布26。它包括了几种广泛使用的高效微调方法,包括LoRA [232]/AdaLoRA [241]、前缀微调[230, 236]、P-Tuning [237]和提示微调[231]。此外,它支持多个语言模型,如GPT-2和LLaMA,并涵盖了几个代表性的视觉Transformer模型(例如ViT和Swin Transformer)。
正如在5.3.1节中讨论的那样,现有文献中已经提出了大量高效微调方法。然而,大多数这些方法是在小型预训练语言模型上进行测试,而不是在LLM上。到目前为止,仍然缺乏对不同高效微调方法在不同设置或任务下对大型语言模型的影响进行彻底调查的研究。
利用
在预训练或适应微调之后,使用LLM的主要方法是为解决各种任务设计合适的提示策略。一个典型的提示方法是上下文学习[50, 55],它将任务描述和/或演示以自然语言文本的形式表达。此外,可以采用思维链提示[33]来增强上下文学习,通过将一系列中间推理步骤纳入提示中。接下来,我们将详细阐述这两种技术的细节。
上下文学习
作为一种特殊的提示形式,上下文学习(ICL)是随着GPT-3 [55]一起首次提出的,已成为利用LLM的典型方法。
提示公式化
如[55]所述,ICL使用格式化的自然语言提示,包括任务描述和/或一些任务示例作为演示。图7展示了ICL的示意图。首先,从任务数据集中选择一些示例作为演示,然后按照特定顺序将它们组合成具有特殊设计模板的自然语言提示。最后,将测试实例附加到演示中作为LLM的输入来生成输出。基于任务演示,LLM可以识别和执行新任务,而无需显式梯度更新。
形式化地,假设Dk = {f(x1, y1), . . . , f(xk, yk)}表示具有k个示例的演示集合,其中f(xk,yk)是将第k个任务示例转换为自然语言提示的提示函数。给定任务描述I、演示Dk和新的输入查询xk 1,从LLM生成的输出yˆk 1的预测可以如下表示27:
其中实际答案yk 1留空以由LLM预测。由于ICL的性能严重依赖于演示,因此适当设计提示中的演示是一个重要问题。根据公式(6)中的构建过程,我们关注提示中格式化演示的三个主要方面,包括如何选择组成演示的示例,如何使用函数f(·)将每个示例格式化为提示,并合理安排演示的顺序。
ICL的全面评估已经在综述论文[50]中进行了介绍,我们建议读者参考该论文以获取更一般、详细的讨论。与该综述相比,我们专门关注将ICL应用于LLM的两个主要方面的讨论,即演示设计和ICL的基本机制。此外,ICL与指令微调(在5.1节中讨论)也有密切联系,因为两者都利用自然语言格式化任务或实例。然而,指令微调需要对LLM进行微调以进行适应,而ICL仅提示LLM进行利用。此外,指令微调可以增强LLM执行目标任务的ICL能力,特别是在零样本设置中(仅使用任务描述)[64]。
演示设计
几项研究表明,ICL的有效性受演示设计的影响很大[247-249]。在6.1.1节的讨论之后,我们将从演示选择、格式和顺序三个主要方面介绍ICL的演示设计。
演示选择。ICL的性能往往会因不同的演示示例而有很大的差异[250],因此选择一组能够有效利用LLM的ICL能力的示例子集非常重要。有两种主要的演示选择方法,即启发式方法和基于LLM的方法:
- 启发式方法。由于简单和成本低廉,现有的工作广泛采用启发式方法来选择演示。一些研究采用基于k-NN的检索器来选择与查询语义相关的示例[250, 251]。然而,它们是针对每个示例单独进行选择,而不是将示例集作为一个整体进行评估。为了解决这个问题,提出了基于多样性的选择策略,以选择特定任务的最具代表性的示例集[252, 253]。此外,在[254]中,在选择演示时同时考虑相关性和多样性。
- 基于LLM的方法。另一种方法是利用LLM来选择演示。例如,可以利用LLM直接测量每个示例的信息量,根据添加示例后的性能增益来选择示例[255]。此外,EPR [256]提出了一种两阶段检索方法,首先使用无监督方法(例如BM25)召回相似的示例,然后使用密集的检索器(由LLM标记的正负示例进行训练)对它们进行排名。作为另一种方法,演示选择的任务可以被制定为一个RL问题,其中LLM作为奖励函数,为训练策略模型提供反馈[257]。由于LLM在文本注释方面表现良好[258],一些最近的研究使用LLM本身作为演示生成器,无需人工干预[259, 260]。
总之,如[261]所讨论的,ICL中选择的演示示例应包含足够的关于要解决的任务的信息,并与测试查询相关,对于上述两种选择方法。
演示格式。在选择任务示例之后,下一步是将它们集成并格式化为LLM的自然语言提示。一种简单的方法是使用相应的输入-输出对实例化预定义的模板[36]。为了构建更具信息量的模板,最近的研究考虑添加任务描述[64]或使用思维链提示增强LLM的推理能力[33]。例如,在[208]中,作者收集了一个由人类编写的任务描述的大规模数据集。在使用该数据集进行微调后,可以提高对已知任务的性能,并且LLM也可以在一定程度上推广到未知任务。为了降低注释成本,[219]提出了一种半自动化方法,通过使用由人类编写的任务描述组成的种子集来指导LLM生成新任务的任务描述。由于手动注释不同任务的演示格式成本很高,一些工作也研究如何自动生成高质量的演示格式。作为两种代表性方法,Auto-CoT [262]利用带有“让我们一步一步地思考”的零样本提示的LLM来生成中间推理步骤,而最少到最多提示[263]首先查询LLM执行问题分解,然后利用LLM根据先前解决的问题的中间答案依次解决子问题。
演示顺序。LLM有时会受到最近偏见的影响,即它们容易重复演示的结尾附近的答案[249]。因此,合理安排演示(即任务示例)的顺序非常重要。早期的工作提出了几种启发式方法来快速找到一个好的顺序。例如,演示可以根据它们在嵌入空间中与查询的相似度直接组织[250]:相似度越高,越靠近结尾。此外,全局和局部熵度量可以用于评分不同的演示顺序[248]。为了整合更多的任务信息,一些最近的研究提出了通过最小化压缩和传输任务标签所需的代码长度来减少演示顺序的方法,这受到了信息理论的启发[264]。然而,这些方法需要额外的标记数据作为验证集来评估特定演示顺序的性能。为了消除这种需求,[248]的作者提出从LLM本身中采样验证数据的方法。
潜在机制
在预训练之后,LLM可以展示出有趣的ICL能力,而无需更新。接下来,我们将讨论关于LLM的ICL能力的两个关键问题,即“预训练如何影响ICL能力”和“LLM在推理过程中如何执行ICL”。
预训练如何影响ICL?ICL首先在GPT-3 [55]中提出,并且已经表明,随着模型规模的增大,ICL能力变得更加显著。然而,一些研究揭示了小规模PLM也可以通过特别设计的训练任务(例如,使用任务示例和查询作为输入来学习预测标签)展示出强大的ICL能力,甚至可能超过更大的模型[265]。这表明,训练任务的设计是影响LLM的ICL能力的重要因素。除了训练任务,最近的研究还研究了ICL与预训练语料库之间的关系[261, 266, 267]。已经表明,ICL的性能严重依赖于预训练语料库的来源,而不是规模[267]。另一项研究[266]提供了对训练数据分布影响的深入分析。他们发现,当训练数据可以聚类成许多不频繁的类别时,ICL就会出现,而不是均匀分布。此外,[261]的作者从理论上解释了ICL是预训练长程连贯文档的产物。
LLM如何执行ICL?在推理阶段,研究人员关注分析ICL能力如何基于给定的演示进行操作,因为没有涉及显式的学习或更新。他们通常从梯度下降的角度进行分析,并将ICL视为隐式微调[60, 268]。在这个框架下,ICL过程可以解释如下:通过前向计算,LLM生成相对于演示的元梯度,并通过注意机制隐式执行梯度下降。实验还表明,LLM中的某些注意力头能够执行与ICL能力密切相关的任务不可知的原子操作(例如,复制和前缀匹配)[269, 270]。为了进一步探索ICL的工作机制,一些研究将ICL抽象为算法学习过程[271-273]。具体而言,[272]的作者发现LLM在预训练期间本质上通过其参数对隐式模型进行编码。通过ICL提供的示例,LLM可以在前向计算过程中实现学习算法,例如梯度下降或直接计算闭合形式的解来更新这些模型。在这个解释框架下,已经表明LLM可以有效地学习简单的线性函数,甚至一些复杂的函数,如决策树,具有ICL [271-273]。
思维链提示
思维链(CoT)[33]是一种改进的提示策略,旨在提高LLM在复杂推理任务上的性能,例如算术推理[274-276]、常识推理[277, 278]和符号推理[33]。与ICL中简单地使用输入-输出对构建提示不同,CoT将可以导致最终输出的中间推理步骤纳入提示中。接下来,我们将详细介绍如何使用ICL的CoT,并讨论CoT提示何时以及为什么有效。
CoT的上下文学习
通常,CoT可以与ICL一起在两种主要设置中使用,即少样本和零样本设置,如下所介绍。
少样本CoT。少样本CoT是ICL的一个特例,它通过纳入CoT推理步骤将每个演示⟨输入,输出⟩增强为⟨输入,CoT,输出⟩。为了应用这种策略,我们接下来讨论两个关键问题,即如何设计适当的CoT提示以及如何利用生成的CoT来得出最终答案。
- CoT提示设计。为了有效地引出LLM的复杂推理能力,设计适当的CoT提示至关重要。直接的方法是,使用多样的CoT(即每个问题的多个推理路径)可以有效地提高它们的性能[279]。另一个直观的想法是,具有更复杂推理路径的提示更有可能引出LLM的推理能力[280],这可能导致生成正确答案的准确性更高。然而,这两种方法都依赖于注释的CoT数据集,这限制了它们在实践中的使用。为了克服这个限制,Auto-CoT [262]提出利用Zero-shot-CoT [281](在下面的“零样本CoT”部分详细介绍)通过特殊提示LLM生成CoT推理路径,从而消除手动努力。为了提高性能,Auto-CoT进一步将训练集中的问题分成不同的簇,然后选择最接近每个簇中心的问题,这应该很好地代表训练集中的问题。虽然少样本CoT可以被认为是ICL的一个特殊提示案例,但与ICL中的标准提示相比,演示的排序似乎影响相对较小:重新排序演示只会导致大多数任务的性能变化小于2% [33]。
- 增强的CoT策略。除了丰富上下文信息外,CoT提示还提供了更多的选项来推断问题的答案。现有研究主要集中在生成多个推理路径,并尝试在派生的答案中找到共识[282-284]。例如,当生成CoT和最终答案时,提出了自一致性[282]作为一种新的解码策略。它首先生成几个推理路径,然后对所有答案进行集成(例如,在这些路径之间投票选择最一致的答案)。自一致性大大提高了CoT推理的性能,甚至可以改善一些任务,其中CoT提示通常比标准提示更差(例如,闭卷问答和自然语言推理)。此外,[283]的作者将自一致性策略扩展到更通用的集成框架(扩展到提示的集成),他们发现多样的推理路径是CoT推理性能提高的关键。上述方法可以轻松地集成到CoT提示中,以提高性能而无需额外的训练。相反,其他研究则训练评分模型来衡量生成的推理路径的可靠性[279],或者持续训练LLM自己生成的推理路径[285, 286]以提高性能。
零样本CoT。与少样本CoT不同,零样本CoT不包括人工注释的任务演示在提示中。相反,它直接生成推理步骤,然后利用生成的CoT来得出答案。零样本CoT最初是在[281]中提出的,其中LLM首先通过“让我们逐步思考”提示生成推理步骤,然后通过“因此,答案是”提示得出最终答案。他们发现,当模型规模超过一定大小时,这种策略会极大地提高性能,但对于小规模模型来说并不有效,显示出显著的新兴能力模式。为了在更多任务上发挥CoT能力,Flan-T5和Flan-PaLM [64]进一步对CoT注释进行指令调整,未见任务的零样本性能得到了改善。
CoT的进一步讨论
在这部分中,我们提出了关于CoT的两个基本问题的讨论,即“何时LLM可以使用CoT”和“为什么LLM可以执行CoT推理”。
何时LLM可以使用CoT?由于CoT是一种新兴的能力[31],它只对足够大的模型产生积极影响(例如,通常包含10B或更多参数[33]),而对于小模型则没有影响。此外,由于CoT通过中间推理步骤增强了标准提示,它主要有效地改善需要逐步推理的任务[33],例如算术推理、常识推理和符号推理。而对于不依赖于复杂推理的其他任务,它可能比标准提示表现更差[283],例如GLUE中的MNLI-m/mm、SST-2和QQP。有趣的是,似乎只有当标准提示产生糟糕的结果时,CoT提示带来的性能提升才会显著[33]。
LLM为什么可以执行CoT推理?作为第二个问题,我们将在以下两个方面讨论CoT的基本机制。
- CoT能力的来源。关于CoT能力的来源,普遍假设它可以归因于对代码的训练,因为在其上训练的模型表现出强大的推理能力[47, 287]。直观地说,代码数据具有良好的算法逻辑和编程流程,这可能有助于提高LLM的推理性能。然而,这个假设仍然缺乏公开报道的消融实验证据(有和没有在代码上进行训练)。此外,指令调整似乎不是获得CoT能力的关键原因,因为经验证明,在非CoT数据上进行指令调整并不能提高在保留的CoT基准测试上的性能[64]。
- 提示组件的影响。CoT提示和标准提示之间的主要区别在于在最终答案之前加入了推理路径。因此,一些研究人员研究了推理路径中不同组件的影响。具体而言,最近的一项研究确定了CoT提示中的三个关键组件,即符号(例如算术推理中的数字量)、模式(例如算术推理中的方程式)和文本(即不是符号或模式的其余标记)[288]。研究表明,后两个部分(即模式和文本)对模型性能至关重要,删除其中任何一个都会导致显著的性能下降。然而,符号和模式的正确性似乎并不关键。此外,文本和模式之间存在一种共生关系:文本帮助LLM生成有用的模式,而模式则帮助LLM理解任务并生成有助于解决任务的文本[288]。
总之,CoT提示提供了一种通用而灵活的方法来引出LLM的推理能力。还有一些初步的尝试将这种技术扩展到解决多模态任务[289]和多语言任务[290]。除了直接利用带有ICL和CoT的LLM,一些最近的研究探索了如何将LLM的能力专门用于特定任务[291-293],这被称为模型专业化[294]。例如,[294]中的研究人员通过在LLM生成的CoT推理路径上微调小规模的Flan-T5 [64],专门化了LLM的数学推理能力。模型专业化也可以应用于解决各种任务,如问答[295]、代码合成[296]和信息检索[297]。
能力评估
为了检验LLM的有效性和优越性,已经利用了大量任务和基准进行实证评估和分析。我们首先介绍LLM的三种基本评估任务,用于语言生成和理解,然后介绍几个具有更复杂设置或目标的LLM高级任务,最后讨论现有的基准和实证分析。
基本评估任务
在本部分中,我们主要关注LLM的三种评估任务,即语言生成、知识利用和复杂推理。需要注意的是,我们并不打算完全涵盖所有相关任务,而是只关注LLM最广泛讨论或研究的任务。接下来,我们详细介绍这些任务。
语言生成
根据任务定义,现有的关于语言生成的任务可以大致分为语言建模、条件文本生成和代码合成任务。需要注意的是,代码合成不是一个典型的NLP任务,我们将其包括在内以供讨论,因为它可以通过与自然语言文本类似的生成方法,由许多在代码数据上训练的LLM直接解决。
语言建模。作为LLM最基本的能力,语言建模旨在基于前面的标记预测下一个标记[15],主要关注基本语言理解和生成的能力。为了评估这种能力,现有工作使用的典型语言建模数据集包括Penn Treebank [298]、WikiText-103 [299]和Pile [130],其中困惑度是常用的评估模型在零样本情况下的性能的指标。经验研究[55, 83]表明,LLM在这些评估数据集上带来了显著的性能提升,超过了先前的最先进方法。为了更好地测试文本中长程依赖的建模能力,引入了LAMBADA数据集[167],其中要求LLM基于上下文段落预测句子的最后一个单词。然后,使用预测的最后一个单词的准确性和困惑度来评估LLM。现有研究表明,语言建模任务的性能通常遵循缩放定律[30],这意味着缩放语言模型将提高准确性并降低困惑度。
条件文本生成。作为语言生成中的一个重要主题,条件文本生成[48]旨在基于给定的条件生成满足特定任务需求的文本,通常包括机器翻译[367]、文本摘要[368]和问答[369]。为了衡量生成文本的质量,通常使用自动度量(例如准确性、BLEU [370]和ROUGE [371])和人类评分来评估性能。由于强大的语言生成能力,LLM在现有数据集和基准测试中取得了显著的性能,甚至超过了人类表现(在测试数据集上)。例如,仅给出32个示例作为输入,具有上下文学习的GPT-3可以在SuperGLUE的平均得分上优于完整数据微调的BERT-Large [312];在MMLU上,5-shot的Chinchilla [34]几乎将人类评分的平均准确率提高了一倍,而5-shot设置下的GPT-4 [46]进一步实现了最先进的性能,相对于先前最佳模型,平均准确率提高了超过10%。因此,这引起了严重的关注,即现有的条件文本生成任务基准是否能够适当地评估和反映LLM的能力。考虑到这个问题,研究人员试图通过收集当前无法解决的任务(即LLM无法表现良好的任务)或创建更具挑战性的任务(例如超长文本生成[372])来制定新的评估基准(例如BIG-bench Hard [314])。此外,最近的研究还发现,自动度量可能低估了LLM的生成质量。在OpenDialKG [311]中,ChatGPT在BLEU和ROUGE-L度量上表现不如微调的GPT-2,但在人类判断中更受欢迎[373]。因此,需要更多的努力来开发更符合人类判断的新度量。
代码合成。除了生成高质量的自然语言外,现有的LLM还展现出强大的生成形式语言的能力,特别是满足特定条件的计算机程序(即代码)的生成,称为代码合成[374]。与自然语言生成不同,由于生成的代码可以直接通过相应的编译器或解释器进行执行检查,现有的工作主要通过计算LLM生成的代码在测试用例中的通过率(即pass@k28)来评估其生成代码的质量。最近,提出了几个专注于功能正确性的代码基准,以评估LLM的代码合成能力,例如APPS [316]、HumanEval [89]和MBPP [152]。通常,它们由多样化的编程问题组成,包括文本规范和用于正确性检查的测试用例。为了提高这种能力,关键是在代码数据上微调(或预训练)LLM,这可以有效地使LLM适应代码合成任务[77]。此外,现有的工作已经提出了新的生成代码策略,例如采样多个候选解[152]和计划引导解码[375],这可以被视为程序员通过模仿修复错误和编码计划过程。令人印象深刻的是,LLM最近在编程竞赛平台Codeforces上取得了与人类竞争的表现,排名前28% [98]。此外,GitHub Copilot已经发布,以协助在编码IDE(例如Visual Studio和JetBrains IDE)中进行编程,它可以支持包括Python、JavaScript和Java在内的各种语言。ACM通讯中的一篇名为“编程的终结”[376]的观点文章讨论了AI编程在计算机科学领域的影响,强调了向高度适应的LLM作为新的计算原子单位的重要转变。
主要问题。尽管LLM在生成类似于人类的文本方面取得了出色的性能,但它们容易受到以下两个语言生成中的主要问题的影响。
- 可控生成。对于LLM,生成给定条件下的文本的主流方式是使用自然语言指令或提示。尽管这种机制很简单,但在对这些模型生成的输出施加细粒度或结构性约束方面,它仍面临着重大挑战。现有的工作[41]表明,当在文本结构上施加复杂约束时,LLM可以很好地处理局部规划(例如相邻句子之间的交互),但可能在全局规划(即长程相关性)方面遇到困难。例如,要生成一个包含多个段落的复杂长篇文章,仍然很难直接确保特定的文本结构(例如概念的顺序和逻辑流程),考虑整个文本。对于需要遵循正式规则或语法的生成任务,例如代码合成,这种情况将变得更加具有挑战性。为了解决这个问题,一个潜在的解决方案是将一次性生成扩展到LLM的迭代提示。这模拟了人类写作过程,将语言生成分解为多个步骤,例如规划、起草、重写和编辑[372]。几项研究已经证明,迭代提示可以引出相关知识,以在子任务中实现更好的性能[377, 378]。本质上,思维链提示利用了将复杂任务分解为多步推理链的思想。此外,生成文本的安全控制对于实际部署也很重要。已经表明,LLM可能会生成包含敏感信息或冒犯性表达的文本[46]。虽然RLHF算法[61]可以在一定程度上缓解这个问题,但它仍然依赖于大量的人工标注数据来微调LLM,没有遵循客观的优化目标。因此,必须探索有效的方法来克服这些限制,并使LLM的输出具有更安全的控制。
- 专业化生成。尽管LLM已经学习了生成连贯文本的通用语言模式,但它们在处理专业领域或任务时可能会受到限制。例如,一个在通用网络文章上训练的语言模型在生成涉及许多医学术语和方法的医疗报告时可能会面临挑战。直观地说,领域知识对于模型专业化至关重要。然而,将这种专业化知识注入LLM并不容易。正如最近的分析[47, 379]所讨论的那样,当LLM被训练以展示某些特定的能力,使它们在某些领域表现出色时,它们可能在其他领域遇到困难。这种问题与神经网络训练中的灾难性遗忘[380, 381]有关,它指的是整合新旧知识的冲突现象。类似的情况也发生在LLM的人类对齐中,其中“对齐税”[61](例如在上下文学习能力方面的潜在损失)必须为对齐人类价值和需求而支付。因此,开发有效的模型专业化方法非常重要,可以灵活地使LLM适应各种任务场景,同时尽可能保留原始能力。
知识利用
知识利用是智能系统完成知识密集型任务(例如常识问题回答和事实补全)的重要能力,基于支持事实证据。具体而言,它要求LLM在必要时正确利用来自预训练语料库的丰富事实知识或检索外部数据。特别是,问答(QA)和知识补全一直是用于评估这种能力的两个常用任务。根据测试任务(问答或知识补全)和评估设置(是否使用外部资源),我们将现有的知识利用任务分为三种类型,即闭卷QA、开卷QA29和知识补全。
闭卷QA。闭卷QA任务[382]测试LLM从预训练语料库中获得的事实知识,LLM只能基于给定的上下文回答问题,不能使用外部资源。为了评估这种能力,可以利用几个数据集,包括自然问题[Natural Questions,319]、Web问题[Web Questions,322]和TriviaQA[323],其中广泛采用准确度指标。实证结果表明,LLM在这种设置下表现良好,甚至可以与最先进的开放领域QA系统的性能相匹配[56]。此外,LLM在闭卷QA任务上的表现也显示出模型大小和数据大小方面的缩放定律模式:缩放参数和训练标记可以增加LLM的容量,并帮助它们从预训练数据中学习(或记忆)更多的知识[56]。此外,在类似的参数规模下,具有更多与评估任务相关的预训练数据的LLM将实现更好的性能[72]。此外,闭卷QA设置还为探究LLM编码的事实知识的准确性提供了一个测试平台。然而,正如现有工作[55]所示,即使在预训练数据中存在细粒度知识,LLM在依赖于这些知识的QA任务上的表现可能也会较差。
开卷QA。与闭卷QA不同,在开卷QA任务中,LLM可以从外部知识库或文档集合中提取有用的证据,然后基于提取的证据回答问题[383–386]。典型的开卷QA数据集(例如自然问题[Natural Questions,319]、OpenBookQA[331]和SQuAD[334])与闭卷QA数据集有重叠,但它们包含外部数据源,例如维基百科。准确度和F1分数是开卷QA任务中广泛使用的评估指标。为了从外部资源中选择相关知识,LLM通常与文本检索器(甚至搜索引擎)配对,该检索器独立或与LLM联合训练[72, 383, 387]。在评估中,现有研究主要关注测试LLM如何利用提取的知识来回答问题,并表明检索到的证据可以大大提高生成答案的准确性,甚至使较小的LLM胜过10倍大的LLM[383, 387]。此外,开卷QA任务还可以评估知识信息的时效性。从过时的知识资源进行预训练或检索可能会导致LLM为时效性问题生成不正确的答案[383]。
知识补全。在知识补全任务中,LLM可以(在某种程度上)被视为知识库[341],可以用来完成或预测知识单元(例如知识三元组)的缺失部分。这些任务可以探究和评估LLM从预训练数据中学习了多少和什么样的知识。现有的知识补全任务可以大致分为知识图谱补全任务(例如FB15k-237[337]和WN18RR[339])和事实补全任务(例如WikiFact[336]),分别旨在完成知识图谱中的三元组和关于特定事实的不完整句子。实证研究表明,现有的LLM很难完成与特定关系类型相关的知识补全任务[287]。正如在WikiFact的评估结果中所示,LLM在预训练数据中出现频率较高的几个关系(例如货币和作者)上表现良好,而在罕见的关系(例如发现者或发明者和出生地)上表现不佳。有趣的是,在相同的评估设置下(例如上下文学习),InstructGPT(即text-davinci-002)在WikiFact的所有子集中都优于GPT-3。这表明指令调整对于LLM完成知识补全任务是有帮助的。
主要问题。尽管LLM在捕捉和利用知识信息方面取得了重要进展,但它们仍然存在以下两个主要问题。
- 幻觉。在生成事实文本时,一个具有挑战性的问题是幻觉生成[373],其中生成的信息与现有来源相冲突(内在幻觉)或无法通过可用来源进行验证(外在幻觉),这在图8中用两个例子说明。幻觉在现有的LLM中广泛存在,即使是最优秀的LLM,如GPT-4 [46]。本质上,LLM似乎“无意识地”利用任务解决中的知识,仍然缺乏准确控制内部或外部知识使用的能力。幻觉会误导LLM生成不希望的输出,并且大多数情况下会降低性能,导致在实际应用中部署LLM时存在潜在风险。为了缓解这个问题,现有的工作广泛利用了对齐调整策略(如第5.2节所述),依赖于在高质量数据上调整LLM或使用人类反馈。为了评估幻觉问题,已经提出了一组幻觉检测任务,例如TruthfulQA [321],用于检测模型模仿的人类虚假言论。
- 知识时效性。作为另一个主要挑战,LLM在解决需要超出训练数据的最新知识的任务时会遇到困难。为了解决这个问题,一个直接的方法是定期使用新数据更新LLM。然而,微调LLM非常昂贵,并且在增量训练LLM时很可能会导致灾难性遗忘问题。因此,有必要开发高效和有效的方法,将新知识集成到现有的LLM中,使它们保持最新状态。现有的研究探索了如何利用外部知识源(例如搜索引擎)来补充LLM,这可以与LLM一起进行优化[383],也可以作为即插即用的模块[388]。例如,ChatGPT利用检索插件访问最新的信息源[389]。通过将提取的相关信息合并到上下文中[390, 391],LLM可以获得新的事实知识,并在相关任务上表现更好。然而,这种方法似乎仍然处于表面层面。已经发现直接修改内在知识或将特定知识注入LLM很困难,这仍然是一个开放的研究问题[392, 393]。
复杂推理
复杂推理是指理解和利用支持证据或逻辑来推导结论或做出决策的能力[51, 52]。根据推理过程中涉及的逻辑和证据类型,我们考虑将现有的评估任务分为三个主要类别,即知识推理、符号推理和数学推理。
知识推理。知识推理任务依赖于逻辑关系和关于事实知识的证据来回答给定的问题。现有的工作主要使用特定的数据集来评估相应类型知识的推理能力,例如,CSQA [277]/StrategyQA [278]用于常识知识推理,ScienceQA [330]用于科学知识推理。除了预测结果的准确性外,现有的工作[330]还通过自动度量(例如BLEU)或人类评估来评估生成的推理过程的质量。通常,这些任务要求LLM基于事实知识进行逐步推理,直到找到给定问题的答案。为了引出逐步推理能力,链式思维(CoT)提示策略[33]已被提出来增强LLM的复杂推理能力。如第6.2节所述,CoT涉及中间推理步骤,可以手动创建[33]或自动生成[394],并将其包含在提示中,以指导LLM进行多步推理。这种方式大大提高了LLM的推理性能,在几个复杂的知识推理任务上取得了新的最先进结果[33, 56, 395]。此外,在将知识推理任务转化为代码生成任务后,研究人员发现LLM的性能可以进一步提高[156],特别是在预训练于代码的LLM上。然而,由于知识推理任务的复杂性,当前LLM的性能仍然落后于人类在常识推理等任务上的结果[33, 56, 396]。作为最常见的错误之一,LLM可能会基于错误的事实知识生成不准确的中间步骤,导致错误的最终结果。为了解决这个问题,现有的工作提出了特殊的解码或集成策略来提高整个推理链的准确性[279, 282]。最近的一项实证研究[395]表明,LLM可能难以明确推断出特定任务所需的常识知识,尽管它们可以成功解决它。此外,它进一步表明,利用自动生成的知识可能不利于提高推理性能。
符号推理。符号推理任务主要集中在在正式规则设置中操作符号以实现某些特定目标[51],其中操作和规则可能在预训练期间从未被LLM看到。现有的工作[33, 263, 281]通常在最后一个字母连接和抛硬币任务上评估LLM,其中评估示例需要与上下文示例相同的推理步骤(称为域内测试)或更多步骤(称为域外测试)。例如,在域外测试的示例中,LLM只能看到上下文中有两个单词的示例,但需要将三个或更多单词的最后一个字母连接起来。通常,采用生成的符号的准确性来评估LLM在这些任务上的性能。因此,LLM需要理解符号操作之间的语义关系以及它们在复杂情境中的组合。然而,在域外设置下,由于LLM没有看到符号操作和规则的复杂组合(例如上下文示例中操作数量的两倍),因此很难捕捉它们的准确含义。为了解决这个问题,现有的研究采用了草稿板[355, 397]和导师[398]策略,以帮助LLM更好地操作符号操作,生成更长、更复杂的推理过程。另一条研究线路利用正式编程语言来表示符号操作和规则,这要求LLM生成代码并通过外部解释器执行推理过程。这种方式可以将复杂的推理过程分解为LLM和解释器的代码合成和程序执行,分别导致简化的推理过程和更准确的结果[357]。
数学推理。数学推理任务需要全面利用数学知识、逻辑和计算来解决问题或生成证明语句。现有的数学推理任务主要可以分为数学问题求解和自动定理证明两类。对于数学问题求解任务,SVAMP [275]、GSM8k [274]和MATH [313]数据集通常用于评估,LLM需要生成准确的具体数字或方程式来回答数学问题。由于这些任务也需要多步推理,链式思维提示策略已被广泛采用来提高LLM的推理性能[33]。作为一种实用的策略,持续在大规模数学语料库上预训练LLM可以大大提高它们在数学推理任务上的性能[35, 147, 399]。此外,由于不同语言中的数学问题共享相同的数学逻辑,研究人员还提出了一个多语言数学问题基准[290]来评估LLM的多语言数学推理能力。作为另一个具有挑战性的任务,自动定理证明(ATP)[363, 365, 400]要求推理模型严格遵循推理逻辑和数学技能。为了评估这个任务的性能,PISA [364]和miniF2F [365]是两个典型的ATP数据集,证明成功率是评估指标。作为一种典型的方法,现有的ATP研究利用LLM来辅助使用交互式定理证明器(ITP)(例如Lean、Metamath和Isabelle [401-403])搜索证明。ATP研究的一个主要限制是缺乏形式语言相关的语料库。为了解决这个问题,一些研究利用LLM将非正式语句转换为形式证明以增加新数据[157],或生成草稿和证明草图以减少证明的搜索空间[404]。
主要问题。尽管有所进展,LLM在解决复杂推理任务方面仍存在几个限制。
- 不一致性。通过改进推理策略(例如CoT提示),LLM可以通过基于支持逻辑和证据的逐步推理来解决一些复杂的推理任务。尽管有效,但在分解的推理过程中经常出现不一致性问题。具体来说,LLM可能会在无效的推理路径下生成正确的答案,或者在正确的推理过程之后产生错误的答案[33, 405],导致推导出的答案与推理过程之间的不一致性。为了缓解这个问题,现有的工作提出了通过外部工具或模型[375]指导LLM的整个生成过程,或重新检查推理过程和最终答案以进行纠正[406]。作为一种有前途的解决方案,最近的方法将复杂的推理任务重新制定为代码生成任务,其中生成的代码的严格执行确保了推理过程和结果之间的一致性。此外,已经发现,具有相似输入的任务之间也可能存在不一致性,任务描述中的小变化可能会导致模型产生不同的结果[49, 275]。为了缓解这个问题,可以应用多个推理路径的集合来增强LLM的解码过程[282]。
- 数值计算。对于复杂的推理任务,LLM在涉及数值计算方面仍然面临困难,特别是对于在预训练期间很少遇到的符号,例如大数的算术[49, 398]。为了解决这个问题,一种直接的方法是在合成的算术问题上调整LLM[407]。一系列研究遵循这种方法,并通过特殊的训练和推理策略[397](例如草稿板跟踪)进一步提高数值计算性能。此外,现有的工作[71]还将外部工具(例如计算器)纳入其中,特别是用于处理算术运算。最近,ChatGPT提供了一种插件机制来使用外部工具[389]。这样,LLM需要学习如何正确地操作工具。为此,研究人员通过使用工具(甚至是LLM本身)来调整LLM[71, 408],或设计指令和示例进行上下文学习[357]来增加示例。然而,这些LLM仍然依赖于文本上下文来捕捉数学符号的语义含义(在预训练阶段),这在本质上并不适合数值计算。
高级能力评估
除了上述基本评估任务外,LLM还展示了一些需要特殊考虑的卓越能力。在本部分中,我们讨论几个代表性的高级能力和相应的评估方法,包括人类对齐、与外部环境的交互和工具操作。接下来,我们详细讨论这些高级能力。
人类对齐
期望LLM能够很好地符合人类的价值和需求,即人类对齐,这是LLM在实际应用中广泛使用的关键能力。
为了评估这种能力,现有的研究考虑了多个人类对齐的标准,例如有用性、诚实性和安全性[46, 223, 224]。对于有用性和诚实性,可以利用对抗性问答任务(例如TruthfulQA [321])来检查LLM在检测文本中可能存在的虚假信息方面的能力[46, 72]。此外,无害性也可以通过几个现有的基准进行评估,例如CrowS-Pairs [409]和Winogender [410]。尽管使用上述数据集进行自动评估,但人类评估仍然是一种更直接的方法,可以有效地测试LLM的人类对齐能力。OpenAI邀请了许多与AI风险相关的领域专家来评估和改进GPT-4在遇到风险内容时的行为[46]。此外,对于人类对齐的其他方面(例如真实性),一些研究提出使用特定的指令和设计注释规则来指导注释过程[72]。实证研究表明,这些策略可以极大地提高LLM的人类对齐能力[224]。例如,在与专家的交互中收集数据后进行对齐调整,当GPT-4处理敏感或不允许的提示时,其错误行为率可以大大降低。此外,高质量的预训练数据可以减少对齐所需的工作量[46]。例如,由于科学语料库中内容较少偏见,Galactica可能更加无害。
与外部环境的交互
除了标准的评估任务外,LLM还具有从外部环境接收反馈并根据行为指令执行操作的能力,例如生成自然语言的行动计划来操作代理[411, 412]。这种能力也在LLM中出现,可以生成详细和高度逼真的行动计划,而较小的模型(例如GPT-2)往往会生成较短或无意义的计划[411]。
为了测试这种能力,可以使用几个具体的基准来进行评估,如下所述。Virtual-Home [413]构建了一个3D模拟器,用于家务任务,如清洁和烹饪,在其中代理可以执行LLM生成的自然语言动作。ALFRED [414]包括更具挑战性的任务,需要LLM完成组合目标。BEHAVIOR [415]专注于模拟环境中的日常家务,要求LLM生成复杂的解决方案,例如改变对象的内部状态。基于LLM生成的行动计划,现有的工作要么采用基准中的常规指标(例如生成的行动计划的可执行性和正确性)[411],要么直接进行实际实验并测量成功率[416],以评估这种能力。现有的工作已经显示了LLM在与外部环境交互和生成准确的行动计划方面的有效性[417]。最近,已经提出了几种改进的方法来增强LLM的交互能力,例如设计类似代码的提示[418]和提供实际世界的基础[416]。
工具操作
在解决复杂问题时,如果LLM认为有必要,它们可以求助于外部工具。通过使用API调用封装可用工具,现有的工作已经涉及了各种外部工具,例如搜索引擎[72]、计算器[71]和编译器[357],以增强LLM在几个特定任务上的性能。最近,OpenAI已经支持在ChatGPT [389]中使用插件,这可以为LLM提供超越语言建模的更广泛能力。例如,Web浏览器插件使ChatGPT能够访问新鲜信息。此外,整合第三方插件对于创建基于LLM的应用程序繁荣生态系统尤为关键。
为了检验工具操作的能力,现有的工作主要采用复杂的推理任务进行评估,例如数学问题求解(例如GSM8k [274]和SVAMP [275])或知识问答(例如TruthfulQA [321]),在这些任务中,成功利用工具对于增强LLM所不能胜任的所需技能(例如数值计算)非常重要。通过这种方式,这些任务的评估表现可以反映LLM在工具操作方面的能力。为了教导LLM利用工具,现有的研究在上下文中添加使用工具的示例来引出LLM [357],或在关于工具利用的模拟数据上对LLM进行微调[71, 408]。现有的工作发现,在工具的帮助下,LLM变得更加能够处理它们不擅长的问题,例如方程计算和利用实时信息,并最终提高了最终的性能[71]。
总结:上述三种能力对LLM的实际性能具有重要价值:符合人类价值和偏好(人类对齐)、在实际场景中正确行动(与外部环境的交互)和扩展能力范围(工具操作)。除了上述三种高级能力外,LLM可能还展示了其他与某些任务(例如数据注释[258])或学习机制(例如自我改进[286])特别相关的能力。发现、衡量和评估这些新兴能力将是一个开放的方向,以更好地利用和改进LLM。
公共基准和实证分析
在前面的部分中,我们已经讨论了LLM的评估任务及其相应的设置。接下来,我们将介绍现有的LLM评估基准和实证分析,重点从一般的角度探讨更全面的讨论。
评估基准
最近,已经发布了几个综合性的基准[287, 313, 356],用于LLM的评估。在这部分中,我们介绍几个代表性和广泛使用的基准,即MMLU、BIG-bench和HELM。
- MMLU [313]是一个多任务知识理解的通用基准,涵盖了从数学和计算机科学到人文和社会科学的广泛知识领域。这些任务的难度从基础到高级不等。现有的研究表明,在这个基准上,LLM大多数情况下比小模型表现出更好的性能[35, 56, 57, 64],这显示了模型大小的缩放规律。最近,GPT-4在MMLU中取得了显著的记录(在5-shot设置下为86.4%),比以前的最先进模型要好得多[46]。
- BIG-bench [356]是一个协作基准,旨在从各个方面探究现有的LLM。它包括204个任务,涵盖了广泛的主题,包括语言学、儿童发展、数学、常识推理、生物学、物理学、社会偏见、软件开发等等。通过扩大模型规模,LLM甚至可以在BIG-bench的65%任务中在少样本情况下超过平均人类表现[56]。考虑到整个基准的高评估成本,提出了一个轻量级基准BIG-bench-Lite,其中包含来自BIG-bench的24个小而多样化且具有挑战性的任务。此外,提出了BIG-bench hard(BBH)基准,集中研究LLM目前无法解决的任务,通过选择LLM表现劣于人类的具有挑战性的任务。随着BBH变得更加困难,小模型大多数情况下的表现接近随机。相比之下,CoT提示可以引出LLM进行逐步推理的能力,从而提高性能,甚至在BBH中超过平均人类表现[314]。
- HELM [287]是一个综合性基准,目前实现了16个核心场景和7个指标类别。它建立在许多先前的研究之上,对语言模型进行了全面评估。如HELM [287]的实验结果所示,指令调整可以在准确性、鲁棒性和公平性方面持续提高LLM的性能。此外,对于推理任务,预先在代码语料库上进行预训练的LLM表现出更优异的性能。
上述基准涵盖了LLM评估的各种主流任务。此外,还有一些基准重点评估LLM的特定能力,例如TyDiQA [419]用于多语言知识利用和MGSM [290]用于多语言数学推理。为了进行评估,可以根据具体目标选择适当的基准。此外,还有几个开源评估框架供研究人员在现有基准上评估LLM或扩展新任务进行定制评估,例如Language Model Evaluation Harness [420]和OpenAI Evals [46]。
LLM能力的综合分析
除了构建大规模评估基准外,越来越多的研究进行了全面分析,以调查LLM的优势和局限性。在这部分中,我们将从主要方面简要讨论它们,即通用型(通用能力)和专业型(领域特定能力)。
通用型。由于出色的性能,现有的研究[41, 46, 373, 379, 421–423]已经系统地评估了LLM的通用能力,以探索它们在各种不同任务或应用中的能力。通常,这些研究主要关注之前未被充分研究的新兴LLM(例如ChatGPT和GPT-4),如下所述:
- 掌握能力。为了评估LLM在解决通用任务方面的掌握水平,现有的研究[423]通常收集一组涵盖各种任务和领域的数据集,然后在少/零样本设置下测试LLM。实证结果[41, 46, 379, 423]表明,LLM作为通用任务求解器具有卓越的能力。作为一个显著的进展,GPT-4已经在各种任务中超越了最先进的方法,例如语言理解、常识推理和数学推理[46]。此外,它可以在为人类设计的真实世界考试(例如高级放置考试和研究生入学考试[46])中实现类似于人类的表现。最近,一项全面的定性分析[41]揭示了GPT-4在各个领域的各种具有挑战性的任务中接近于人类水平的表现,并将其视为“人工通用智能系统的早期版本”。尽管有着令人兴奋的结果,但这项分析也揭示了GPT-4仍然存在严重的局限性。例如,GPT-4很难校准其对生成结果的置信度,并且无法验证其与训练数据和自身的一致性。此外,它在需要规划(例如解决“汉诺塔”问题)或概念跨越(例如提出新的科学假设)的任务上表现出劣势。此外,几项研究还表明,LLM可能会误解陌生的概念[423, 424],在特定领域的信息提取任务上面临挑战,并在解决实用情感相关任务[422](例如个性化情感识别)方面表现出劣势,与特定的微调模型相比。
- 鲁棒性。除了掌握能力,另一个需要考虑的方面是LLM对噪声或扰动的稳定性,这对于实际应用尤为重要。为了评估LLM对噪声或扰动的鲁棒性,现有的研究[425]对输入进行对抗攻击(例如令牌替换),然后根据输出结果的变化评估LLM的鲁棒性。已经表明,在各种任务中,LLM比小型语言模型更具鲁棒性,但可能会遇到关于鲁棒性的新问题,例如鲁棒性不稳定和提示敏感性。具体而言,当使用相同输入的不同表达式时,LLM很容易提供不同的答案,甚至与自己生成的内容相矛盾[426]。这样的问题也会导致在使用不同提示进行鲁棒性评估时出现不稳定的结果,使得鲁棒性分析的评估结果本身不太可靠。
专业型。由于LLM已经在大规模的混合来源语料库上进行了预训练,因此它们可以从预训练数据中捕获丰富的知识。因此,LLM也被用作特定领域的领域专家或专家。因此,最近的研究广泛探索了LLM用于解决特定领域任务的应用,并评估了LLM的适应能力。通常,这些研究收集或构建特定领域的数据集,以使用上下文学习评估LLM的性能。由于我们的重点不是涵盖所有可能的应用领域,因此我们简要讨论了三个受到研究界广泛关注的代表性领域,即医疗保健、教育和法律。
- 医疗保健是一个与人类生命密切相关的重要应用领域。自ChatGPT问世以来,一系列研究已经将ChatGPT或其他LLM应用于医疗领域。已经表明,LLM能够处理各种医疗保健任务,例如生物信息提取[427]、医疗咨询[428-430]和报告简化[431],甚至可以通过专门为专业医生设计的医疗执照考试[432-434]。然而,LLM可能会制造医疗错误信息[429, 431],例如误解医学术语并提出与医学指南不一致的建议。此外,上传患者的健康信息也会引起隐私问题[427]。
- 教育也是一个重要的应用领域,LLM在其中可能产生重大影响。现有的研究发现,LLM可以在数学、物理、计算机科学等科目的标准化测试中实现学生水平的表现[46, 435, 436],包括选择题和自由回答问题。此外,实证研究表明,LLM可以作为教育的写作或阅读助手[437, 438]。最近的一项研究[438]表明,ChatGPT能够在各个学科中生成逻辑一致的答案,平衡深度和广度。另一项定量分析[437]表明,在计算机安全领域的某些课程中,利用ChatGPT的学生比使用不同方法(例如将LLM的结果保留或完善为自己的答案)的平均学生表现更好。然而,LLM的日益普及已经引起了关注(例如作弊作业),需要合理使用这样的智能助手进行教育。
- 法律是一个建立在专业领域知识基础上的专业领域。最近,许多研究已经应用LLM来解决各种法律任务,例如法律文件分析[439, 440]、法律判断预测[441]和法律文件撰写[442]。最近的一项研究[443]发现,LLM具有强大的法律解释和推理能力。此外,最新的GPT-4模型在模拟的律师考试中与人类考生相比,取得了前10%的成绩。然而,LLM在法律中的使用也引起了有关法律挑战的担忧,包括版权问题[444]、个人信息泄露[445]或偏见和歧视[446]。
除了上述工作,LLM的能力也从其他角度进行了分析。例如,最近的一些研究已经研究了LLM的类人特征,例如自我意识、心理理论和情感计算[41, 447-449]。特别是,在两个经典的错误信念任务上进行的心理理论的实证评估推测,由于GPT-3.5系列中的模型在心理理论任务中达到了与9岁儿童相当的表现,因此LLM可能具有类似心理理论的能力[448]。此外,另一条研究线路调查了现有LLM评估设置的公平性和准确性[450],例如大规模混合来源的预训练数据可能包含测试集中的数据。
结论和未来方向
在本次调查中,我们回顾了大型语言模型(LLMs)的最新进展,并介绍了理解和利用LLMs的关键概念、发现和技术。我们重点关注大型模型(即大小大于10B的模型),而排除了早期预训练语言模型(例如BERT和GPT-2),这些模型已经在现有文献中得到了很好的覆盖。特别是,我们的调查讨论了LLMs的四个重要方面,即预训练、适应调整、利用和评估。对于每个方面,我们强调了对LLMs成功至关重要的技术或发现。此外,我们还总结了开发LLMs的可用资源,并讨论了重要的实现指南,以重现LLMs。
本次调查试图涵盖关于LLMs的最新文献,并为研究人员和工程师提供了一个良好的参考资源。
接下来,我们总结了本次调查的讨论,并介绍了LLMs在以下方面的挑战和未来方向。
理论和原则。为了理解LLMs的基本工作机制,其中最大的谜团之一是信息如何通过非常大、深的神经网络进行分布、组织和利用。揭示建立LLMs能力基础的基本原则或元素非常重要。特别是,缩放似乎在增加LLMs的容量方面发挥了重要作用[31、55、59]。已经表明,当语言模型的参数规模增加到临界大小(例如10B)时,一些新兴的能力会以意想不到的方式出现(突然的性能飞跃),通常包括上下文学习、指令跟随和逐步推理[31、33]。这些新兴的能力令人着迷,但也令人困惑:LLMs何时以及如何获得这些能力尚不清楚。最近的研究要么进行广泛的实验以研究新兴能力的影响和促成这些能力的因素[250、267、451],要么用现有的理论框架解释一些特定的能力[60、261]。一篇有见地的技术文章也专门讨论了这个话题[47],以GPT系列模型为目标。然而,更正式的理论和原则来理解、描述和解释LLMs的能力或行为仍然缺乏。由于新兴能力与自然界中的相变有着密切的类比[31、58],跨学科的理论或原则(例如,LLMs是否可以被视为某种复杂系统)可能有助于解释和理解LLMs的行为。这些基本问题值得研究界探索,这对于开发下一代LLMs非常重要。
模型架构。由于可扩展性和有效性,Transformer已成为构建LLMs的事实标准架构,它由堆叠的多头自注意力层组成。已经提出了各种策略来改进这种架构的性能,例如神经网络配置和可扩展的并行训练(请参见第4.2.2节中的讨论)。为了增强模型容量(例如,多轮对话能力),现有的LLMs通常保持长的上下文窗口,例如,GPT-4-32k具有极长的上下文长度,达到32,768个标记。因此,一个实际的考虑是减少标准自注意力机制产生的时间复杂度(原本是二次成本)。研究更高效的Transformer变体在构建LLMs方面的影响非常重要[452],例如,稀疏注意力已经在GPT-3中使用[55]。此外,灾难性遗忘一直是神经网络的一个长期挑战,这也对LLMs产生了负面影响。当使用新数据调整LLMs时,原来学习的知识很可能会受到损害,例如,根据某些特定任务微调LLMs将影响LLMs的通用能力。当LLMs与人类价值观保持一致时(称为对齐税[61、223]),也会出现类似情况。因此,有必要考虑使用更灵活的机制或模块扩展现有的架构,以有效地支持数据更新和任务专业化。
模型训练。在实践中,由于巨大的计算消耗和对数据质量和训练技巧的敏感性,预训练有能力的LLMs非常困难[69、83]。因此,考虑到模型效果、效率优化和训练稳定性等因素,开发更系统化、经济的预训练方法来优化LLMs变得尤为重要。应该开发更多的模型检查或性能诊断方法(例如,GPT-4中的可预测缩放[46]),以便在训练期间检测到早期的异常问题。此外,还需要更灵活的硬件支持或资源调度机制,以更好地组织和利用计算集群中的资源。由于从头开始预训练LLMs非常昂贵,因此有必要设计适当的机制,以基于公开可用的模型检查点(例如LLaMA [57]和Flan-T5 [64])持续预训练或微调LLMs。为此,必须解决许多技术问题,例如灾难性遗忘和任务专业化。然而,到目前为止,仍缺乏具有完整预处理和训练日志(例如准备预训练数据的脚本)的LLMs的开源模型检查点,以进行再现。我们认为,在开源模型中报告更多的技术细节对于LLMs的研究非常有价值。此外,还重要的是开发更多有效地引出模型能力的改进调整策略。
模型利用。由于在实际应用中微调非常昂贵,提示已成为使用LLMs的主要方法。通过将任务描述和演示示例组合成提示,上下文学习(提示的一种特殊形式)赋予LLMs在新任务上表现良好的能力,甚至在某些情况下超过了完整数据微调模型的表现。此外,为了增强复杂推理能力,已经提出了高级提示技术,例如链式思考(CoT)策略,它将中间推理步骤包含在提示中。然而,现有的提示方法仍存在以下几个缺陷。首先,它涉及到大量的人力在提示设计上。自动生成解决各种任务的有效提示将非常有用。其次,一些复杂任务(例如形式证明和数值计算)需要特定的知识或逻辑规则,这些规则可能无法用自然语言表达或通过示例演示。因此,开发更具信息量、灵活的任务格式化方法对于提示非常重要[31]。第三,现有的提示策略主要关注单轮表现。为了解决复杂任务,开发交互式提示机制(例如通过自然语言对话)非常有用,这已经被ChatGPT证明非常有用。
安全和对齐。尽管具有强大的能力,LLMs与小型语言模型面临着类似的安全挑战。例如,LLMs表现出产生幻觉的倾向[373],这些文本看起来合理,但可能事实上是错误的。更糟糕的是,LLMs可能会被故意指令激发,以产生有害、有偏见或有毒的文本,用于恶意系统,从而导致潜在的误用风险[55、61]。有关LLMs安全问题(例如隐私、过度依赖、虚假信息和影响操作)的详细讨论,读者可以参考GPT-3/4技术报告[46、55]。作为避免这些问题的主要方法,通过人类反馈进行强化学习(RLHF)[61、100]已经被广泛使用,将人类纳入训练循环中,以开发良好对齐的LLMs。为了提高模型的安全性,在RLHF期间包括与安全相关的提示也非常重要,正如GPT-4所示[46]。然而,RLHF严重依赖于来自专业标注者的高质量人类反馈数据,使其难以在实践中得到适当的实施。因此,有必要改进RLHF框架,以减少人类标注者的工作量,并寻求一种更有效的注释方法,保证数据质量,例如,LLMs可以用于协助标注工作。最近,红队测试[115、225]已被采用来提高LLMs的模型安全性,它利用收集到的对抗性提示来改进LLMs(即避免来自红队测试的攻击)。此外,建立适当的学习机制,使LLMs通过聊天获得人类反馈并直接利用它进行自我改进,也是有意义的。
应用和生态。由于LLMs在解决各种任务方面表现出强大的能力,它们可以应用于广泛的实际应用中(即遵循特定任务的自然语言指令)。作为一个显著的进展,ChatGPT可能已经改变了人类获取信息的方式,这已经在新版Bing中实现。在不久的将来,可以预见LLMs将对信息搜索技术产生重大影响,包括搜索引擎和推荐系统。此外,随着LLMs技术的升级,智能信息助手的开发和使用将得到高度推广。在更广泛的范围内,这一技术创新浪潮将导致LLM赋能应用程序的生态系统(例如,ChatGPT支持插件的支持),这与人类生活密切相关。最后,LLMs的崛起为人工通用智能(AGI)的探索提供了启示。有望开发比以往更智能的智能系统(可能具有多模态信号)。然而,在这个发展过程中,AI安全应该是主要关注的问题,即使AI对人类产生好的影响而不是坏的[40]。
CODA:本次调查是在我们研究团队的讨论会上计划的,我们旨在为团队成员撰写一份高度可读的报告,总结大型语言模型的最新进展。第一版草稿于2023年3月13日完成,我们的团队成员尽力以相对客观、全面的方式包括与LLMs相关的研究。然后,我们进行了多次广泛的写作和内容修订。尽管我们尽了最大的努力,但这份调查仍然远非完美:我们可能会错过重要的参考文献或主题,也可能存在不严谨的表达或讨论。由于空间限制,我们只能通过设置选择标准,在图1和表1中包括现有LLMs的一部分。然而,我们在GitHub页面(https://github.com/RUCAIBox/LLMSurvey)上设置了更宽松的模型选择标准,该页面将定期维护。我们将持续更新这份调查,并尽可能提高质量。对于我们来说,调查写作也是我们自己学习LLMs的过程。对于有建设性建议来改进这份调查的读者,欢迎在我们调查的GitHub页面上留下评论或直接给我们的作者发送电子邮件。我们将在未来版本中根据收到的评论或建议进行修订,并感谢为我们的调查提供建设性建议的读者。
REFERENCES
原论文地址:https://arxiv.org/abs/2303.18223
本文翻译利用、能力评估、总结和未来方向;(后续会人工修改里面不好理解的句子)