本文是LLM系列的第一篇文章,针对《A Survey of Large Language Models》的翻译。
自从20世纪50年代提出图灵测试以来,人类一直在探索通过机器掌握语言智能。语言本质上是一个由语法规则控制的复杂的人类表达系统。开发能够理解和掌握语言的人工智能算法是一个重大挑战。在过去的二十年里,语言建模作为一种主要的语言理解和生成方法得到了广泛的研究,从统计语言模型发展到神经语言模型。最近,通过在大规模语料库上对Transformer模型进行预训练,提出了预训练语言模型(PLM),在解决各种自然语言处理(NLP)任务方面表现出强大的能力。由于研究人员发现模型缩放可以提高模型容量,他们通过将参数缩放增加到更大的尺寸来进一步研究缩放效应。有趣的是,当参数尺度超过一定水平时,这些放大的语言模型不仅实现了显著的性能改进,而且还表现出了一些小规模语言模型(如BERT)中不存在的特殊能力(如上下文学习)。为了区分不同参数尺度下的语言模型,研究界为具有显著规模的PLM(例如,包含数百亿或数千亿个参数)创造了“大型语言模型”(LLM)一词。近年来,学术界和工业界对LLM的研究都取得了很大进展,其中一个显著的进展是ChatGPT(一种基于LLM开发的强大的人工智能聊天机器人)的推出,引起了社会的广泛关注。LLM的技术发展对整个人工智能社区产生了重要影响,这将彻底改变我们开发和使用人工智能算法的方式。考虑到这一快速的技术进步,在本次综述中,我们通过介绍背景、关键发现和主流技术来回顾LLM的最新进展。特别是,我们关注LLM的四个主要方面,即预训练、适应调整、利用和能力评估。此外,我们还总结了开发LLM的可用资源,并讨论了未来方向的剩余问题。这项综述提供了LLM文献的最新综述,这对研究人员和工程师来说都是一个有用的资源。
语言是人类表达和交流的一种突出能力,它在儿童早期发展,并在一生中进化。然而,除非配备强大的人工智能算法,否则机器无法自然地掌握以人类语言形式进行理解和交流的能力。实现这一目标,使机器能够像人类一样阅读、书写和交流,一直是一个长期的研究挑战。
从技术上讲,语言建模(LM)是提高机器语言智能的主要方法之一。一般来说,LM旨在对单词序列的生成可能性进行建模,从而预测未来(或丢失)标记的概率。LM的研究在文献中受到了广泛的关注,可分为四个主要的发展阶段:
在现有文献中,PLM已被广泛讨论和综述,而LLM很少以系统的方式进行综述。为了激励我们的综述,我们首先强调LLM和PLM之间的三个主要区别。首先,LLM显示出一些令人惊讶的涌现能力,这在以前的较小PLM中可能没有观察到。这些能力是语言模型在复杂任务中表现的关键,使人工智能算法空前强大和有效。其次,LLM将彻底改变人类开发和使用人工智能算法的方式。与小型PLM不同,访问LLM的主要方法是通过提示界面(例如,GPT-4 API)。人类必须了解LLM是如何工作的,并以LLM可以遵循的方式格式化他们的任务。第三,LLM的发展不再明确区分研究和工程。LLM的训练需要在大规模数据处理和分布式并行训练方面有丰富的实践经验。为了开发有能力的LLM,研究人员必须解决复杂的工程问题,与工程师合作或成为工程师。
如今,LLM正在对人工智能社区产生重大影响,而ChatGPT和GPT-4的出现导致了对人工通用智能(AGI)可能性的重新思考。OpenAI发表了一篇题为“AGI及其后的规划”的技术文章,讨论了接近AGI的短期和长期计划,最近的一篇论文认为GPT-4可能被视为AGI系统的早期版本。随着LLM的快速发展,人工智能的研究领域正在发生革命性的变化。在NLP领域,LLM可以作为通用语言任务求解器(在某种程度上),研究范式已经转向LLM的使用。在IR领域,传统的搜索引擎受到了通过AI聊天机器人(即ChatGPT)寻找信息的新方式的挑战,而new Bing提出了一种基于LLM增强搜索结果的初步尝试。在CV领域,研究人员试图开发类似ChatGPT的视觉语言模型,这些模型可以更好地服务于多模式对话,GPT-4通过整合视觉信息支持多模式输入。这一新的技术浪潮可能会带来一个繁荣的基于LLM的现实世界应用生态系统。例如,微软365被LLM(即Copilot)授权自动化办公工作,而OpenAI支持在ChatGPT中使用插件来实现特殊功能。
尽管取得了进展并产生了影响,但LLM的基本原则仍然没有得到很好的探索。首先,为什么新兴能力出现在LLM中,而不是较小的PLM中,这是很神秘的。作为一个更普遍的问题,缺乏对LLM卓越能力的关键因素的深入、详细的调查。研究LLM何时以及如何获得这种能力是很重要的。尽管对这个问题进行了一些有意义的讨论,需要更有原则的综述来揭开“秘密”“LLM。其次,研究界很难培养出有能力的LLM。由于对计算资源的巨大需求,进行重复的、消融的研究以综述各种训练LLM策略的效果是非常昂贵的。事实上,LLM主要由行业训练,其中许多重要的训练细节(如数据收集和清洁)不向公众披露。第三,使LLM与人类价值观或偏好保持一致是一项挑战。尽管有这种能力,LLM也可能产生有毒、虚构或有害的内容。它需要有效和高效的控制方法来消除LLM使用的潜在风险。
面对机遇和挑战,LLM的研发需要更多的关注。为了对LLM有一个基本的了解,本综述从四个主要方面对LLM的最新进展进行了文献综述,包括预训练(如何预训练一个有能力的LLM)、适应调整(如何从有效性和安全性两个角度有效地调整预训练的LLM,利用率(如何使用LLM来解决各种下游任务)和能力评估(如何评估LLM的能力和现有的经验发现)。我们彻底梳理了文献,总结了LLM的关键发现、技术和方法。对于本次综述,我们还通过收集LLM的支持资源创建了一个GitHub项目网站,链接为https://github.com/RUCAIBox/LLMSurvey.我们还知道一些关于PLM或LLM的相关综述文章。这些论文要么讨论了有限法律责任或有限法律责任的某些特定(或一般)方面。与它们相比,我们专注于开发和使用LLM的技术和方法,并为LLM的重要方面提供了相对全面的参考。
本综述的其余部分组织如下:第2节介绍了LLM的背景,包括术语、设置、资源和组织大纲,然后在第3节中总结了开发LLM的可用资源。第4、5、6和7节分别从预训练、适应调整、利用和能力评估四个方面回顾和总结了最近的进展。最后,我们在第8节中总结了主要综述结果,并讨论了未来工作的剩余问题。
在本节中,我们概述了LLM的背景,然后总结了GPT系列模型的技术演变。
通常,大型语言模型(LLM)是指包含数千亿(或更多)参数的Transformer语言模型,这些参数是在大量文本数据上训练的,如GPT-3、PaLM、Galactica和LLaMA。LLM在理解自然语言和解决复杂任务(通过文本生成)方面表现出强大的能力。为了快速了解LLM的工作原理,本部分介绍了LLM的基本背景,包括缩放定律、涌现能力和关键技术。
LLM的缩放定律。
目前,LLM主要建立在Transformer架构的基础上,其中多头注意力层堆叠在非常深入的神经网络中。现有的LLM采用类似的Transformer架构和预训练目标(例如,语言建模)作为小型语言模型。而LLM在很大程度上扩展了模型大小、数据大小和总计算量(放大倍数)。广泛的研究表明,缩放可以在很大程度上提高LLM的模型容量。因此,建立一种定量方法来表征缩放效应是有用的。接下来,我们介绍Transformer语言模型的两个有代表性的缩放定律。
LLM的涌现能力。
在文献[31]中,LLM的涌现能力被正式定义为“不存在于小模型中但出现于大模型中的能力”,这是LLM与以前的PLM区别开来的最突出特征之一。它进一步介绍了当涌现能力出现时的一个显著特征:当规模达到一定水平时,性能显著高于随机。类似地,这种涌现模式与物理学中的相变现象有着密切的联系。原则上,涌现能力可以定义为与一些复杂任务有关,而我们更关心的是可以应用于解决各种任务的一般能力。在这里,我们简要介绍了LLM的三种典型涌现能力以及具有这种能力的代表性模型。
LLM的关键技术。
LLM发展到目前的状态已经有很长的路要走:普通和有能力的学习者。在开发过程中,提出了一些重要的技术,极大地提高了LLM的能力。在这里,我们简要列出了(可能)导致LLM成功的几个重要技术,如下所示。
此外,许多其他因素(例如硬件的升级)也有助于LLM的成功。尽管如此,我们的讨论仅限于开发LLM的主要技术方法和关键发现。
由于ChatGPT在与人类交流方面的卓越能力,自发布以来,它点燃了人工智能社区的兴奋。ChatGPT是基于强大的GPT模型开发的,具有特别优化的会话能力。考虑到人们对ChatGPT和GPT模型越来越感兴趣,我们增加了一个关于GPT系列模型技术演变的特别讨论,以简要总结它们在过去几年中的发展进展。总体而言,OpenAI对LLM的研究大致可以分为以下几个阶段。
早期探索。
根据对Ilya Sutskever(OpenAI的联合创始人兼首席科学家)的一次采访,在OpenAI的早期就已经探索过用语言模型接近智能系统的想法,而在循环神经网络(RNN)中也尝试过。随着Transformer的出现,OpenAI开发了两个初始的GPT模型,即GPT-1和GPT-2,这两个模型可以被视为随后更强大的模型(即GPT-3和GPT-4)的基础。
容量飞跃。
尽管GPT-2旨在成为一种“无监督的多任务学习器”,但与现有技术的有监督微调方法相比,它的总体性能较差。虽然它的模型尺寸相对较小,但它在下游任务中进行了广泛的微调,尤其是对话框任务。在GPT-2的基础上,GPT-3通过扩展(几乎相同)生成预训练架构,展示了一个关键的能力飞跃。
能力提升。
由于强大的能力,GPT3一直是为OpenAI开发更强大LLM的基础模型。总体而言,OpenAI探索了两种主要方法来进一步改进GPT-3模型,即对代码数据进行训练和与人类偏好保持一致,具体如下。
这些增强技术使GPT-3模型得到了改进,具有更强的功能,OpenAI将其称为GPT-3.5模型(请参阅第3.1节中关于OpenAI API的讨论)。
语言模型的里程碑。
基于所有的探索努力,OpenAI已经实现了两个主要的里程碑,即ChatGPT和GPT-4,这在很大程度上提高了现有人工智能系统的容量。
尽管取得了巨大进展,但这些高级LLM仍然存在局限性,例如,在某些特定背景下产生具有事实错误或潜在风险反应的幻觉。LLM的更多限制或问题将在第7节中讨论。开发能力更强、更安全的LLM是长期存在的研究挑战。从工程的角度来看,OpenAI采用了迭代部署策略,按照五个阶段的开发和部署生命周期来开发模型和产品,旨在有效降低使用模型的潜在风险。在下文中,我们将深入了解技术细节,以便具体了解它们是如何开发的。
考虑到具有挑战性的技术问题和对计算资源的巨大需求,开发或复制LLM绝非易事。一种可行的方法是从现有的LLM中学习经验,并重用公共资源进行增量开发或实验研究。在本节中,我们简要总结了用于开发LLM的公开资源,包括模型检查点(或API)、语料库和库。
考虑到模型预训练的巨大成本,训练有素的模型检查点对于研究界LLM的研究和开发至关重要。由于参数规模是使用LLM需要考虑的关键因素,我们将这些公共模型分为两个规模级别(即数百亿个参数和数千亿个参数),这有助于用户根据其资源预算确定合适的资源。此外,对于推理,我们可以直接使用公共API来执行我们的任务,而无需在本地运行模型。接下来,我们将介绍公开可用的模型检查点和API。
具有数百亿参数的模型。
这一类别中的大多数模型的参数范围从10B到20B,除了LLaMA(在最大版本中包含65B参数)和NLLB(在最大版中包含54.5B参数)。该范围内的其他型号包括mT5、PanGu- α \alpha α、T0、GPT-Neox-20B、CodeGen、UL2、Flan-T5和mT0。其中,Flan-T5(11B版本)可以作为研究指令调优的首要模型,因为它从三个方面探索了指令调优:增加任务数量、扩大模型规模和使用思想链提示数据进行微调。此外,CodeGen(11B版本)作为一种用于生成代码的自回归语言模型,可以被认为是探索代码生成能力的良好候选者。它还引入了一个新的基准MTPB,专门用于多回合程序合成,由115个专家生成的问题组成。为了解决这些问题,LLM需要获得足够的编程知识(例如,数学、数组运算和算法)。对于多语言任务,mT0(13B版本)可能是一个很好的候选模型,它已经在带有多语言提示的多语言任务上进行了微调。此外,PanGu- α \alpha α在基于深度学习框架MindSpore开发的零样本或小样本设置下的中文下游任务中表现出良好的性能。请注意,PanGu- α \alpha α持有多个版本的模型(最多200B参数),而最大的公共版本具有13B参数。作为最近的一个版本,LLaMA(65B版本)包含的参数大约是其他模型的五倍,在与指令遵循相关的任务中表现出了卓越的性能。由于其开放性和有效性,LLaMA吸引了研究界的极大关注,许多努力都致力于微调或持续预训练其不同的模型版本,以实现新的模型或工具。通常,这种规模的预训练模型需要数百甚至数千个GPU或TPU。例如,GPT-NeoX-20B使用12个超微型服务器,每个服务器配备8个NVIDIA A100-SXM4-40GB GPU,而LLaMA使用2048个A100-80G GPU,如其原始出版物中所述。为了准确估计所需的计算资源,建议使用测量所涉及计算数量的指标,如FLOPS(即每秒浮点运算次数)。
具有数千亿参数的模型。
对于这一类别的模型,只有少数模型公开发布。例如,OPT、OPT-IML、BLOOM和BLOOMZ具有与GPT-3(175B版本)几乎相同数量的参数,而GLM和Galactica分别具有130B和120B参数。其中,OPT(175B版本)特别致力于开放共享,旨在使研究人员能够大规模开展可重复的研究。对于跨语言泛化的研究,BLOOM(176B版本)和BLOOMZ(176B版)可以作为基础模型,因为它们具有多语言建模任务的能力。在这些模型中,OPT-IML已经用指令进行了调整,这可能是研究指令调整效果的好候选者。这种规模的模型通常需要数千个GPU或TPU来训练。例如,OPT(175B版本)使用992个A100-80GB GPU,而GLM(130B版本)则使用96个NVIDIA DGX-A100(8x40G)GPU节点的集群。
LLM的公共API。
API不是直接使用模型副本,而是为普通用户提供了一种更方便的方式来使用LLM,而无需在本地运行模型。作为使用LLM的代表性接口,GPT系列模型的API已被学术界和工业界广泛使用。OpenAI为GPT-3系列中的模型提供了七个主要接口:ada、babbage、curie、davinci(GPT-3序列中最强大的版本)、text-ada-001、text-babbage-001和text-curie-001。其中,前四个接口可以在OpenAI的主机服务器上进行进一步的微调。特别是,babbage、curie和davinci分别对应于GPT-3(1B)、GPT-3(6.7B)和GPT-3)(175B)模型。此外,还有两种与Codex相关的API,称为code-cushman-001(Codex(12B)的强大的多语言版本)和code-davinci-002。此外,GPT-3.5系列包括一个代号为code-davinci-002的基础型号和三个增强版本,即text-davinci-002、text-davici-003和GPT-3.5-turbo-0301。值得注意的是,gpt-3.5-turbo-0301是调用ChatGPT的接口。最近,OpenAI还发布了GPT-4的相应API,包括GPT-4、GPT-4-0314、GPT-4-32k和GPT-4-32k-0314。总的来说,API接口的选择取决于具体的应用场景和响应要求。详细用法可在其项目网站上找到。
与早期的PLM相比,由大量参数组成的LLM需要更大量的训练数据,这些数据涵盖了广泛的内容。为了满足这一需求,已经发布了越来越多可访问的训练数据集用于研究。在本节中,我们将简要总结几种广泛用于训练LLM的语料库。根据它们的内容类型,我们将这些语料库分为六组:书籍、CommonCrawl、Reddit链接、维基百科、代码和其他。
书
BookCorpus是以前小规模模型(例如GPT和GPT-2)中常用的数据集,由11000多本涵盖广泛主题和流派(例如小说和传记)的书籍组成。另一个大型图书语料库是古腾堡计划,由70000多本文学书籍组成,包括小说、散文、诗歌、戏剧、历史、科学、哲学和其他类型的公共领域作品。它是目前最大的开源图书收藏之一,用于MT-NLG和LLaMA的训练。至于GPT-3中使用的Books1和Books2,它们比BookCorpus大得多,但迄今尚未公开发布。
CommonCrawl。
CommonCrawl是最大的开源网络爬行数据库之一,包含PB级的数据量,已被广泛用作现有LLM的训练数据。由于整个数据集非常大,现有研究主要从中提取特定时期内的网页子集。然而,由于网络数据中普遍存在噪声和低质量的信息,因此有必要在使用前进行数据预处理。基于CommonCrawl,现有工作中常用的过滤数据集有四个:C4、CC-Stories、CC-News和RealNews。Colossal Clean Crawled Corpus(C4)包括五种变体,即en(806G)、en.noclean(6T)、realnews-like(36G)、webtext-like(17G)和多语言(38T)。en版本已用于预训练T5、LaMDA、Gopher和UL2。多语言C4,也称为mC4,已在mT5中使用。CC-Stories(31G)由CommonCrawl数据的子集组成,其中的内容以类似故事的方式制作。然而,CC-Stories的原始来源现在还不可用,因此复制版本CC-Stories-R已包含在表2中。此外,从CommonCrawl中提取的两个新闻语料库REALNEWS(120G)和CC news(76G)也常用作预训练数据。
Reddit链接。
Reddit是一个社交媒体平台,用户可以提交链接和文本帖子,其他人可以通过“赞成票”或“反对票”对其进行投票。投票率高的帖子通常被认为是有用的,可以用来创建高质量的数据集。WebText是一个著名的语料库,由来自Reddit的高度支持的链接组成,但它还没有公开。作为替代,有一种易于访问的开源替代方案,称为OpenWebText。从Reddit中提取的另一个语料库是PushShift.io,这是一个实时更新的数据集,由Reddit自创建之日以来的历史数据组成。Pushshift不仅提供每月的数据转储,还提供有用的实用工具,支持用户搜索、总结和对整个数据集进行初步调查。这使得用户可以轻松地收集和处理Reddit数据。
维基百科。
维基百科是一个在线百科全书,包含大量关于不同主题的高质量文章。这些文章大多是以解释性的写作风格撰写的(有辅助参考文献),涵盖了广泛的语言和领域。通常,维基百科的纯英文过滤版本被广泛用于大多数LLM(例如,GPT-3、LaMDA和LLaMA)。维基百科有多种语言,因此可以在多语言环境中使用。
代码。
为了收集代码数据,现有工作主要从互联网上抓取开源许可代码。两个主要来源是开源许可证下的公共代码库(如GitHub)和与代码相关的问答平台(如StackOverflow)。谷歌已经公开发布了BigQuery数据集,其中包括大量各种编程语言的开源许可代码片段,作为代表性的代码数据集。CodeGen利用BigQuery数据集的子集BIGQUERY来训练CodeGen的多语言版本(CodeGen Multi)。
其他。
Pile是一个大规模、多样化和开源的文本数据集,由来自多个来源的超过800GB的数据组成,包括书籍、网站、代码、科学论文和社交媒体平台。它由22个不同的高质量子集构成。Pile数据集广泛用于具有不同参数尺度的模型,如GPT-J(6B)、CodeGen(16B)和MegatronTuring NLG(530B)。此外,ROOTS由各种较小的数据集(总共1.61TB的文本)组成,涵盖59种不同的语言(包括自然语言和编程语言),这些语言已用于训练BLOOM。
在实践中,它通常需要不同数据源的混合来预训练LLM(见图2),而不是单个语料库。因此,现有的研究通常将几个现成的数据集(如C4、OpenWebText和Pile)混合,然后进行进一步的处理以获得预训练语料库。此外,为了训练适应特定应用的LLM,从相关来源(如维基百科和BigQuery)提取数据也很重要,以丰富预训练数据中的相应信息。为了快速参考现有LLM中使用的数据源,我们提供了三个具有代表性的LLM的预训练语料库:
在这一部分中,我们简要介绍了一系列可用于开发LLM的库。
除了上述库资源之外,现有的深度学习框架(例如,PyTorch、TensorFlow、MXNet、PaddlePaddle、MindSpore和OneFlow)也提供了对并行算法的支持,这些算法通常用于训练大规模模型。
预训练为LLM的能力奠定了基础。通过大规模语料库的预训练,LLM可以获得基本的语言理解和生成技能。在这个过程中,预训练语料库的规模和质量对于LLM获得强大的能力至关重要。此外,为了有效地预训练LLM,需要精心设计模型架构、加速方法和优化技术。在接下来的内容中,我们首先在第4.1节中讨论数据收集和处理,然后在第4.2节中介绍常用的模型架构,最后在第4.3节中介绍稳定有效地优化LLM的训练技术。
与小规模的语言模型相比,LLM对模型预训练的高质量数据有更强的需求,其模型能力在很大程度上取决于预训练语料库及其预处理方式。在这一部分中,我们讨论了预训练数据的收集和处理,包括数据源、预处理方法,以及预训练数据如何影响LLM性能的重要分析。
要开发一个有能力的LLM,关键是从各种数据源中收集大量的自然语言语料库。现有的LLM主要利用各种公共文本数据集的混合作为预训练语料库。图2显示了一些具有代表性的LLM的预训练数据来源的分布。
预训练语料库的来源大致可以分为两类:一般数据和专业数据。一般数据,如网页、书籍和会话文本,由于其庞大、多样和可访问的性质,被大多数LLM使用,这可以增强LLM的语言建模和泛化能力。鉴于LLM表现出令人印象深刻的泛化能力,也有研究将其预训练语料库扩展到更专业的数据集,如多语言数据、科学数据和代码,赋予LLM特定的任务解决能力。在下文中,我们描述了这两种类型的预训练数据源及其对LLM的影响。关于常用语料库的详细介绍,可以参考第3.2节。
常规文本数据。
如图2所示,绝大多数LLM采用通用的预训练数据,如网页、书籍和会话文本,这些数据提供了各种主题的丰富文本源。接下来,我们简要总结了三种重要的一般数据。
专用文本数据。
专门的数据集有助于提高LLM在下游任务中的特定能力。接下来,我们将介绍三种专门的数据。
在收集了大量文本数据后,对数据进行预处理以构建预训练语料库至关重要,尤其是去除噪声、冗余、无关和潜在的有毒数据,这些数据可能会在很大程度上影响LLM的容量和性能。在这一部分中,我们回顾了详细的数据预处理策略,以提高收集数据的质量。LLM预处理预训练数据的典型流程如图3所示。
质量过滤。
为了从收集的语料库中去除低质量的数据,现有的工作通常采用两种方法:(1)基于分类器的方法和(2)基于启发式的方法。前一种方法基于高质量文本训练选择分类器,并利用它来识别和过滤低质量数据。通常,这些方法训练一个二元分类器,将精心策划的数据(例如维基百科页面)作为正实例,将样本候选数据作为负实例,并预测衡量每个数据实例质量的分数。然而,几项研究也发现,基于分类器的方法可能会导致方言、口语和社会方言中高质量文本的无意删除,这可能会导致预训练语料库中的偏见,并减少语料库的多样性。作为第二种方法,一些研究,如BLOOM和Gopher,采用基于启发式的方法,通过一组精心设计的规则来消除低质量的文本,可以总结如下:
重复数据消除。
现有工作发现,语料库中的重复数据会降低语言模型的多样性,这可能导致训练过程变得不稳定,从而影响模型性能。因此,有必要对预训练语料库进行去重处理。特别地,重复数据消除可以以不同的粒度执行,包括句子级别、文档级别和数据集级别的重复数据消除。首先,应该删除包含重复单词和短语的低质量句子,因为它们可能会在语言建模中引入重复模式。在文档层面,现有的研究大多依赖于文档之间表面特征的重叠率(例如,单词和n-gram重叠)来检测和删除包含类似内容的重复文档。此外,为了避免数据集污染问题,通过从训练集中删除可能的重复文本,防止训练集和评估集之间的重叠也是至关重要的。已经表明,三个级别的重复数据消除有助于改进LLM的训练,应在实践中联合使用。
隐私补救措施。
大多数预训练文本数据来自网络来源,包括用户生成的涉及敏感或个人信息的内容,这可能会增加隐私泄露的风险。因此,有必要从预训练语料库中去除个人可识别信息(PII)。一种直接有效的方法是采用基于规则的方法,如关键词识别,来检测和删除姓名、地址和电话号码等PII。此外,研究人员还发现,LLM在隐私攻击下的脆弱性可归因于预训练语料库中存在重复的PII数据。因此,重复数据消除也可以在一定程度上降低隐私风险。
分词。
分词也是数据预处理的关键步骤。它旨在将原始文本分割成单个词元的序列,这些标记随后用作LLM的输入。尽管利用现有的分词是有利的(例如,OPT和GPT-3利用GPT-2的分词),但使用专门为预训练语料库设计的分词可能是非常有益的,尤其是对于由不同域、语言和格式组成的语料库。因此,最近的几个LLM专门为带有句子片段的预训练语料库训练定制的分词。字节级字节对编码(BPE)算法用于确保分词后的信息是无损的。而BPE中的规范化技术,如NFKC,可能会降低分词性能。
与小规模的PLM不同,由于对计算资源的巨大需求,多次迭代LLM的预训练通常是不可行的。因此,在训练LLM之前,构建一个准备充分的预训练语料库尤为重要。在这一部分中,我们讨论了预训练语料库的质量和分布如何潜在地影响LLM的性能。
混合来源。
如前所述,来自不同领域或场景的预训练数据具有不同的语言特征或语义知识。通过对来自不同来源的文本数据的混合进行预训练,LLM可以获得广泛的知识范围,并可能表现出强大的泛化能力。当混合不同的来源时,需要仔细设置预训练数据的分布,因为这也可能影响LLM在下游任务中的性能。Gopher对数据分布进行消融实验,以检查混合源对下游任务的影响。LAMBADA数据集的实验结果表明,增加书籍数据的比例可以提高模型从文本中捕获长期依赖关系的能力,增加C4数据集的比例可以改善C4验证数据集的性能。而作为副作用,对某个领域的过多数据进行训练会影响LLM在其他领域的泛化能力。因此,建议研究人员仔细确定来自不同领域的数据在预训练语料库中的比例,以便开发出更好地满足其特定需求的LLM。读者可以参考图2来比较不同LLM的数据源。
预训练数据量。
为了预训练有效的LLM,收集足够的高质量数据以满足LLM的数据量需求是很重要的。现有研究发现,随着LLM中参数规模的增加,还需要更多的数据来训练模型:就模型性能而言,在数据规模方面也观察到与模型规模相似的规模规律。最近的一项研究表明,由于预训练数据不足,许多现有LLM受到次优训练的影响。通过进行广泛的实验,它进一步证明,在给定的计算预算下,以相等的规模增加模型大小和数据大小可以产生更高效的计算模型(即Chinchilla模型)。最近,LLaMA表明,通过更多的数据和更长的训练,较小的模型也可以获得良好的性能。总体而言,建议研究人员更多地关注高质量数据的数量,以充分训练模型,尤其是在缩放模型参数时。
预训练数据的质量。
现有工作表明,在低质量语料库上进行预训练,如噪声、有毒和重复数据,可能会损害模型的性能。为了开发一个性能良好的LLM,至关重要的是要考虑收集的训练数据的数量和质量。最近的研究,如T5、GLaM和Gopher,已经调查了数据质量对下游任务性能的影响。通过比较在过滤和未过滤语料库上训练的模型的性能,他们得出了相同的结论,即在干净的数据上预训练LLM可以提高性能。更具体地说,数据的重复可能导致“双重下降”(指表现最初恶化,随后改善的现象),甚至压垮训练过程。此外,研究表明,重复数据会降低LLM从上下文中复制的能力,这可能会进一步影响LLM在上下文学习中的泛化能力。因此,如[56,59,69]中所建议的,必须小心地将预处理方法纳入预训练语料库中(如第4.1.2节所示),以提高训练过程的稳定性,避免影响模型性能。
在本节中,我们将回顾LLM的架构设计,即主流架构、预训练目标和详细配置。表3列出了几个具有代表性的LLM的模型卡以及公开的详细信息。
由于出色的并行性和容量,Transformer架构已成为开发各种LLM的事实骨干,使语言模型能够扩展到数百或数千亿个参数。通常,现有LLM的主流架构可以大致分为三大类型,即编码器-解码器、因果解码器和前缀解码器,如图4所示。
编码器-解码器体系结构。
vanilla Transformer模型建立在编码器-解码器架构上,该架构由两堆Transformer块组成,分别作为编码器和解码器。编码器采用堆叠的多头自注意层对输入序列进行编码,以生成其潜在表示,而解码器对这些表示进行交叉注意,并自回归生成目标序列。编码器-解码器PLM(例如T5和BART)在各种NLP任务上显示出有效性。到目前为止,只有少量的LLM是基于编码器-解码器架构构建的,例如Flan-T5。我们在第4.2.4节中留下了关于架构选择的详细讨论。
因果解码器体系结构。
因果解码器架构结合了单向注意力掩码,以确保每个输入词元只能关注过去的词元及其自身。通过解码器以相同的方式处理输入和输出词元。作为该体系结构的代表性语言模型,GPT系列模型是基于因果编码器体系结构开发的。特别是,GPT-3成功地证明了该架构的有效性,也展示了LLM惊人的上下文学习能力。有趣的是,GPT-1和GPT-2并没有表现出GPT-3中那样优越的能力,而且扩展似乎在增加该模型架构的模型容量方面发挥着重要作用。到目前为止,因果解码器已被各种现有的LLM广泛采用作为LLM的架构,如OPT、BLOOM和Gopher。注意,接下来讨论的因果解码器和前缀解码器都属于仅解码器架构。而当提到“仅解码器架构”时,除非另有说明,它主要是指现有文献中的因果解码器架构。
前缀解码器体系结构。
前缀解码器架构(也称为非因果解码器)修改了因果解码器的掩码机制,以使能够对前缀词元执行双向关注,并仅对生成的词元执行单向关注。这样,与编码器-解码器架构一样,前缀解码器可以对前缀序列进行双向编码,并逐个自回归预测输出词元,其中在编码和解码期间共享相同的参数。与其从头开始进行预训练,一个实用的建议是不断训练因果解码器,然后将它们转换为前缀解码器,以加速收敛,例如,U-PaLM是从PaLM导出的。现有的基于前缀解码器的代表性LLM包括GLM130B和U-PaLM。
对于这三种类型的架构,我们还可以考虑通过专家混合(MoE)缩放来扩展它们,其中每个输入的神经网络权重的子集被稀疏激活,例如,Switch Transformer和GLaM。研究表明,通过增加专家数量或总参数大小,可以观察到显著的性能改进。
自Transformer推出以来,人们提出了各种改进方案,以增强其训练稳定性、性能和计算效率。在这一部分中,我们将讨论Transformer的四个主要部分的相应配置,包括正则化、位置嵌入、激活函数以及注意力和偏差。为了使这项综述更加独立,我们在表4中列出了这些配置的详细公式。
归一化。
训练不稳定是训练前LLM面临的一个具有挑战性的问题。为了缓解这个问题,层归一化(layer Norm,LN)被广泛应用于Transformer架构中。LN的地位对LLM的性能至关重要。虽然最初的Transformer使用后LN,但大多数LLM使用前LN进行更稳定的训练,尽管性能有所下降。在预先LN的基础上,Sandwich-LN在残差连接之前添加额外的LN,以避免值爆炸。然而,研究发现,Sandwich-LN有时无法稳定LLM的训练,并可能导致训练的崩溃。最近,已经提出了几种先进的归一化技术作为LN的替代方案。在Gopher和Chinchilla中,RMS Norm因其在训练速度和性能方面的优势而被采用。与LN相比,DeepNorm在训练中表现出更好的稳定性保证能力,这已被GLM-130B采用,并进行了后归一化。此外,在嵌入层之后添加额外的LN也可以稳定LLM的训练。然而,它往往会导致性能显著下降,这在最近的几次LLM中已经被删除。
激活函数。
为了获得良好的性能,还需要在前馈网络中正确设置激活函数。在现有的LLM中,GeLU激活被广泛使用。此外,在最新的LLM(例如,PaLM和LaMDA)中,还使用了GLU激活的变体,特别是SwiGLU和GeGLU变体,它们在实践中通常获得更好的性能。然而,与GeLU相比,它们在前馈网络中需要额外的参数(约50%)。
位置嵌入。
由于Transformer中的自注意模块是置换等变的,因此使用位置嵌入来注入用于建模序列的绝对或相对位置信息。vanilla Transformer中有两种绝对位置嵌入变体,即正弦和学习位置嵌入,后者通常用于LLM。与绝对位置嵌入不同,相对位置编码根据键和查询之间的偏移生成嵌入,因此它可以在比训练期间看到的序列更长的序列上执行良好,即外推。ALiBi使用基于键和查询之间距离的惩罚来偏移注意力得分。实验结果表明,与其他位置嵌入相比,它具有更好的零样本泛化能力和更强的外推能力。此外,通过基于绝对位置设置特定的旋转矩阵,RoPE中的键和查询之间的分数可以用相对位置信息计算,这对长序列建模很有用。因此,RoPE已在几个最新的LLM中被广泛采用。
注意力和偏差。
除了原始Transformer中的完全自注意之外,GPT-3中采用了计算复杂度较低的稀疏注意(即因子化注意)。为了有效和高效地对较长序列进行建模,已经通过引入特殊注意力模式或考虑GPU内存访问(即FlashAttention)进行了更多尝试。此外,在最初的Transformer之后,大多数LLM保留了每个密集核和层范数中的偏差。然而,在PaLM和Galactica中,消除了偏差。这表明,没有偏差可以提高LLM的训练稳定性。
为了将所有这些讨论放在一起,我们总结了现有文献中关于详细配置的建议。为了增强泛化能力和训练稳定性,建议选择预RMS范数进行层归一化,并选择SwiGLU或GeGLU作为激活函数。然而,LN可能不会在嵌入层之后立即使用,这可能会导致性能下降。此外,对于位置嵌入,RoPE或ALiBi是更好的选择,因为它在长序列上表现更好。
预训练在将大规模语料库中的一般知识编码为大规模模型参数方面发挥着关键作用。对于LLM的训练,有两个常用的预训练任务,即语言建模和去噪自动编码。
语言建模。
语言建模任务(LM)是预训练仅解码器LLM的最常用目标,例如GPT3和PaLM。给定标记序列 x = { x 1 , ⋯ , x n } x=\{x_1,\cdots,x_n\} x={x1,⋯,xn},LM任务旨在基于序列中前面的词元 x < i x_{x<i,自回归预测目标词元 x i x_i xi。一般训练目标是最大限度地提高以下可能性:
L L M ( x ) = ∑ i = 1 n log P ( x i ∣ x < i ) . \begin{gather} \mathcal{L}_{LM}(x)=\sum^n_{i=1}\log P(x_i|x_{LLM(x)=i=1∑nlogP(xi∣x<i).
由于大多数语言任务都可以被视为基于输入的预测问题,因此这些仅解码器的LLM可能有利于隐含地学习如何以统一的LM方式完成这些任务。一些研究还表明,通过自回归预测下一个词元,仅解码器的LLM可以自然地迁移到某些任务,而无需微调。LM的一个重要变体是前缀语言建模任务,该任务是为使用前缀解码器架构预训练模型而设计的。随机选择的前缀内的词语元将不会用于计算前缀语言建模的损失。在预训练过程中看到的词元数量相同的情况下,前缀语言建模的性能略低于语言建模,因为序列中用于模型预训练的词元较少。
去噪自动编码。
除了传统的LM,去噪自动编码任务(DAE)也被广泛用于预训练语言模型。DAE任务的输入 x \ x ~ x_{\backslash\tilde x} x\x~是带有随机替换跨度的损坏文本。然后,对语言模型进行训练以恢复替换的词元 x ~ \tilde x x~。形式上,DAE的训练目标表示如下:
L D A E ( x ) = log P ( x ~ ∣ x \ x ~ ) . \begin{gather} \mathcal{L}_{DAE}(x)=\log P(\tilde x|x_{\backslash\tilde x}). \end{gather} LDAE(x)=logP(x~∣x\x~).
但是,DAE任务在实现上似乎比LM任务更复杂。因此,它还没有被广泛用于预训练大型语言模型。将DAE作为训练前目标的现有LLM包括T5和GLM-130B。这些模型主要用于以自回归的方式恢复替换的跨度。
架构和预训练任务的选择可能会导致LLM产生不同的归纳偏差,这将导致不同的模型能力。在这一部分中,我们总结了现有文献中关于这一问题的一些重要发现或讨论。
需要对架构和预训练目标的讨论进行更多的研究,以分析架构和预训练任务的选择如何影响LLM的容量,特别是对于编码器-解码器架构。除了主要架构外,LLM的详细配置也值得注意,第4.2.2节对此进行了讨论。
在这一部分中,我们回顾了训练LLM的重要设置、技术或技巧。
对于LLM的参数优化,我们提供了批量训练、学习率、优化器和训练稳定性的常用设置。
批量训练。
对于语言模型预训练,现有工作通常将批量大小设置为很大(例如,8196个示例或16M个词元),以提高训练稳定性和吞吐量。对于GPT-3和PaLM等LLM,他们引入了一种新策略,在训练过程中动态增加批量大小,最终达到百万规模。具体而言,GPT-3的批量大小正在从32K词元逐渐增加到3.2M词元。经验结果表明,批量大小的动态调度可以有效地稳定LLM的训练过程。
学习率。
现有的LLM通常采用类似的学习率计划,在预训练期间采用warm-up和衰减策略。具体而言,在最初0.1%至0.5%的训练步骤中,采用线性warm-up计划将学习率逐渐提高到最大值,该最大值范围约为 5 × 1 0 − 5 5\times10^{-5} 5×10−5至 1 × 1 0 − 4 1\times10^{-4} 1×10−4(例如,GPT-3为 6 × 1 0 − 5 6\times10^{-5} 6×10−5)。然后,在随后的步骤中采用余弦衰减策略,逐渐将学习率降低到其最大值的大约10%,直到训练损失收敛。
优化器。
Adam优化器和AdamW优化器被广泛用于训练LLM(例如,GPT3),其基于基于一阶梯度的优化的低阶矩的自适应估计。通常,其超参数设置如下: β 1 = 0.9 , β 2 = 0.95 \beta_1=0.9,\beta_2=0.95 β1=0.9,β2=0.95和 ϵ = 1 0 − 8 \epsilon=10^{-8} ϵ=10−8。同时,Adafactor优化器也被用于训练LLM(例如,PaLM和T5),这是Adam优化器的一个变体,专门设计用于在训练期间节省GPU内存。Adafactor优化器的超参数设置为: β 1 = 0.9 \beta_1=0.9 β1=0.9和 β 2 = 1.0 − k − 0.8 \beta_2=1.0-k^{-0.8} β2=1.0−k−0.8,其中 k k k表示训练步骤的数量。
稳定训练。
在LLM的预训练过程中,它经常会遇到训练不稳定的问题,这可能会导致模型崩溃。为了解决这个问题,权重衰减和梯度截断已被广泛使用,现有研究通常将梯度截断的阈值设置为1.0,将权重衰减率设置为0.1。然而,随着LLM的扩展,训练损失峰值也更有可能发生,导致训练不稳定。为了缓解这个问题,PaLM和OPT使用了一种简单的策略,该策略在尖峰发生之前从较早的检查点重新启动训练过程,并跳过可能导致问题的数据。此外,GLM发现嵌入层的异常梯度通常会导致尖峰,并提出缩小嵌入层梯度以缓解这种情况。
随着模型和数据大小的增加,在有限的计算资源下有效地训练LLM变得具有挑战性。特别是,需要解决两个主要技术问题,即提高训练吞吐量和将更大的模型加载到GPU内存中。在这一部分中,我们回顾了现有工作中广泛使用的几种方法来解决上述两个挑战,即3D并行、ZeRO和混合精度训练,并就如何利用它们进行训练提出了一般性建议。
3D并行。
3D并行实际上是三种常用的并行训练技术的组合,即数据并行、流水线并行和张量并行。接下来我们将介绍三种并行训练技术。
ZeRO
ZeRO技术由DeepSpeed库提出,主要研究数据并行中的内存冗余问题。如前所述,数据并行性要求每个GPU存储LLM的相同副本,包括模型参数、模型梯度和优化器参数。然而,并非所有上述数据都需要保留在每个GPU上,这将导致内存冗余问题。为了解决这个问题,ZeRO技术的目标是在每个GPU上只保留一小部分数据,而其余数据可以在需要时从其他GPU中检索。具体来说,ZeRO提供了三种解决方案,这取决于数据的三个部分的存储方式,即优化器状态分区、梯度分区和参数分区。经验结果表明,前两种解决方案没有增加通信开销,第三种解决方案增加了约50%的通信开销,但节省了与GPU数量成比例的内存。PyTorch实现了与ZeRO类似的技术,称为FSDP。
混合精度训练。
在以前的PLM(例如,BERT)中,32位浮点数,也称为FP32,主要用于预训练。近年来,为了预训练超大的语言模型,一些研究已经开始使用16位浮点数(FP16),这减少了内存使用和通信开销。此外,由于流行的NVIDIA GPU(例如A100)的FP16计算单元数量是FP32的两倍,因此可以进一步提高FP16的计算效率。然而,现有工作发现,FP16可能会导致计算精度的损失,从而影响最终的模型性能。为了缓解这种情况,一种称为脑浮点(BF16)的替代方案被用于训练,它比FP16分配更多的指数位和更少的有效位。对于预训练,BF16在表示精度方面通常比FP16表现得更好。
整体训练建议。
在实践中,上述训练技术,特别是3D并行性,经常被联合使用,以提高训练吞吐量和大模型加载。例如,研究人员结合了8路数据并行、4路张量并行和12路流水线并行,使BLOOM能够在384个A100 GPU上进行训练。目前,DeepSpeed、Colossal AI和Alpa等开源库可以很好地支持这三种并行训练方法。为了减少内存冗余,还可以使用ZeRO、FSDP和激活重新计算技术来训练LLM,这些技术已经集成到DeepSpeed、PyTorch和Megatron LM中。此外,混合精度训练技术(如BF16)也可以用于提高训练效率和减少GPU内存使用,同时需要硬件(如A100 GPU)的必要支持。由于训练大型模型是一个耗时的过程,因此预测模型性能和在早期检测异常问题是非常有用的。
为此,GPT-4最近引入了一种新机制,称为建立在深度学习堆栈上的可预测缩放,能够用更小的模型预测大型模型的性能,这可能对开发LLM非常有用。在实践中,可以进一步利用主流深度学习框架的辅助训练技术。例如,PyTorch支持数据并行训练算法FSDP(即,完全分片数据并行),如果需要,它允许将训练计算部分卸载到CPU。除了上述训练策略外,提高LLM的推理速度也很重要。通常,量化技术被广泛用于减少推理阶段LLM的时间和空间成本。在模型性能有所损失的情况下,量化语言模型的模型大小较小,可以实现更快的推理速度。对于模型量化,一个流行的选择是INT8量化。此外,一些研究工作试图开发更积极的INT4量化方法。最近,一些公开可用的语言模型的量化模型副本已经在hugging face上发布,包括BLOOM、GPT-J和ChatGLM。
经过预训练,LLM可以获得解决各种任务的一般能力。然而,越来越多的研究表明,LLM的能力可以根据具体目标进行进一步调整。在本节中,我们将介绍两种主要的方法来调整预先训练的LLM,即指令调整和对齐调整。前一种方法主要旨在增强(或解锁)LLM的能力,而后一种方法旨在使LLM的行为与人类的价值观或偏好保持一致。此外,我们还将讨论用于快速模型自适应的有效调整。在下文中,我们将详细介绍这三个部分。
本质上,指令调整是在自然语言形式的格式化实例集合上微调预训练的LLM的方法,这与监督微调和多任务提示训练高度相关。为了执行指令调优,我们首先需要收集或构造指令格式的实例。然后,我们使用这些格式化的实例以监督学习的方式对LLM进行微调(例如,使用序列到序列损失进行训练)。在指令调整后,LLM可以表现出对看不见的任务进行概括的卓越能力,即使在多语言环境中也是如此。
最近的一项综述对指令调整的研究进行了系统综述。相比之下,我们主要关注指令调整对LLM的影响,并提供了详细的指导方针或策略,例如收集和调整。此外,我们还讨论了使用指令调整来满足用户的真实需求,这在现有的LLM中得到了广泛应用,例如InstructGPT和GPT-4。
通常,指令格式的实例由任务描述(称为指令)、输入输出对和少量示例(可选)组成。作为重要的公共资源,现有研究已经发布了大量以自然语言格式化的标记数据(见表6中的可用资源列表)。接下来,我们将介绍构造格式化实例的两种主要方法(见图5),然后讨论实例构造的几个关键因素。
格式化现有数据集。
在提出指令调整之前,几项早期研究收集了来自各种任务(例如,文本摘要、文本分类和翻译)的实例,以创建有监督的多任务训练数据集。作为指令调优实例的主要来源,使用自然语言任务描述来格式化这些多任务训练数据集是很方便的。具体而言,最近的工作用人工编写的任务描述扩充了标记的数据集,这指导LLM通过解释任务目标来理解任务。例如,在图5(b)中,为问答任务中的每个示例添加了任务描述“Please answer this question”。在指令调整之后,LLM可以通过遵循其任务描述,很好地推广到其他看不见的任务。特别是,已经表明,指令是LLM任务泛化能力的关键因素:通过在删除任务描述的标记数据集上微调模型,会导致模型性能急剧下降。为了更好地生成用于指令调整的标记实例,已经提出了一个众包平台PromptSource来有效地创建、共享和验证不同数据集的任务描述。为了丰富训练实例,几项研究还试图用专门设计的任务描述来反转现有实例的输入输出对,以进行教学调整。例如,给定一个问答对,我们可以通过预测问题条件答案来创建一个新的实例(例如,“请根据答案生成问题:”)。此外,一些工作还利用启发式任务模板将大量未标记的文本转换为标记的实例。
格式化人类需求。
尽管大量的训练实例都是用指令格式化的,但它们主要来自公共NLP数据集,要么缺乏指令多样性,要么与真实的人类需求不匹配。为了克服这个问题,InstructGPT建议将真实用户提交给OpenAI API的查询作为任务描述。用户查询是用自然语言表达的,特别适合于激发LLM的指令遵循能力。此外,为了丰富任务的多样性,人类标注者还被要求为现实生活中的任务编写指令,包括开放式生成、开放式问答、头脑风暴和聊天。然后,他们让另一组标记员直接回答这些指令作为输出。最后,他们将一条指令(即收集的用户查询)和预期输出(即人工编写的答案)配对作为训练实例。请注意,InstructionGPT还使用这些以自然语言格式化的真实世界任务进行对齐调整(在第5.2节中讨论)。此外,GPT-4设计了潜在的高风险指令,并指导模型通过出于安全考虑的监督微调来拒绝这些指令。此外,为了减轻人工注释的负担,还提出了几种半自动方法,通过将现有实例输入LLM来构建实例,以生成不同的任务描述和实例。
实例构建的关键因素。
指令实例的质量对模型的性能有着重要的影响。在这里,我们讨论一些基本因素,例如实例构建。
总之,指令的多样性似乎比实例的数量更重要,因为性能良好的InstructionGPT和Alpaca使用的指令(或实例)比Flan系列LLM更少但更多样。此外,邀请标注人员编写人工需求任务比使用特定于数据集的任务更有用。尽管如此,它仍然缺乏注释人类需求实例的指导方针,使得任务组合在某种程度上具有启发性。为了减少人工操作,我们可以重用现有的格式化数据集(表6),也可以使用现有的LLM自动构建指令。
与预训练不同,指令调整通常更有效,因为只有中等数量的实例用于训练。由于指令调整可以被视为一个有监督的训练过程,其优化在几个方面与预训练不同,例如训练目标(即序列到序列的损失)和优化配置(例如较小的批量大小和学习率),这些在实践中需要特别注意。除了这些优化配置之外,指令调优还需要考虑两个重要方面:
平衡数据分布。
由于指令调整涉及不同任务的混合,因此在微调过程中平衡不同任务的比例很重要。一种广泛使用的方法是示例比例混合策略,即组合所有数据集,并从混合的数据集中平均采样每个实例。此外,根据最近的研究结果,增加高质量集合(例如,FLAN和P3)的采样率通常可以提高性能。然而,通常设置最大上限来控制数据集在指令调整过程中可以包含的最大示例数,这是为了防止较大的数据集压倒整个分布。在实践中,根据不同的数据集,最大上限通常设置为数千或数万。
将指令调整与预训练相结合。
为了使调整过程更加有效和稳定,OPT-IML在指令调整期间合并了预训练数据,这可以被视为模型调整的正则化。此外,一些研究试图使用多任务学习,使用预训练数据(即纯文本)和指令调整数据(即格式化数据集)的混合,从头开始训练模型,而不是使用单独的两阶段过程(预训练,然后是指令调整)。具体而言,GLM-130B和Galactica将指令格式的数据集作为预训练语料库的一小部分集成到预训练LLM中,这可能同时实现预训练和指令调整的优势。
在这一部分中,我们从两个主要方面讨论了指令调整对LLM的影响。
性能改进。
尽管在中等数量的实例上进行了调整,但指令调整已成为提高或解锁LLM能力的重要方式。最近的研究对多个尺度(从77M到540B)的语言模型进行了实验,表明不同尺度的模型都可以从指令调整中受益,随着参数尺度的增加,性能得到改善。此外,具有指令调整的较小模型甚至可以比没有微调的较大模型执行得更好。除了模型规模之外,指令调整还证明了各种模型架构、预训练目标和模型自适应方法的一致改进。在实践中,指令调整为增强现有语言模型(包括小型PLM)的能力提供了一种通用方法。此外,它也比预训练成本低得多,因为LLM所需的指令数据量明显小于预训练数据。
任务概括。
指令调整鼓励模型理解用于完成任务的自然语言指令。它赋予LLM遵循人类指令执行特定任务而无需示例的能力(通常被认为是一种涌现能力),即使是在看不见的任务上。大量研究已经证实了指令调整的有效性,以在可见和不可见的任务上实现卓越的性能。此外,指令调整已被证明有助于缓解LLM的几个弱点(例如,在没有完成特定任务的情况下重复生成或补充输入),从而提高LLM解决现实世界任务的能力。此外,经过指令调优训练的LLM可以推广到跨语言的相关任务。例如,BLOOMZ-P3是在BLOOM的基础上使用纯英语任务集合P3进行微调的。有趣的是,与BLOOM相比,BLOOMZ-P3在多语言句子完成任务方面可以实现50%以上的改进,这表明指令调整可以帮助LLM从纯英语数据集中获得一般任务技能,并将这些技能转移到其他语言。此外,研究发现,仅使用英语指令可以在多语言任务上产生令人满意的结果,这有助于减少针对特定语言的指令工程的工作量。
本部分首先介绍了对齐的背景及其定义和标准,然后重点介绍了用于对齐LLM的人类反馈数据的收集,最后讨论了从人类反馈中强化学习用于对齐调整的关键技术。
背景
LLM在广泛的NLP任务中显示出非凡的能力。然而,这些模型有时可能表现出意想不到的行为,例如编造虚假信息、追求不准确的目标以及产生有害、误导和有偏见的表达。对于LLM,语言建模目标通过单词预测预训练模型参数,同时缺乏对人类价值观或偏好的考虑。为了避免这些意想不到的行为,有人提出了人类对齐,以使LLM的行为符合人类的期望。然而,与最初的预训练和适应调整(例如,指令调整)不同,这种调整需要考虑非常不同的标准(例如,有用性、诚实性和无害性)。已经表明,对齐可能在一定程度上损害LLM的一般能力,这在相关文献中被称为对齐税。
对齐标准。
近年来,人们越来越关注制定多种标准来规范LLM的行为。在这里,我们以三个具有代表性的比对标准(即有用、诚实和无害)为例进行讨论,这些标准在现有文献中已被广泛采用。此外,从不同的角度来看,LLM还有其他对齐标准,包括行为、意图、激励和内部,这些标准与上述三个标准基本相似(或至少具有相似的对齐技术)。根据具体需要修改这三个标准也是可行的,例如,用正确取代诚实或专注于一些特定的标准。接下来,我们将简要解释三个具有代表性的对齐标准:
正如我们所看到的,这些标准是相当主观的,是在人类认知的基础上发展起来的。因此,很难将它们直接表述为LLM的优化目标。在现有的工作中,有许多方法可以在对齐LLM时满足这些标准。一种很有前途的技术是rea teaming,它涉及使用手动或自动手段以对抗性的方式探测LLM,以产生有害的输出,然后更新LLM以防止此类输出。
在预训练阶段,LLM使用大规模语料库上的语言建模目标进行训练。然而,它不能考虑人类对LLM输出的主观和定性评估(在本综述中称为人类反馈)。高质量的人类反馈对于使LLM与人类偏好和价值观保持一致非常重要。在这一部分中,我们将讨论如何选择一组人类标签员进行反馈数据收集。
人工标记员选择。
在现有工作中,生成人类反馈数据的主要方法是人类注释。这突出了选择合适的人工标记员的关键作用。为了提供高质量的反馈,人工标记员应该具有合格的教育水平和出色的英语熟练程度。例如,Sparrow要求人工标记员必须是以英语为母语的英国人,并且至少获得了本科学历。此外,在[224]中,约有一半的高优先级任务的人工标记员是从美国亚马逊机械土耳其公司招聘的,具有硕士资格。即便如此,几项研究[112226]发现,研究人员和人工标记员的意图之间仍然存在不匹配,这可能导致低质量的人类反馈,并导致LLM产生意想不到的输出。为了解决这个问题,InstructionGPT通过评估人工标记员和研究人员之间的协议,进一步进行了筛选过程来过滤标记员。具体来说,研究人员首先标记少量数据,然后测量他们与人工标记员之间的一致性。将选择协议最高的标记员进行后续的标注工作。在其他一些工作中,“超级评分者”被用来确保人类反馈的高质量。研究人员评估人工标记员的性能,并选择一组性能良好的人工标记员(例如,高一致性)作为超级评分机。在随后的研究中,超级评分者将优先与研究人员合作。当人工标记员对LLM的输出进行注释时,有助于指定详细的说明,并为人工标记员提供即时指导,这可以进一步规范标记员的注释。
人类反馈收集。
在现有的工作中,主要有三种方法来收集人工标记员的反馈和偏好数据。
在下文中,我们将重点介绍一种众所周知的技术,即来自人类反馈的强化学习(RLHF),该技术已被广泛用于最近强大的LLM,如ChatGPT。如下文所述,第5.2.1节中引入的对齐标准可以通过学习LLM对用户查询的响应的人类反馈来实现。
为了使LLM与人类价值观保持一致,已经提出了从人类反馈中强化学习(RLHF),以利用收集的人类反馈数据对LLM进行微调,这有助于改进一致标准(例如,有用性、诚实性和无害性)。RLHF采用强化学习(RL)算法(例如,近端策略优化(PPO)),通过学习奖励模型使LLM适应人类反馈。这种方法将人类纳入训练循环,以开发良好对齐的LLM,如InstructGPT所示。
RLHF系统。
RLHF系统主要包括三个关键组件:预训练的待对齐LM、从人类反馈中学习的奖励模型和训练LM的RL算法。具体地说,预训练的LM通常是用现有的预训练LM参数初始化的生成模型。例如,OpenAI使用175B GPT-3作为其第一个流行的RLHF模型InstructGPT,DeepMind使用2800亿参数模型Gopher作为其GopherCite模型。此外,奖励模型(RM)通常以标量值的形式提供反映人类对LM生成的文本的偏好的(学习的)引导信号。奖励模型可以采取两种形式:微调的LM或使用人类偏好数据从头训练的LM。现有工作通常采用具有不同于对齐LM的参数尺度的奖励模型。例如,OpenAI分别使用6B GPT-3和DeepMind使用7B Gopher作为奖励模型。最后,为了使用来自奖励模型的信号来优化预训练的LM,设计了一种用于大规模模型调整的特定RL算法。具体而言,近端策略优化(PPO)是现有工作中广泛使用的RL算法。
RLHF的关键步骤。
图6说明了RLHF的整体三步过程,如下所述。
在上文中,我们讨论了根据特定目标调整LLM的指令调整和对齐调整方法。由于LLM由大量的模型参数组成,因此执行全参数调整的成本很高。在本节中,我们将讨论如何对LLM进行有效的调优。我们首先回顾了Transformer语言模型的几种具有代表性的参数有效微调方法,然后总结了现有的参数有效调优LLM工作。
在现有文献中,参数有效微调一直是一个重要的主题,旨在减少可训练参数的数量,同时尽可能保持良好的性能。在接下来的内容中,我们简要回顾了Transformer语言模型的四种参数高效微调方法,包括适配器调优、前缀调优、提示调优和LoRA。
适配器调整。
适配器调整将小型神经网络模块(称为适配器)纳入Transformer模型。为了实现适配器模块,在[233234]中提出了一种瓶颈架构,该架构首先将原始特征向量压缩到较小的维度(然后进行非线性变换),然后将其恢复到原始维度。适配器模块将集成到每个Transformer层中,通常在Transformer层的两个核心部分(即注意力层和前馈层)中的每一个之后使用串行插入。或者,并行适配器也可以用于Transformer层,其中它相应地将两个适配器模块与注意力层和前馈层并行放置。在微调过程中,适配器模块将根据特定的任务目标进行优化,而原始语言模型的参数在此过程中被冻结。通过这种方式,我们可以有效地减少微调过程中可训练参数的数量。
前缀调整。
前缀调整为语言模型中的每个Transformer层预先准备一系列前缀,这些前缀是一组可训练的连续向量。这些前缀向量是特定于任务的,可以被视为虚拟词元嵌入。为了优化前缀向量,已经提出了一种重新参数化技巧,通过学习将较小矩阵映射到前缀的参数矩阵的MLP函数,而不是直接优化前缀。事实证明,这个技巧对稳定的训练是有用的。优化后,映射函数将被丢弃,只保留导出的前缀向量,以增强特定任务的性能。由于只训练前缀参数,因此可以实现参数有效的模型优化。与前缀调优类似,ptuning v2将逐层提示向量合并到Transformer架构中,专门用于自然语言理解,该架构还利用多任务学习来联合优化共享提示。它已被证明有助于提高自然语言理解任务中不同参数尺度的模型性能。
提示调整。
与前缀调优不同,提示调优主要关注在输入层合并可训练的提示向量。基于离散提示方法,它通过包括一组软提示词元(以自由形式或前缀形式)来增强输入文本,然后采用提示增强输入来解决特定的下游任务。在实现中,将特定于任务的提示嵌入和输入文本嵌入相结合,然后将其输入到语言模型中。P-tuning提出了一种结合上下文、提示和目标标记的自由形式,可以应用于自然语言理解和生成的架构。他们通过双向LSTM进一步学习软提示词元的表示。另一种有代表性的方法命名为提示调优,直接在输入前添加前缀提示。在训练过程中,根据特定任务的监督,只学习提示嵌入。然而,由于该方法在输入层仅包括少量可训练参数,因此发现性能高度依赖于底层语言模型的模型容量。
低秩自适应(LoRA)。
LoRA在每个密集层施加用于近似更新矩阵的低秩约束,以减少用于适应下游任务的可训练参数。考虑优化参数矩阵 W W W的情况。更新过程可以用一般形式写成: W ← W + Δ W W\leftarrow W+\Delta W W←W+ΔW。LoRA的基本思想是冻结原始矩阵 W ∈ R m × n W\in\mathbb{R}^{m\times n} W∈Rm×n,同时用低秩分解矩阵逼近参数更新 Δ W \Delta W ΔW,即 Δ W = A ⋅ B ⊤ \Delta W=A\cdot B^\top ΔW=A⋅B⊤,其中 A ∈ R m × k A\in\mathbb{R}^{m\times k} A∈Rm×k和 B ∈ R n × k B\in\mathbb{R}^{n\times k} B∈Rn×k是任务自适应的可训练参数, r ≪ min ( m , n ) r\ll\min(m,n) r≪min(m,n)是降秩。LoRA的主要优点是它可以在很大程度上节省内存和存储使用(例如,VRAM)。此外,只能保留单个大型模型副本,同时保留许多特定于任务的低秩分解矩阵,以适应不同的下游任务。此外,一些研究还讨论了如何以更原则的方法设置秩,例如,基于重要性分数的分配和无搜索的最优秩选择。
除了上述方法之外,还对Transformer语言模型的有效调优进行了广泛的研究。然而,关于高效调优的更全面的讨论超出了本文的范围,可以在有关该主题的相关论文中找到。
随着LLM的兴起,高效调优因在下游任务中开发更轻量级的自适应方法而引起了越来越多的研究关注。
特别是,LoRA已被广泛应用于开源LLM(如LLaMA和BLOOM),用于参数高效微调。在这些研究尝试中,LLaMA及其变体在参数有效调整方面受到了广泛关注。例如,Alpaca-LoRA已经使用LoRA作为Alpaca的轻量级调优版本(一个微调的7B LLaMA模型,具有52K的人类指令示例)进行了训练。Alpaca-LoRA有多种不同语言或模型大小的探索,可以在收藏页面中找到。此外,LLaMA-Adapter将可学习的提示向量插入到每个Transformer层中,其中提出了零初始化注意力,以通过减轻拟合不足的提示向量的影响来改进训练。此外,他们还将这种方法扩展到多模态环境中,例如视觉问答。
此外,还进行了一项实证研究,以检验不同的调整方法对语言模型的影响。他们在三种开源LLM(即GPT-J(6B)、BLOOM(7.1B)和LLaMA(7B))上比较了四种有效的调整方法,包括串行适配器调整、并行适配器调整和LoRA,以进行评估。基于在六个数学推理数据集上的实验结果,他们表明,这些高效的调优方法在困难任务上的性能低于参考基线GPT-3.5,而在简单任务上的表现相当。总体而言,在这些比较方法中,LoRA表现相对较好,使用的可训练参数明显较少。
作为一个重要的资源,库PEFT(代表参数有效微调)已经在GitHub上发布。它包括几种广泛使用的有效调整方法,包括LoRA/AdaLoRA、前缀调整、P-调整和提示调整。此外,它支持许多语言模型,如GPT-2和LLaMA,还涵盖了几个具有代表性的视觉转换器模型(例如,ViT和Swin-Transformer)。
如第5.3.1节所述,现有文献中提出了大量有效的调整方法。然而,这些方法中的大多数都是在小型的预训练的语言模型上测试的,而不是LLM。到目前为止,在不同的设置或任务下,不同的高效调优方法对大型语言模型的影响仍然缺乏深入的研究。
在预训练或适应调整之后,使用LLM的一个主要方法是设计合适的提示策略来解决各种任务。一种典型的提示方法是上下文学习,它以自然语言文本的形式制定任务描述和/或示例。此外,思维链提示可以通过将一系列中间推理步骤引入提示来增强上下文学习。接下来,我们将详细介绍这两种技术。
作为一种特殊的提示形式,上下文学习(ICL)与GPT-3一起首次提出,它已成为利用LLM的典型方法。
如[55]所述,ICL使用格式化的自然语言提示,包括任务描述和/或一些任务示例作为示例。图7显示了ICL的示意图。首先,从任务描述开始,从任务数据集中选择几个例子作为示例。然后,将它们按特定的顺序组合起来,用专门设计的模板形成自然语言提示。最后,将测试实例附加到示例中,作为LLM生成输出的输入。基于任务示例,LLM可以在没有显式梯度更新的情况下识别并执行新任务。
形式上,设 D k = { f ( x 1 , y 1 ) , ⋯ , f ( x k , y k ) } D_k=\{f(x_1,y_1),\cdots,f(x_k,y_k)\} Dk={f(x1,y1),⋯,f(xk,yk)}表示一组具有 k k k个示例的示例,其中 f ( x k , y k ) f(x_k,y_k) f(xk,yk)是将第 k k k个任务示例转换为自然语言提示的提示函数。给定任务描述 I I I、示例 D k D_k Dk和新的输入查询 x k + 1 x_{k+1} xk+1,从LLM生成的输出 y ^ k + 1 \hat y_{k+1} y^k+1的预测可以公式化如下:
L L M ( I , f ( x 1 , y 1 ) , ⋯ , f ( x k , y k ) , ⏟ d e m o s t r a t i o n s f ( x k + 1 ⏟ i n p u t , _ _ _ ⏟ a n s w e r ) ) → y ^ k + 1 . \begin{gather} LLM(I,\underbrace{f(x_1,y_1),\cdots,f(x_k,y_k),}_{demostrations}f(\underbrace{x_{k+1}}_{input},\underbrace{\_\_\_}_{answer}))\rightarrow\hat y_{k+1}. \end{gather} LLM(I,demostrations f(x1,y1),⋯,f(xk,yk),f(input xk+1,answer ___))→y^k+1.
其中实际答案 y k + 1 y_{k+1} yk+1被保留为待由LLM预测的空白。由于ICL的性能在很大程度上依赖于示例,因此在提示中正确设计示例是一个重要问题。根据公式(6)中的构建过程,我们重点讨论了在提示中格式化示例的三个主要方面,包括如何选择组成示例的示例,使用函数 f ( ⋅ ) f(\cdot) f(⋅)将每个示例格式化为提示,以及以合理的顺序排列示例。
综述论文中对ICL进行了全面的综述,我们建议读者参考它,对该主题进行更全面、详细的讨论。与本次综述相比,我们特别从两个主要方面讨论了将ICL应用于LLM,即示范设计和ICL的底层机制。此外,ICL还与指令调优(在第5.1节中讨论)有着密切的联系,因为两者都使用自然语言来格式化任务或实例。然而,指令调优需要对LLM进行微调以进行自适应,而ICL只提示LLM进行使用。此外,指令调优可以增强LLM执行目标任务的ICL能力,特别是在零样本设置下(仅使用任务描述)。
几项研究表明,ICL的有效性受到示例设计的高度影响。在第6.1.1节的讨论之后,我们将从示例选择、格式和顺序三个主要方面介绍ICL的示例设计。
示例选择。
ICL的性能往往与不同的示例有很大的差异,因此选择能够有效利用LLM的ICL能力的示例子集很重要。有两种主要的示例选择方法,即启发式和基于LLM的方法:
总之,如[261]所述,对于上述两种选择方法,ICL中选择的示例应包含关于要解决的任务的足够信息,并与测试查询相关。
示例格式。
选择任务示例后,下一步是将它们集成并格式化为LLM的自然语言提示。一种简单的方法是用相应的输入输出对实例化预定义的模板。为了构建更具信息性的模板,最近的研究考虑添加任务描述或通过思维链提示增强LLM的推理能力。例如,在[208]中,作者收集了一个大规模的数据集,其中包含由人类编写的任务描述。在使用该数据集进行调优后,可以提高可见任务的性能,LLM也可以在一定程度上推广到不可见任务。为了降低注释成本,[219]中提出了一种半自动化方法,即使用由人工编写的任务描述组成的种子集来指导LLM为新任务生成任务描述。由于为不同的任务手动注释示例格式的成本很高,一些工作还研究了如何自动生成高质量的示例格式。作为两种具有代表性的方法,Auto-CoT利用带有零样本提示“让我们一步一步思考”的LLM来生成中间推理步骤,而至少至多提示首先查询LLM以执行问题分解,然后利用LLM根据之前解决的中间答案顺序解决子问题。
示例顺序。
LLM有时会受到近因偏见的影响,即他们倾向于重复接近示例结束的答案。因此,以合理的顺序安排示例(即任务示例)非常重要。早期的工作提出了几种启发式方法来快速找到一个好的顺序。例如,可以根据它们与嵌入空间中查询的相似性直接组织示例:越相似,越接近结尾。此外,全局和局部熵度量可用于对不同的示例顺序进行评分。为了整合更多的任务信息,最近的一些研究提出最小化压缩和传输任务标签所需的代码长度,这受到了信息论的启发。然而,这些方法需要额外的标记数据作为验证集,以评估特定示例订单的性能。为了消除这种需要,作者在[248]中建议对LLM本身的验证数据进行采样。
经过预训练后,LLM可以在不更新的情况下展现出有趣的ICL能力。在下文中,我们讨论了关于LLM的ICL能力的两个关键问题,即“预训练如何影响ICL能力”和“LLM如何在推理过程中执行ICL”。
预训练如何影响ICL?
ICL是在GPT-3中首次提出的,它表明随着模型尺寸的增大,ICL的能力变得更加重要。然而,一些研究表明,小规模的PLM也可以在专门设计的训练任务中表现出强大的ICL能力(例如,学习以任务示例和查询作为输入来预测标签),甚至可能超过更大的模型。这表明训练任务的设计是影响LLM ICL能力的一个重要因素。除了训练任务,最近的研究还调查了ICL和预训练语料库之间的关系。研究表明,ICL的性能在很大程度上取决于预训练语料库的来源,而不是规模。另一项研究对训练数据分布的影响进行了深入分析。他们发现,当训练数据可以聚集到许多不常见的类中,而不是均匀分布时,ICL就会出现。此外,作者在[261]中从理论上解释了ICL是对表现出长程连贯性的文档进行预训练的产物。
LLM如何执行ICL?
在推理阶段,研究人员专注于基于给定的示例来分析ICL能力是如何运行的,因为不涉及显式学习或更新。他们通常从梯度下降的角度进行分析,并将ICL视为隐式微调。在这个框架下,ICL过程可以解释如下:通过前向计算,LLM生成关于示例的元梯度,并通过注意力机制隐式地执行梯度下降。实验还表明,LLM中的某些注意力头能够执行与任务无关的原子操作(例如,复制和前缀匹配),这与ICL能力密切相关。为了进一步探索ICL的工作机制,一些研究将ICL抽象为一个算法学习过程。具体而言,作者在[272]中发现,LLM在预训练期间基本上通过其参数对隐式模型进行编码。通过ICL中提供的示例,LLM可以实现诸如梯度下降之类的学习算法,或者直接计算闭合形式的解以在前向计算期间更新这些模型。在这种解释框架下,已经表明LLM可以有效地学习简单的线性函数,甚至可以使用ICL学习一些复杂的函数,如决策树。
思想链(CoT)是一种改进的提示策略,用于提高LLM在复杂推理任务上的性能,如算术推理、常识推理和符号推理。CoT没有像ICL中那样简单地用输入输出对构建提示,而是结合了中间推理步骤,这些步骤可以将最终输出引导到提示中。在下文中,我们将详细说明与ICL一起使用CoT,并讨论CoT提示何时以及为什么有效。
通常,CoT可以在两种主要设置中与ICL一起使用,即小样本和零样本设置,如下所述。
小样本CoT。
小样本CoT是ICL的一个特例,它通过结合CoT推理步骤,将每个示例的输入、输出扩充为输入、CoT、输出。为了应用这一策略,我们接下来讨论两个关键问题,即如何设计适当的CoT提示和如何利用生成的CoT来获得最终答案。
零样本CoT
与小样本CoT不同,零样本CoT不包括提示中的人工注释任务示例。相反,它直接生成推理步骤,然后使用生成的CoT来导出答案。零样本CoT最早在[281]中提出,其中LLM首先由“让我们一步一步思考”提示生成推理步骤,然后由“因此,答案是”提示得出最终答案。他们发现,当模型规模超过一定规模时,这种策略会大大提高性能,但对小规模模型无效,显示出显著的涌现能力模式。为了在更多任务上释放CoT能力,Flan-T5和Flan-PaLM进一步对CoT注释执行指令调优,并且改进了在不可见任务上的零样本性能。
在这一部分中,我们讨论了与CoT相关的两个基本问题,即“CoT何时适用于LLM”和“LLM为什么可以执行CoT推理”。
CoT何时为LLM工作?
由于CoT是一种涌现能力,它只对足够大的模型(例如,通常包含10B或更多的参数)有积极影响,但对小模型没有影响。此外,由于CoT通过中间推理步骤增强了标准提示,因此它主要有效地改进了需要逐步推理的任务,如算术推理、常识推理和符号推理。然而,对于不依赖复杂推理的其他任务,它可能显示出比标准提示更差的性能,例如GLUE的MNLI-m/mm、SST-2和QQP。有趣的是,似乎只有当标准提示产生较差的结果时,CoT提示带来的性能增益才会显著。
为什么LLM可以执行CoT推理?
作为第二个问题,我们从以下两个方面讨论了CoT的潜在机制。
总之,CoT提示为激发LLM的推理能力提供了一种通用而灵活的方法。也有一些初步尝试将该技术扩展到解决多模态任务和多语言任务。除了将LLM与ICL和CoT直接结合使用外,最近的一些研究还探讨了如何将LLM的能力专门化为特定任务,这被称为模型专门化。例如,[294]中的研究人员通过微调LLM生成的CoT推理路径上的小规模Flan-T5,专门研究LLM的数学推理能力。模型专业化也可用于解决各种任务,如问答、代码合成和信息检索。
为了检验LLM的有效性和优越性,利用大量的任务和基准进行了实证评估和分析。我们首先介绍了用于语言生成和理解的LLM的三种基本评估任务,然后介绍了几种具有更复杂设置或目标的LLM高级任务,最后讨论了现有的基准和实证分析。
在这一部分中,我们主要关注LLM的三种评估任务,即语言生成、知识利用和复杂推理。值得注意的是,我们并不打算完全覆盖所有相关任务,而是只关注LLM中讨论或研究最广泛的任务。接下来,我们将详细介绍这些任务。
根据任务定义,现有的语言生成任务大致可以分为语言建模任务、条件文本生成任务和代码合成任务。请注意,代码合成不是一个典型的NLP任务,我们将其包括在内进行讨论,因为它可以通过与自然语言文本类似的生成方法中的许多LLM(根据代码数据训练)直接解决。
语言建模。
作为LLM最基本的能力,语言建模旨在基于先前的词元预测下一个词元,主要关注基本的语言理解和生成能力。为了评估这种能力,现有工作使用的典型语言建模数据集包括Penn Treebank、WikiText-103和Pile,其中困惑度量通常用于评估零样本设置下的模型性能。实证研究表明,在这些评估数据集上,LLM比以前最先进的方法带来了显著的性能提升。为了更好地测试文本中长程依赖关系的建模能力,引入了LAMBADA数据集,其中LLM被要求基于上下文的段落来预测句子的最后一个单词。然后,利用预测的最后单词的准确性和困惑性来评估LLM。如现有工作所示,语言建模任务的性能通常遵循缩放定律,这意味着缩放语言模型将提高准确性并减少困惑。
条件文本生成。
作为语言生成中的一个重要主题,条件文本生成专注于基于给定条件生成满足特定任务需求的文本,通常包括机器翻译、文本摘要和问答。为了测量生成的文本的质量,通常使用自动度量(例如准确性、BLEU和ROUGE)和人工评级来评估性能。由于强大的语言生成能力,LLM在现有的数据集和基准测试上取得了显著的性能,甚至超过了人类的性能(在测试数据集上)。例如,仅给定32个示例作为输入,具有上下文学习的GPT-3在SuperGLUE的平均得分上可以优于全数据微调的BERT-Large;在MMLU上,5-shot Chinchilla几乎是人类评分器平均精度的两倍,GPT-4在5-shot设置中进一步实现了最先进的性能,与之前的最佳模型相比,平均精度提高了10%以上。因此,它引起了人们对现有的条件文本生成任务基准是否能够适当地评估和反映LLM的能力的严重关注。考虑到这个问题,研究人员试图通过收集当前无法解决的任务(即LLM不能很好地执行的任务)或创建更具挑战性的任务,例如超长文本生成,来制定新的评估基准(例如,BIG bench Hard)。此外,最近的研究还发现,自动度量可能低估了LLM的生成质量。在OpenDialKG中,ChatGPT在BLEU和ROUGE-L指标上的表现不如微调后的GPT-2,同时赢得了人类判断的更多青睐。因此,需要投入更多的精力来开发更符合人类判断的新指标。
代码合成。
除了生成高质量的自然语言外,现有的LLM还显示出生成形式语言的强大能力,特别是满足特定条件的计算机程序(即代码),称为代码合成。与自然语言生成不同,由于生成的代码可以通过与相应的编译器或解释器执行来直接检查,现有工作大多通过计算测试用例的通过率来评估LLM生成的代码的质量,即pass@k。最近,提出了几个专注于功能正确性的代码基准来评估LLM的代码合成能力,如APPS、HumanEval和MBPP。通常,它们包括各种编程问题,以及用于正确性检查的文本规范和测试用例。为了提高这种能力,对代码数据进行微调(或预训练)LLM是关键,这可以有效地使LLM适应代码合成任务。此外,现有工作提出了生成代码的新策略,例如,对多个候选解决方案进行采样和规划引导解码,这可以被认为是程序员对错误修复和代码规划过程的模仿。令人印象深刻的是,LLM最近在编程竞赛平台Codeforces的用户中排名前28%,显示出了与人类的竞争表现。此外,GitHub Copilot已经发布,以帮助编程在编译IDE(例如,Visual Studio和JetBrains IDE),这些IDE可以支持多种语言,包括Python、JavaScript和Java。ACM通讯中一篇题为“编程的终结”的观点文章讨论了人工智能编程在计算机科学领域的影响,强调了向高度自适应LLM作为一种新的原子计算单元的重要转变。
主要问题。
尽管LLM在生成类人文本方面取得了出色的表现,但它们在语言生成中容易受到以下两个主要问题的影响。
知识利用是智能系统在支持事实证据的基础上完成知识密集型任务(如常识性问答和事实填充)的重要能力。具体而言,它要求LLM正确利用预训练语料库中丰富的事实知识,或在必要时检索外部数据。特别是,问答(QA)和知识填充是评估这种能力的两个常用任务。根据测试任务(问答或知识填充)和评估设置(有或没有外部资源),我们将现有的知识利用任务分为三类,即闭书QA、开卷QA和知识完成。
闭卷QA。
闭卷QA任务测试从预训练语料库中获得的LLM的事实知识,其中LLM应仅根据给定的上下文回答问题,而不使用外部资源。为了评估这种能力,有几个数据集可以利用,包括Natural Questions、Web Questions和TriviaQA,其中准确度度量被广泛采用。经验结果表明,LLM在这种情况下可以表现良好,甚至可以与最先进的开放域QA系统的性能相匹配。此外,LLM在闭卷QA任务上的性能也在模型大小和数据大小方面显示出一种缩放定律模式:缩放参数和训练词元可以增加LLM的容量,并帮助他们从预训练数据中学习(或记忆)更多知识。此外,在类似的参数量表下,具有更多与评估任务相关的预训练数据的LLM将获得更好的性能。此外,闭卷QA设置还为探究LLM编码的事实知识的准确性提供了一个试验台。然而,如现有工作所示,LLM在依赖细粒度知识的QA任务中可能表现不佳,即使它存在于预训练数据中。
开卷QA。
与闭卷QA不同,在开卷QA任务中,LLM可以从外部知识库或文档集合中提取有用的证据,然后根据提取的证据回答问题。典型的开卷QA数据集(例如,Natural Questions、OpenBookQA和SQuAD)与闭卷QA数据集重叠,但它们包含外部数据源,例如维基百科。准确性和F1分数的度量被广泛用于开卷QA任务的评估。为了从外部资源中选择相关知识,LLM通常与文本检索器(甚至搜索引擎)配对,文本检索器独立或与LLM联合训练。在评估中,现有的研究主要集中在测试LLM如何利用提取的知识来回答问题,并表明检索到的证据可以在很大程度上提高生成答案的准确性,甚至使较小的LLM优于10倍较大的LLM。此外,开卷QA任务还可以评估知识信息的最近性。预训练或从过时的知识资源中检索可能会导致LLM为时间敏感的问题生成错误的答案。
知识填充。
在知识填充任务中,LLM可能(在某种程度上)被视为一个知识库,可以利用它来填充或预测知识单元(例如,知识三元组)的缺失部分。这类任务可以调查和评估LLM从预训练数据中学习了多少和什么样的知识。现有的知识填充任务可以大致分为知识图填充任务(例如,FB15k237和WN18RR)和事实填充任务(如,WikiFact),其目的分别是填充知识图中的三元组和关于特定事实的不完整句子。实证研究表明,现有的LLM很难完成与特定关系类型相关的知识填充任务。如WikiFact上的评估结果所示,LLM在预训练数据中出现的几种频繁关系(如currency和作者)上表现良好,而在罕见关系(如发现者_或_事件者和地点_出生)上表现不佳。有趣的是,在相同的评估设置下(例如,在上下文学习中),InstructionGPT(即text-davinci-002)在WikiFact的所有子集中都优于GPT-3。这表明指令调整有助于LLM完成知识填充任务。
主要问题。
尽管LLM在获取和利用知识信息方面取得了关键进展,但仍存在以下两个主要问题。
复杂推理是指理解和利用支持性证据或逻辑得出结论或做出决定的能力。根据推理过程中涉及的逻辑和证据的类型,我们考虑将现有的评估任务分为三大类,即知识推理、符号推理和数学推理。
知识推理。
知识推理任务依赖于关于事实知识的逻辑关系和证据来回答给定的问题。现有工作主要使用特定的数据集来评估相应类型知识的推理能力,例如,用于常识性知识推理的CSQA/StrategyQA和用于科学知识推理的ScienceQA。除了预测结果的准确性外,现有工作还通过自动度量(例如BLEU)或人工评估评估了生成的推理过程的质量。通常,这些任务要求LLM根据事实知识进行逐步推理,直到找到给定问题的答案。为了获得逐步推理能力,已经提出了思维链(CoT)提示策略来增强LLM的复杂推理能力。如第6.2节所述,CoT将可以手动创建或自动生成的中间推理步骤纳入提示中,以指导LLM执行多步骤推理。这种方式在很大程度上提高了LLM的推理性能,在几个复杂的知识推理任务上产生了新的最先进的结果。此外,在将知识推理任务重新表述为代码生成任务后,研究人员发现LLM的性能可以进一步提高,尤其是在代码上预训练的LLM。然而,由于知识推理任务的复杂性,当前LLM在常识推理等任务上的性能仍然落后于人类结果。作为最常见的错误之一,LLM可能会基于错误的事实知识生成不准确的中间步骤,从而导致错误的最终结果。为了解决这个问题,现有工作提出了特殊的解码或集成策略,以提高整个推理链的准确性。最近,一项实证研究表明,LLM可能很难明确推断出特定任务所需的常识性知识,尽管它们可以成功地解决该问题。此外,它进一步表明,利用自我生成的知识可能无助于提高推理性能。
符号推理。
符号推理任务主要集中于在形式规则设置中操纵符号以实现一些特定目标,其中LLM在预训练过程中可能从未见过操作和规则。现有工作通常在最后一个字母串联和掷硬币的任务中评估LLM,其中评估示例需要与上下文中示例相同的推理步骤(称为域内测试)或更多步骤(称为域外测试)。对于域外测试的示例,LLM只能在上下文中看到带有两个单词的示例,但它要求LLM连接三个或更多单词的最后一个字母。通常,采用生成的符号的准确性来评估LLM在这些任务上的性能。因此,LLM需要理解复杂场景中符号操作及其组成之间的语义关系。然而,在域外环境下,由于LLM没有看到符号运算和规则的复杂组成(例如,上下文示例中运算数量的两倍),LLM很难捕捉到它们的准确含义。为了解决这个问题,现有的研究结合了草稿本和导师策略,以帮助LLM更好地操纵符号运算,从而生成更长、更复杂的推理过程。另一项研究工作利用形式化编程语言来表示符号运算和规则,这需要LLM生成代码,并通过使用外部解释器执行来执行推理过程。这种方式可以将复杂的推理过程分解为LLM和解释器的代码合成和程序执行,从而简化推理过程,获得更准确的结果。
数学推理。
数学推理任务需要综合利用数学知识、逻辑和计算来解决问题或生成证明语句。现有的数学推理任务主要分为数学问题求解和定理自动证明。对于数学问题解决任务,SVAMP、GSM8k和math数据集通常用于评估,其中LLM需要生成准确的具体数字或方程来回答数学问题。由于这些任务也需要多步骤推理,思维链提示策略已被广泛用于LLM,以提高推理性能。作为一种实用的策略,在大规模数学语料库上持续预训练LLM可以在很大程度上提高它们在数学推理任务中的性能。此外,由于不同语言的数学问题具有相同的数学逻辑,研究人员还提出了一个多语言数学单词问题基准来评估LLM的多语言数学推理能力。作为另一项具有挑战性的任务,自动定理证明(ATP)要求推理模型严格遵循推理逻辑和数学技能。为了评估该任务的性能,PISA和miniF2F是两个典型的ATP数据集,以验证成功率作为评估指标。作为一种典型的方法,现有的ATP工作利用LLM来帮助使用交互式定理证明器(ITP)搜索证明,如Lean、Metamath和Isabelle。ATP研究的一个主要局限是缺乏形式语言中的相关语料库。为了解决这一问题,一些研究利用LLM将非正式陈述转换为正式证明,以扩充新数据,或者生成草稿和证明草图,以减少证明的搜索空间。
主要问题。
尽管取得了进步,LLM在解决复杂推理任务方面仍然存在一些局限性。
除了上述基本评估任务外,LLM还表现出一些卓越的能力,需要特别考虑评估。在这一部分中,我们讨论了几种具有代表性的高级能力和相应的评估方法,包括人的一致性、与外部环境的互动和工具操作。接下来,我们将详细讨论这些高级能力。
希望LLM能够很好地符合人类的价值观和需求,即人类的一致性,这是LLM在现实世界应用中广泛使用的关键能力。
为了评估这种能力,现有的研究考虑了人类对齐的多种标准,如乐于助人、诚实和安全。为了提供帮助和诚实,可以利用对抗性问答任务(例如,TruthfulQA)来检查LLM在检测文本中可能的虚假方面的能力。此外,无害性也可以通过几个现有的基准进行评估,例如CrowS Pairs和Winogender。尽管使用上述数据集进行了自动评估,但人类评估仍然是有效测试LLM人类对齐能力的更直接的方法。OpenAI邀请了许多与AI风险相关领域的专家来评估和改进GPT-4在遇到风险内容时的行为。此外,对于人类对齐的其他方面(如真实性),一些研究建议使用特定的说明和设计注释规则来指导注释过程。实证研究表明,这些策略可以极大地提高LLM的人际协调能力。例如,在对通过与专家交互收集的数据进行对齐调整后,当GPT-4处理敏感或不允许的提示时,它的错误行为率可以大大降低。此外,高质量的预训练数据可以减少对齐所需的工作量。例如,由于科学语料库中的偏见较少,Galactica可能更无害。
除了标准评估任务外,LLM还能够接收来自外部环境的反馈,并根据行为指令执行行动,例如,用自然语言生成行动计划以操纵代理。这种能力也出现在LLM中,LLM可以生成详细且高度现实的行动计划,而较小的模型(例如GPT-2)往往会生成较短或无意义的计划。
为了测试这种能力,可以使用几个具体的人工智能基准进行评估,如下所述。VirtualHome为清洁和烹饪等家庭任务构建了一个3D模拟器,其中代理可以执行LLM生成的自然语言动作。ALFRED包括更具挑战性的任务,这些任务需要LLM来实现组成目标。BEHAVIOR专注于模拟环境中的日常琐事,并要求LLM生成复杂的解决方案,例如更改对象的内部状态。基于LLM生成的行动计划,现有的工作要么采用基准中的常规指标(例如,生成行动计划的可执行性和正确性),要么直接进行真实世界的实验并测量成功率,以评估这种能力。现有工作已经表明LLM在与外部环境互动和制定准确行动计划方面的有效性。最近,已经提出了几种改进的方法来增强LLM的交互能力,例如,设计类似代码的提示和提供真实世界的基础。
在解决复杂问题时,如果LLM认为有必要,他们可以求助于外部工具。通过用API调用封装可用工具,现有工作涉及多种外部工具,例如搜索引擎、计算器和编译器,以提高LLM在几个特定任务上的性能。最近,OpenAI支持在ChatGPT中使用插件,这可以为LLM提供语言建模之外的更广泛的能力。例如,网络浏览器插件使ChatGPT能够访问新信息。此外,结合第三方插件对于创建一个繁荣的基于LLM的应用程序生态系统尤其关键。
为了检验工具操作的能力,现有的工作大多采用复杂的推理任务进行评估,如数学问题解决(如GSM8k和SVAMP)或知识问答(如TruthfulQA),其中工具的成功利用对于提高LLM无法掌握的所需技能(如数值计算)非常重要。这样,评估的这些任务的性能可以反映LLM在工具操作中的能力。为了教LLM使用工具,现有研究添加了使用上下文中的工具来引出LLM的示例,或对关于工具使用的模拟数据进行微调LLM。现有工作发现,在工具的帮助下,LLM变得更有能力处理它们不擅长的问题,例如方程计算和利用实时信息,并最终提高最终性能。
总结以上三种能力对LLM的实际性能具有重要价值:符合人类的价值观和偏好(人类对齐)、在现实世界场景中正确行动(与外部环境的交互)和扩大能力范围(工具操纵)。除了上述三种高级能力外,LLM还可能表现出与某些任务(例如,数据注释)或学习机制(例如,自我完善)特别相关的其他能力。发现、衡量和评估这些新兴能力,以更好地利用和改进LLM,将是一个开放的方向。
在前面的部分中,我们讨论了LLM的评估任务及其相应的设置。接下来,我们将介绍现有的LLM评估基准和实证分析,重点是从一般角度探索更全面的讨论。
最近,已经发布了几个用于评估LLM的综合基准。在这一部分中,我们介绍了几个具有代表性且广泛使用的基准,即MMLU、BIG基准和HELM。
上述基准涵盖了评估LLM的各种主流评估任务。此外,还有几个基准侧重于评估LLM的特定能力,如用于多语言知识利用的TyDiQA和用于多语言数学推理的MGSM。为了进行评估,可以根据具体目标选择合适的基准。此外,还有一些开源评估框架可供研究人员在现有基准上评估LLM,或扩展新任务进行定制评估,如Language Model Evaluation Harness和OpenAI Evals。
除了建立大规模的评估基准外,大量研究还进行了全面分析,以调查LLM的优势和局限性。在这一部分中,我们从多面手(通用能力)和专家(特定领域能力)两个主要方面简要讨论了它们。
通用能力。
由于其卓越的表现,现有工作系统地评估了LLM的一般能力,以探索其在各种不同任务或应用中的能力。通常,这些研究主要集中在新出现的LLM(例如,ChatGPT和GPT-4)上,这些LLM以前没有得到很好的研究,讨论如下:
专业能力
由于LLM已经在大规模混合源语料库上进行了预训练,因此它们可以从预训练数据中获取丰富的知识。因此,LLM也被聘为特定领域的领域专家或专家。因此,最近的研究广泛探索了LLM用于解决特定领域任务的方法,并评估了LLM的适应能力。通常,这些研究收集或构建特定领域的数据集,以使用上下文学习来评估LLM的性能。由于我们的重点不是涵盖所有可能的应用领域,我们简要讨论了研究界相当关注的三个代表性领域,即医疗保健、教育和法律。
除了上述工作外,还从其他角度分析了LLM的能力。例如,最近的一些工作研究了LLM的类人特征,如自我意识、心理理论(ToM)和情感计算。特别是,对两个经典的错误信念任务进行的ToM实证评估推测,LLM可能具有类似ToM的能力,因为GPT-3.5系列中的模型在ToM任务中与九岁儿童的表现相当。此外,另一项工作已经调查了关于LLM的现有评估设置的公平性和准确性,例如,源预训练数据的大规模混合可能包含测试集中的数据。
在这项综述中,我们回顾了大型语言模型(LLM)的最新进展,并介绍了理解和使用LLM的关键概念、发现和技术。我们关注的是大型模型(即大小大于10B),而排除了现有文献中已充分涵盖的早期预训练语言模型(如BERT和GPT-2)的内容。特别是,我们的综述讨论了LLM的四个重要方面,即预训练、适应调整、利用和评估。对于每一个方面,我们都强调LLM成功的关键技术或发现。此外,我们还总结了开发LLM的可用资源,并讨论了复制LLM的重要实施指南。这项调查试图涵盖LLM的最新文献,并为研究人员和工程师提供了一个很好的参考资源。
接下来,我们总结了本次综述的讨论,并从以下几个方面介绍了LLM面临的挑战和未来的发展方向。
理论与原理。
为了理解LLM的潜在工作机制,最大的谜团之一是信息是如何通过非常大的深度神经网络分布、组织和利用的。揭示大语言模型能力的基础基本原理与要素这一点很重要。特别是,扩展似乎在提高LLM的容量方面发挥着重要作用。研究表明,当语言模型的参数规模增加到临界规模(例如,10B)时,一些涌现能力会以意想不到的方式出现(突然的性能飞跃),通常包括上下文学习、指令跟随和逐步推理。这些涌现的能力令人着迷但又令人困惑:LLM何时以及如何获得这些能力尚不清楚。最近的研究要么进行了广泛的实验来研究涌现能力的影响和对这些能力的贡献因素,要么用现有的理论框架解释一些特定的能力。一篇颇有见地的技术帖子也专门讨论了这个话题,以GPT系列模型为目标。然而,理解、表征和解释LLM的能力或行为的更正式的理论和原则仍然缺失。由于涌现能力与自然界中的相变非常相似,跨学科理论或原理(例如,LLM是否可以被视为某种复杂系统)可能有助于解释和理解LLM的行为。这些基本问题值得研究界探索,对开发下一代LLM很重要。
模型体系结构。
由于其可扩展性和有效性,由堆叠的多头自注意力层组成的Transformer已成为构建LLM的事实架构。已经提出了各种策略来提高该架构的性能,例如神经网络配置和可扩展的并行训练(见第4.2.2节中的讨论)。为了增强模型容量(例如,多回合会话能力),现有LLM通常保持较长的上下文窗口,例如,GPT-4-32k具有32768个令牌的超大上下文长度。因此,一个实际的考虑是降低标准自注意机制产生的时间复杂性(最初是二次成本)。研究更有效的Transformer变体在构建LLM中的影响很重要,例如,GPT3中使用了稀疏注意力。此外,灾难性遗忘对神经网络来说是一个长期的挑战,这也对LLM产生了负面影响。当用新数据调整LLM时,最初学习的知识很可能会被破坏,例如,根据一些特定任务微调LLM会影响LLM的总体能力。当LLM与人类价值观一致时,也会出现类似的情况(称为一致税)。因此,有必要考虑用更灵活的机制或模块来扩展现有的体系结构,这些机制或模块可以有效地支持数据更新和任务专门化。
模型训练。
在实践中,由于巨大的计算消耗以及对数据质量和训练技巧的敏感性,很难预训练有能力的LLM。因此,考虑到模型有效性、效率优化和训练稳定性等因素,开发更系统、更经济的预训练方法来优化LLM变得尤为重要。应该开发更多的模型检查或性能诊断方法(例如,GPT-4中的可预测缩放),以检测训练期间的早期异常问题。此外,它还要求更灵活的硬件支持或资源调度机制,以便更好地组织和利用计算集群中的资源。由于从头开始预训练LLM的成本非常高,因此设计一种合适的机制来基于公开可用的模型检查点(例如,LLaMA和Flan-T5)持续预训练或微调LLM是很重要的。为此,必须解决一些技术问题,例如灾难性遗忘和任务专门化。然而,到目前为止,仍然缺乏用于LLM的开源模型检查点,该检查点具有完整的预处理和训练日志(例如,准备预训练数据的脚本)以供复制。我们相信,在开源模型中报告更多的技术细节对LLM的研究将具有巨大的价值。此外,开发更多有效激发模型能力的改进调整策略也很重要。
模型利用率。
由于微调在实际应用中成本高昂,提示已成为使用LLM的突出方法。通过将任务描述和演示示例结合到提示中,上下文学习(一种特殊的提示形式)赋予LLM在新任务上表现良好的能力,在某些情况下甚至优于全数据微调模型。此外,为了增强复杂推理的能力,已经提出了先进的提示技术,以思维链策略为例,该策略将中间推理步骤包括在提示中。然而,现有的提示方法仍然存在以下几个不足之处。首先,它在提示的设计上涉及到大量的人力工作。自动生成用于解决各种任务的有效提示将非常有用。其次,一些复杂的任务(如形式证明和数值计算)需要特定的知识或逻辑规则,这些知识或规则可能无法用自然语言很好地表达或通过例子来证明。因此,为提示开发信息量更大、更灵活的任务格式化方法是很重要的。第三,现有的激励策略主要集中在单轮性能上。开发交互式提示机制(例如,通过自然语言对话)来解决复杂任务是有用的,ChatGPT已经证明这非常有用。
安全和对准。
尽管LLM有能力,但它们也面临着与小型语言模型类似的安全挑战。例如,LLM表现出产生幻觉的倾向,这些文本看起来似乎合理,但事实上可能不正确。更糟糕的是,LLM可能是由为恶意系统生成有害、有偏见或有毒文本的故意指令引发的,从而导致潜在的滥用风险。要详细讨论LLM的安全问题(例如,隐私、过度依赖、虚假信息和影响操作),读者可以参考GPT3/4技术报告。作为避免这些问题的主要方法,从人类反馈中强化学习(RLHF)已被广泛使用,将人类纳入训练循环中,以开发一致的LLM。如GPT-4所示,为了提高模型的安全性,在RLHF期间包括安全相关提示也很重要。然而,RLHF严重依赖于来自专业标记员的高质量人类反馈数据,这使得它很难在实践中得到正确实施。因此,有必要改进RLHF框架,以减少人类标注人员的工作量,并寻求一种更有效、数据质量有保证的标注方法,例如,可以使用LLM来协助标注工作。最近,红团队已被用于提高LLM的模型安全性,它利用收集的对抗性提示来细化LLM(即,避免来自红团队的攻击)。此外,为LLM建立适当的学习机制,通过聊天获得人类反馈,并直接利用它进行自我完善,也是有意义的。
应用和生态系统。
由于LLM在解决各种任务方面表现出强大的能力,它们可以应用于广泛的现实世界应用程序(即,遵循特定任务的自然语言指令)。作为一个显著的进步,ChatGPT可能改变了人类访问信息的方式,这一点在新Bing的发布中得到了实现。在不久的将来,可以预见LLM将对信息搜索技术产生重大影响,包括搜索引擎和推荐系统。此外,随着LLM的技术升级,智能信息助理的开发和使用将得到大力推动。在更广泛的范围内,这一波技术创新将导致LLM授权应用程序的生态系统(例如,ChatGPT对插件的支持),这与人类生活有着密切的联系。最后,LLM的兴起为人工通用智能(AGI)的探索提供了线索。它有望开发出比以往更多的智能系统(可能具有多模态信号)。然而,在这个发展过程中,人工智能的安全应该是主要关注的问题之一,即让人工智能为人类带来好处而不是坏处。
CODA:
这项综述是在我们的研究团队举行的一次讨论会上计划的,我们旨在总结大型语言模型的最新进展,作为团队成员可读性强的报告。初稿于2023年3月13日完成,我们的团队成员尽最大努力以相对客观、全面的方式纳入关于LLM的相关研究。然后,我们对文章的写作和内容进行了几次大范围的修改。尽管我们做出了种种努力,但这项调查仍然远非完美:我们可能会错过重要的参考文献或主题,也可能会有不严谨的表达或讨论。由于空间限制,通过设置选择标准,我们只能在图1和表1中包括一小部分现有LLM。然而,我们在GitHub页面上设置了一个更宽松的模型选择标准(https://github.com/RUCAIBox/LLMSurvey),将定期维护。我们将不断更新这项综述,并尽可能提高质量。对我们来说,综述写作也是LLM自己的一个学习过程。对于对改进本次综述有建设性建议的读者,欢迎您在我们综述的GitHub页面上留言或直接给我们的作者发电子邮件。我们将在未来的版本中根据收到的意见或建议进行修订,并感谢在我们的综述中提出建设性建议的读者。
更新日志。在这一部分中,我们定期维护向arXiv提交本次综述的更新日志:
规划内容。我们将定期在这项综述中加入新的内容,使其更加独立和最新。在这里,我们列出了下一个主要版本中可能出现的几个潜在主题:(1)从GPT-1到ChatGPT的技术演变(部分完成),(2)基于LLaMA的调整(例如,Alpaca),(3)轻量级调整策略(完成),以及(4)模型细节的详细公式(完成)。如果您对本次综述有具体的建议,请给我们留言。