目录
2.1.1 Formulation of Scaling Laws for LLMs
2.1.2 Discussion on Scaling Laws
2.1.3 Emergent Abilities of LLMs
2.1.4 How Emergent Abilities Relate to Scaling Laws
2.1.5 Key Techniques for LLMs.
2.2 Technical Evolution of GPT-series Models
2.2.4 The Milestones of Language Models
4.1 Data Collection and Preparation
4.3.2 Scalable Training Techniques
5.1.1 Formatted Instance Construction
5.1.2 Instruction Tuning Strategies
5.1.3 The Effect of Instruction Tuning
5.1.4 Empirical Analysis for Instruction Tuning
5.2.1 Background and Criteria for Alignment
5.2.2 Collecting Human Feedback
5.2.3 Reinforcement Learning from Human Feedback
5.3 Parameter-Efficient Model Adaptation
5.3.1 Parameter-Efficient Fine-Tuning Methods
5.3.2 Parameter-Efficient Fine-Tuning on LLMs
6.3 Chain-of-Thought Prompting
6.3.1 Basic CoT Prompting Approach
6.3.2 Improved CoT Prompting Strategies
6.3.3 Further Discussion on CoT Prompting
7.2.2 Interaction with External Environment
7.3 Benchmarks and Evaluation Approaches
7.3.1 Comprehensive Evaluation Benchmarks
7.4.2 Results Analysis and Findings
8.1 LLM for Research Community
8.1.1 LLM for Classic NLP Tasks
8.1.2 LLM for Information Retrieval
8.1.3 LLM for Recommender Systems
8.1.4 Multimodal Large Language Model
Abstract
自20世纪50年代提出图灵测试以来,人类一直在努力掌握机器的语言智能。语言作为一个复杂的系统,受到语法规则的支配,这给开发能够理解和运用语言的人工智能(AI)算法带来了重大挑战。语言建模作为一种主要的方法,在过去20年中经历了从统计模型到神经网络模型的演变,广泛应用于语言理解和生成。
近期,预训练语言模型(PLMs)通过在大规模语料库上训练的Transformer架构,展现出在各种自然语言处理(NLP)任务中的强大能力。研究发现,扩大模型规模可以提升模型能力,因此进一步探讨了scaling law
。尤其是,当参数规模达到一定阈值后,增强的语言模型不仅显著提升了性能,还展现了一些小型模型(如BERT)所不具备的特殊能力,如上下文学习。
为了区分不同参数规模的语言模型,研究者们将含有数十亿或数百亿参数的预训练语言模型称为大型语言模型(LLMs)。近年来,LLMs的研究在学术界和工业界取得了显著进展,尤其是ChatGPT的推出,这是一款基于LLMs开发的强大AI聊天机器人,获得了广泛的关注。
LLMs的技术进步对整个AI社区产生了深远影响,可能会改变我们开发和使用AI算法的方式。本文综述了LLMs的最新进展,介绍了背景、关键发现和主流技术,重点关注预训练、适应性微调、应用和能力评估四个方面。此外,文章还总结了开发LLMs的可用资源,并讨论了未来的研究方向和挑战。这为LLMs领域的研究人员和工程师提供了最新的参考资料。
1 Introduction
语言是人类表达和沟通的重要能力,通常在早期儿童时期发展,并伴随一生。然而,机器自然无法掌握理解和使用人类语言的能力,除非配备强大的人工智能算法。语言建模(LM)是提升机器语言智能的主要方法之一,旨在通过建模词序列的生成概率来预测未来的词汇。
语言建模的研究经历了四个主要发展阶段:
-
统计语言模型(SLM):基于统计学习方法,主要通过马尔可夫假设进行词预测,面临维度灾难问题。为此,引入了平滑策略以缓解数据稀疏问题。
-
神经语言模型(NLM):使用神经网络(如多层感知机和递归神经网络)来表征词序列的概率,提出了分布式词表示的概念,显著推动了自然语言处理(NLP)领域的发展。
-
预训练语言模型(PLM):如ELMo和BERT,采用双向LSTM和Transformer等架构,通过在大规模无标注语料上进行预训练,捕捉上下文感知的词表示,推动了NLP任务的性能。
-
大型语言模型(LLM):研究发现,扩大PLM的规模(如模型大小或数据量)通常会提升模型在下游任务的能力。GPT-3和PaLM等超大模型展示了与小型模型(如BERT、GPT-2)不同的行为和惊人的能力(称为突现能力),如通过上下文学习解决少量示例任务。
LLM与PLM的主要区别
-
突现能力:LLMs展现了一些在小型PLM中未观察到的惊人能力,这些能力对于在复杂任务上的表现至关重要。
-
开发和使用方式:与小型PLM不同,访问LLMs的主要方式是通过提示接口(如GPT-4 API),人类需要理解LLMs的工作原理并以其能理解的方式格式化任务。
-
研究与工程的界限模糊:LLMs的训练需要在大规模数据处理和分布式并行训练方面的丰富实践经验,研究人员必须解决复杂的工程问题。
LLM对AI社区的影响
LLMs对AI社区产生了重大影响,ChatGPT和GPT-4的出现促使人们重新思考人工通用智能(AGI)的可能性。OpenAI发布了关于AGI的技术文章,探讨了短期和长期的实现计划。此外,LLMs正在迅速改变AI研究领域的格局:
-
自然语言处理(NLP):LLMs作为通用语言任务求解器,研究范式正在向其倾斜。
-
信息检索(IR):传统搜索引擎受到AI聊天机器人的挑战,例如ChatGPT,新必应(New Bing)尝试基于LLMs增强搜索结果。
-
计算机视觉(CV):研究人员开发类似ChatGPT的视觉-语言模型,以更好地支持多模态对话,GPT-4已支持通过整合视觉信息进行多模态输入。
尽管大语言模型(LLMs)取得了显著进展并产生了深远影响,但其基本原理仍未得到深入探索。首先,LLMs为何会产生突现能力,而小型预训练语言模型(PLMs)却没有,这一点仍然神秘。缺乏对影响LLMs优越能力的关键因素的深度研究,理解LLMs何时以及如何获得这些能力至关重要。尽管已有一些有意义的讨论,但仍需更多原则性研究来揭示LLMs的“秘密”。
其次,研究社区在训练高效LLMs方面面临困难。由于对计算资源的巨大需求,进行各种训练策略的重复实验成本非常高。实际上,LLMs主要由工业界训练,许多重要的训练细节(如数据收集和清理)并未公开。
第三,将LLMs与人类价值观或偏好对齐也很具挑战性。尽管LLMs具备强大能力,但它们也可能生成有害、虚假或有毒的内容,因此需要有效的控制方法来消除使用LLMs的潜在风险。
面对机遇与挑战,LLMs的研究与开发需要更多关注。为了提供对LLMs的基础理解,本调查从四个主要方面进行文献回顾,包括预训练(如何预训练一个有效的LLM)、适应(如何有效地调整预训练LLMs以更好地使用)、利用(如何使用LLMs解决各种下游任务)和能力评估(如何评估LLMs的能力及现有实证研究成果)。我们全面梳理文献,总结LLMs的关键发现、技术和方法,并在此调查中创建了一个GitHub项目网站,收集LLMs的支持资源。
本综述的组织结构如下:第二部分介绍LLMs的背景和GPT系列模型的演变,第三部分总结了开发LLMs的可用资源。第四、五、六、七部分分别回顾和总结了预训练、适应、利用和能力评估四个方面的最新进展。第八部分讨论了提示设计的实用指南,第九部分回顾了LLMs在几个代表性领域的应用。最后,在第十部分总结主要发现,并讨论未来研究中剩余的问题。
2 Overview
2.1 Background for LLMs
2.1.1 Formulation of Scaling Laws for LLMs
目前,LLMs主要基于Transformer架构,该架构通过堆叠多头注意力层形成深层神经网络。现有LLMs采用与小型语言模型类似的Transformer架构和预训练目标(如语言建模)。然而,LLMs显著扩大了模型规模、数据规模和总计算量。研究表明,scaling可以大幅提升LLMs的模型能力。因此,建立量化方法以表征scaling是有益的。
2.1.2 Discussion on Scaling Laws
Predictable scaling
在实际应用中,scaling law可用于指导大语言模型的训练,并已被证明可以可靠地根据小型模型的性能来估计大型模型的性能,这被称为可预测scaling。这种可预测scaling对LLMs训练的好处主要体现在两个方面:
-
训练经验的迁移:对于大型模型,严格检验各种训练技巧或变体是不可行的,因此,如果可以将小型模型获得的经验应用于大型模型,将非常有帮助。例如,可以训练小型代理模型,以确定大型模型的数据混合的最佳调度。
-
训练监控:大规模模型的训练耗时较长,常常会遇到训练损失激增等问题。scaling law可以用于监控LLMs的训练状态,例如,及早识别异常性能。尽管scaling law表征了性能提升(或损失降低)的平滑趋势,但它也表明,随着模型规模的扩大,可能会出现收益递减现象。OpenAI团队的实证研究表明,即使接近收益递减的点(即接近不可减少损失),表示质量或语义内容仍然可以有效提高。这一发现表明,训练大模型在提升下游任务性能方面是有前景的。
然而,进一步探索scaling效应时,一个潜在的问题是可用于训练LLMs的数据实际上是有限的。随着模型规模的不断扩大,公共文本数据很快可能就会“耗尽”。因此,研究scaling law如何适用于数据受限的情境将是有意义的,在这种情况下,数据重复或增强可能有助于缓解数据稀缺问题。
Task-level predictability
现有的scaling law研究主要集中在语言建模损失(例如以nats为单位的每个标记交叉熵损失),而在实际应用中,我们更关心大语言模型(LLMs)在实际任务上的表现。因此,一个基本问题是,语言建模损失的降低如何转化为任务性能的提升。
直观上,具有较小语言建模损失的模型往往在下游任务中表现更好,因为语言建模损失可以视为整体模型能力的通用测量。GPT-4的研究报告称,某些能力(如编码能力)可以通过scaling law准确预测。然而,读者应注意,语言建模损失的直接减少并不总是意味着下游任务的性能改善。特别地,在某些任务中,可能会出现反向scaling现象,即任务性能在语言建模损失降低时反而变差。
总体而言,探索和表征任务级scaling law更加困难,因为这可能还依赖于任务相关的信息(如任务指标、任务难度等)。此外,一些能力(例如上下文学习)在scaling law下是不可预测的,只有当模型规模超过某一水平时才能观察到。
2.1.3 Emergent Abilities of LLMs
在文献中,LLMs的突现能力被正式定义为“在小模型中不存在但在大模型中出现的能力”,这是区分LLMs与之前预训练语言模型(PLMs)的一个显著特征。突现能力的一个显著特点是,当模型规模达到一定水平时,性能显著高于随机水平。类比于物理学中的相变现象,这种突现模式与之有密切联系。
突现能力可以与某些复杂任务相关联,而我们更关注的是可用于解决各种任务的一般能力。以下简要介绍三种典型的LLMs突现能力以及具备这些能力的代表性模型。
1. 上下文学习(In-context learning, ICL)
上下文学习能力由GPT-3首次正式引入:假设语言模型已提供自然语言指令和/或多个任务示例,它可以通过完成输入文本的词序列生成测试实例的预期输出,而无需额外的训练或梯度更新。在GPT系列模型中,175B参数的GPT-3通常展现出强大的ICL能力,而GPT-1和GPT-2则不具备。这种能力也依赖于具体的下游任务。例如,13B的GPT-3在算术任务(如三位数的加法和减法)上能表现出ICL能力,但175B的GPT-3在波斯语问答任务上表现不佳。
2. 指令跟随(Instruction following)
通过使用自然语言描述格式化的多任务数据集进行微调(称为指令调优),LLMs在未见过的任务上也能表现良好。这使得LLMs能够在没有明确示例的情况下,根据任务指令执行新任务,从而提高了泛化能力。实验表明,当模型规模达到68B时,指令调优的LaMDA-PT在未见过的任务上显著超越未调优模型,但8B或更小的模型无法达到这一效果。最近的研究发现,PaLM在多个评估基准(如MMLU、BBH、TyDiQA和MGSM)上表现良好至少需要62B的模型规模,而某些特定任务(如MMLU)可能对模型规模的要求较低。
3. 分步推理(Step-by-step reasoning)
对于小型语言模型,通常很难解决涉及多个推理步骤的复杂任务,如数学文字问题。相反,通过链式思维(CoT)提示策略,LLMs能够利用涉及中间推理步骤的提示机制来解决此类任务。这种能力可能通过在代码上进行训练获得。实证研究显示,当应用于超过60B参数的PaLM和LaMDA变体时,CoT提示可以在算术推理基准上带来性能提升,而当模型规模超过100B时,这种优势更加明显。此外,不同任务的CoT提示性能提升似乎也有所不同,例如,GSM8K的表现优于MAWPS和SWAMP。
2.1.4 How Emergent Abilities Relate to Scaling Laws
在现有文献中,缩放法则和突现能力提供了两种理解大模型相较于小模型优势的视角。一般而言,缩放法则(通常通过语言建模损失来衡量)描述了可预测的性能关系,并可能受到收益递减的影响;而突现能力(通常通过任务性能来衡量)则是不可预测的,但一旦出现,这些能力往往非常有利。由于这两种视角反映了不同的性能趋势(持续改进与突跃式提升),可能导致发现或观察结果的不一致。
关于突现能力的理性也存在广泛的辩论。一种流行的推测是,突现能力可能部分归因于特定任务的评估设置(例如,不连续的评估指标)。当评估指标相应改变时,突现能力曲线的陡峭性可能会消失。然而,用户在大多数任务上的LLMs性能感知往往是自然的不连续。例如,最终用户更倾向于选择能够成功通过测试案例的可靠代码,而对两个失败代码之间哪个错误更少则兴趣不大。
最近的一项研究提出了一种新的评估设置,可以扩大任务指标的分辨率,使任务性能更具可预测性。尽管有这些努力,关于LLMs工作机制的更基础研究(如grokking)仍然需要,以理解某些能力的出现。
缩放法则与突现能力之间的微妙关系可以通过类比人类能力获取来解释。以语言能力为例,儿童的语言发展(特别是婴儿)也可以被视为一个多层次的过程,在这个过程中“突现能力”会发生。特别是,语言能力在某一时间间隔内相对稳定,但只有当进化到另一个能力水平时(例如,从说简单单词到说简单句子)才会发生质变。这种学习过程本质上并不平滑和稳定(即语言能力并不是以恒定的速率随时间发展),尽管儿童确实每天都在成长。有趣的是,年轻父母常常会对他们的宝宝展现出的语言能力的意外进步感到惊讶。这种现象与LLMs中的突现能力相似,突现能力的出现往往是不可预测的,且在模型规模扩大时可能会导致质的飞跃。
2.1.5 Key Techniques for LLMs.
大语言模型(LLMs)发展至今,已成为通用且强大的学习者。在这一过程中,提出了许多重要技术,极大地提升了LLMs的能力。以下是一些可能导致LLMs成功的重要技术:
1. 缩放(Scaling)
如前所述,Transformer语言模型中存在明显的缩放效应:更大的模型/数据规模和更多的训练计算通常会提高模型能力。作为代表性模型,GPT-3和PaLM分别将模型规模扩大到175B和540B。由于计算预算通常有限,可以进一步利用缩放法则进行更高效的计算资源分配。例如,Chinchilla通过增加数据规模,在相同的计算预算下超越了其对应模型Gopher,后者则是更大的模型。此外,数据缩放需经过仔细清洗,因为预训练数据的质量在模型能力中起着关键作用。
2. 训练(Training)
由于模型规模巨大,成功训练一个有能力的LLM具有很大挑战性。需要分布式训练算法来学习LLMs的网络参数,通常会联合使用多种并行策略。为支持分布式训练,已发布了多种优化框架,如DeepSpeed和Megatron-LM。此外,优化技巧对于训练的稳定性和模型性能也很重要,例如,通过重启来克服训练损失的激增和混合精度训练。最近,GPT-4提出开发特殊基础设施和优化方法,能够可靠地预测大型模型的性能。
3. 能力引导(Ability Eliciting)
在大规模语料库上进行预训练后,LLMs具备作为通用任务求解者的潜在能力。然而,这些能力在执行某些特定任务时可能不会明显表现出来。设计合适的任务指令或特定的上下文学习策略有助于引导这些能力的显现。例如,链式思维提示可以通过包含中间推理步骤来解决复杂的推理任务。此外,可以对LLMs进行指令调优,通过自然语言表达的任务描述来提高其在未见任务上的泛化能力。这些引导技术主要对应于LLMs的突现能力,而在小型语言模型上可能不会产生相同的效果。
4. 对齐调优(Alignment Tuning)
由于LLMs是根据预训练语料库的数据特征进行训练的(包括高质量和低质量数据),因此它们可能会生成有毒、偏见或有害的内容。因此,有必要将LLMs与人类价值观对齐,如有益、诚实和无害。为此,InstructGPT设计了一种有效的调优方法,使LLMs能够遵循预期的指令,该方法利用了人类反馈的强化学习技术。它通过精心设计的标注策略将人类纳入训练循环中。ChatGPT实际上是在与InstructGPT相似的技术上开发的,展现出强大的对齐能力,能够生成高质量、无害的回应,例如拒绝回答侮辱性问题。
5. 工具操作(Tools Manipulation)
本质上,LLMs被训练为在大量纯文本语料库上生成文本,因此在不适合以文本形式表达的任务(如数值计算)上表现较差。此外,它们的能力也受到预训练数据的限制,例如无法获取最新信息。为了解决这些问题,最近提出了一种新技术,即使用外部工具来补偿LLMs的不足。例如,LLMs可以利用计算器进行精确计算,并使用搜索引擎检索未知信息。最近,ChatGPT启用了使用外部插件的机制(现有或新创建的应用),这类似于LLMs的“眼睛和耳朵”。这种机制可以广泛扩展LLMs的能力范围。
2.2 Technical Evolution of GPT-series Models
由于在与人类沟通方面的卓越能力,ChatGPT自发布以来点燃了AI社区的热情。ChatGPT是基于强大的GPT模型开发的,经过特别优化以增强对话能力。考虑到对ChatGPT和GPT模型日益增长的兴趣,我们将特别讨论GPT系列模型的技术演变,简要总结它们在过去几年的发展进程。
GPT模型的基本原理是通过语言建模将世界知识压缩到仅使用解码器的Transformer模型中,使其能够恢复(或记忆)世界知识的语义,并作为通用任务求解者。成功的两个关键点是:
- 训练能够准确预测下一个词的解码器-only Transformer语言模型。
- 扩大语言模型的规模。
总体而言,OpenAI在LLMs上的研究大致可以分为以下几个阶段:
-
初始阶段:探索Transformer架构及其在语言建模中的应用,提出了GPT模型的基本框架。
-
GPT-2:引入了更大的模型规模和更多的训练数据,显著提升了生成文本的能力,并展示了良好的上下文理解。
-
GPT-3:进一步扩大模型规模到175B参数,加入了上下文学习和少量示例学习的能力,使其能够在更复杂的任务中表现出色。
-
ChatGPT:基于GPT-3的框架,专门优化了对话能力,提升了与用户互动的自然性和有效性。
2.2.1 Early Explorations
在与OpenAI联合创始人兼首席科学家Ilya Sutskever的采访中,提到OpenAI早期探索智能系统时,最初尝试了递归神经网络(RNN)。随着Transformer模型的引入,OpenAI开发了两个初始的GPT模型,即GPT-1和GPT-2,为后续的GPT-3和GPT-4奠定了基础。
GPT-1
GPT-1于2018年发布,代表“生成预训练”(Generative Pre-Training)。该模型采用了生成型解码器-only的Transformer架构,并结合了无监督预训练和监督微调的混合方法。GPT-1建立了GPT系列的核心架构,并确立了自然语言文本建模的基本原则,即预测下一个词。
GPT-2
GPT-2在GPT-1的基础上,参数规模增加到15亿,并使用名为WebText的大型数据集进行训练。与前作不同,GPT-2旨在通过无监督语言建模来执行任务,而不依赖明确的标注数据进行微调。该模型引入了一种概率框架用于多任务解决,基于输入和任务信息预测输出。
GPT-2论文中的一个关键观点是,无监督语言建模目标与监督任务目标相一致,表明每个自然语言处理任务都可以视为一个词预测问题。这意味着,只要训练充分,无监督语言模型能够有效地解决各种任务,利用世界文本的结构。
Sutskever强调,神经网络的学习过程涉及创建文本生成过程的表示,准确的词预测对于理解底层信息的高保真性和分辨率至关重要
2.2.2 Capacity Leap
尽管GPT-2被设计为“无监督多任务学习者”,但其整体性能相较于监督微调的最先进方法仍然较低。由于模型规模相对较小,GPT-2在下游任务中,特别是在对话任务上,广泛进行了微调。
GPT-3
GPT-3于2020年发布,将模型参数规模扩大到175B,展现了关键的能力飞跃,基于几乎相同的生成预训练架构。GPT-3的论文正式引入了上下文学习(In-Context Learning, ICL)的概念,允许LLMs通过少量或零样本的方式进行任务理解。ICL使得LLMs能够以自然语言文本的形式理解任务。
在ICL的框架下,预训练和LLMs的使用趋向于相同的语言建模范式:预训练通过上下文预测后续文本序列,而ICL则根据任务描述和示例预测正确的任务解决方案,也可以格式化为文本序列。GPT-3在多种自然语言处理任务中表现出色,尤其是在一些需要推理或领域适应能力的特殊任务中。
虽然GPT-3的论文没有明确讨论LLMs的突现能力,但我们可以观察到性能的显著飞跃,这可能超越了基本的缩放法则。例如,较大的模型在ICL能力上显著更强。总体而言,GPT-3被视为从预训练语言模型(PLMs)演变为大语言模型(LLMs)过程中的一个重要里程碑,实证证明了将神经网络规模扩大到显著水平可以大幅提升模型能力。
2.2.3 Capacity Enhancement
由于强大的能力,GPT-3成为OpenAI开发更强大大语言模型(LLMs)的基础模型。OpenAI主要探索了两种提升GPT-3模型的方法:代码数据训练和与人类偏好的对齐。
1. 代码数据训练
原始GPT-3模型(基于纯文本预训练)的一个主要限制是缺乏处理复杂任务的推理能力,例如完成代码和解决数学问题。为增强这一能力,OpenAI于2021年7月推出了Codex,一个在大型GitHub代码语料库上微调的GPT模型。Codex能够解决非常困难的编程问题,并在解决数学问题方面取得了显著的性能提升。
此外,2022年1月报道了一种对比训练文本和代码嵌入的方法,显示其能改善一系列相关任务(如线性分类、文本搜索和代码搜索)。GPT-3.5模型是基于一个代码驱动的GPT模型(即code-davinci-002)开发的,表明训练代码数据是提升GPT模型能力,特别是推理能力的有效实践。还有一种推测认为,训练代码数据可以大幅提高LLMs的链式思维提示能力,但仍需进一步验证。
2. 人类对齐
与人类对齐的相关研究可以追溯到2017年(或更早),OpenAI在其博客上发布了题为“从人类偏好中学习”的文章,描述了一项应用强化学习(RL)从人类标注的偏好比较中学习的工作。2017年7月发布的近端策略优化(PPO)论文成为基于人类偏好的学习的基础RL算法。随后,2020年1月,GPT-2使用上述RL算法进行了微调,利用人类偏好提升其在自然语言处理任务中的能力。
基于这些先前的工作,InstructGPT于2022年1月提出,旨在通过正式建立三阶段的基于人类反馈的强化学习(RLHF)算法来改进GPT-3模型。尽管在OpenAI的论文和文档中很少使用“指令调优”这个术语,但它被替换为基于人类示例的监督微调。此外,RLHF算法不仅改善了指令遵循能力,还特别有助于减轻生成有害或有毒内容的问题,这对LLMs的安全部署至关重要。
OpenAI在一篇技术文章中总结了他们的对齐研究方法,提出了三个有前景的方向:“训练AI系统使用人类反馈、协助人类评估以及进行对齐研究”。这些增强技术导致了被称为GPT-3.5的改进模型,展现出更强的能力。
2.2.4 The Milestones of Language Models
基于之前的探索工作,OpenAI取得了两个主要里程碑:ChatGPT和GPT-4,这些模型显著提升了现有AI系统的能力。
1. ChatGPT
2022年11月,OpenAI发布了对话模型ChatGPT,基于GPT-3.5和GPT-4模型。ChatGPT的训练方式与InstructGPT类似,但特别优化了对话能力。在数据收集方面,ChatGPT结合了人类生成的对话(用户和AI的角色)与InstructGPT数据集进行训练。ChatGPT在与人类沟通方面展现了卓越的能力,包括丰富的知识储备、解决数学问题的推理能力、在多轮对话中准确追踪上下文,以及良好的人类价值对齐能力,确保安全使用。ChatGPT还支持插件机制,进一步扩展了其能力,成为AI历史上最强大的聊天机器人,预计将对未来的AI研究产生重大影响。
2. GPT-4
作为另一个重要进展,GPT-4于2023年3月发布,扩展了文本输入到多模态信号,表现出比GPT-3.5更强的能力,尤其在解决复杂任务方面。近期研究显示,GPT-4在多种评估任务中表现优于之前的GPT模型。此外,GPT-4对恶意或挑衅性查询的回应更为安全,这得益于六个月的迭代对齐过程以及在RLHF训练中的额外安全奖励信号。OpenAI在技术报告中强调了安全开发GPT-4的方法,并应用了多种干预策略以缓解LLMs可能出现的问题,如幻觉、隐私和过度依赖。例如,引入的“红队”机制旨在减少有害或有毒内容的生成。GPT-4还在深度学习基础设施上开发,采用了改进的优化方法,引入了可预测缩放机制,以在模型训练过程中准确预测最终性能。
3. GPT-4V与GPT-4 Turbo
在GPT-4的基础上,OpenAI于2023年9月发布了GPT-4V,专注于安全部署GPT-4的视觉能力。GPT-4V在多种应用场景中展现了强大的视觉能力,显示出作为强大多模态学习系统的巨大潜力。2023年11月,OpenAI在DevDay上发布了升级版的GPT-4模型,命名为GPT-4 Turbo,具有一系列技术改进。GPT-4 Turbo具备更强的模型能力、扩展的知识源(截至2023年4月)、长达128k令牌的上下文窗口、优化的模型性能(更低的成本)等功能更新。同时,发布了Assistants API,便于快速开发目标导向的助手。新版本还增强了多模态能力,包括视觉、DALL·E 3、文本转语音(TTS)和语音样本的听觉支持。这些改进极大地拓展了GPT模型的能力范围,增强了任务性能。
3 Resource of LLMs
开发或复现大语言模型并非易事,面临着技术难题和巨大的计算资源需求。一种可行的方式是借鉴现有LLMs的经验,并利用公开可用的资源进行增量开发或实验研究。
4 Pre-training
预训练为大语言模型(LLMs)的能力奠定了基础。通过在大规模语料库上进行预训练,LLMs能够获取基本的语言理解和生成技能。预训练过程中的语料库规模和质量对LLMs的强大能力至关重要。此外,为了有效地进行LLMs的预训练,模型架构、加速方法和优化技术需要精心设计。
4.1 Data Collection and Preparation
与小规模语言模型相比,大语言模型(LLMs)对高质量数据的需求更为强烈,其模型能力在很大程度上依赖于预训练语料库的质量及其处理方式。在这一部分,我们将讨论预训练数据的收集和处理,包括数据来源、预处理方法,以及预训练数据如何影响LLMs性能的重要分析。
4.1.1 Data Source
开发一个强大的大语言模型(LLM),关键在于从各种数据源收集大量自然语言语料库。现有的LLMs主要利用多种公共文本数据集作为预训练语料库。以下将讨论预训练数据的两种主要来源:通用数据和专业数据,以及它们对LLMs的影响。
4.1.2 Data Preprocessing
在收集大量文本数据后,预处理数据以构建预训练语料库至关重要,特别是去除噪声、冗余、不相关和潜在有害的数据。这些因素可能会显著影响大语言模型(LLMs)的能力和性能。为此,最近的一项研究提出了一个有用的数据处理系统,名为 Data-Juicer,该系统提供了超过50种处理操作和工具。
4.1.3 Data Scheduling
在数据预处理后,设计合适的策略来调度这些多源数据以进行有效的预训练是至关重要的。一般来说,数据调度需要重点关注两个关键方面:数据源的比例(数据混合)和数据源的调度顺序(数据课程)。以下将详细讨论这两个方面。
1. 数据源比例(数据混合)
平衡比例:根据不同数据源的重要性和覆盖范围,决定各数据源在训练中的比例。例如,可以根据特定任务的需求调整多语言数据、专业数据与通用数据的比例,以确保模型在相关领域的能力得到充分训练。
动态调整:在训练过程中,可以根据模型的学习进展动态调整数据源的比例。例如,若模型在某一特定数据源上的表现不佳,可以增加该源的数据比例以进行针对性训练。
2. 数据源顺序(数据课程)
逐步复杂性:按照数据的复杂性和难度进行调度,从简单的文本开始,逐渐引入复杂的内容。这种方法可以帮助模型更好地掌握基础语言结构,然后再面对更具挑战性的任务。
主题切换:在训练过程中,可以设计主题切换策略,定期切换数据源以防止模型过拟合于某一特定类型的数据。例如,在训练一定轮次后,引入新的主题或领域的数据,以增加模型的适应性和泛化能力
4.2 Architecture
4.2.1 Typical Architectures
由于出色的并行性和容量,Transformer 架构已成为开发各种大语言模型(LLMs)的事实标准,使得语言模型能够扩展到数百亿或数千亿参数。现有LLMs的主流架构大致可以分为三种主要类型:编码-解码器、因果解码器和前缀解码器,如图9所示。
1. 编码-解码器架构
基础的Transformer模型建立在编码-解码器架构上,包括两个堆叠的Transformer模块,分别作为编码器和解码器。
编码器:使用多头自注意力层对输入序列进行编码,以生成其潜在表示。
解码器:在这些表示上执行交叉注意力,并自回归地生成目标序列。
基于编码-解码器的预训练语言模型(如T5和BART)在多种自然语言处理任务上表现出色。目前,基于编码-解码器架构的LLMs数量较少,例如Flan-T5。
2. 因果解码器架构
因果解码器架构采用单向注意力掩码,以确保每个输入标记仅能关注过去的标记及其自身。输入和输出标记通过解码器以相同方式处理。
代表性模型:GPT系列模型基于因果解码器架构开发,尤其是GPT-3展示了该架构的有效性,并表现出了惊人的上下文学习能力。相比之下,GPT-1和GPT-2未能体现出与GPT-3相当的能力,显示出模型规模在提升该架构模型能力中的重要作用。
因果解码器被广泛采用,成为各类LLMs的架构基础,如OPT、BLOOM和Gopher。需要注意的是,接下来讨论的因果解码器和前缀解码器均属于解码器-only架构。在文献中提到“解码器-only架构”时,通常指的是因果解码器架构,除非另有说明。
3. 前缀解码器架构
前缀解码器架构(又称为非因果解码器)修改了因果解码器的掩码机制,使得可以对前缀标记进行双向注意,而对生成的标记仅进行单向注意。这种设计允许前缀解码器像编码-解码器架构一样,双向编码前缀序列,并逐个自回归地预测输出标记。
参数共享:在编码和解码过程中使用相同的参数,从而提高训练效率。
训练建议:建议在从头开始预训练之前,先对因果解码器进行持续训练,然后将其转换为前缀解码器,以加速收敛。例如,U-PaLM就是从PaLM派生而来的。当前基于前缀解码器的代表性LLMs包括GLM-130B和U-PaLM。
4. 混合专家架构(MoE)
对于上述三种架构,我们可以通过混合专家架构(MoE)进行扩展,其中每个输入的神经网络权重子集被稀疏激活。例如,Switch Transformer和GLaM就是基于MoE的模型。
灵活性:MoE是一种灵活的模型扩展方式,可以在保持恒定计算成本的同时,增加模型参数的数量。性能提升:通过增加专家数量或总参数规模,可以显著提高模型性能。然而,训练大型MoE模型可能面临不稳定性问题,因其复杂的路由操作。为增强MoE语言模型的训练稳定性,可以采用选择性使用高精度张量或使用较小范围初始化模型等技术。
5. 新兴架构
传统的Transformer架构通常在序列长度上面临平方级别的计算复杂度,这使得处理长输入的成本很高。为提高效率,最近的研究旨在设计新的语言建模架构,许多基于参数化状态空间模型(SSM),可视为RNN和CNN的结合。
SSM的优势:
递归生成:SSM可以像RNN一样递归生成输出,仅需参考单一前状态,从而使解码过程更高效。
并行编码:SSM能够像Transformer一样,通过卷积计算并行编码整个序列。
尽管SSM在计算效率上具有优势,但其性能仍落后于Transformer。为此,提出了多种SSM的变体,包括Mamba、RetNet、RWKV和Hyena。
Mamba:
通过在状态更新过程中选择性过滤或记忆信息,替代了SSM层的固定参数。
根据当前输入选择性过滤先前状态和当前输入的信息,提升了文本建模能力。
RWKV:
结合了Transformer和RNN的优点,采用时间混合模块(带门控的RNN)和通道混合模块(特殊的前馈神经网络)。使用代币偏移(当前和先前代币的线性组合)作为输入,而不是代币表示。
RetNet:
提出了多尺度保留(MSR)以替代Transformer中的注意力模块。输入首先被映射为查询、键和值,然后通过键与值的乘积更新状态,最后将查询用于输出投影。
Hyena:
采用长卷积替代注意力模块,使用基于相对位置的滤波器来聚合不同位置的信息。由于长卷积,Hyena无法像RNN那样进行推理,必须显式访问所有先前状态。
4.1.2 Detailed Configuration
- Normalization Methods
- Normalization Position
- Activation Functions
- Position Embeddings
- Attention
4.2.3 Pre-training Tasks
Language Modeling
将输入文本转换为令牌,例如:
输入:["人工智能", "在", "医疗", "领域", "的", "应用", "包括"]
模型根据输入的tokens逐个预测下一个tokens:
- 预测第一个tokens,假设模型输出“诊断”。
- 更新输入为“人工智能在医疗领域的应用包括诊断”。
- 继续预测下一个tokens,假设输出“和”。
- 重复此过程,直到生成完整的句子或达到预设的长度。
最终生成的文本可能是:
“人工智能在医疗领域的应用包括诊断和治疗疾病、个性化医疗方案的制定以及对患者数据的分析。”
Denoising Autoencoding
通过去噪自编码任务,模型能够有效地从损坏的文本中恢复原始内容。这种方法不仅提高了模型对上下文的理解能力,还增强了其在处理不完整信息时的鲁棒性。在实际应用中,DAE可以用于文本修复、错误更正等任务。
Mixture-of-Denoisers
MoD已应用于最新的PaLM 2模型。这种方法不仅提高了模型在多样化文本恢复任务中的表现,还增强了其在处理不同类型损坏文本时的灵活性和鲁棒性。混合去噪器通过结合多种去噪任务,提升了语言模型的预训练效率和适应能力。通过动态选择和优化去噪任务,MoD为处理复杂文本提供了更强的能力,使得模型能够更好地应对多样化的自然语言处理任务。
4.2.4 Decoding Strategy
本节讨论当前流行的仅解码器架构,并介绍自回归解码机制。这些大型语言模型(LLMs)基于语言建模任务进行预训练。在此基础上,常用的解码方法是贪婪搜索(greedy search),其在每一步中预测基于先前生成的令牌的最可能令牌。
例如,在预测句子“我很困。我开始做一壶”的下一个令牌时,贪婪搜索选择了当前步骤中概率最高的“咖啡”作为输出。贪婪搜索在文本生成任务(如机器翻译和文本摘要)中通常能够取得令人满意的结果,因为这些任务的输出高度依赖于输入。
作为另一种替代解码策略,基于采样的方法被提出,以增强生成过程中的随机性和多样性。该方法随机选择下一个令牌,基于概率分布进行抽样。在上述示例中,基于采样的方法将以更高的概率选择“咖啡”,但也保留选择其他词(如“水”、“茶”、“米饭”等)的可能性。
Improvement for Greedy Search
在每一步选择概率最高的令牌可能导致忽视整体概率更高但局部估计较低的句子。为缓解这一问题,提出了几种改进策略。
1. 光束搜索(Beam Search)
光束搜索保留每一步中概率最高的 n个句子(光束大小)进行解码,最后选择生成响应中概率最高的句子。通常,光束大小配置在 3 到 6 之间。然而,选择较大的光束大小可能会导致性能下降。
2. 长度惩罚(Length Penalty)
由于光束搜索倾向于生成较短的句子,长度惩罚是一种常用技术,用于克服这一问题。它根据句子长度对句子概率进行归一化,通过将概率除以长度的指数幂 α\alphaα 来实现。
3. 避免重复生成
有研究者提出对先前生成的令牌或 n-grams 施加惩罚,以减少重复生成的问题。此外,多样性光束搜索(Diverse Beam Search)可以用来基于相同输入生成一组多样化的输出。
Improvement for Random Sampling
温度采样通过调整softmax函数的温度系数来调节采样的随机性。当 t=1 时,采样为默认的随机采样;当 t 逼近 0 时,相当于贪婪搜索;当 t趋向无穷大时,则退化为均匀采样。
Top-k 采样与温度采样不同,它直接截断低概率的令牌,仅从概率最高的前 k 个令牌中进行采样。例如,top-5采样将从“咖啡”、“水”、“茶”、“米饭”和“奶茶”这五个词中进行选择。
由于Top-k采样不考虑整体概率分布,固定的 k 值可能不适用于不同上下文。因此,Top-p 采样(也称为核采样)被提出,它通过从累积概率超过(或等于) p 的最小集合中进行采样来实现。最小集合通过按生成概率降序逐步添加词,直到累积值超过 p。
最近,研究者们还探索了其他采样策略以提高大型语言模型(LLMs)的生成性能。例如:
- η-采样:进一步改进Top-p采样,通过引入基于概率分布的动态阈值。
- 对比搜索和典型采样:用于提高生成过程中的连贯性。研究发现,大模型相较于小模型更倾向于为重要令牌分配更高概率。因此,对比解码利用一个较大的语言模型(如OPT-13B)和一个较小的语言模型(如OPT-125M)来测量它们的log-likelihood差异,随后根据概率分布的差值进行采样,以增强重要令牌的影响力。
- DoLa:在对比思路的基础上,进一步扩展该方法,以对比单个LLM在不同层的logits,因为较高层往往会对重要令牌赋予更多权重。
在实践中,现有的库(如Transformers)和大型语言模型(LLMs)的公共API(如OpenAI)支持多种解码策略,以适应不同的文本生成场景。以下是一些代表性LLMs的解码设置:
1. T5
- 默认设置:使用贪婪搜索。
- 翻译和摘要任务:应用光束搜索(光束大小为4)并设置长度惩罚为0.6。
2. GPT-3
- 所有生成任务:采用光束搜索,光束大小为4,长度惩罚为0.6。
3. Alpaca
- 开放式生成:使用基于采样的策略,具体为:
- Top-k:k=50k = 50k=50
- Top-p:p=0.9p = 0.9p=0.9
- 温度设置:0.7
4. LLaMA
- 任务特定解码策略:
- 问答任务:使用贪婪搜索。
- 代码生成:采用采样策略,温度设置为0.1(pass@1)和0.8(pass@100)。
5. OpenAI API
-
基本解码策略:
- 贪婪搜索(将温度设置为0)
- 光束搜索(使用设置best_of)
- 温度采样(使用设置temperature)
- 核采样(使用设置top_p)
-
重复控制:引入参数
presence_penalty
和frequency_penalty
来控制生成的重复程度。
根据OpenAI的文档,即使输入和超参数相同,其API也会生成不同的输出。将温度设置为0可以产生更具确定性的输出,但仍然存在轻微的变异可能性。
4.2.5 Summary and Discussion
在早期的预训练语言模型文献中,关于不同架构的影响进行了大量讨论。然而,大多数大型语言模型(LLMs)是基于因果解码器架构开发的,且对于其相较于其他替代架构的优势仍缺乏理论分析。以下是对此问题的简要总结。
1. 因果解码器的优势
- 零-shot和少-shot泛化能力:通过以语言模型目标进行预训练,因果解码器架构似乎在零-shot和少-shot学习中表现优异。研究表明,在不进行多任务微调的情况下,因果解码器的零-shot性能优于其他架构。GPT-3的成功证明了大型因果解码器模型在少-shot学习中的良好表现。此外,指令微调和对齐微调(在第5节讨论)进一步增强了大型因果解码器模型的能力。
2. scaling law
- scaling law的观察:在因果解码器中广泛观察到规模法则。通过扩大模型规模、数据集规模和总计算量,因果解码器的性能可以显著提高。因此,通过扩展来增加因果解码器的模型容量已成为一种重要策略。然而,对于编码-解码模型的更详细研究仍然缺乏,需要更多努力来调查大型编码-解码模型的性能。
4.3 Model Training
4.3.1 Optimization Setting
在大型语言模型(LLMs)的参数优化中,我们介绍一些常用的设置,包括批量训练、学习率、优化器和训练稳定性。
1. 批量训练
对于语言模型的预训练,现有研究通常将批量大小设置为较大的数字(例如,2,048个样本或4M个令牌),以提高训练的稳定性和吞吐量。像GPT-3和PaLM等LLMs引入了一种新的策略,在训练过程中动态增加批量大小,最终达到百万级别。例如,GPT-3的批量大小从32K逐渐增加到3.2M个令牌。经验结果表明,动态批量大小调度可以有效稳定LLMs的训练过程。
2. 学习率
现有LLMs通常采用类似的学习率调度,结合预热和衰减策略。在训练的前0.1%到0.5%步骤中,采用线性预热调度,逐渐将学习率提高到最大值,通常范围在 5×10−55 \times 10^{-5}5×10−5 到 1×10−41 \times 10^{-4}1×10−4(例如,GPT-3为 6×10−56 \times 10^{-5}6×10−5)。随后,在接下来的步骤中采用余弦衰减策略,逐渐将学习率降低到最大值的约10%,直到训练损失收敛。
3. 优化器
Adam优化器和AdamW优化器被广泛用于训练LLMs(例如GPT-3),基于对一阶梯度的自适应估计进行优化。Adafactor优化器也被用于训练LLMs(例如PaLM和T5),它是Adam优化器的一种变体,专为节省训练时的GPU内存而设计。
4. 训练稳定性
在LLMs的预训练过程中,常会遇到训练不稳定的问题,这可能导致模型崩溃。为了解决这一问题,权重衰减和梯度裁剪被广泛使用,现有研究通常将梯度裁剪的阈值设置为1.0,权重衰减率设置为0.1。然而,随着LLMs的规模扩大,训练损失峰值的出现概率也更高,导致训练不稳定。为减轻此问题,PaLM和OPT采用了一种简单策略,从发生峰值之前的早期检查点重新开始训练,并跳过可能导致问题的数据。此外,GLM发现嵌入层的异常梯度通常导致峰值,并提出缩小嵌入层梯度以缓解这一问题。
4.3.2 Scalable Training Techniques
随着模型和数据规模的增加,在有限的计算资源下高效训练大型语言模型(LLMs)变得越来越具有挑战性。尤其需要解决两个主要技术问题:提高训练吞吐量和将更大模型加载到GPU内存中。以下是几种广泛使用的方法来应对这两个挑战,包括3D并行训练和混合精度训练。
1. 3D Parallelism
3D并行训练实际上是三种常用并行训练技术的结合:数据并行、流水线并行和张量并行。以下是这三种并行训练技术的介绍。
数据并行是提高训练吞吐量的基本方法之一。它通过在多个GPU上复制模型参数和优化器状态,将整个训练数据集分配到这些GPU上。每个GPU只需处理分配给它的数据,执行前向和后向传播以获取梯度。不同GPU上计算的梯度将被聚合,以得到整个批次的梯度,用于更新所有GPU上的模型。这种方法使得在不同GPU上独立执行梯度计算,具有高度可扩展性,能够通过增加GPU数量来提高训练吞吐量。此外,这种技术易于实现,现有的流行深度学习库(如TensorFlow和PyTorch)已实现数据并行。
流水线并行的目标是将LLM的不同层分配到多个GPU上,尤其是在Transformer模型的情况下,流水线并行将连续的层加载到同一个GPU上,从而减少在GPU之间传输计算的隐藏状态或梯度的成本。然而,简单的流水线并行实现可能导致GPU利用率较低,因为每个GPU必须等待前一个GPU完成计算,这会导致不必要的“气泡”开销。为减少流水线并行中的气泡,GPipe和PipeDream提出了填充多个数据批次和异步梯度更新的技术,以提高流水线效率。
张量并行也是一种常用技术,旨在将LLM分解以便于多GPU加载。与流水线并行不同,张量并行专注于分解LLM的张量(参数矩阵)。通过将矩阵 A1和 A2放置在不同的GPU上,矩阵乘法操作可以在两个GPU上并行调用,最终结果可以通过跨GPU通信将两个GPU的输出结合得到。目前,张量并行已在多个开源库中得到支持,例如Megatron-LM,并可以扩展到更高维的张量。此外,Colossal-AI实现了对高维张量的张量并行,并提出了序列并行,特别针对序列数据,可以进一步分解Transformer模型的注意力操作。
2. Mixed Precision Training
在之前的预训练语言模型(PLMs)中,例如BERT,主要使用32位浮点数(FP32)进行预训练。然而,近年来,为了预训练极其庞大的语言模型,一些研究开始采用16位浮点数(FP16),这能够有效减少内存使用和通信开销。
-
优势:FP16的使用减少了模型的内存占用,提升了计算吞吐量。流行的NVIDIA GPU(如A100)拥有FP16计算单元是FP32的两倍,因此FP16的计算效率得到了进一步提升。
-
挑战:尽管FP16在性能和效率上具有明显优势,但现有研究发现FP16可能导致计算精度的损失,这对最终模型的性能产生了负面影响。具体而言,FP16的有效位数较少可能导致某些计算过程中的信息丢失或数值不稳定。
为了解决FP16带来的精度问题,**Brain Floating Point(BF16)**作为一种替代方案被引入。BF16分配了更多的指数位和更少的有效位,相比FP16,BF16在表示精度上通常表现更好,尤其是在预训练任务中。
3. Overall Training Suggestion
在实际操作中,上述训练技术,特别是3D并行训练,通常联合使用以提高训练吞吐量和大模型加载能力。例如,研究人员结合了8路数据并行、4路张量并行和12路流水线并行,使得BLOOM模型能够在384个A100 GPU上进行训练。
支持的开源库
目前,多个开源库如DeepSpeed、Colossal-AI和Alpa都很好地支持这三种并行训练方法。这些库提供了高效的实现,方便用户进行大规模训练。
内存优化技术
为了减少内存冗余,可以采用ZeRO、FSDP(Fully Sharded Data Parallel)和激活重计算等技术,这些技术已经集成到DeepSpeed、PyTorch和Megatron-LM中。这些方法能够有效降低GPU内存消耗,从而支持更大的模型训练。
混合精度训练
混合精度训练技术(如BF16)也可以被利用,以提高训练效率并减少GPU内存使用。这需要硬件的必要支持(例如A100 GPU),以实现最佳效果。
性能预测机制
由于训练大型模型是一个耗时的过程,提前预测模型性能并检测异常问题是非常有用的。为此,GPT-4最近引入了一种名为可预测缩放的新机制,基于深度学习栈,能够使用更小的模型预测大型模型的性能,这为LLM的开发提供了重要支持。
深度学习框架的支持
在实践中,可以进一步利用主流深度学习框架的支持训练技术。例如,PyTorch支持数据并行训练算法FSDP,这允许在需要时将部分训练计算卸载到CPU上,从而进一步优化资源使用。
通过结合使用3D并行训练、内存优化技术和混合精度训练,以及借助先进的性能预测机制,研究人员能够更高效地进行大型语言模型的训练。这些技术的集成和应用为训练大规模模型提供了强有力的支持。
5 Post-Training of LLMs
5.1 Instruction Tuning
指令调优(instruction tuning)是对预训练的大型语言模型(LLMs)进行微调的一种方法,主要通过自然语言格式的实例进行。这一过程与监督微调和多任务提示训练密切相关。进行指令调优时,首先需要收集或构建指令格式的实例,然后利用这些实例通过监督学习的方式(例如,使用序列到序列损失进行训练)来微调LLMs。经过指令调优后,LLMs在面对未见任务时能够展示出更强的泛化能力,甚至在多语言环境下也是如此。
最近的一项调研提供了关于指令调优研究的系统性概述。相比之下,本文主要关注指令调优对LLMs的影响,并提供实例收集和调优的详细指南或策略。此外,我们还讨论了指令调优如何满足用户的实际需求,这一方法已在现有的LLMs中得到广泛应用,例如InstructGPT和GPT-4。
5.1.1 Formatted Instance Construction
Formatting NLP Task Datasets
在提出指令调优之前,早期的几项研究收集了来自各种传统NLP任务(如文本摘要、文本分类和翻译)的实例,以创建监督多任务训练数据集。这些多任务训练数据集是指令调优实例的主要来源,便于将其格式化为自然语言任务描述。最近的研究通过人类撰写的任务描述来增强标注数据集,从而指导LLMs理解任务目标。例如,在问答任务中,针对每个示例添加“请回答这个问题”的任务描述。经过指令调优后,LLMs能够通过遵循任务描述在未见任务上良好泛化。
研究表明,指令是LLMs任务泛化能力的关键因素:在没有任务描述的标注数据集上微调模型会导致性能显著下降。为了更好地生成适用于指令调优的标注实例,已提出众包平台PromptSource,以有效创建、共享和验证不同数据集的任务描述。为丰富训练实例,几项研究还尝试通过特别设计的任务描述反转现有实例的输入输出对。例如,给定一对问答,我们可以通过预测基于答案生成问题的新实例(如“请根据答案生成一个问题”)来创建。
假设我们有一个问答任务的数据集,其中的实例仅包含问题和答案的配对,例如:
问题: “是什么让天空变蓝?”
答案: “由于大气散射,短波长的蓝光被散射得更多。”
如果在微调过程中没有提供任务描述(如“请回答这个问题”),模型可能无法理解任务的上下文或目标。结果,模型在处理新的问题时,可能会产生不相关或不准确的答案。
相反,如果在数据集中添加了任务描述,实例将变为:
任务描述: “请回答这个问题。”
问题: “是什么让天空变蓝?”
答案: “由于大气散射,短波长的蓝光被散射得更多。”
这种情况下,模型能够更好地理解任务,进而在面对未见的问题时表现出更高的准确性和泛化能力。
Formatting Daily Chat Data
尽管已经有大量的训练实例被格式化为指令,这些实例主要来自公共NLP数据集,往往缺乏指令多样性或与真实人类需求不匹配。为了克服这一问题,InstructGPT提议使用真实用户提交给OpenAI API的查询作为任务描述。此外,为了丰富任务的多样性,人工标注者被要求为现实生活中的任务撰写指令,包括开放式生成、开放式问答、头脑风暴和聊天等。随后,另一组标注者直接根据这些指令提供输出。最终,他们将一条指令(即收集到的用户查询)和期望的输出(即人工撰写的答案)配对成一个训练实例。
InstructGPT还利用这些以自然语言格式化的现实任务进行对齐调优(详见第5.2节)。此外,GPT-4设计了潜在高风险的指令,并通过监督微调引导模型拒绝这些指令,以确保安全性。考虑到高质量公共聊天数据的缺乏,一些研究也收集了用户的聊天请求作为输入数据,然后利用ChatGPT或GPT-4生成响应作为输出数据。一个显著的例子是ShareGPT的对话数据。此外,Dolly和OpenAssistant也发布了经过人工标注的对话数据,以达到高质量标准。
Formatting Synthetic Data
为了减少人工标注或手动收集的负担,提出了一些半自动化的方法,通过将现有实例输入到大型语言模型(LLMs)中来合成多样化的任务描述和实例。例如,Self-Instruct方法仅需175个实例作为初始任务池。然后,从池中随机选择几个实例作为示例,并提示LLM生成新的指令及相应的输入输出对。经过质量和多样性筛选后,新生成的实例将被添加到任务池中。
这种合成方法是生成大规模指令数据的有效且经济的方式。然而,Self-Instruct方法生成的实例可能过于简单或缺乏多样性。为提高合成指令的质量,WizardLM引入了Evol-Instruct,通过深入和广泛的演变来丰富实例的复杂性和多样性。此外,Self-Align建立了多个与人类对齐的原则,以筛选合成实例,并利用这些实例训练LLM,以生成更对齐的实例。为了提高实例输出的质量,研究人员还直接采用人工撰写的文本作为输出,并使用示例进行合成相应的指令。
(a) 格式化任务数据集 (Formatting Task Datasets)
通过从传统的NLP任务(如文本分类、翻译等)收集实例,增加自然语言的任务描述,形成适用于指令调优的数据集。例如:
实例:
任务描述: 请总结这段文本。
输入: “人工智能正在改变世界。”
输出: “人工智能带来了变革。”
这种方法可以帮助模型更好地理解任务目标。
(b) 格式化日常聊天数据 (Formatting Daily Chat Data)
将日常对话数据转换为指令格式,使其适用于对话系统的训练。例如:
实例:
任务描述: 请回应以下问题。
输入: “今天天气怎么样?”
输出: “今天阳光明媚,气温适中。”
这种格式化帮助模型学习如何在特定上下文中生成自然的对话回应。
(c) 格式化合成数据 (Formatting Synthetic Data)
使用合成数据生成指令格式的实例,通常是通过机器生成的数据。例如:
实例:
任务描述: 请根据以下信息生成一个故事。
输入: “一只小猫和一只小狗成为了好朋友。”
输出: “从前,有一只小猫和一只小狗,它们在公园里相遇……"
Key Factors for Instruction Dataset Construction
指令实例的质量对模型的性能有重要影响。以下是一些实例构建的必要因素:
1. 指令数量的扩展 (Scaling the Instructions)
研究表明,增加任务数量可以显著提升LLMs的泛化能力。任务数量的增加通常会导致模型性能的持续增长,但当达到某个水平时增益会变得微不足道。适量的代表性任务可以提供足够的知识,而添加过多任务可能不会带来额外的收益。此外,任务描述的多样性(例如长度、结构和创造性)也很重要。
2. 格式设计 (Formatting Design)
自然语言格式的设计对LLMs的泛化性能有很大影响。通常,可以在现有数据集的输入输出对中添加任务描述和可选示例。任务描述是LLMs理解任务的关键部分,适量的示例可以显著改善模型的表现。然而,过多的附加组件(如避免事项、原因和建议)可能对性能产生负面影响。最近,为了激发LLMs的逐步推理能力,研究建议在某些推理数据集中包括链式思维(CoT)示例。
3. 指令质量提升 (Instruction Quality Improvement)
数据质量对指令调优的性能至关重要。许多研究提出了提高现有指令数据集质量的方法,这些方法通常依赖于精心设计的提示,指导LLMs改进或重写给定的指令。例如,WizardLM通过设计提示来丰富和复杂化Alpaca数据集,并制定过滤策略以移除低质量指令。还有研究通过引入知识分类法来提供更细致的知识指导。
4. 指令选择 (Instruction Selection)
随着指令数据集的增多,从中选择高质量数据集并不简单。现有工作通常利用质量估计指标或使用LLMs作为评估模型,对指令实例进行排名并选择得分较高的实例。常用的指标包括困惑度和其他启发式测量(如长度),也有更复杂的指标(如IFD)用于综合评估指令的效果。此外,引入多样性意识的采样方法确保代表性指令数据的整体覆盖。
5.1.2 Instruction Tuning Strategies
Balancing the Data Distribution
在指令调优中,由于涉及到多种不同的任务,平衡不同任务的比例至关重要。以下是一些策略和方法:
1. 示例比例混合策略 (Examples-Proportional Mixing Strategy)
这种方法涉及将所有数据集结合在一起,并从混合数据集中均等地采样每个实例。通过这种方式,可以确保模型在训练过程中接触到各种任务,从而提高其泛化能力。
2. 增加高质量数据集的采样比例
根据最近的研究,增加高质量数据集(如FLAN和P3)的采样比例通常会改善模型性能。这意味着在混合数据集中,可以优先选择那些经过验证能够提升模型表现的数据集。
3. 设置最大限制 (Maximum Cap)
在指令调优过程中,通常会设定一个最大限制,以控制数据集中实例的最大数量。这可以防止较大的数据集在整体分布中占据过多的比例,导致模型偏向于某些特定任务。这个最大限制一般设定为几千到几万,具体取决于不同的数据集。
4. 使用多样化的数据集混合
实证研究表明,现有的指令数据集主要集中在提升LLMs在某些方面的能力,单一数据集无法全面提升模型能力。因此,通常建议使用多个现有的指令数据集的混合,以实现不同能力的平衡提升。这些数据集可能包括:
NLP任务数据: 例如FLAN v2,专注于各种NLP任务的训练。
聊天数据: 例如ShareGPT,提供丰富的对话示例。
合成数据: 例如GPT4-Alpaca,利用合成方法生成的高质量指令。
Combining Instruction Tuning and Pre-Training
1. 在指令调优中结合预训练数据
示例: OPT-IML将预训练数据纳入指令调优过程中,视为对模型调优的正则化。这种方法可以提高模型的稳定性,使其在学习新任务时不至于遗忘已经掌握的知识。
2. 从头开始训练模型
一些研究尝试通过多任务学习,将预训练数据(如普通文本)和指令调优数据(格式化数据集)混合使用,以从零开始训练模型。例如,GLM-130B和Galactica在预训练语料中集成了格式化的指令数据集,这样可以同时利用预训练和指令调优的优势。
Multi-Stage Instruction Tuning
对于指令调优,有两种重要的指令数据:任务格式化指令和日常聊天指令。前者的数量通常显著大于后者,因此在训练中平衡这两种指令数据非常重要。
1. 分阶段调优策略
采用多阶段指令调优策略,可以先使用大规模的任务格式化指令对LLM进行初步调优,随后再使用日常聊天指令进行精细调优。在第二阶段中,适量添加任务格式化指令可以有效避免模型遗忘之前学习的能力。
2. 难度逐渐增加的调优阶段
这种多阶段调优策略还可以应用于其他指令调优设置。例如,可以安排不同的调优阶段,逐步增加难度和复杂性,从而逐渐提升LLM处理复杂指令的能力。
Other Practical Tricks
在实际操作中,有多种有效策略和技巧可以帮助提高LLMs的微调性能。以下是一些代表性的策略:
1. 高效训练多轮对话数据
示例: 在多轮对话中,传统的微调方法是将对话拆分成多个上下文-响应对进行训练。然而,这种方式会导致上下文中的重复话语,增加计算成本。Vicuna采用了一种高效的方法,将整个对话输入LLM,但只计算聊天机器人的响应部分的损失。这种方法显著减少了由于重叠话语而产生的计算成本。
2. 建立自我识别信息
示例: 为了在现实世界应用中部署LLMs,有必要建立其身份信息。可以通过创建与身份相关的指令进行微调。例如,可以在输入前加上自我识别提示:“以下是人类与名为CHATBOTNAME的AI助手之间的对话,由DEVELOPER开发。”其中,CHATBOTNAME和DEVELOPER分别指代聊天机器人的名称和开发者。
其他技巧
多个示例串联: 在某些情况下,研究人员会将多个示例串联成一个单一的序列,以接近最大长度限制。这种方法可以充分利用模型的输入能力,提高训练效率。
用户: 你好,今天的天气怎么样?
聊天机器人: 今天晴天,气温在20°C左右。
用户: 那我适合穿什么呢?
聊天机器人: 建议穿轻便的衣服,可能会有些热。
输入: “以下是人类与名为助手的AI助手之间的对话,由OpenAI开发。用户: 你能帮我推荐一本书吗?助手: 当然可以!我推荐《1984》。"
输入: “请给我一个食谱。请推荐一个电影。请分享一个旅行建议。”
5.1.3 The Effect of Instruction Tuning
Performance Improvement
尽管指令调优是在适度数量的实例上进行的,但它已成为提升或解锁大语言模型(LLMs)能力的重要方法。以下是一些关键点:
1. 不同规模模型的收益
研究发现: 涉及从77M到540B参数的多种语言模型的研究表明,各个规模的模型都能从指令调优中获益。
性能趋势: 随着模型参数规模的增加,性能不断提升。例如,大型模型经过指令调优后,通常在处理复杂任务时表现更好。
2. 小型模型的优势
小型模型的表现: 有研究表明,经过指令调优的小型模型在某些任务上的表现甚至超过了未经过调优的大型模型。这说明指令调优可以有效提升模型的学习能力,使其在特定任务中更具竞争力。
3. 一致的改进
适用性广泛: 指令调优在各种模型架构、预训练目标和模型适应方法中均表现出一致的改进。无论是小型PLMs(预训练语言模型)还是大型模型,指令调优都能提供显著的性能提升。
4. 成本效益
相对低成本: 实际上,指令调优的成本远低于预训练,因为所需的指令数据量显著小于预训练数据。这使得指令调优成为一种经济高效的提升模型能力的方法。
指令调优为提升大语言模型的性能提供了一种有效且经济的途径,适用于不同规模和架构的模型。通过合理利用指令数据,研究人员能够在保持低成本的同时,显著提升模型在各种任务上的表现。
Task Generalization
指令调优促进了模型对自然语言指令的理解,从而增强了大语言模型(LLMs)执行任务的能力。以下是一些关键点:
1. 理解自然语言指令
模型能力: 指令调优使得LLMs具备了遵循人类指令的能力,能够在没有示例的情况下完成特定任务,甚至在面对未见过的任务时也能表现出色。
2. 任务表现的提升
研究结果: 大量研究证实,指令调优在已见任务和未见任务上均能实现优异性能,显著改善了模型在实际应用中的表现。
3. 缓解模型缺陷
模型的弱点: 指令调优有助于缓解LLMs的一些弱点,例如减少重复生成或在未完成特定任务的情况下补充输入。这种能力提升使得LLMs在解决现实世界任务时更加高效。
4. 跨语言任务的泛化
示例: BLOOMZ-P3模型是在仅使用英语的任务集合P3上微调的BLOOM模型。研究发现,BLOOMZ-P3在多语言句子完成任务中较BLOOM模型的表现提升了50%以上。这表明,指令调优能够帮助LLMs从英语数据集中获取一般任务技能,并将这些技能迁移到其他语言。
5. 英语指令的有效性
多语言任务: 研究还发现,仅使用英语指令就能在多语言任务中取得令人满意的结果,这减少了针对特定语言进行指令工程的工作量。
Domain Specialization
指令调优为LLMs提供了一种有效的途径,使其能够转变为特定领域的专家,从而在医学、法律、金融等专业领域提供高水平的服务和支持。这种专业化不仅提高了模型的实用性,也拓宽了其应用范围。
5.1.4 Empirical Analysis for Instruction Tuning
Instruction Datasets
任务特定指令 (Task-specific Instructions)
我们采用最常用的多任务指令数据集FLAN-T5,该数据集包含1,836个任务和超过1500万条指令,结合了先前工作的四种数据混合。
日常对话指令 (Daily Chat Instructions)
这种指令类型与用户日常生活相关,采用ShareGPT指令集,包含63,000条真实用户指令。这些指令已被用作Vicuna模型的核心指令。
合成指令 (Synthetic Instructions)
除了重复使用现有指令外,我们还可以使用LLMs自动合成大量指令。我们采用流行的合成指令数据集Self-Instruct-52K,该数据集包含52,000条指令,配对约82,000个实例输入和输出。这些生成的指令与人类编写的种子任务(例如,语法检查、头脑风暴)具有相似的数据分布。
由于原始的FLAN-T5数据集非常庞大(超过1500万条),我们随机抽取80,000条指令,以便与其他指令数据集(如ShareGPT和Self-Instruct-52K)进行公平比较。在实验中,我们对每个单独的指令集进行测试,以探讨其自身的效果,并检验它们在模型性能上的组合效果。
尽管来自人类用户的真实指令更适合微调大语言模型(LLMs),但大规模收集这些指令非常困难。因此,许多现有研究主要采用由LLMs生成的合成指令。然而,合成指令可能存在一些潜在问题,如主题多样性不足和指令难度不均(太简单或太难)。因此,提高合成指令的质量非常必要。以下是四种广泛使用的改进策略:
1. 增强指令复杂性
- 策略说明: 增加指令的复杂性可以提升模型在执行复杂指令时的能力,例如,增加任务要求或需要更多推理步骤。
- 验证方法: 我们遵循WizardLM的做法,通过逐步增加复杂性级别来验证这一策略,如添加约束、增加推理步骤和复杂化输入。我们利用公开发布的WizardLM-70K指令集作为复杂性增强指令数据集,该数据集是基于Self-Instruct-52K数据集生成的。
2. 增加主题多样性
- 策略说明: 提高指令数据集的主题多样性可以帮助模型在现实世界的不同任务中展现出不同的能力。
- 实现方法: 由于直接控制自我指令生成过程以获取多样化指令较为困难,我们借鉴YuLan-Chat的方法,使用ChatGPT重写Self-Instruct-52K数据集中的指令,通过特定提示将其适应为293个主题。最终,获得了70,000条指令作为多样性增强数据集。
3. 扩大指令数量
- 策略说明: 指令数量也是影响模型性能的重要因素。特别是,使用更多指令可以扩展任务知识,提高LLMs的指令遵循能力。
- 验证方法: 为了检验这一策略,我们从MOSS项目发布的合成指令集中抽取新指令,这些指令也是使用相同的自我指令方法生成的。将这些指令与Self-Instruct-52K数据集混合,形成一个包含220,000条指令的更大数据集。
4. 平衡指令难度
- 策略说明: 由于合成指令往往包含过于简单或过于困难的指令,可能会导致LLMs的训练不稳定甚至过拟合。
- 实现方法: 为了探索这一潜在效果,我们利用LLMs的困惑度分数来评估指令的难度,并去除过于简单或困难的指令。为了进行公平比较,我们使用LLaMA (7B)模型计算220,000条指令的大型指令数据集的困惑度,然后保留70,000条中等困惑度分数的指令作为难度平衡数据集。
Experimental Setup
为评估指令数据的效果,我们利用新的指令数据集对LLaMA进行微调。LLaMA是一个广受欢迎的LLM基础架构,广泛用于指令调优。以下是实验的详细设置:
1. 实验环境
硬件配置: 使用8台A800-80G GPU服务器。
模型选择: 微调LLaMA 7B和LLaMA 13B模型。
超参数设置: 所有超参数设置与Stanford Alpaca保持一致。
2. 评估设置
评估场景: 分为两个设置:
聊天设置 (Chat Setting): 主要利用来自日常聊天的用户指令和查询。
问答设置 (QA Setting): 主要使用现有NLP数据集中的问答示例。
3. 聊天设置评估
评估数据集: 基于AlpacaFarm评估集进行评估。
基准模型: 选择在Self-Instruct-52K上微调的LLaMA 7B和13B模型作为参考基线,并与其他使用不同指令微调的模型进行比较。
比较方法: 使用ChatGPT自动标注比较模型的响应,报告胜率(%)作为评估指标。
4. 问答设置评估
基准选择: 选择两个基准,MMLU和BBH,根据其默认设置评估准确性,使用启发式规则解析LLMs的答案。
Results and Analysis
根据对7B和13B LLaMA模型使用不同指令数据集的实验结果,我们进行了详细的总结和分析。以下是主要发现:
1. 任务格式化指令在QA设置中的优势
- 发现: 任务格式化的指令更适合QA设置,但在聊天设置中效果较差。
- 分析: 比较FLAN-T5与ShareGPT和Self-Instruct-52K的性能,FLAN-T5在QA基准上表现更好,而在聊天设置中则逊色于ShareGPT。FLAN-T5由现有NLP任务的指令和示例组成,适合QA任务但不利于用户查询。相对而言,ShareGPT的指令来自真实的用户对话,更能引导LLaMA在日常生活中遵循用户指令。
2. 混合指令类型提升LLMs的综合能力
- 发现: 混合不同类型的指令有助于提高LLMs的综合能力。
- 分析: 在微调时混合三种指令(FLAN-T5、ShareGPT和Self-Instruct-52K),LLaMA变种在两个任务设置中都表现优秀。在MMLU中,LLaMA(7B)相较于使用单一指令集的性能有显著提升(43.69对38.58,FLAN-T5)。这表明,通过多种指令数据集的混合来扩展指令数量和增加多样性是有效的。
3. 增强指令的复杂性和多样性改善模型性能
- 发现: 增加Self-Instruct-52K数据集的复杂性和多样性均可提高模型性能。
- 分析: LLaMA的聊天和QA性能均有所提升,例如,在MMLU中,LLaMA(7B)的表现从37.52提升至39.73。这表明,这两种策略均有助于提升LLMs的指令遵循能力。尤其是在QA任务中,复杂性提升带来了更大的性能改善,因为QA任务通常包含较难的问题,适合学习复杂指令的模型。
4. 单纯增加指令数量效果有限,难度平衡不总是有效
- 发现: 结果显示,平衡指令难度和增加微调指令数量在实验中效果不佳。
- 分析: 尤其是指令数量的扩大,反而可能导致性能下降(例如,LLaMA(7B)在BBH中的表现从29.81降至26.63)。这表明,简单地扩展合成指令数量而不进行质量控制可能无助于提升性能。此外,使用中等难度的指令在聊天设置中表现良好,但在QA设置中略有下降,原因可能在于过滤掉复杂和困难的指令影响了模型在回答复杂问题时的表现。
5. 模型规模越大,指令遵循性能越好
- 发现: 比较使用相同指令数据集微调的LLaMA(7B)和LLaMA(13B)模型,后者的表现通常更佳。
- 分析: 增大模型规模有助于提升指令遵循能力。在MMLU中,QA性能显著提高(例如,从38.11升至47.49)。这可能是因为更大的模型通常具有更好的知识利用和推理能力,可以更准确地回答复杂问题。
以上结果表明,通过不同指令数据集的组合、增强指令的复杂性和多样性,以及模型规模的扩大,可以显著提升LLMs的性能。然而,简单增加指令数量并不总是有效,强调了在微调过程中质量控制的重要性。
Instruction Tuning Suggestions
在对大语言模型(LLMs)进行指令调优时,可以按照以下步骤进行:
1. 准备计算资源
根据所需GPU数量和调优时间的基本统计(见表9),准备相应的计算资源。
2. 设置开发环境
在设置好开发环境后,建议初学者遵循Alpaca代码库的示例进行指令调优。这为调优提供了一个良好的基础和参考。
3. 选择基础模型和构建指令数据集
根据实验需求选择适合的基础模型,并构建相应的指令数据集,结合本节讨论的内容来优化数据集的质量和多样性。
4. 使用LoRA进行参数高效调优
当训练的计算资源有限时,用户可以利用LoRA技术进行参数高效的调优,以减少对计算资源的需求。
5. 推理优化
在推理阶段,用户可以使用量化方法将LLMs部署到更少或更小的GPU上,以提高推理效率和降低资源消耗。
5.2 Alignment Tuning
5.2.1 Background and Criteria for Alignment
大语言模型(LLMs)在广泛的自然语言处理(NLP)任务中展现了显著的能力。然而,这些模型有时会表现出意想不到的行为,例如捏造虚假信息、追求不准确的目标,以及产生有害、误导和偏见的表达。由于LLMs的语言建模目标通过单词预测预训练模型参数,而未能考虑人类的价值观或偏好,因此可能导致这些意外行为。为了解决这些问题,提出了人类对齐(human alignment)的方法,使LLMs的行为与人类期望相一致。然而,与原始的预训练和适应性调优(如指令调优)不同,这种对齐需要考虑非常不同的标准(如有用性、诚实性和无害性)。研究表明,某种程度的对齐可能会损害LLMs的通用能力,这被称为对齐税(alignment tax)。
最近,越来越多的关注集中在开发多样化的标准上,以规范LLMs的行为。以下是三个代表性的对齐标准(即有用、有诚实和无害)作为讨论的例子,这些标准在现有文献中被广泛采用。此外,还有从行为、意图、激励和内在方面等不同角度提出的其他对齐标准,这些标准在本质上与上述三个标准相似(或至少采用类似的对齐技术)。根据具体需求,修改这三个标准也是可行的,例如,用准确性替代诚实性。下面是对这三个代表性对齐标准的简要说明:
1. 有用性 (Helpfulness)
- 定义: LLM应清晰地尝试帮助用户解决任务或回答问题,尽可能简洁高效。
- 高级目标: 当需要进一步澄清时,LLM应具备通过相关询问引出更多相关信息的能力,并展现适当的敏感性、洞察力和谨慎性。
- 挑战: 实现有用性对齐是具有挑战性的,因为很难精确定义和测量用户的意图。
2. 诚实性 (Honesty)
- 定义: LLM应向用户呈现准确的内容,而非捏造信息。
- 不确定性: 模型需在输出中传达适当程度的不确定性,以避免任何形式的欺骗或信息误传。
- 客观性: 诚实性标准相较于有用性和无害性更为客观,因此,诚实性对齐的发展可能不那么依赖于人类努力。
3. 无害性 (Harmlessness)
- 定义: 模型生成的语言应不具攻击性或歧视性,尽可能检测隐蔽的恶意请求。
- 拒绝危险行为: 理想情况下,当模型被诱导执行危险行为时,应礼貌拒绝。
- 主观性: 什么行为被视为有害及其程度因个体或社会而异,取决于使用LLM的人、提出的问题类型以及使用时的上下文。
这些标准相当主观,基于人类认知,因此很难将其直接制定为LLMs的优化目标。现有研究中,有多种方法可以在对齐LLMs时满足这些标准。一种有前景的技术是红队测试(red teaming),通过手动或自动方式以对抗的方式探测LLMs,生成有害输出,然后更新LLMs以防止此类输出的产生。
5.2.2 Collecting Human Feedback
在现有研究中,生成高质量人类反馈数据的主要方法是人类注释。这强调了选择合适的人类标注者的关键作用。为了提供高质量的反馈,人类标注者应具备相应的教育背景和出色的英语能力。例如,Sparrow要求人类标注者为英国本土英语使用者,并至少取得本科及以上学历。
尽管如此,研究表明,研究人员和人类标注者之间的意图常常存在不匹配,这可能导致低质量的人类反馈,从而使大语言模型(LLMs)产生意外输出。为了解决这个问题,InstructGPT进一步实施了筛选过程,通过评估人类标注者与研究人员之间的一致性来过滤标注者。具体而言,研究人员首先对少量数据进行标注,然后测量他们与人类标注者之间的一致性。与研究人员一致性最高的标注者将被选中进行后续的注释工作。
在其他一些研究中,使用了“超级标注者”(super raters)来确保人类反馈的高质量。研究人员评估人类标注者的表现,选择一组表现优异(例如,高一致性)的标注者作为超级标注者。超级标注者将在后续研究中优先与研究人员合作。
在标注LLMs的输出时,提供详细的指示和即时指导对人类标注者非常有帮助,这可以进一步规范标注者的注释过程。
在现有研究中,主要有三种方法用于从人类标注者收集反馈和偏好数据:
1. 排名方法 (Ranking-based Approach)
- 描述: 在早期的研究中,人类标注者通常以粗粒度的方式评估模型生成的输出(即仅选择最佳输出),而未考虑更细致的对齐标准。然而,不同的标注者可能对最佳候选输出的选择持有不同的看法,这种方法忽视了未选中的样本,可能导致不准确或不完整的人类反馈。
- 改进: 随后的研究引入了Elo评级系统,通过比较候选输出来生成偏好排名。输出的排名作为训练信号,指导模型偏向某些输出,从而生成更可靠和安全的结果。
2. 问题方法 (Question-based Approach)
- 描述: 人类标注者可以通过回答研究人员设计的特定问题提供更详细的反馈,这些问题覆盖对齐标准以及LLMs的其他约束条件。
- 实例: 在WebGPT中,为了帮助模型过滤和利用从检索文档中获取的相关信息,人类标注者需要回答与检索文档的相关性有关的多选问题,判断这些文档是否对回答给定输入有用。
3. 规则方法 (Rule-based Approach)
- 描述: 许多研究还开发了基于规则的方法,以提供更详细的人类反馈。
- 实例: Sparrow不仅选择标注者认为最佳的响应,还使用一系列规则来测试模型生成的响应是否符合“有用、正确和无害”的对齐标准。通过这种方式,可以获得两种类型的人类反馈数据:
- 响应偏好反馈: 通过比较模型生成输出的质量,获取的反馈。
- 规则违反反馈: 通过收集标注者的评估(即评分,表示生成输出违反规则的程度)来获取。
-
自动化方法: 此外,GPT-4利用一组基于GPT-4自身的零-shot分类器作为基于规则的奖励模型,自动判断模型生成的输出是否违反一系列人类编写的规则。
5.2.3 Reinforcement Learning from Human Feedback
RLHF System
RLHF系统主要由三个关键组件构成:
-
预训练语言模型 (Pre-trained LM):
- 这是需要对齐的生成模型,通常使用现有的预训练模型参数进行初始化。
- 示例:
- OpenAI在其流行的RLHF模型InstructGPT中使用了175B参数的GPT-3。
- DeepMind在其GopherCite模型中使用了280B参数的Gopher模型。
-
奖励模型 (Reward Model):
- 奖励模型提供基于人类反馈的指导信号,通常以标量值的形式反映人类对LM生成文本的偏好。
- 奖励模型可以有两种形式:
- 微调的LM: 在现有LM上进行微调。
- 新训练的LM: 完全使用人类偏好数据进行训练。
- 通常,奖励模型的参数规模与对齐的LM不同。例如:
- OpenAI使用6B参数的GPT-3作为奖励模型。
- DeepMind使用7B参数的Gopher作为奖励模型。
-
强化学习算法 (RL Algorithm):
- 为了利用奖励模型的信号优化预训练LM,需要设计特定的RL算法以进行大规模模型调优。
- 示例:
- 近端策略优化(PPO)是一种广泛使用的RL算法,已在现有工作中用于对齐。
通过这三个组件的协同工作,RLHF系统能够有效地将人类反馈融入模型训练中,提升生成文本的质量和符合人类期望的程度。
Key Steps for RLHF
1. 监督微调 (Supervised Fine-Tuning)
- 目标: 使LM初步执行预期行为。
- 步骤:
- 收集一个监督数据集,包含输入提示(指令)和期望输出,用于微调LM。这些提示和输出可以由人类标注者为特定任务编写,同时确保任务的多样性。
- 示例: 在InstructGPT中,人类标注者撰写提示(如“列出五个恢复职业热情的想法”)及其期望输出,涉及开放问答、头脑风暴、聊天和重写等多种生成任务。
- 注意: 此步骤在特定设置或场景下是可选的。
2. 奖励模型训练 (Reward Model Training)
- 目标: 使用人类反馈数据训练奖励模型 (RM)。
- 步骤:
- 利用LM生成一定数量的输出文本,输入为随机采样的提示(来自监督数据集或人类生成的提示)。
- 邀请人类标注者对这些输出对的偏好进行注释,通常通过对生成的候选文本进行排名,以减少标注者之间的不一致性。
- 示例: 在InstructGPT中,标注者将模型生成的输出从最好到最差进行排名,RM(6B GPT-3)则被训练以预测这些排名。
- 新方法: 在一些最新研究中,偏好注释可以由AI代理(通常是对齐的LLM)进行,这称为“从AI反馈中进行强化学习”(RLAIF)。这种方法旨在同时保证无害性和有用性,减少人类标注的工作量。
3. 强化学习微调 (RL Fine-Tuning)
- 目标: 将对齐(微调)LM形式化为一个强化学习问题。
- 步骤:
- 预训练的LM作为策略,输入为提示,输出为文本,动作空间为词汇,状态为当前生成的标记序列,奖励则由RM提供。
- 为避免与初始LM显著偏离,通常在奖励函数中引入惩罚项。
- 示例: InstructGPT使用PPO算法优化LM,针对每个输入提示,计算当前LM生成结果与初始LM之间的KL散度作为惩罚。
- 迭代: 第二和最后步骤可以进行多轮迭代,以更好地对齐LLMs。由于RL算法的不稳定性,最新研究还提出通过重新使用排名较高且奖励较高的样本来替代RL调优,进行另一轮监督微调。
在对齐大语言模型(LLMs)时,首先收集一个监督数据集,例如,OpenAI的InstructGPT通过人类标注者提供输入提示(如“列出五个职业发展的建议”)和相应的期望输出,以便进行初步的监督微调。接下来,使用人类反馈训练奖励模型(RM),标注者对模型生成的多个回答进行排名,帮助模型学习哪些输出更符合人类偏好。最后,将对齐过程视为强化学习问题,模型生成的每个输出根据RM提供的奖励进行优化,同时加入惩罚项以避免与初始模型过度偏离。这一系列步骤确保生成的文本既安全又有用。
Practical Strategies for RLHF
尽管强化学习与人类反馈(RLHF)在有效对齐大语言模型(LLMs)与人类方面具有潜力,但实际实施中存在挑战。本部分讨论了几种提高RLHF有效性和效率的策略。
1. 有效的奖励模型训练
- 模型规模: 尽管InstructGPT使用了较小的奖励模型(6B GPT),但研究表明,使用较大的奖励模型(与原始模型规模相等或更大)通常效果更佳,因为大模型在判断LLM输出质量上表现更好。
- 初始化方法: 在LLaMa 2中,使用预训练的聊天模型检查点初始化奖励模型,以减少对齐模型与奖励模型之间的信息不匹配。
- 过拟合问题: 训练大型奖励模型时常遇到过拟合问题,解决方案是引入对人类注释的输入提示首选响应的损失作为正则化器。
- 多重奖励模型: 由于对齐标准多样(如有用性和诚实性),训练一个单一的奖励模型往往难以满足所有标准。因此,训练多个针对不同标准的奖励模型,并通过特殊组合策略计算最终奖励,可以实现更灵活的对齐规则。
2. 有效的RL训练
- 初步微调: 在进行RL训练前,建议对语言模型进行良好的监督微调,以提高模型能力。常用方法是基于对齐数据集中的最佳输出进行微调,直到收敛。
- 迭代优化: LLaMA 2成功训练了五个版本的RLHF模型,随着奖励模型的改进,LLM的性能也得到提升。此外,LLaMA 2将前几次迭代的样本纳入后续训练,以减轻可能的能力退化。
3. 高效的RL训练
- 计算成本: RL训练需要迭代LLM和奖励模型的推理过程,增加内存和计算成本。可以将奖励模型部署在单独的服务器上,通过API与LLM进行交互,以降低资源消耗。
- 解码效率: RLHF需要生成多个候选输出,使用束搜索解码算法比多次调用采样解码过程更高效,这不仅减少计算负担,还增强生成响应的多样性。
Process-Supervised RLHF
在强化学习与人类反馈(RLHF)的现有文献中,监督方法主要有两种形式:结果监督信号和过程监督信号。
结果监督RLHF:这种方法使用定量评分来评估LLM生成文本的整体质量。
过程监督RLHF:该方法对生成内容中的每个组成部分(如句子、单词或推理步骤)进行评估,利用细粒度的监督信号指导训练,帮助LLM改进不理想的生成内容。
过程监督RLHF的两个关键方面
1. 获取细粒度监督信号
- 相较于结果奖励,获取细粒度监督信号更具挑战性。OpenAI发布了一个名为PRM800k的细粒度注释数据集,包括12K个过程注释的数学问题及75K个由LLM生成的解决方案,其中每个推理步骤被标注为积极、消极或中立。
- 考虑到人工注释的成本和效率,已有一些方法尝试自动化注释中间推理步骤的正确性,例如使用强大的LLM替代人工标注者或应用蒙特卡洛树搜索。
- 获取细粒度监督信号后,现有研究通常利用这些信号训练过程监督奖励模型(PRM),在RLHF过程中生成步骤级奖励(如基于句子或基于标记的奖励)。
2. 利用PRMs
- 为有效利用PRMs中的过程监督信号,现有研究主要利用这些细粒度信号评估LLM响应中的个别部分,并指导LLM调整生成行为,以最大化获得的奖励。
- 专家迭代是一种有效的RL算法,已被用于通过学习专家策略改进基础策略。专家迭代包含两个主要阶段:策略改进和蒸馏。在策略改进阶段,专家策略在PRMs的指导下进行系统搜索以生成样本;在蒸馏阶段,第一阶段生成的样本用于通过监督微调改进基础策略。
- 除了专家迭代,PRMs还可以用于对LLM生成的最终答案候选进行重新排序,或在逐步推理过程中选择更好的中间推理步骤。
5.2.4 Alignment without RLHF
尽管强化学习与人类反馈(RLHF)在将大语言模型(LLMs)与人类价值观和偏好对齐方面取得了显著成功,但它仍然存在一些明显的局限性:
多模型训练:
RLHF需要同时训练多个模型,包括被对齐的模型、奖励模型和参考模型。这一过程在算法上繁琐,并且在实践中消耗大量内存。
复杂的算法:
在RLHF中常用的PPO(Proximal Policy Optimization)算法相对复杂,且对超参数非常敏感,这使得调优过程较为困难。
直接优化的替代方案:
近年来,越来越多的研究探索直接优化LLMs以符合人类偏好的方法,采用监督微调而非强化学习。这种方法可以简化训练流程,减少对复杂算法的依赖。
Overview
非强化学习(non-RL)对齐方法的基本理念是通过在高质量对齐数据集上使用监督学习直接微调大语言模型(LLMs)。该方法假设响应反馈或避免不安全行为的黄金规则已经被注入或包含在特别策划的对齐数据集中,从而使LLMs能够通过适当的微调策略直接从这些示范数据中学习对齐行为。
对齐数据集的构建:
对齐数据集可以通过已对齐的LLM根据人类编写的安全原则自动构建。
还可以通过编辑操作来细化现有示例。
此外,可以重用现有的奖励模型,从已有的人类反馈数据中选择高评分的响应。
微调损失的设计:
非RL对齐方法主要在高质量对齐数据集上以监督学习的方式微调LLMs,采用与原始指令调优损失相同的方式。
同时,可以使用辅助学习目标来增强对齐性能,例如对响应进行排序或对指令-响应对进行对比。
Alignment Data Collection
构建对齐数据对于有效地将大语言模型(LLMs)的行为与人类偏好对齐至关重要。为收集高质量的对齐数据,有几种研究方向,包括重用现有的奖励模型、利用强大的LLMs生成合成对齐示例,以及建立交互式学习环境。
1. 基于奖励模型的方法
- 奖励模型的应用:RLHF中的奖励模型被训练用于衡量LLMs响应的对齐程度。通过利用现有的奖励模型,可以选择高质量的响应作为后续微调的对齐数据。
- RAFT:该方法利用基于人类偏好数据训练的奖励模型对LLMs的响应进行排名,收集高奖励的响应进行监督微调。
- Quark:将LLMs的响应按奖励分数分为不同的分位数,每个分位数附带特殊的奖励标记,表示奖励水平。基于这些高奖励标记,LLMs随后被引导生成高质量响应。
- ILF:该方法首先生成优化答案,然后利用奖励模型选择最符合人类反馈的答案进行进一步训练。
2. 基于LLMs的生成方法
- 挑战与解决方案:训练奖励模型需要大量高质量的人类标注数据,这通常成本高且供应不足。因此,一些研究探索利用强大的LLMs自动生成与人类对齐的数据。
- 宪法人工智能(Constitutional AI):提出人类监督来自一套指导AI行为的原则,LLMs根据这些原则自我批评有害响应,并反复修正为最终的对齐响应。
- Self-Align:首先生成涵盖多样主题的指令,然后通过人类编写的原则引导模型生成有用、伦理和可靠的响应作为对齐数据。
- FIGA:发展了一种改进的监督对齐方法,在对比方式中同时利用负面(低质量原始输出)和正面(LLMs生成的优化输出)响应,帮助LLMs深入理解细粒度的修正如何导致良好的响应。
3. 基于LLMs的交互式方法
- 模拟交互环境:大多数现有方法在孤立环境中训练LLMs,缺乏实际环境中的外部反馈。为模拟这种学习方法,Stable Alignment构建了一个由多个LLM代理组成的模拟交互环境,代理之间持续互动并接收改进反馈。
- 一旦中央代理接收到指令,它会生成响应并与附近的代理共享。这些批评代理生成反馈,包括对响应的评分和修正建议。随后,中央代理会根据这些建议修正原始响应。
Supervised Alignment Tuning
在获得对齐数据后,设计合适的微调策略以实现直接对齐至关重要。一种简单的方法是基于对齐数据优化大型语言模型(LLMs),使用传统的序列到序列目标。除此之外,还有多项研究探索辅助损失,以增强从对齐数据中学习的效果。
-
主要训练目标:
- 对齐数据通常包括输入指令和输出响应,主要训练损失仍然是传统的交叉熵损失。
- 例如,CoH通过在标注的好坏响应前添加“一个有帮助的答案:”和“一个无帮助的答案:”来构建训练数据,并仅对带有特殊掩码的响应标记计算损失。Quark则根据对齐质量将模型响应排序,并在每个响应前添加特殊奖励标记表示响应的奖励水平。
-
直接偏好优化(DPO):
- DPO提议使用策略模型重新参数化响应奖励,从而去除显式的奖励建模步骤,优化的学习目标仅涉及策略模型。
- 尽管DPO有效,但在平衡正负实例学习方面存在挑战,且参考模型的弱性能可能会影响对齐效果。
-
辅助优化目标:
- 除了主要的交叉熵损失外,还提出了辅助训练损失以增强对齐数据的学习。
- 排序损失可以用来训练模型保持响应的排名顺序。例如,RRHF从多个来源采样响应,并根据奖励模型的评分优化排名损失。
- SLiC-HF通过潜在空间中的距离评估模型输出与人类偏好的相似性,并引入特定的校准和正则化损失。
- 一些研究采用对比学习,提升正确指令-响应对的概率,同时降低不正确对的概率,以增强响应与指令之间的相关性。
5.2.5 Remarks on SFT and RLHF
在第5.1节中讨论到,指令调优是使用格式化的示范数据(指令与期望输出配对)来训练预训练语言模型的过程。最初,指令数据主要来自自然语言处理(NLP)任务,而现在已扩展到更多样化的监督数据,包括输入和输出文本的配对(例如开放式对话的发言)。在大型语言模型(LLMs)中,使用这些配对文本的训练也被称为监督微调(SFT)。在本部分中,我们主要使用“SFT”的缩写进行讨论,而不是指令调优,因为这样更简单且更受欢迎。
Overall Comparison with RL Formulation
根据第5.2.3节的讨论,文本生成问题可以被视为基于强化学习(RL)的决策过程。以下是两者的比较:
1. 任务描述
-
RLHF(人类反馈强化学习):
- 任务是根据输入提示逐步生成文本完成。每一步,代理(即LLM)根据当前状态(已生成的令牌序列和其他可用上下文信息)执行一个动作(生成一个令牌)。
- 期望生成高质量的输出文本,从而获得较高的奖励分数。
-
SFT(监督微调):
- 采用教师强制方法,直接优化示范输出的可能性。通过模仿专家的行为(即每一步的目标令牌)进行训练。
2. 学习方式
-
RLHF:
- 首先学习奖励模型,然后使用该模型通过强化学习(如PPO)来改进LLM。
- 强调全局优化(文本级损失),考虑人类的偏好和反馈。
-
SFT:
- 直接利用示范数据进行“局部”优化(令牌级损失),不需要指定奖励模型。
- 本质上执行行为克隆,利用专家的动作作为监督标签,直接学习模仿专家的示范。
3. 优化方式
- RLHF:
- 通过人类反馈来优化生成的文本,关注整体输出的质量。
- SFT:
- 通过示范数据进行优化,关注每个生成步骤的准确性。
- RLHF和SFT是优化LLM决策过程的两种不同方法,前者基于奖励模型进行全局优化,后者通过模仿学习进行局部优化。两者各有优缺点,选择取决于具体应用需求。
Pros and Cons of SFT
1. SFT的有效性
- SFT已被证明是一种有效的方法,可以提升大型语言模型(LLMs)在各种基准测试上的表现,增强任务的泛化能力,灵活地赋予特定功能(例如建立聊天机器人的身份)。
- 具体讨论可参见第5.1.3节。
2. SFT的局限性
- SFT主要解锁模型的能力,而并非注入新的能力,因此在尝试激发LLMs的非内生能力时可能会出现问题。
- 例如,如果演示数据超出LLMs的知识或能力范围,可能会导致模型产生“幻觉”行为,即生成不准确或虚构的信息。
3. 幻觉行为的风险
- 从John Schulman关于RLHF的观点来看,将优秀模型的知识蒸馏到能力较低的模型(例如使用GPT-4生成的响应作为微调数据)可能增加生成幻觉文本的可能性,从而影响LLMs的事实准确性。
4. 行为克隆的挑战
- 作为一种行为克隆方法,SFT旨在模仿构建演示数据的专家的行为,但不同标注者在写作风格、质量和偏好上的差异可能会影响SFT的学习效果。
- 因此,优质的指令数据(而非数量)是SFT阶段有效训练LLMs的主要因素。
Pros and Cons of RLHF
1. RLHF的起源
- RLHF最早在深度强化学习文献中探索,随后被借用来提升语言模型的能力(如文本摘要),并作为开发InstructGPT的基础技术。
- 近来的研究表明,RLHF在减少有害响应和增强模型能力方面有效。
2. LLaMA 2的表现
- LLaMA 2展示了RLHF能够同时提高模型的有用性和无害性得分,主要归因于人类与LLM之间更好的协同作用。
- 主要原因包括:
- 人类标注者主要提供偏好标注,从而减轻了SFT中标注者之间的差异。
- 偏好标注比编写示范数据更简单,标注者能够评判更优生成结果的质量,从而探索超出人类标注者所能展示的更广泛状态空间。
3. RLHF的学习机制
- RLHF鼓励LLM通过对比自我生成的响应(区分好坏响应)来学习正确的策略,而不再强迫模型模仿外部示范数据,这有助于减轻SFT中出现的幻觉问题。
- 在GPT-4中,RLHF被证明是一种重要的方法,可以减少幻觉行为。
4. RLHF的挑战
- RLHF继承了经典强化学习算法的一些缺点,如样本效率低和训练不稳定。
- 在应用于LLM时,RLHF依赖于强大的SFT模型作为初始模型检查点,以有效地实现良好的性能。
- 人类标注者参与复杂的迭代优化过程,其中多个重要细节(如提示选择、奖励模型训练和PPO训练的调度、超参数设置)对整体模型性能有重要影响。
总结
- SFT在预训练模型检查点之后特别有效,能够提升模型能力,而RLHF则有望进一步改善SFT模型的能力。
- 然而,RLHF的实现较为困难,公共文献中对其探索仍然不足,未来仍需在高效可靠的标注和简化优化方面进行更多研究。
5.3 Parameter-Efficient Model Adaptation
5.3.1 Parameter-Efficient Fine-Tuning Methods
1. Adapter Tuning
- 定义:在Transformer模型中引入小型神经网络模块(adapter),以实现有效的任务特定调优。
- 结构:
- 使用瓶颈架构(bottleneck architecture),首先将原始特征向量压缩到更小的维度,然后再恢复到原始维度。
- 通常在每个Transformer层中串联插入适配器模块,插入位置是在注意力层(attention layer)和前馈层(feed-forward layer)之后。
- 也可以采用并行适配器(parallel adapters),两个适配器模块与注意力层和前馈层并行放置。
- 训练:在微调(fine-tuning)过程中,适配器模块会根据特定任务目标进行优化,而原始语言模型的参数保持冻结(frozen),从而有效减少可训练参数的数量。
2. Prefix Tuning
- 定义:在每个Transformer层前添加一组可训练的前缀向量(prefix vectors),这些前缀向量是任务特定的,可以视为虚拟令牌嵌入(virtual token embeddings)。
- 优化方法:
- 使用重参数化技巧(reparameterization trick),通过学习一个多层感知机(MLP)函数将较小的矩阵映射到前缀的参数矩阵,而不是直接优化前缀。
- 优势:这种方法被证明有助于稳定训练(stable training),优化后只保留派生的前缀向量以提升任务特定性能。
3. Prompt Tuning
- 定义:主要在输入层引入可训练的提示向量(prompt vectors),通过包括一组软提示令牌(soft prompt tokens)来增强输入文本。
- 实现:
- 任务特定的提示嵌入与输入文本嵌入结合,随后输入到语言模型中。
- P-tuning提出了一种自由形式的方法,将上下文、提示和目标令牌结合,适用于自然语言理解(natural language understanding)和生成(generation)模型。
- 特点:由于只包括少量可训练参数,性能高度依赖于底层语言模型的能力。
4. LoRA
- 定义:在每个密集层施加低秩约束(low-rank constraint),以近似更新矩阵,从而减少适应下游任务的可训练参数。
- 更新过程:保持原始矩阵冻结,通过低秩分解矩阵(low-rank decomposition matrices)近似参数更新。
- 优点:显著节省内存和存储使用,允许保持单个大型模型副本,同时维护多个任务特定的低秩分解矩阵,适应不同下游任务。
5.3.2 Parameter-Efficient Fine-Tuning on LLMs
随着大语言模型(LLMs)的兴起,轻量级适应方法的研究受到越来越多的关注,特别是在下游任务中的高效调优。低秩适应(LoRA)被广泛应用于开源LLMs,如LLaMA和BLOOM,以实现参数高效的微调,显著减少了需要训练的参数数量,使其适合资源有限的环境。
Alpaca-LoRA是Alpaca模型的轻量级版本,Alpaca是一个经过52K人类指令示例训练的7B LLaMA变体。该模型在不同语言和规模下进行了广泛探索,展示了其适应性。最近的研究如LLaMA-Adapter在每个Transformer层中引入可学习的提示向量,并利用零初始化的注意力机制来增强训练,特别是解决了欠拟合提示向量带来的挑战。
实证研究评估了多种调优方法,包括串行和并行适配器调优,以及LoRA在三个LLMs(GPT-J、BLOOM和LLaMA)上的表现。结果表明,尽管这些高效调优方法在复杂任务上表现不如GPT-3.5基线,但在简单任务上却能取得相当的效果。
PEFT(参数高效微调)库整合了多种高效调优方法,并支持GPT-2和LLaMA等模型,以及ViT和Swin Transformer等视觉Transformer。目前大多数研究集中在小型预训练模型上,尚缺乏对不同高效调优方法在大型语言模型上表现的深入研究,特别是在不同任务和设置下的表现。对高效调优方法如LoRA和Alpaca-LoRA的探索反映了优化LLM性能与减少资源使用之间日益增长的承诺。然而,仍需更多研究以全面理解它们在更大模型和多样化应用中的影响。
6 Utilization
6.1 Prompting
6.1.1 Prompt Creation
通常,有四个关键成分描述了提示在激发大语言模型(LLMs)完成任务时的功能,包括任务描述、输入数据、上下文信息和提示风格。为了直观理解我们的讨论,我们还在表13中展示了针对问答、元评论生成和文本到SQL的三个提示示例。
任务描述:任务描述通常是LLMs需要遵循的具体指令。一般来说,应清晰地用自然语言描述任务目标。对于具有特殊输入或输出格式的任务,通常需要详细说明,并可以进一步利用关键字突出特殊设置,以更好地指导LLMs完成任务。
输入数据:在常见情况下,直接用自然语言描述输入数据(例如,LLMs应响应的实例)是简单明了的。对于特殊输入数据,如知识图谱和表格,有必要采用合适且方便的方式使其对LLMs可读。对于结构化数据,通常采用线性化的方式将原始记录(例如,知识三元组)转化为序列。此外,编程语言(例如,可执行代码)也被用于制定结构化数据,这也支持使用外部工具(例如,程序执行器)生成精确结果。
上下文信息:除了任务描述和输入数据,特定任务的上下文或背景信息也是必不可少的。例如,检索到的文档在开放领域问答中作为支持证据非常有用。检索文档的质量及其与问题的相关性会影响生成的答案。因此,需要以适当的提示模式或表达格式包含这些信息。此外,上下文中的任务示例也有助于引导LLMs完成复杂任务,它们可以更好地描绘任务目标、特殊输出格式以及输入与输出之间的映射关系。
提示风格:对于不同的LLMs,设计合适的提示风格以激发其解决特定任务的能力非常重要。总体而言,应将提示表达为明确的问题或详细的指令,以便被很好理解和回答。在某些情况下,添加前缀或后缀以更好地指导LLMs也是有用的。例如,使用前缀“让我们逐步思考”可以帮助引导LLMs进行逐步推理,而使用前缀“您是此任务(或该领域)的专家”可以提升LLMs在某些特定任务中的表现。此外,对于基于聊天的LLMs(例如,ChatGPT),建议将长或复杂的任务提示分解为多个子任务的提示,然后通过多轮对话将它们输入LLMs。
example:
-
任务描述:
- “请回答以下问题:”
-
输入数据:
- “谁是美国第一任总统?”
-
上下文信息:
- “这是一个关于美国历史的问答。”
-
提示风格:
- “请简洁地回答这个问题。你可以加上一些背景信息。”
基于提示的关键成分,我们总结了几个关键设计原则,以帮助创建更有效的提示来解决各种任务。
-
明确表达任务目标:
- 任务描述应清晰明确,避免模糊不清,以防导致不准确或不当的响应。这强调了在使用这些模型时需要清晰和明确的指令。详细的描述应包含各种元素来解释任务,包括任务目标、输入/输出数据(例如,“给定一篇长文档,我希望你生成一个简洁的摘要。”)以及响应约束(例如,“摘要的长度不能超过50字。”)。通过提供清晰的任务描述,LLMs可以更有效地理解目标任务并生成所需的输出。
-
分解为简单、详细的子任务:
- 为了解决复杂任务,将困难的任务分解为几个更简单、详细的子任务是重要的,这与第6.4节中的规划技术密切相关。例如,可以明确列出子任务,采用多个编号项的形式(例如,“通过执行以下任务编织连贯的叙事:1. ...; 2. ...; 3. ...”)。通过将目标任务分解为子任务,LLMs可以专注于解决更简单的子任务,最终实现复杂任务的更准确结果。
-
提供少量示例演示:
- 如第6.2节所讨论,LLMs可以通过上下文学习来解决复杂任务,其中提示包含少量所需输入-输出对的示例,即少量示例演示。这些示例可以帮助LLMs学习输入与输出之间的语义映射,而无需参数调整。实际上,建议为目标任务生成少量高质量的示例,这将极大地有利于最终的任务表现。
-
利用模型友好的格式:
- 由于LLMs是在特别构建的数据集上进行预训练的,因此某些提示格式可以使LLMs更好地理解指令。例如,正如OpenAI文档所建议的,可以使用###或"""作为停止符号,以分隔指令和上下文,这样LLMs可以更好地理解。一般来说,大多数现有LLMs在英语任务中表现更好,因此在解决困难任务时使用英语指令是有用的。
-
采用角色扮演策略:
- 由于LLMs在包含多样角色和对话的广泛语料库上进行预训练,它们具有内在的角色扮演能力。可以通过特定提示利用这一特性,以增强其在某些特定领域的能力。例如,在解决数学问题时,可以使用提示前缀“你是数学专家”。这使得LLMs能够从专家的角度解决问题,从而更有效地利用其预训练知识。通过角色扮演提示引导LLMs,它们通常能够生成更合理和准确的解决方案。
我们进一步进行实证研究,以展示提示对任务表现的影响。为进行实验,我们选择了多种任务,包括语言生成、知识利用、复杂推理、结构化数据生成和信息检索。对于每个任务,我们手动编写了遵循上述一般指导原则的提示。需要注意的是,测试的提示可能不是这些任务的最佳提示,因为它们主要旨在帮助读者理解如何为解决不同任务编写有效提示。此外,我们还为大多数任务添加了一个简化的提示作为对比。根据第7.4节的实验设置,我们考察了ChatGPT在复杂推理任务(Colored Objects和GSM8k)上的3-shot表现,以及其他任务的零-shot表现。实验结果在表17中报告,同时我们也包含了现有文献中的监督性能作为参考。
-
精心设计的提示能提升ChatGPT的零-shot或few-shot表现:
- 通过比较在同一任务上使用不同提示的结果,我们发现,使用精心设计的提示可以比简单提示获得更好的表现。在精心设计的提示中,我们提供了更清晰的任务描述(例如,WMT和WikiFact),或使用了模型友好的格式(例如,GSM8k和OBQA)。例如,对于WikiFact任务,使用更详细任务描述的提示使得表现从29.25提高到31.21。
-
更复杂的任务从精心的提示工程中受益更多:
- 在WikiFact和Colored Objects任务中,设计的提示极大地改善了ChatGPT的表现,即在WikiFact上从23.61提升到28.47,在Colored Objects上从53.20提升到66.75。这表明,对于LLMs在复杂任务中表现良好,提示工程是必要的,因为这些任务通常具有特定的输出格式或需要背景知识。我们的示例提示提供了更详细的任务描述(例如,输出格式和任务目标),这可以帮助ChatGPT更好地理解复杂任务的要求。
-
对于数学推理任务,基于编程语言格式设计具体提示更有效:
- 对于GSM8k,设计的提示采用代码格式的few-shot示例,将这个数学推理任务转化为代码生成任务,这可以利用ChatGPT强大的代码合成能力来解决数学问题。此外,借助外部程序执行器,我们能够获得更精确的结果,而不是依靠LLMs进行算术运算。可以看到,在GSM8k上的表现从78.47提升到79.30,表明在数学推理任务中编程语言的有效性。
-
在知识利用和复杂推理任务中,ChatGPT通过合适的提示达到了可比的表现,甚至超越了监督基准:
- 在知识利用和复杂推理任务中,使用适当的零-shot或few-shot提示的ChatGPT可以实现与监督方法可比的表现,甚至超越这些方法,例如在WikiFact上ChatGPT为31.21,而监督基准为34.20。尽管如此,在某些特定任务(例如,ARC和WikiFact)中,ChatGPT的表现仍低于监督基准模型,因为这些监督模型已经针对特定任务数据进行了优化。
-
通过适当的提示工程,LLMs可以处理一些非传统的NLP任务:
- 借助特定提示,ChatGPT还可以完成非传统的NLP任务,例如一般推荐和对话推荐。一个关键点是,这些任务可以很好地用自然语言表达或描述。然而,ChatGPT的表现仍远低于这些任务的参考表现,因为LLMs无法直接适应这些需要特定领域知识和任务适应的任务。
6.1.2 Prompt Optimization
Discrete Prompt Optimization
离散提示通常由一系列自然语言标记组成。尽管其形式简单灵活,但在离散空间中优化提示是一个具有挑战性的问题,因为搜索空间极其庞大。为了自动搜索下游任务的有效提示,现有研究提出了多种离散提示优化方法,具体如下:
1. 基于梯度的方法
这类方法旨在通过梯度更新最大化输出的可能性,从而优化提示搜索过程。代表性工作 Auto-Prompt 提出了一个梯度引导的方法,通过贪婪地搜索每个位置的最佳标记,利用替换提示标记时的对数可能性变化来近似梯度。然而,这种搜索过程可能非常耗时,因为它需要对每个提示位置的每个候选标记进行评估,因此引入了大量的前向计算。为此,改进的梯度方法将离散标记转换为连续嵌入,并在优化过程中计算连续空间的梯度。
2. 基于强化学习的方法
由于离散提示难以通过梯度反向传播进行学习,一些研究将离散提示优化形式化为强化学习(RL)问题,利用RL算法进行优化。例如,RLPrompt 训练一个策略网络生成期望的提示,并使用多个奖励函数。该方法提出了几种有效的奖励稳定化策略来提高RL训练效率。相比于需要大量数据进行训练的先前工作,TEMPERA 提出在测试时编辑提示,利用预训练的RL代理逐步编辑手动编写的初始提示的不同部分。虽然这些方法简单有效,但它们探索的是手动定义的编辑空间(例如,添加、交换和删除),限制了提示搜索的灵活性。相对而言,PRewrite 利用RL训练提示重写器生成新提示,而不是简单修改,从而在动作空间中提供更大的灵活性。
3. 基于编辑的方法
上述方法的梯度和RL调优对于越来越大的模型可能计算成本极高,且不易于API调用(例如,ChatGPT)。因此,另一类研究旨在直接基于任务表现编辑现有提示。具体而言,GPS 借鉴遗传算法的思想,提出了一种遗传提示搜索方法,利用语言模型(例如T5)通过完形填空任务形式编辑提示。除了基于模型的编辑方法,人工定义的操作(如删除、交换、同义改写和添加)也可以用于提示编辑,基于这些操作,它们迭代地编辑提示,并根据小样本池中的模型表现贪婪搜索最佳提示。
4. 基于LLM的方法
由于大型语言模型(LLMs)卓越的能力,越来越多的研究直接利用LLMs作为提示生成器。例如,APE 利用LLM生成初始提示,然后选择准确度最高的提示,最后通过迭代的蒙特卡罗搜索方法改进最佳候选提示。然而,这种方法未能有效约束提示搜索空间,可能导致不稳定的结果。为了实现良好的表现和快速收敛,有些研究利用启发式方法(如进化算法和对抗学习)进行提示优化。其他研究则借鉴基于梯度的模型优化方法,将LLM提示优化类比于模型优化。例如,APO 指示LLM生成文本反馈,以指导如何将旧提示改进为新提示,并执行文本梯度下降。然而,这些方法在提示空间中的搜索效率可能不高,未能充分考虑先前提示的整个优化过程,因此可能导致次优结果。因此,最近一些研究结合先前提示及其分数来指导LLMs逐步生成更好的新提示。为了进一步设计提示优化器的正式指导,GPO 对基于LLM的提示优化器进行了系统类比,进一步开发了一个更正式的基于LLM的提示优化框架,广泛借鉴机器学习优化的思想。具体而言,它从先前的提示中检索相关提示,并利用基于生成的优化策略进行更新。为了避免每次迭代的大幅变化,GPO还采用了基于余弦的衰减策略来控制编辑距离。然而,这些方法在探索有效提示的广阔空间时仍然面临挑战。受到人类试错法的启发,提示优化进一步被形式化为战略规划问题,并使用蒙特卡罗树搜索导航广阔的提示空间。
Continuous Prompt Optimization
连续提示优化涉及使用可以通过梯度更新直接优化的连续嵌入,这些嵌入基于下游任务的损失进行调整。这种方法主要在预训练语言模型(PLMs)中被探讨,但在大型语言模型(LLMs)中由于其庞大的参数量而受到的关注较少。以下是关于连续提示优化的一些关键概念和方法的详细概述。
1. 连续提示概述
- 定义:连续提示表示为一组连续的嵌入,与由离散单词或短语构成的离散提示不同。
- 优化:这些嵌入可以使用梯度下降方法进行优化,基于特定任务的损失,例如交叉熵损失。
2. 充足数据的学习
-
监督学习:在提供充足标注数据的情况下,连续提示被视为可训练的参数,目标是通过最小化交叉熵损失来优化这些提示。
- 技术:
- 前缀调优(Prefix Tuning):这种方法在每个Transformer层添加一系列连续向量(前缀),允许在保持主模型参数不变的情况下进行高效的参数调优。
- 提示调优(Prompt Tuning):该方法仅在输入层引入可训练的提示向量,关注于优化输入表示。
- 技术:
-
局限性:尽管这些方法在参数效率上表现优异,但通常缺乏对输入语义的充分考虑,这可能限制其有效性。
-
上下文调优:为了解决这一问题,上下文调优基于输入文本推导连续提示,并通过下游任务的损失进行优化。
3. 稀缺数据的提示转移
-
挑战:监督学习方法需要充足的训练数据,而在某些领域可能无法获得。
-
SPoT 方法:这种基于提示的迁移学习方法首先从多个源任务中学习一个单一的连续提示,然后用这个提示初始化目标任务的提示。
- 缺点:对所有目标任务实例使用相同的提示可能不合适,因为它未考虑目标数据中的多样性。
-
自适应注意机制:为增强提示转移,改进的方法在转移过程中引入了自适应注意机制。这一机制考虑了任务级和实例级的信息,使提示适应性更强,能够更好地应对多样化的数据实例。
6.2 In-Context Learning
6.2.1 ICL Formulation
假设我们想让模型进行情感分析。首先,我们给模型一个任务描述:“分析以下句子的情感是积极还是消极”。接着,我们选择两个示例:示例1是“这部电影真是太棒了!”(情感:积极),示例2是“这餐厅的食物非常差。”(情感:消极)。然后,我们将这些信息组合成一个自然的提示:“分析以下句子的情感是积极还是消极。
例子1:这部电影真是太棒了!情感:积极。
例子2:这餐厅的食物非常差。情感:消极。
新句子:这本书让我感到很开心。”
最后,我们将这个提示输入到模型中,模型会根据提供的示例分析新句子,给出情感判断,比如“积极”。通过这种方式,模型能够利用上下文中的示例来理解和完成任务。
6.2.2 Demonstration Design
Demonstration Selection
在In-Context Learning(ICL)中,不同的示例会导致模型性能的差异,因此选择合适的示例非常重要。主要有两种示例选择方法:启发式方法和基于LLM的方法。
启发式方法:由于其简单和成本低,许多研究采用启发式方法来选择示例。例如,一些研究使用k-NN算法来选择与查询语义相关的示例。但是,这些方法通常是针对每个示例单独选择,而没有评估整个示例集。为了解决这个问题,提出了基于多样性的选择策略,以选择最具代表性的示例集。此外,还有研究同时考虑相关性和多样性来选择演示。
基于LLM的方法:另一种方法是利用大型语言模型(LLM)来选择示例。例如,LLM可以直接评估每个示例的有效性,依据是增加该示例后模型性能的提升。此外,EPR提出了一种两阶段检索方法,首先用无监督方法(如BM25)召回相似示例,然后通过密集检索器进行排名。还有一种将示例选择问题视为强化学习(RL)问题的方法,LLM作为奖励函数,为训练策略模型提供反馈。最近的一些研究甚至让LLM自己生成示例,无需人工干预。
Demonstration Format
在选择任务示例后,下一步是将这些示例整合并格式化为自然语言提示,以便提供给大型语言模型(LLMs)。一种直接的方法是使用预定义模板,将相应的输入输出对填入其中。
例如,可以使用以下模板:
任务描述:分析以下句子的情感。
示例1:这部电影让我感到快乐。情感:积极。
示例2:今天天气很好,我很开心。情感:积极。
新句子:我今天心情很好。
为了构建更具信息量的模板,最近的研究考虑添加任务描述或使用链式思维提示来增强LLMs的推理能力。例如,某些研究收集了大规模的人类编写的任务描述数据集,经过调优后,模型在已知任务上的表现得到了提升,并且在一定程度上能够推广到未知任务。
此外,为了降低注释成本,研究提出了一种半自动化的方法,使用一组人类编写的任务描述种子集,指导LLMs为新任务生成任务描述。由于手动注释不同任务的示例格式成本较高,一些研究也探索如何自动生成高质量的示例格式。
- Auto-CoT:利用零-shot提示“让我们逐步思考”,生成中间推理步骤。
- 从少到多提示:首先让LLMs进行问题分解,然后根据之前解决的子问题的中间答案,逐步解决后续子问题。
Demonstration Order
大型语言模型(LLMs)有时会遭遇“近期偏见”,即倾向于重复出现在示例末尾的答案。因此,合理安排示例(任务示例)的顺序至关重要。
-
相似性排序:
- 示例可以根据与查询在嵌入空间中的相似性进行组织。更相似的示例应放在离末尾更近的位置,以便模型更好地理解当前任务。
-
熵度量:
- 可以使用全局和局部熵度量来评分不同的示例顺序。这些度量通过量化信息的不确定性,帮助选择最优的示例排列。
-
信息理论启发:
- 一些研究建议最小化压缩和传输任务标签所需的代码长度,这一思路来源于信息理论。这种方法旨在更有效地整合任务信息。
验证集采样
这些方法通常需要额外的标注数据作为验证集,以评估特定示例顺序的性能。为了解决这一问题,有研究者提出从LLM自身采样验证数据,这样可以直接利用模型生成的示例来优化示例顺序,而不依赖外部标注数据。
6.2.3 Underlying Mechanism
即时学习(ICL)最早在GPT-3中提出,研究表明,ICL能力随着模型规模的增大而显著增强。然而,一些研究发现,小规模的预训练语言模型(PLMs)通过持续预训练或在特别设计的训练任务上进行微调,仍然能够表现出强大的ICL能力。这些训练任务通常在训练过程中涉及额外的任务示例输入,这表明训练任务的设计是影响LLMs ICL能力的重要因素。
训练任务的影响
- 持续预训练与微调:通过在特定任务上进行持续预训练或微调,模型能够更好地适应任务需求,从而提升其ICL能力。
- 任务示例的设计:在训练过程中加入更多相关的任务示例,可以帮助模型更有效地学习并提高其在新任务上的表现。
预训练语料的关系
近期的研究还探讨了ICL与预训练语料之间的关系。例如,ICL可以理论上解释为在具有长程一致性的文档上进行预训练的结果。这种长程一致性使得模型能够更好地理解和生成语言。
另外,一项研究分析了参数和数据的扩展如何影响基于下一个单词预测的LLMs。当参数和数据规模扩大时,模型通过学习语言数据中组合结构(例如,单词和短语如何组合形成更大的语言单位如句子),能逐渐展现出ICL的能力。
在推理阶段,研究者主要分析LLMs如何利用给定的示例进行ICL,因为此时没有明确的学习或更新过程。根据相关讨论,LLMs利用示例的方式主要有两种:任务识别和任务学习。
1. 任务识别
在这种方式中,LLMs通过示例识别任务,并利用从预训练中获得的先验知识来解决新的测试任务。提出了一个概率近似正确(PAC)框架来评估ICL的可学习性。该框架假设预训练数据中存在表示任务的潜在变量,LLMs能够从示例中捕捉到该变量,从而识别ICL中的任务。
- 实证支持:一些实证研究表明,替换示例的输入或标签为随机样本并不会显著影响LLMs的性能,这表明LLMs主要通过示例识别目标任务,而不是从中学习。
- 不相关提示的表现:即使提示模板不相关或误导,LLMs仍能展现出不错的性能,进一步支持了任务识别的观点。
2. 任务学习
在这种方式中,LLMs仅通过示例学习在预训练阶段未见的新任务。任务学习主要从梯度下降的角度进行分析,被视为隐式微调。
- 元梯度生成:通过前向计算,LLMs根据示例生成元梯度,并通过注意力机制隐式执行梯度下降。
- 注意力机制的作用:某些注意力头能够执行与任务无关的基本操作(如复制和前缀匹配),这些操作与ICL能力密切相关。
一些研究将ICL抽象为算法学习过程,发现LLMs在预训练过程中通过参数编码隐式模型。在ICL提供的示例下,LLMs能够实现学习算法(如梯度下降),甚至直接计算闭式解以更新这些模型。实验表明,LLMs能够有效地学习简单的线性函数,甚至一些复杂的函数(如决策树)。
任务识别与任务学习的模型规模差异
根据最近的研究,LLMs在ICL中表现出任务识别和任务学习的能力,但这两种能力似乎与模型规模有关。小型语言模型(如350M参数)能够展现任务识别能力,而任务学习能力则仅在至少66B参数的LLMs中出现。
- 实验支持:在一些实验中,设置了标签翻转和语义无关的任务,这需要任务学习。结果显示,小型语言模型倾向于忽视标签,主要依赖先验知识完成任务,而大型LLMs则能够超越先验知识,从示例中获取新知识,因而表现更好。
提升任务学习能力的方法
为了增强任务学习能力,研究提出了几种方法:
- Meta-In-Context Learning:建议在提示中包含多个相关任务,而不仅仅是单一任务。
- Symbol Tuning:在语义无关的标签上微调LLMs(例如,在情感分析中使用“foo/bar”而非“积极/消极”),迫使LLMs从示例中学习任务,而不是依赖先验知识。
通过这些方法,LLMs能够在ICL中展现出更强的任务学习能力,从而在未见任务上取得更好的表现。
6.3 Chain-of-Thought Prompting
6.3.1 Basic CoT Prompting Approach
CoT提示最初被提出作为即时学习(ICL)的扩展,将每个示例的格式从 ⟨输入, 输出⟩ 扩展为 ⟨输入, CoT, 输出⟩。CoT是连接输入和输出的一系列中间推理步骤。通过这些增强的示例,LLMs可以遵循它们生成新的输入的CoT和答案。
CoT的生成与使用
- 生成难度:与ICL中的 ⟨输入, 输出⟩ 对相比,获得CoTs通常更具挑战性,通常需要人工标注。
- 触发CoT生成:幸运的是,研究发现可以通过简单的指令(如“让我们逐步思考”)来触发LLMs生成CoTs,这使得CoT提示变得易于使用。
- 其他提示:还有一些替代的“魔法提示”,如“深呼吸,逐步解决这个问题”,能激发CoT推理能力,进一步提升LLMs的表现。
CoT生成过程
在基本的CoT提示方法中,CoT的生成过程遵循链式结构,LLMs逐步生成CoTs。通常情况下,CoT以自然语言文本的格式呈现。然而,对于需要严格逻辑推理的复杂任务,文本形式的CoT可能效果不佳。
- 代码的使用:考虑到这一点,一些研究选择使用代码,因为其结构化和精确的特点使其更适合复杂任务。
- 动态选择格式:此外,有研究提出动态选择文本或代码作为CoT的格式,以结合两者的优点,提升推理的有效性。
CoT提示通过引导LLMs生成中间推理步骤,显著增强了模型在复杂任务上的推理能力。通过简单的指令触发CoTs的生成,使得这一方法变得更加实用和高效。
Chain of Thought (CoT) 提示示例
假设我们要解决一个数学问题:
问题:如果一个苹果的价格是3美元,买5个苹果需要多少钱?
1. 基本输入输出格式
输入:买5个苹果的价格是多少?
输出:15美元(3美元 × 5个 = 15美元)
2. 使用CoT提示
我们将此示例扩展为CoT格式:
输入:买5个苹果的价格是多少?
CoT:
确定一个苹果的价格是3美元。
计算5个苹果的总价格:3美元 × 5个 = 15美元。
输出:15美元
3. 触发CoT生成的提示
可以使用以下提示来引导LLM生成CoT:
提示:让我们逐步思考这个问题:如果一个苹果的价格是3美元,买5个苹果需要多少钱?
LLM可能生成以下CoT:
找出一个苹果的价格是3美元。
计算5个苹果的总价格:3 × 5 = 15。
所以,答案是15美元。
6.3.2 Improved CoT Prompting Strategies
Better Prompt Design
由于CoT提示依赖于提示语来引出LLMs的推理能力,因此提示的设计对其性能至关重要。
1. 多样化CoT
- 多条推理路径:研究表明,使用多样化的CoT(即每个问题的多条推理路径)可以有效提高模型的表现。这种方法使模型能够从不同的角度思考问题,从而得出更准确的结论。
2. 复杂推理路径
- 复杂性与推理能力:另一种直观的想法是,具有更复杂推理路径的提示更可能引发LLMs的推理能力。这种复杂性通常会导致更高的正确答案生成准确率。
3. 依赖于标注数据的局限性
尽管上述方法有效,但它们依赖于经过注释的CoT数据集,这在实际应用中限制了它们的使用。
4. 自动构建CoT的魔法指令
为了克服这一限制,可以使用魔法指令(如“让我们逐步思考”)来自动构建CoT。这些指令通过提示LLMs生成推理步骤,使得模型在没有大量标注数据的情况下仍能展现出推理能力。
由于LLMs在生成过程中容易产生不正确的推理步骤并表现出不稳定性,许多研究致力于改进CoT的生成。以下是两种增强CoT生成的典型方法:基于采样的方法和基于验证的方法。
1. 基于采样的方法
LLMs在推理过程中常常存在不稳定性,导致生成的推理步骤缺乏可信度。为了解决这一问题,一些研究提出采样多个推理路径,而不是使用贪婪解码。
-
自一致性:自一致性方法首先生成多个推理路径,然后对相应的答案进行集成,通过多数投票选择最一致的答案。然而,当大多数推理路径被误导时,这种方法仍然可能导致错误答案。
-
复杂性投票:为了解决上述问题,研究者只对k个最复杂的推理路径进行投票。他们观察到,复杂性更高的推理路径(例如,推理步骤更多)通常具有更好的表现。
-
多路径推理(MCR):MCR方法在生成下一步时参考其他推理路径的步骤,进行多路径推理,从而生成最终答案。
2. 基于验证的方法
CoT中推理步骤的顺序性质可能导致错误的积累,当某些步骤不正确时,生成的CoT也会受到影响。为此,最近的研究提出使用训练好的验证器或LLMs本身来验证生成的推理步骤的正确性。
-
DIVERSE方法:DIVERSE方法分别训练解决方案级和步骤级验证器,以不同的粒度检查推理步骤的正确性。
-
自我验证:另一个方法利用LLMs通过逐步自我验证来检查推理步骤的正确性,采用特别设计的推理格式。
-
反向推理:一些研究提出反向推理进行验证:首先从模型的预测中推导出必要的问题条件或变量,然后与原始条件进行比较,以确保推理的准确性。
尽管基本的链式推理结构在一般情况下有效,但它在解决复杂任务时的效果有限,因为复杂任务通常需要在推理过程中进行前瞻性探索和回溯。因此,许多研究致力于通过设计更复杂的思维过程来扩展推理结构,例如树状推理和图状推理。
1. 树状推理
树状推理方法(如思想树(Tree of Thoughts, ToT))将推理过程以层次化的树结构表示,其中每个中间思考作为一个节点。这样的结构允许LLMs并行探索多条推理路径,并支持前瞻性和回溯操作,以促进更全面的决策。
-
前瞻性与回溯:通过树状结构,模型可以在需要时返回并重新考虑之前的决策,从而提高推理的灵活性。
-
不确定性评估:TouT方法考虑了中间思考的不确定性,通过蒙特卡洛丢弃(Monte Carlo Dropout)技术对思考进行评估。
2. 图状推理
尽管树状结构促进了并行推理,但它对推理过程施加了限制。图提供了更大的灵活性,能够表征更复杂的关系和交互。
-
思想图(Graph of Thoughts, GoT):这一方法将推理过程概念化为一个任意图,其中顶点表示中间思考,边表示这些思考之间的相互依赖关系。与ToT相比,GoT可以在生成新思考时进一步利用其他推理路径中的思考。
-
交互效率问题:然而,这种方法需要与LLMs进行大量交互,使得思考探索过程效率较低。
-
有指导的搜索:为减少可能无效的思考探索,XoT方法提出通过预训练的策略和价值网络来指导思维搜索,从而提高效率。
6.3.3 Further Discussion on CoT Prompting
1. 模型规模
CoT推理被认为是一种新兴能力,通常只有在足够大的模型(通常包含10B或更多参数)中才能产生积极效果,而在小型模型中效果有限。
2. 适用任务类型
CoT提示通过增加中间推理步骤来增强标准提示,主要对需要逐步推理的任务有效,例如:
- 算术推理(Arithmetic Reasoning)
- 常识推理(Commonsense Reasoning)
- 符号推理(Symbolic Reasoning)
对于不依赖复杂推理的任务,CoT提示可能导致性能下降,表现甚至不如标准提示。例如,以下任务可能受影响:
- MNLI(Multi-Genre Natural Language Inference)
- SST-2(Stanford Sentiment Treebank)
- QQP(Quora Question Pairs)
3. 性能提升的条件
有趣的是,CoT提示带来的性能提升似乎只有在标准提示效果较差时才会显著。这表明,CoT提示最适合用于解决那些标准提示无法有效处理的问题。
CoT提示的有效性可以从以下两个方面探讨其潜在机制。
1. CoT推理能力的来源
关于CoT推理能力的来源,广泛的假设认为这与模型在代码数据上的训练有关。训练于代码的数据的模型显示出强大的推理能力,原因如下:
- 有序的数据:代码数据通常结构良好,具有算法逻辑和编程流程,这可能有助于提高LLMs的推理表现。
尽管如此,这一假设仍缺乏公开的消融实验证据(即对比有无代码训练的实验)。此外,指令调优似乎不是获得CoT推理能力的关键原因,因为实证研究表明,在非CoT数据上进行的指令调优并未提升在持出CoT推理基准上的表现。
2. CoT提示组件的效果
CoT提示与标准提示之间的主要区别在于在最终答案之前包含了推理路径。因此,一些研究者调查了推理路径中不同组件的效果。
- 关键组件:最近的研究识别出CoT提示中的三个关键组件:
- 符号(例如,算术推理中的数值量)
- 模式(例如,算术推理中的方程)
- 文本(即不是符号或模式的其他令牌)
研究表明,后两者(模式和文本)对模型性能至关重要,移除其中任何一个都会导致显著的性能下降。然而,符号和模式的正确性似乎并不关键。此外,文本与模式之间存在共生关系:文本有助于LLMs生成有用的模式,而模式则帮助LLMs理解任务并生成解决任务所需的文本。
6.4 Planning
6.4.1 The Overall Framework
在这一部分,我们首先阐述LLM解决复杂任务的一般规划范式,通常包括三个主要组件:任务规划器、计划执行器和环境。
1. 任务规划器
- 角色:任务规划器由LLMs充当,旨在生成解决目标任务的完整计划。
- 计划形式:计划可以以多种形式呈现,例如:
- 自然语言中的动作序列
- 用编程语言编写的可执行程序
- 增强特性:LLM基础的任务规划器可以通过记忆机制增强,以便存储和检索计划,这对长时间跨度的任务特别有帮助。
2. 计划执行器
- 职责:计划执行器负责执行计划中的动作。
- 实现方式:
- 对于文本任务,可以使用LLMs作为执行器。
- 对于编程任务,可以使用如代码解释器等工具。
3. 环境
- 定义:环境指计划执行器执行动作的场所,可以根据特定任务进行不同设置。
- 例如,执行环境可以是LLM本身,或是像Minecraft这样的外部虚拟世界。
- 反馈机制:环境提供关于动作执行结果的反馈,反馈可以以自然语言形式返回给任务规划器,或通过其他多模态信号传递。
6.4.2 Plan Generation
计划生成专注于通过提示LLMs直接生成行动序列。现有研究可以根据生成计划的格式分为两类:文本基础方法和代码基础方法。
文本基础方法
文本基础方法允许LLMs以自然语言的形式生成计划。这种方法相对直接,LLMs被提示生成一系列行动,以供计划执行器执行并解决复杂任务。
- 示例:
- Plan-and-Solve:在无监督学习的情况下,通过添加明确的指令(如“制定计划”)直接提示LLM进行规划。
- Self-planning 和 DECOMP:在提示中添加示例,以通过上下文学习(ICL)指导LLM制定计划。
此外,一些研究进一步考虑在规划过程中结合额外的工具或模型。例如:
- ToolFormer:首先使用LLMs标注预训练语料库中的潜在API调用,然后对LLMs进行微调,使其能够学习何时以及如何调用API,并在生成过程中结合API返回的结果。
- HuggingGPT:引入HuggingFace中可用的模型,并将LLMs视为控制器,根据模型描述选择合适的模型并汇总其结果作为最终解决方案。
代码基础方法
尽管文本基础方法听起来直观,但它们无法保证计划的可靠执行,这可能导致即使计划合理也会失败。为了解决这个问题,提出了代码基础方法,以生成更可验证的计划,通常采用可执行代码(如Python或PDDL)形式。
- 示例:
- Faithful CoT 和 PAL:将推理任务分解为两个阶段:
- 在第一阶段,LLM生成基于查询的计划。
- 在第二阶段,使用确定性求解器执行该计划以得出最终答案。
- Faithful CoT 和 PAL:将推理任务分解为两个阶段:
此外,代码基础方法也可以应用于具身智能体,方法类似。例如:
- PROGPROMPT 和 LLM+P:首先利用LLMs生成以Python函数或PDDL文件形式的计划,然后利用虚拟智能体或经典规划器根据代码基础计划解决问题。
6.4.3 Feedback Acquisition
在执行生成的计划后,环境会向基于LLM的任务规划器提供反馈信号,这些反馈可以用来改进初始计划,从而获得更好的结果。
1. 内部反馈(Internal Feedback)
内部反馈是指LLM自身提供的反馈。常见的方法包括:
-
计划质量评估:可以通过提示直接评估生成计划的质量。例如:
- RAP:评估每个候选计划成功完成任务的可能性。
- Tree of Thoughts:通过比较不同计划进行投票,选择最佳方案。
-
基于中间结果的反馈:LLM可以根据计划执行者的中间结果提供反馈。例如:
- Reflexion:将稀疏的结果信号(如成功或失败)转换为具体的文本反馈,并将其存储在长期记忆中,以备将来规划使用。
2. 外部反馈(External Feedback)
除了LLM之外,外部对象也可以提供反馈信号:
-
工具反馈:例如,代码解释器在编程任务中提供实时错误消息。
-
多模态任务的模型:如稳定扩散(Stable Diffusion)模型可以提供视觉感知反馈。
-
虚拟世界:例如,Minecraft可以提供身临其境的体验,帮助评估任务执行的效果。
-
多智能体协作:在模拟环境中,不同的智能体不仅通过与环境的互动获取反馈,还可以通过与其他智能体的沟通获得反馈。这种方法在一些工作(如Generative Agents)中得到了探索。
6.4.4 Plan Refinement
通过获取来自环境的反馈,任务规划器可以相应地完善当前计划,并通过“规划 – 执行 – 修正”循环反复进行,以获得更好的结果。以下是三种主要的修正方法:
1. 推理(Reasoning)
环境反馈数据可能不是直接适合用来进行计划修正的,例如可能包含无关信息或以非语言形式存在。为了解决这一问题,一些研究增加了显式的推理过程,以从反馈中提取关键信息。
- 示例:
- React:通过示例提示LLMs生成推理轨迹,这在自主智能体项目中得到了广泛应用,如AutoGPT。它可以自动推理观测到的反馈,以修正初始计划来解决各种用户请求。
- ChatCoT:统一了工具增强推理过程,通过LLM任务规划器与基于工具的环境之间的多轮对话,支持灵活切换推理和规划。
2. 回溯(Backtracking)
早期方法主要考虑前进行动,同时保持现有计划,这可能导致基于短期评估的局部最优计划。为了解决这一问题,Tree of Thoughts允许使用搜索算法(如广度优先和深度优先搜索)进行回溯,以实现全球规划。
- 示例:
- 逐步细化计划,通过回溯到初始计划的最后状态并选择下一个未探索的行动来修正计划。
- 一些研究(如DEPS和TIP)利用反馈信号修正整个计划,TIP将反馈信号添加到LLM任务规划器的提示中,以逐步修正初始计划中的每个步骤。
3. 记忆化(Memorization)
为了处理长时间跨度的任务,除了利用LLMs的短期记忆外,使用长期记忆来辅助计划修正已成为关键方法。
- 示例:
- Reflexion:将自我反思的反馈存储到记忆中,以便在计划修正时检索以前的反馈。
- Generative Agents:设计了记忆流机制作为智能体的核心组成部分,以支持行动规划和反思。
- 技能库机制:用于存储成功计划的库,可以重用和合成复杂计划用于新任务。
- 工具如向量数据库(如Milvus)用于将计划或反馈编码为高维向量,以便高效存储和大规模检索。
- MemoryBank:提出了记忆更新机制,允许根据艾宾浩斯遗忘曲线理论进行记忆的遗忘和强化。
通过推理、回溯和记忆化三种方法,LLM能够有效地迭代优化其生成的计划。这些方法不仅提高了计划的灵活性和适应性,还增强了在复杂任务中的执行能力。
7 Capacity And Evaluation
7.1 Basic Ability
7.1.1 Language Generation
Language Modeling
语言建模是大型语言模型(LLMs)最基本的能力,旨在根据之前的词预测下一个词。这个过程主要关注基本的语言理解和生成能力。
- 评估数据集:常用的数据集包括Penn Treebank、WikiText-103和The Pile。
- 评估指标:通常使用困惑度(perplexity)来评估模型在零样本设置下的表现。研究表明,LLMs在这些数据集上表现优异,超越了之前的最先进方法。
- 长程依赖测试:LAMBADA数据集用于测试模型对长程依赖的建模能力,要求模型基于上下文段落预测句子的最后一个词。
Conditional Text Generation
条件文本生成专注于根据给定条件生成满足特定任务需求的文本,常见任务包括机器翻译、文本摘要和问答。
- 评估质量:使用自动化指标(如准确率、BLEU、ROUGE)和人工评分来评估生成文本的质量。
- LLM的表现:LLMs在现有数据集和基准测试上表现出色,例如,GPT-4在翻译任务上与商业翻译产品相当,并在新闻摘要任务中与人类自由撰稿人表现相当。
尽管模型能力快速提升,但对于自动化指标能否真实评估LLMs在条件文本生成任务中的表现仍存在担忧。一些研究开始探索将LLMs作为生成评估器,以评估生成内容的质量。
Code Synthesis
LLMs不仅能生成高质量的自然语言文本,还能生成满足特定条件的正式语言,尤其是计算机程序,即代码合成。
- 评估质量:通过计算代码在测试用例中的通过率(pass@k)来评估生成代码的质量。
- 基准测试:如APPS、HumanEval和MBPP,这些基准关注功能正确性,包含多样的编程问题和验证正确性的测试用例。
- 技能提升:对LLMs进行代码数据的微调或预训练,能有效提升其代码合成能力。
此外,出现了新的生成策略,如采样多个候选解决方案和基于规划的解码,这些策略模仿了程序员的调试和代码规划过程。LLMs在编程竞赛平台Codeforces上的表现与人类竞争,达到前28%的排名。
Major issues
尽管大型语言模型(LLMs)在生成类人文本方面表现出色,但它们在语言生成中仍面临两个主要问题:
1. 不可靠的生成评估(Unreliable Generation Evaluation)
随着LLMs语言生成能力的提升,研究发现其生成的文本在多种生成任务中与参考文本的质量相当。然而,现有评估基准的内在弱点导致了人工评估与自动参考指标之间的显著不一致。
- 示例:
- 在OpenDialKG中,ChatGPT在BLEU和ROUGE-L指标上表现不如微调后的GPT-2,但在人工评估中却获得了更高的评价。
- 评估挑战:
- 人工评估可能缺乏足够的鲁棒性,且在不同评审者之间难以达成一致,众包工人的注释质量与专家之间存在明显差距。
因此,如何在LLMs时代进行可靠的语言生成评估成为一个基本而又具有挑战性的研究课题。近年来,越来越多的研究尝试利用LLMs改善生成文本的评估质量。例如:
- Para-Ref:通过利用LLMs将现有参考文本同义改写为具有多样表达的语义等效参考,从而增强各种自动评估指标。
- LLMs也被广泛用作无参考的文本生成评估者,包括评估单个预测或比较多个候选文本。
然而,作为评估者的LLMs可能会暴露出偏见(如顺序偏见或对LLM生成文本的偏爱),与人工评估相比可能存在差异。
2. 专业生成能力不足(Underperforming Specialized Generation)
虽然LLMs能够学习一般的语言模式并生成连贯的文本,但在处理特定领域或任务时,其生成能力可能受到限制。例如,经过一般网页文章训练的语言模型在生成涉及大量医学术语和方法的医学报告时可能面临挑战。
- 专业知识的重要性:专业知识对于模型的特化至关重要,但将这种知识注入LLMs并不容易。
- 灾难性遗忘:当LLMs被训练以展现某些特定能力以在某些领域表现出色时,它们可能在其他领域表现不佳。这种现象与神经网络训练中的灾难性遗忘有关,即整合新旧知识时的冲突现象。
此外,由于序列建模架构的局限性,LLMs在理解和生成结构化数据方面仍面临挑战,常常在复杂的结构化数据任务(如知识库问答和语义解析)中落后于任务特定模型。因此,开发有效的模型特化方法以灵活适应各种任务场景,同时尽可能保留原有能力,是非常重要的。
7.1.2 Knowledge Utilization
知识利用是智能系统完成知识密集型任务(如常识问答和事实补全)的重要能力,要求LLMs合理利用预训练语料库中的丰富事实知识或在必要时检索外部数据。常用的评估任务包括问答(QA)和知识补全。根据测试任务(问答或知识补全)及评估设置(使用或不使用外部资源),我们将现有的知识利用任务分为三类:闭卷问答、开卷问答和知识补全。
1. 闭卷问答(Closed-Book QA)
闭卷问答任务测试LLMs从预训练语料库中获得的事实知识,要求LLMs仅基于给定的上下文回答问题,而不使用外部资源。
- 评估数据集:包括Natural Questions、Web Questions和TriviaQA,通常使用准确率作为评估指标。
- 表现:研究表明,LLMs在这种设置下表现良好,甚至可以与最先进的开放域QA系统相媲美。LLMs的表现遵循规模定律,即模型参数和训练数据的增加能提升其知识学习能力。
- 局限性:对于依赖细粒度知识的QA任务,LLMs的表现可能较差,即使这些知识存在于预训练数据中。
2. 开卷问答(Open-Book QA)
在开卷问答任务中,LLMs可以从外部知识库或文档集合中提取有用的证据,然后基于提取的证据回答问题。
- 评估数据集:常见的数据集包括Natural Questions、OpenBookQA和SQuAD,这些数据集与闭卷问答数据集有重叠,但包含外部数据源(如维基百科)。
- 评估指标:通常使用准确率和F1分数来评估。
- 知识检索:LLMs常与文本检索器配对,后者可以独立训练或与LLMs联合训练。研究显示,检索器可以帮助LLMs验证和纠正推理路径。
- 表现:检索到的证据显著提高生成答案的准确性,甚至使较小的LLM在某些情况下超过10倍更大的模型。
3. 知识补全(Knowledge Completion)
在知识补全任务中,LLMs可以被视为知识库,用于完成或预测知识单元(如知识三元组)中的缺失部分。
- 任务分类:知识补全任务可分为知识图谱补全任务(如FB15k-237和WN18RR)和事实补全任务(如WikiFact),前者旨在补全知识图谱中的三元组,后者则关注特定事实的不完整句子。
- 表现:研究表明,现有LLMs在与特定关系类型相关的知识补全任务上表现困难。在WikiFact的评估结果中,LLMs在预训练数据中常见的关系(如货币和作者)上表现良好,而在稀有关系(如发现者或发明家、出生地)上表现不佳。
- 对比:在相同评估设置下,InstructGPT(text-davinci-002)在WikiFact的所有子集上均优于GPT-3。
4. Major Issues
尽管LLMs在捕获和利用知识信息方面取得了重大进展,但它们面临两个主要问题:
Hallucination
在生成事实文本时,幻觉生成是一个挑战性问题。幻觉分为两类:
- 内在幻觉:生成的信息与现有来源相冲突。
- 外在幻觉:生成的信息无法通过可用来源验证。
即使是最先进的LLMs(如GPT-4)也常常会出现幻觉。研究显示,LLMs在识别文本中的幻觉内容方面存在困难,甚至是强大的ChatGPT也不例外。此外,最新的研究表明,大型视觉语言模型(LVLM)也面临幻觉问题,即生成与附带图像不符的对象。
为缓解幻觉问题,已有多种策略被提出:
- 对齐调优:通过在高质量数据上调优LLMs或利用人类反馈来减少幻觉。
- 外部工具整合:使用可信的信息来源来减轻幻觉问题。
- 不确定性估计:利用LLMs的不确定性来识别幻觉,例如通过测量不同输出间的一致性来检测幻觉
为评估幻觉问题,已经提出了一系列幻觉检测任务,例如TruthfulQA用于检测模型模仿人类虚假信息的能力。最近的HaluEval创建了一个大规模的LLM生成和人类注释的幻觉样本集,以评估语言模型在特定任务和一般场景中识别幻觉的能力。
Knowledge Recency
另一个主要挑战是,当任务需要超出训练数据的最新知识时,LLMs会遇到困难。简单的解决方案是定期用新数据更新LLMs,但这样做的代价很高,并且可能导致灾难性遗忘。
- 更新策略:开发高效的方法将新知识整合到现有LLMs中,使其保持最新状态。已有研究探索如何利用外部知识源(如搜索引擎)来补充LLMs,这些知识源可以与LLMs联合优化或作为即插即用模块使用。
- 检索插件:例如,ChatGPT利用检索插件访问最新信息源,通过将提取的相关信息纳入上下文,LLMs可以获取新的事实知识并在相关任务中表现更好。
- 参数编辑:现有研究还探讨了编辑语言模型参数以更新内在知识的方法。然而,之前的工作显示,几种参数编辑方法在LLMs上效果不佳,尽管它们能改善小型语言模型的表现。
最近,EasyEdit框架被发布,以促进LLMs的知识编辑研究。
7.1.3 Complex Reasoning
知识推理任务依赖于逻辑关系和事实知识来回答给定问题。现有研究主要使用特定数据集来评估相应知识类型的推理能力,如CSQA和StrategyQA用于常识知识推理,ScienceQA用于科学知识推理。
1. 推理任务
- 评估方法:除了预测结果的准确性外,现有研究还通过自动化指标(如BLEU)或人工评估来评估生成推理过程的质量。这些任务通常要求LLMs基于事实知识逐步推理,直到得到答案。
- 链式推理(CoT):为增强LLMs的复杂推理能力,提出了链式推理提示策略。这种策略将中间推理步骤加入提示中,显著提高了推理表现,导致多个复杂知识推理任务的新最优结果。
- 代码生成:将知识推理任务重新表述为代码生成任务的研究发现,可以进一步提升LLMs的性能,尤其是针对在代码上预训练的LLMs。
尽管如此,LLMs在某些复杂推理任务上的表现仍落后于人类,尤其是在常识推理任务中。
Symbolic Reasoning
符号推理任务主要关注在正式规则设置中操纵符号以实现特定目标。
- 测试任务:常见的测试任务包括最后字母连接和抛硬币,评估样本可能需要与上下文示例相同的推理步骤(领域内测试)或更多步骤(领域外测试)。
- 表现评估:通常采用生成符号的准确性来评估LLMs在这些任务上的表现。LLMs需要理解符号操作之间的语义关系以及在复杂场景中的组合。
- 解决方法:现有研究采用scratchpad和辅导策略,帮助LLMs更好地操控符号操作,生成更长更复杂的推理过程。
另一个研究方向是利用正式编程语言表示符号操作和规则,要求LLMs生成代码并通过外部解释器执行推理过程。
Mathematical Reasoning
数学推理任务需要综合利用数学知识、逻辑和计算来解决问题或生成证明。
- 任务分类:数学推理任务主要分为数学问题解决和自动定理证明(ATP)。常见的数学问题解决数据集包括SVAMP、GSM8k和MATH,LLMs需要生成准确的数字或方程来回答数学问题。
- 策略:数学推理任务通常采用链式推理提示策略来提高推理表现。持续对大规模数学语料库进行微调也能显著提升性能。
在ATP任务中,LLMs的表现受到严格推理逻辑和数学技能的考验,PISA和miniF2F是两个典型的ATP数据集,使用证明成功率作为评估指标。
尽管取得了进展,LLMs在解决复杂推理任务时仍面临以下限制:
- 推理不一致性:尽管使用链式推理等策略,LLMs在推理过程中可能会产生不一致的结果。例如,可能在无效推理路径上产生正确答案,或在正确推理过程中得出错误答案。为缓解此问题,研究提出了使用外部工具或模型引导LLMs的生成过程,以重新检查推理过程和最终答案。
- 数值计算:对于复杂推理任务,LLMs在涉及数值计算时仍然面临困难,尤其是对在预训练期间不常见的符号(如大数的算术运算)。解决此问题的直接方法是对LLMs进行合成算术问题的微调。
研究发现,数字的单独标记(例如LLaMA和Galactica的标记器)是增强LLMs固有算术能力的有效方法。这种方法避免了在标记数字时可能出现的不一致性,从而可能提高LLMs的数值计算能力。
7.2 Advanced Ability
7.2.1 Human Alignment
人类对齐是大型语言模型(LLMs)在实际应用中广泛使用的关键能力,旨在使其更好地符合人类的价值观和需求。评估这一能力的标准主要包括有用性、诚实性和安全性。
1. 评估标准
- 有用性和诚实性:通过对抗性问答任务(如TruthfulQA)来检查LLMs在检测文本中可能存在的虚假信息的能力。
- 安全性:可通过多个现有基准进行评估,如CrowS-Pairs和Winogender,这些基准旨在测试模型在处理敏感内容时的安全性和无害性。
2. 评估方法
尽管上述数据集提供了自动评估的方法,人类评估仍然是测试LLMs人类对齐能力的更直接有效的方式。例如,OpenAI邀请多位与AI风险相关领域的专家评估和改进GPT-4在处理风险内容时的行为。
3. 对齐策略
- 具体指令和注释规则:为人类对齐的其他方面(如真实性)制定特定指令和注释规则,以指导注释过程。这些策略已被实证研究证明能显著提高LLMs的人类对齐能力。
- 对齐调优:例如,通过与专家互动收集的数据进行对齐调优,GPT-4在处理敏感或不允许的提示时的不当行为率大幅降低。
4. 数据质量
高质量的预训练数据可以减少对齐所需的努力。例如,Galactica由于其科学语料库中较少的偏见内容,可能在安全性方面表现得更好。
7.2.2 Interaction with External Environment
除了标准评估任务,LLMs还具备从外部环境接收反馈并根据行为指令执行动作的能力,例如生成自然语言的行动计划以操控代理。这一能力在较大型的模型中表现得尤为突出,它们能够生成详细且高度现实的行动计划,而较小的模型(如GPT-2)往往生成较短或无意义的计划。
1. 评估环境与基准
为了测试这一能力,可以使用多个具身AI环境和基准,具体如下:
- VirtualHome:构建一个3D模拟器,用于家庭任务(如清洁和烹饪),代理可以执行由LLMs生成的自然语言动作。
- ALFRED:包含更具挑战性的任务,要求LLMs完成组合目标。
- BEHAVIOR:聚焦于模拟环境中的日常琐事,要求LLMs生成复杂的解决方案,例如改变对象的内部状态。
此外,还有针对开放世界环境的研究,如Minecraft和互联网:
- Voyager:引入自动课程模块,使LLMs能够根据环境反馈不断获取新技能。
- GITM:专注于通过任务分解、规划和接口调用,在Minecraft中解决各种挑战。
2. 评估方法
对于生成的行动计划或任务完成情况,现有研究通常采用常规指标(如生成行动计划的可执行性和正确性)进行评估,或直接进行真实世界实验并测量成功率。研究表明,LLMs在与外部环境互动和生成准确行动计划方面表现出色。
3. 提升交互能力的方法
最近提出了几种改进方法,以增强LLMs的交互能力,例如:
- 设计类代码的提示:使用更结构化的提示来引导LLMs生成更有效的行动计划。
- 提供真实世界的基础:通过接入真实世界信息来提高LLMs的决策能力。
4. 多代理协作
最近的研究还探讨了基于LLMs的多代理协作,在模拟环境中模拟人类社会行为。具体包括:
- 多代理实例化:在沙盒环境中创建多个基于LLMs的代理,具备观察、规划和记忆功能。
- 受控评估:通过类似面试的方式,评估生成代理的搜索、规划和思考能力。
- 描述性测量:在模拟环境中对多个代理进行描述性测量,以检验新出现的社会行为。
7.2.3 Tool Manipulation
在解决复杂问题时,LLMs能够根据需要调用外部工具。通过API调用封装可用工具,现有研究涉及多种外部工具,例如搜索引擎、计算器和编译器,从而提升LLMs在特定任务上的表现。最近,OpenAI在ChatGPT中支持使用插件,这使得LLMs具备超越语言建模的更广泛能力。例如,网页浏览器插件使ChatGPT能够访问最新信息。此外,结合第三方插件对于基于LLMs构建繁荣的应用生态系统至关重要。
1. 评估工具操作能力
现有研究主要采用复杂推理任务进行评估,例如数学问题解决(如GSM8k和SVAMP)或知识问答(如TruthfulQA),在这些任务中,成功利用工具对提升LLMs的能力至关重要。通过这种方式,评估任务的表现可以反映LLMs的工具操作能力。
2. 教授工具使用
为了教会LLMs如何利用工具,现有研究采取了以下方法:
- 示例引导:在上下文中添加使用工具的示例,以引导LLMs学习如何操作。
- 微调训练:在关于工具使用的模拟数据上对LLMs进行微调。研究发现,借助工具,LLMs在处理其不擅长的问题(如方程计算和回答时效性问题)时变得更加有效。
然而,随着可用工具数量的增加,LLMs的上下文长度限制可能会对描述和展示大量工具API构成挑战。为了解决这一问题,现有研究检索相关工具的使用方式,或将工具信息编码为嵌入空间中的标记。
3. 自主工具创建
除了人类开发的现有工具外,LLMs还具备自主创建特定任务工具的能力。这使得模型能够独立探索和操控自创工具,从而扩展其在解决各种现实任务中的自主探索潜力。
7.3 Benchmarks and Evaluation Approaches
7.3.1 Comprehensive Evaluation Benchmarks
最近,多个综合基准被发布用于评估大型语言模型(LLMs)。以下是一些广泛使用的基准:
1. MMLU
- 概述:MMLU(Massive Multitask Language Understanding)是一个多任务知识理解的基准,涵盖从数学和计算机科学到人文学科和社会科学的广泛知识领域。任务难度从基础到高级不等。
- 表现:研究表明,LLMs在此基准上通常显著优于小型模型,体现了模型规模的提升带来的好处。最近,GPT-4在5-shot设置中取得了86.4%的优异成绩,远超之前的最优模型。
2. BIG-bench
- 概述:BIG-bench是一个协作性基准,旨在从多个方面探测现有LLMs的能力。它包含204个任务,涵盖语言学、儿童发展、数学、常识推理等多个主题。
- 表现:LLMs在少量样本设置下,能够在65%的任务中超越平均人类表现。为了降低评估成本,提出了轻量级的BIG-bench-Lite,包含24个小型而多样化的挑战任务。此外,BIG-bench hard (BBH)基准专注于研究LLMs当前无法解决的任务。
3. HELM
- 概述:HELM(Holistic Evaluation of Language Models)是一个综合性基准,当前实现了一组核心场景和多种评估指标。它基于许多先前的研究,进行全面的语言模型评估。
- 表现:实验结果表明,指令调优可以一致性地提升LLMs在准确性、鲁棒性和公平性方面的表现。对于推理任务,在代码语料库预训练的LLMs表现优越。
4. 人类水平测试基准
- 概述:这些基准旨在评估LLMs的综合能力,使用旨在测试人类的题目,例如AGIEval、MMCU、M3KE、C-Eval和Xiezhi等,涵盖多个领域、难度级别和语言。
- 表现:相较于公开模型,提供API服务的模型(如GPT-4、ChatGPT、Claude)在这些评估基准上表现更佳。GPT-4在AGIEval中超越了平均人类表现,但仍未达到顶尖人类的表现。
5. 特定能力评估基准
除了上述基准,还有一些专注于评估LLMs特定能力的基准,例如TyDiQA(多语言知识利用)和MGSM(多语言数学推理)。
评估框架与排行榜
- 评估框架:有多个开源评估框架可供研究者在现有基准上评估LLMs或扩展新任务进行定制评估,例如Language Model Evaluation Harness和OpenAI Evals。
- 排行榜:一些研究者构建了不断更新的排行榜,通过聚合代表性基准来比较现有LLMs的表现,如Open LLM Leaderboard。这些基准和排行榜为展示LLMs的基本和高级能力提供了重要参考。
7.3.2 Evaluation Approaches
Evaluation of Base LLMs
基础LLMs指的是在预训练后获得的模型检查点。在评估基础LLMs时,主要关注其基本能力,如复杂推理和知识利用。由于这些基本能力通常可以通过明确的任务进行评估,因此基准测试方法被广泛用于评估基础LLMs。以下是对常见评估基准和评估程序的介绍。
1. 常见基准
为了评估基础LLMs,通常设计的基准问题多为封闭式问题,如选择题。这些常用基准主要分为两类:
- 知识导向基准:例如MMLU和C-Eval,旨在评估模型的世界知识能力。
- 推理导向基准:例如GSM8K、BBH和MATH,侧重于评估解决复杂推理任务的能力。
此外,一些最近提出的基准(如OpenCompass)结合了这两种类型,以进行综合比较。
2. 基准评估程序
进行基准评估时,每个问题首先会被格式化为提示,以便LLMs生成结果文本。然后,生成的结果文本将通过人工编写的规则进行解析,以获得预测答案。最后,通过将预测答案与真实答案进行比较,可以使用标准指标(如准确率)自动计算LLMs的表现。
评估可以在少量样本(few-shot)或零样本(zero-shot)设置下进行,这可能导致不同的评估结果或排名。由于基础LLMs未经过指令微调(任务泛化能力相对较弱),少量样本设置通常更适合评估。对于一些复杂的推理任务,还需要使用链式推理(CoT)提示,以充分展示模型的能力。
此外,这种评估方法同样适用于评估微调后的LLMs。实际上,多个排行榜(如Open LLM Leaderboard)就是基于这种方法构建的,评估了基础和微调后的LLMs。
微调LLMs指的是在预训练模型权重基础上经过指令调优或对齐调优后获得的模型检查点。在这一部分,我们将介绍微调LLMs在知识利用和人类对齐等多种能力上的评估,通常采用多种评估方法。除了基于基准的评估,基于人类和基于模型的方法也被广泛用于评估微调LLMs的高级能力。
1. 基于人类的评估
与基础能力的自动评估不同,基于人类的评估通常考虑在实际使用中更多的因素和能力,例如人类对齐和工具操作。在这一评估方法中,测试任务通常为开放式问题,邀请人类评估者对LLMs生成的答案质量进行判断。
- 评分方法:主要有两种评分方式:
- 成对比较:在同一问题下,评估者将两个来自不同模型的答案进行比较,以确定哪个更好。
- 单一答案评分:评估者逐个对单一答案进行评分。
例如,HELM利用人类对摘要和虚假信息任务进行单一答案评分,而Chatbot Arena则构建了一个众包平台,允许用户与两个匿名聊天LLMs进行对话,并报告成对比较的结果。
2. 基于模型的评估
由于基于人类的评估既昂贵又耗时,部分研究提出利用强大的闭源LLMs(如ChatGPT和GPT-4)作为人类评估者的替代方案。例如,AlpacaEval收集了一组指令,并利用能力强大的LLM(如GPT-4)进行成对比较,评估参考输出的质量。此外,MT-bench收集了一组多轮问题进行评估,并通过如ICL和CoT等方法提升基于LLM评估者的可靠性。
与人类评估者相比,ChatGPT和GPT-4在小规模手工制作和大规模众包评估任务中能够实现高一致性。尽管如此,这些闭源LLMs的访问受到限制,并存在数据泄露的潜在风险。为了解决这一问题,最近的研究探索了利用开放源代码LLMs(如Vicuna)进行微调,作为模型评估者,使用来自人类评估者的评分数据,这缩小了与强大的闭源LLMs(如GPT-4)之间的差距。
专业化LLMs指的是针对特定领域或应用(如医疗保健和金融)特别调整的模型检查点。作为特定任务的解决者,专业化LLMs不仅需要在通用能力(如复杂推理和人类对齐)上进行测试,还需要在与其指定领域或应用相关的特定能力上进行评估。为此,通常需要构建针对目标领域或应用的特定基准。
1. 特定基准的构建
为了有效评估专业化LLMs,必须开发专门的基准,这些基准能够涵盖目标领域的特定任务。例如:
-
MultiMedQA:这是一个针对医疗保健的基准,包含医疗检查和健康问题。在相关研究中,MultiMedQA与MMLU结合使用,以评估专业化LLMs(如Med-PaLM)在医疗领域的表现。
-
FLUE:这是一个针对金融领域的基准,涵盖从金融情感分析到问答等多种任务。FLUE已与BBH基准结合使用,以评估金融LLMs(如BloombergGPT)的能力。
2. 综合与针对性评估
通过将领域特定基准与通用基准结合,可以对专业化LLMs进行全面和有针对性的评估。这种方法不仅能测试模型在特定领域的能力,还能确保其在更广泛的知识理解和推理能力上的表现。
在评估LLMs的能力时,采用了不同的评估方法。以下是对每种评估方法的优缺点进行简单分析。
1. 基准评估方法(Benchmark-based Approach)
优点:
- 现成基准:可以利用已有的基准评估LLMs的表现,任务通常包含足够的测试样本来测量核心能力(如推理)。
- 自动化程度高:整个评估过程几乎可以自动化,便于对各种基础LLMs进行测试实验,特别是在监控模型检查点的表现时非常有用。
缺点:
- 敏感性:LLMs对评估设置(如问题提示、零样本或少样本测试、答案解析方法)非常敏感。因此,在进行评估实验时,需考虑可能影响结果的因素。
- 数据污染问题:测试数据或相关内容可能已经包含在预训练语料中,这一现象随着开放数据量的增加而日益严重。
2. 基于人类的评估(Human-based Approach)
优点:
- 反映真实能力:人类评估可以直接反映LLMs在解决现实世界任务中的实际能力,基于真实用户的反馈提供更直接的性能测量。
- 灵活多样:可以根据人类评估者的任务认知进行更灵活和多样的评估任务。
缺点:
- 主观性:评估者的个人喜好和教育水平差异可能引入偏见,影响评估过程的一致性。
- 成本高:进行可靠的人类评估通常需要大量评估者,成本高且耗时。
- 不可重复性:人类评估通常不可重复,难以扩展现有评估结果或跟踪LLMs的进展。
3. 基于模型的评估(Model-based Approach)
优点:
- 高效可扩展:作为人类评估的替代方案,基于模型的方法降低了对人类参与的依赖,提高了评估的效率和可扩展性。
- 解释性强:LLMs可以为分配的评分提供有意义的解释,从而增强评估的可解释性。
缺点:
- 偏见问题:基于模型的方法容易受到位置偏见(回答顺序)、冗长偏见(偏好冗长答案)和自我增强偏见(过高评分自己生成的答案)等问题的影响。
- 能力限制:LLMs在解决复杂推理问题时能力有限,不能作为某些困难任务(如数学推理)的合格评估者。
7.4 Empirical Evaluation
7.4.1 Experimental Settings
在进行评估时,我们考虑了从开源模型到闭源API访问模型的代表性LLMs,具体如下:
1. 开源模型(Open-source Models)
开源模型可以分为基础模型和指令微调模型:
-
基础模型:这些模型仅在大型通用语料库上进行预训练,目标是语言建模,而未进行进一步的监督微调。在我们的评估中,选择了以下四个代表性的基础模型:
- LLaMA (7B) [57]
- LLaMA 2 (7B) [99]
- Pythia (7B 和 12B) [96]
- Falcon (7B) [749]
-
指令微调模型:这些模型经过指令微调,使用了任务数据集、日常对话或合成指令。在我们的实验中,选择了以下四个代表性的指令微调模型:
- Vicuna (7B 和 13B) [152]
- Alpaca (7B) [187]
- ChatGLM (6B) [93]
- LLaMA 2-Chat (7B) [99]:这是一个经过指令调优和人类对齐(RLHF)的模型,基于LLaMA 2 (7B)。
2. 闭源模型(Closed-source Models)
除了开源模型之外,还有一些只能通过API访问的闭源模型,这些模型受到了开发者和研究人员的广泛关注。在此,我们选择了以下四个代表性的闭源模型:
- text-davinci-002/003(简称Davinci002/003)
- ChatGPT
- Claude
- Claude 2
接下来,我们设定评估任务和数据集,主要评估LLMs在这些数据集上的零-shot性能。对于一些复杂任务(如数学推理和工具操作),我们主要报告3-shot性能,考虑到开源模型的上下文长度限制。
1. 语言生成(Language Generation)
我们评估三种类型的任务:
- 语言建模
- 条件文本生成
- 代码合成
选择的四个常用数据集包括:
- LAMBADA [252](语言建模)
- WMT’22 [547](机器翻译)
- XSum [551](文本摘要)
- HumanEval [105](代码合成)
在WMT’22中,我们从原始大规模测试集中选择了1000个示例,构建新的评估集,以检查LLMs在机器翻译中的平均表现。我们评估LLMs在这些数据集上的零-shot性能,并计算以下指标:
- LAMBADA:预测单词的准确率
- WMT’22:BLEU-4
- XSum:ROUGE-L
- HumanEval:pass@10
2. 知识利用(Knowledge Utilization)
为了评估知识利用能力,选择了四个问答数据集:
- TriviaQA [560]
- Natural Questions [556]
- Web Questions [559]
- ARC [557]
以及一个事实提取数据集:
- WikiFact [573]
我们报告LLMs在这些数据集上的零-shot性能,并计算以下指标:
- ARC:准确率
- 其他数据集:精确匹配(exact match)
3. 复杂推理(Complex Reasoning)
对于复杂推理,我们评估以下模型:
- 知识推理:OpenbookQA [568]、HellaSwag [584]、SocialIQA [583]
- 符号推理:Colored Objects [70]、Penguins in the Table [70]
- 数学推理:GSM8K [198]、MATH [362]
计算以下指标:
- OpenbookQA、HellaSwag、SocialIQA:准确率
- Colored Objects、Penguins in the Table:解决率
- GSM8K、MATH:准确率
对于知识推理任务,我们评估零-shot性能;对复杂的符号推理和数学推理任务,使用3-shot上下文示例,并使用链式推理(CoT)提示策略以更好地解决数学推理任务。
4. 人类对齐(Human Alignment)
选择以下数据集进行人类对齐评估:
- TruthfulQA [558]:评估LLM生成答案的真实性
- CrowS-Pairs [605]、WinoGender [606]:评估LLM中的刻板印象
- RealToxityPrompts [607]:评估生成有毒语言的程度
- HaluEval [604]:测试LLM识别幻觉的能力
对于Real-Toxicity-Prompts,由于测试集过大,我们随机抽取10000个示例进行评估。计算以下指标:
- TruthfulQA:准确率
- CrowS-Pairs:识别偏见句子的准确率(高困惑度)
- WinoGender:指代解析准确率(he/she/they)
- RealToxicityPrompts:毒性评分
- HaluEval:识别幻觉的平均准确率
对于TruthfulQA,采用text-davinci-003替代人类评分。
5. 与环境互动(Interaction with Environment)
选择以下数据集进行评估:
- ALFWorld [611]
- WebShop [612]
这些数据集模拟现实场景,如家庭和电子商务环境。我们遵循ReAct [442]的设置,分别评估WebShop的1-shot和ALFWorld的2-shot性能,计算成功率和平均分/成功率。
6. 工具操作(Tool Manipulation)
考虑两种工具,包括搜索引擎和模型接口。采用以下两个工具操作基准:
- HotpotQA [581]:要求LLMs使用搜索引擎从网络检索文档
- Gorilla [619]:要求调用来自TorchHub、TensorHub和HuggingFace的模型API
计算以下指标:
- HotpotQA:精确匹配
- Gorilla:准确率
对于HotpotQA,报告3-shot性能;对于Gorilla,评估零-shot性能。
对于每个任务和数据集,我们使用相同的提示和结果解析方法来评估比较的LLMs。这些方法有些来自现有研究(如TruthfulQA、HotPotQA、Gorilla、HaluEval),有些则根据我们的经验设计(如TriviaQA、Natural Questions、Web Questions、ARC、WikiFact、GSM8k、MATH、Colored Objects、Penguins、LAMBADA、WMT’22、XSum、HumanEval、CrowS-Pairs、WinoGender、RealToxityPrompt)。
具体实施细节:
-
闭源模型:所有闭源模型的实验都是通过调用它们的官方API进行的。
-
开源模型:我们利用公开可用的代码和模型参数,在8个A800-80G GPU上执行推理。
-
数据集选择:
- 对于TriviaQA、OpenbookQA、HellaSwag和SocialIQA,我们在开发集上进行实验,因为测试集未公开发布。
- 对于其他数据集,我们在测试集上进行实验。
7.4.2 Results Analysis and Findings
Analysis of Closed-Source Models
我们总结了对四个闭源模型(即ChatGPT、Claude、Davinci003和Davinci002)的分析和发现,具体如下:
1. 整体表现
- 这些闭源模型在通用任务求解方面表现出色,其中ChatGPT的表现最为突出。ChatGPT、Claude、Claude 2、Davinci003和Davinci002在大多数任务中表现良好,包括复杂任务(例如GSM8k),显示出作为通用任务求解者的巨大潜力。
- 在评估任务中,ChatGPT展现出更强的模型能力,在所有任务中获胜最多。在某些评估任务中,ChatGPT与其他闭源模型之间的性能差距非常大,特别是在复杂任务上。例如,在GSM8k中,ChatGPT的得分为78.47,而Davinci002仅为49.96;在HumanEval中,ChatGPT得分为79.88,而Claude得分为51.22。
2. 环境互动与工具操作
- Claude 2、ChatGPT和Davinci003在环境互动和工具操作任务中表现更佳。在这两项评估任务中,这三种模型的表现显著优于其他模型。例如,在HotpotQA中,Claude 2的得分为36.40,而Davinci002为26.00;在Gorilla-TF中,ChatGPT得分为44.53,而Claude仅为7.74;在Gorilla-TH中,Davinci003得分为72.58,而Claude为22.04。这可能是因为这三种模型在这些高级能力上进行了特别优化,例如支持使用外部插件。
3. 推理任务表现
- 所有比较模型在非常困难的推理任务上表现较差。在MATH和HotpotQA中,所有模型(包括ChatGPT)的表现均不理想。这两项任务都非常复杂,要求对数学知识有准确的理解,并在文档之间进行多跳推理。此外,这些模型在机器翻译任务(WMT)上的表现也相对较弱。一个可能的原因是WMT包含许多小语种的评估示例,这些示例可能在这些LLMs的预训练数据中没有得到充分覆盖。
接下来,我们对八个开源模型(即LLaMA 2-Chat、Vicuna、Alpaca、ChatGLM、LLaMA 2、LLaMA、Pythia和Falcon)的分析和发现总结如下:
1. 指令微调模型的表现
- 指令微调模型普遍优于基础模型:在所有比较的开源模型中,指令微调模型(如LLaMA 2-Chat、Vicuna、Alpaca和ChatGLM)通常表现优于非指令微调模型(如LLaMA 2、LLaMA、Pythia和Falcon)。这表明指令微调能够在解决各种任务时提高LLMs的少样本或零样本能力。然而,经过指令微调后,Vicuna (7B) 和 Alpaca (7B) 在语言建模任务LAMBADA上表现下降。原因可能是指令数据主要集中于使LLMs遵循人类指令,而这并不总是对通用语言生成任务有用。
2. 小型模型的局限性
- 小型开源模型在数学推理、环境互动和工具操作任务上表现不佳:在这些任务上,所有评估的开源模型,包括指令微调模型,均表现不佳。可能的原因是用于微调这些模型的指令数据并未专门设计用于这些特定任务。此外,由于模型规模较小,这些闭源模型的能力也可能受到限制。
3. 人类对齐任务的表现差异
- 不同人类对齐任务的最佳模型表现不同:在不同的人类对齐任务中,这些模型的性能排名不一致。例如,LLaMA 2-Chat (7B) 在TruthfulQA上表现最佳,而Vicuna (13B) 在CrowS-Pairs上表现最佳。可能的原因是这些任务设计有特定的目的,旨在评估人类对齐的不同方面,模型在不同任务上的表现各异,甚至同一模型的不同变体(如Pythia (7B) 和 Pythia (12B))也存在差异。需要更多实验和分析来揭示人类对齐评估的详细发现。
4. LLaMA 2的表现
- LLaMA 2 (7B) 在整体上表现良好,尤其是在复杂推理任务中:在复杂推理任务中,LLaMA 2 (7B) 的表现通常优于其他基础模型,例如,在C-Objects中,得分为43.95(LLaMA 2 (7B))对比29.80(Falcon (7B))。在其他任务(如语言生成和知识利用)中,LLaMA 2 (7B) 的表现也可与最佳基础模型相媲美。这得益于其使用了更多的数据进行预训练(约2万亿个标记),并进行了更为严格的数据清洗过程。
5. 模型规模的影响
- 扩大开源模型规模可持续提高性能:通过比较Vicuna (7B) 和 Vicuna (13B),Pythia (7B) 和 Pythia (13B) 的表现,我们可以看到,规模更大的模型在评估任务中通常表现更好,表明放大模型规模的有效性。在不同任务中,扩大模型规模对更复杂的任务(如符号和数学推理)更为有利,较大的模型通常在这些任务中大幅超越较小的模型。
8 Application
8.1 LLM for Research Community
8.1.1 LLM for Classic NLP Tasks
随着预训练语言模型(如BERT)在自然语言处理(NLP)领域的崛起,语言模型的技术进步对NLP研究产生了重要影响。在这一部分,我们讨论LLMs在五种经典NLP任务中的应用,包括词级任务、句子级任务、序列标注、关系提取和文本生成任务。这些任务是许多现有NLP系统和应用的基础。
1. 词级与句子级任务
-
词级任务(如词聚类和语义消歧义)和句子级任务(句子匹配和情感分类)是长期以来广泛研究的NLP任务。解决这些任务的关键在于准确理解词语或句子的语义信息。
-
由于在这些任务上积累了大量高质量标注数据,现有研究发现小型语言模型通过微调可以实现良好表现。最近的研究显示,LLMs也能通过上下文学习(仅使用少量示例)在这些任务上表现良好。然而,由于小型模型可以针对特定任务进行优化,经过全数据微调的小型模型在某些经典任务(如语义匹配和情感分析)上的表现通常优于使用上下文学习的LLMs。
2. 序列标注任务
-
序列标注任务(例如命名实体识别和词性标注)是NLP中的基础任务,通常需要为输入序列中的每个标记分配适当的语义类别标签。早期的努力主要将学习到的序列表示(如使用CNN、LSTM和BERT)整合到经典的条件随机场模型(CRF)中。
-
最近的研究测试了LLMs在序列标注任务上的表现,但观察到LLMs在使用上下文学习时仍面临挑战,尤其是对于具有模糊或稀有名称的特殊类别(如“MISC”和“ORG”类)。可能的原因是LLMs可能误解了人类标注数据集中这些类别的含义,导致难以根据指令和有限示例准确理解其语义。
3. 信息提取任务
-
信息提取任务侧重于从非结构化文本数据中自动提取有用的结构化信息,如关系提取和事件提取。这是与许多NLP应用相关的重要任务。
-
以往的研究将此任务表述为文本分类任务或序列标注任务。由于信息提取通常需要准确理解和处理复杂的语义关系(一个句子中的多重关系),LLMs在上下文学习中的表现通常不如全数据微调的方法。研究表明,LLMs与小型模型之间的协作可以进一步提升特定任务的性能。此外,最近的研究也揭示,LLMs通过两阶段工作流可以实现竞争性的零-shot性能,这一方法在未来应用中具有吸引力。
4. 文本生成任务
-
文本生成任务(如机器翻译和自动摘要)是长期以来广泛研究的NLP任务,许多基于微调小型模型的产品和系统已经投入使用。由于LLMs的预训练是基于文本预测,它们展现了强大的语言生成能力。
-
适当的提示可以帮助LLMs有效处理现实应用场景中的特殊需求,如文档级翻译,并且能够与用户进行自然语言交互,从而进一步提高生成质量。尽管取得了上述成功,最近的研究也显示,LLMs在处理低资源语言和领域(如马拉地语到英语翻译)时仍然面临困难,原因在于不同语言间的训练数据不平衡。
总结与未来方向
建议(Suggestions)
-
LLMs和小型模型在不同方面各有优劣:LLMs能为各种NLP任务提供统一解决方案,并在零样本/少样本设置下实现竞争性表现,而小型模型开发经济,能够根据目标任务进行专门调优,尤其在拥有足够高质量标注数据的情况下表现良好。在应用中,应根据实际需求综合考虑灵活性、数据可用性、训练计算需求和效率,做出合适的选择。
未来方向(Future Directions)
-
尽管LLMs具有优秀的通用能力,但在低资源领域(如小语种翻译)处理NLP任务仍然存在挑战。为了解决此类任务,需要开发有效的方法将必要的任务信息或领域特定知识注入LLMs中,这可以通过微调或提示的方式实现。
-
LLMs在处理经典NLP任务中的复杂语义关系时也面临挑战(如嵌套实体提取),这值得从LLMs的底层工作机制进行更多探索。
-
结合LLMs与微调的小型语言模型可以互补解决经典NLP任务中的复杂案例,进行人机协作研究(如对话翻译)也是一个有前景的方向,因为LLMs能够有效理解人类指令并做出有意义的响应。
8.1.2 LLM for Information Retrieval
信息检索(IR)系统的目标是帮助用户发现理想的信息资源(通常是文档),并缓解信息过载问题。现代IR系统通常采用“检索-重排”管道框架。在这个框架中,检索器首先从大规模语料库中检索相关信息,随后重排器执行多阶段排序以获取最相关的信息。由于LLMs的出现对信息访问方式产生了重大影响,我们将讨论它如何从两个主要方面推动IR的发展:LLMs作为IR模型和LLM增强的IR模型。
1. LLMs作为IR模型
-
稀疏模型与密集模型:现有IR模型通常分为稀疏模型(依赖于基于术语的词汇相似性)和密集模型(依赖于基于嵌入的语义相似性)。密集模型主要通过微调预训练语言模型(PLM,例如BERT)实现。与PLM相比,LLMs在捕捉文本语义方面具有更强的模型能力,因此有潜力改善现有的密集IR模型。
-
LLM作为重排器:由于LLMs的高计算开销,大多数研究集中在将LLMs作为重排器,旨在优化检索候选文档的排名。为实现这一目标,近期的努力通常通过特殊指令来使LLMs对提供的小型候选文档集进行重排。通常,这种方法不需要模型训练,并且与经过良好训练的重排方法相比能取得令人满意的结果。
-
重排方法:LLM基于重排的方法可以通过零-shot或少-shot指令以不同方式实现,包括逐点(估计查询-文档对的相关性分数)、成对(确定两个文档的相关性顺序)或列表排名(对候选文档的子集进行排序)。这些方法的本质在于为文本重排设计特定的指令,例如文档列表的滑动窗口策略、集合选择提示、细粒度相关性标签的引入和成对比较提示。
-
生成中间文本:此外,最近的研究还利用LLMs生成中间文本(例如URL)作为检索结果,采用少量示例进行演示。为了进一步提高模型性能,LLMs可以作为重排的骨干进行特别微调,或用于检索(包括密集检索和基于模型的检索),类似于传统PLM基础IR模型的微调过程。然而,将LLMs微调为IR模型需要考虑到其庞大的参数规模所带来的巨额开销。
2. LLM增强的IR模型
-
改善现有IR模型:作为另一个主要研究方向,LLMs可以用来改善现有的IR模型(如小型模型)。现有IR模型面临的一个常见挑战是缺乏相关判断注释。为了解决这个问题,LLMs可以被指示为给定查询标注正面或负面的文档,或根据语料库中的一组文档生成相应的查询。
-
训练数据增强:除了训练数据的增强,LLMs还可以通过改善查询和文档的搜索导向信息来提升现有IR模型的性能。在IR系统中,输入查询可能受限于用户的认知和文化能力,这使得准确表达真实意图变得困难,而文档中存在的无关内容也会影响与查询的相关性评估。作为解决方案,可以利用LLMs重写查询,以增强对查询意图的理解,并通过精心设计的指令将额外知识融入查询中。
-
查询与文档扩展:重写的查询可以是原始查询的改进版本、与查询相关的文档,或是与伪生成文档连接的查询扩展。此外,文档也可以通过基于原始文档生成的查询进行扩展,以提供上下文。
3. 亟待解决的问题
-
LLMs在IR系统中的适应性:尽管LLMs可以作为通用任务求解者,但它们并不直接适合现有的IR系统:它们在推理过程中需要较高的开销,建模长文本或文档列表时存在局限性,并且需要特别适应(例如,指令微调)才能执行文本排名任务。因此,应该探索更系统的方法以适应LLMs到现代IR系统中,从而发挥其优势并克服这些局限性。
-
重新塑造IR架构:LLMs的出现为新信息检索方式的发展提供了启示(如New Bing)。探索如何通过整合LLMs的能力与现有IR系统的优点来重塑IR的架构和范式是有意义的。
-
多模态信息源的考虑:现有研究主要集中在文本检索任务上,缺乏对多模态信息源的全面考虑。多模态大型语言模型的研究也在蓬勃发展,使得开发更强大的多媒体检索系统成为可能。
8.1.3 LLM for Recommender Systems
与分析用户搜索查询以检索相关文档的信息检索(IR)系统不同,推荐系统(RS)的目标是捕捉潜在的用户偏好,并向用户提供适当的信息资源。现有的研究通常通过拟合用户的日志数据(如点击数据)训练推荐模型(经典或深度学习模型)。然而,这些模型常常面临一系列技术问题,如冷启动推荐、领域转移和解释性差。最近,LLMs显示出缓解这些推荐模型问题的潜力,主要由于其强大的领域泛化和语言生成能力。以下我们从三个方面简要回顾LLMs在推荐系统中的最新进展:LLMs作为推荐模型、LLM增强的推荐模型,以及LLMs作为推荐模拟器。
1. LLMs作为推荐模型
-
适应LLMs为推荐模型:现有工作通常可分为两类。第一类方法通过零-shot范式(即不进行参数调优)提示LLMs完成推荐任务。一系列提示工程方法(如关注最近性的学习和上下文学习)被引入以提高推荐性能,并缓解潜在的模型偏倚。第二类研究旨在通过指令调优专门化LLMs以实现个性化推荐。高质量的指令数据是将LLMs适配到推荐任务的关键,这些数据可以基于用户-项目交互使用启发式模板构建。为进一步提高指令的多样性,InstructRec采用自我指令技术,在各种场景(如产品搜索和个性化推荐)中模拟大量潜在用户指令。此外,越来越多的研究关注通过语义标识符扩展LLM的词汇,以将协同语义融入推荐系统。
2. LLM增强的推荐模型
-
提升传统推荐系统:除了直接提供推荐外,研究人员还提出利用LLMs中编码的通用知识来改善传统推荐系统。现有方法主要分为三类。第一类方法使用LLMs从用户的历史交互数据中推断用户的潜在意图,传统推荐/搜索模型利用这些推断的意图来改善相关项目的检索。第二类研究探索使用LLMs作为特征编码器,编码项目和用户的附加信息(如项目描述和用户评论),从而获取更具信息性的用户和项目表示,并将这些表示输入到传统推荐系统中。另一种选择是采用类似蒸馏的方式将LLMs的能力(如语义编码)转移到传统推荐模型(如小型模型)中,通过联合训练对齐LLMs和传统推荐模型的隐藏状态。
3. LLM作为推荐模拟器
-
开发推荐模拟器:受到自主AI代理成功的启发,LLMs也被用于开发推荐模拟器,显示出模拟用户在推荐系统中真实行为的巨大潜力。具体来说,为了实现个性化模拟,代理将配备包含相关身份信息的剖面模块,并引入内存模块以存储代理的过去交互经验。在模拟过程中,代理进一步被提示基于其过去的经验进行自我反思,以捕捉其潜在的用户偏好。现有的推荐模拟器大多以用户为导向,而没有明确建模交互过程中的项目。为了解决这个问题,AgentCF同时将用户和项目建模为代理,并促进协作反思,以模拟用户-项目交互,从而捕捉用户与项目之间的双向关系。
4. 亟待解决的问题
-
性能挑战:尽管已有努力,应用LLMs于推荐系统时仍面临几大挑战。首先,现有研究表明,LLM基于推荐模型在零/少样本设置下的表现往往不如传统的基于ID的推荐系统,这表明LLMs可能缺乏对个性化用户行为和领域特定协作语义的理解。虽然指令调优在一定程度上缓解了这一问题,但仍无法完全缩小LLMs与推荐系统之间的语义差距,并且调优成本较高。
-
推理延迟与上下文建模:此外,推荐系统优先考虑最小化推理延迟,以提升用户在低资源环境(如手机)下的体验,这对LLMs的推理速度和内存开销构成挑战。因此,探索高效调优和量化方法等改进技术,以在现实世界的推荐系统中高效、有效地部署LLMs是至关重要的。此外,现有LLMs在长上下文建模方面的能力有限,使得处理大量用户-项目交互数据变得困难,因此需要开发改进的上下文长度扩展和上下文信息利用方法,以提升LLMs在长交互序列中的建模能力。
8.1.4 Multimodal Large Language Model
在现有文献中,多模态模型主要指能够处理和整合各种模态(例如文本、图像和音频)信息的模型,并进一步生成相应模态的输出。在这一部分,我们主要关注通过使非文本模态的信息建模来扩展大型语言模型(LLMs),特别是视觉模态,这被称为多模态大型语言模型(MLLMs)。
1. 输入与输出
我们将讨论的输入为文本-图像对,输出为文本响应。类似的讨论也可以应用于其他模态,例如语言-音频模型,但这些超出了我们当前的讨论范围。
2. MLLMs的构成
MLLMs的开发旨在通过适应其他模态的信息到文本模态,以利用基于世界文本学习的LLMs所具备的优秀模型能力。通常,MLLM包括以下几个关键部分:
- 图像编码器:用于对输入图像进行编码。
- 语言模型(LLM):用于生成文本响应。
- 连接模块:用于对齐视觉和语言表示。
3. 生成过程
在生成过程中,输入的图像首先被拆分为多个小块(patches),然后通过图像编码器转换为小块嵌入(patch embeddings)。连接模块会将这些嵌入与文本嵌入进行结合,形成可供LLM理解的视觉表示。最终,拼接后的小块嵌入和文本嵌入被输入到MLLM中,允许语言模型自回归地生成响应。
4. 训练与评估
- 训练:MLLM的训练通常需要大量配对的文本和图像数据,模型通过最大化生成文本与输入图像之间的相似度来进行优化。
- 评估:评估MLLM的性能时,应考虑生成文本的相关性、连贯性和准确性,此外还可以通过人类评估和自动化指标(如BLEU、ROUGE等)来进行。
5. 关键点与挑战
在开发高效的MLLM时,有几个关键点需要注意:
- 模态对齐:如何有效地对齐视觉和语言表示是MLLM成功的关键。
- 模型容量:确保模型具有足够的容量来处理和生成复杂的多模态信息。
- 数据集的多样性:使用多样化的训练数据集,以提高模型在不同场景下的泛化能力。
Training Process
1. 视觉-语言对齐预训练
-
模型初始化:在开发MLLM时,现有研究通常使用预训练模型初始化视觉编码器和语言模型(LLM)。这些模型保留了出色的视觉和语言能力,但跨越不同的语义空间。
-
对齐目标:视觉-语言对齐预训练(第一阶段训练)的目标是通过对大规模图像-文本对进行端到端训练来对齐视觉编码器和LLM。然而,直接在图像-文本对上微调这两个模型可能导致原始表示能力的下降。
-
有效策略:
- 小数据集调整:如果图像-文本对的数量不足(例如少于100万对),通常建议只更新连接模块。
- 高质量数据微调:如果训练数据包含高质量的文本语料或带有细粒度注释的图像-文本对,可以对LLM进行微调,从而提升性能。
- 大数据集微调:如果图像-文本对的数量非常大(例如约10亿对),微调视觉编码器也是可行的,但其效果仍需进一步验证。
2. 视觉指令调优
-
调优目标:在完成视觉-语言预训练后,第二阶段训练即视觉指令调优的目标是提高MLLM的指令跟随和任务解决能力。视觉指令调优的输入通常由图像和任务描述构成,任务是生成相应的文本输出。
-
高质量指令数据:高质量的视觉指令数据对于引导和增强MLLM的能力至关重要。因此,大多数研究致力于构建各种视觉指令数据集。
-
构建方法:
- 早期方法:早期研究通过从GPT-4提取或重新构造视觉-语言任务数据集来构建视觉指令。
- 增强策略:为了提高指令数据的质量,近期的工作提出了改进策略,包括增加指令的多样性、将细粒度信息(如物体坐标)纳入指令,或合成复杂的视觉推理指令。
在介绍了开发MLLM的方法后,我们进一步讨论如何有效评估MLLM的多模态能力,主要从以下三个方面进行分析。
1. 评估视角
MLLM的评估任务可分为两大类:感知任务和认知任务。
-
感知任务:旨在评估模型理解图像内容基本语义的能力。评估通常通过图像属性(如主题和风格)及对象(如存在与颜色)的分类任务来进行,或通过OCR相关任务,利用现有数据集或从人工或LLM注释的现有图像派生的新数据集。一个显著的感知问题是“幻觉”,即模型的响应与图像内容不一致。在关于MLLM幻觉的研究中,对象幻觉受到较多关注。为稳定、可靠地评估对象幻觉,POPE提出了一种基于投票的对象探测方法,将对象识别转换为一系列二元问题,结果表明当前MLLM在对象幻觉方面常常表现不佳。
-
认知任务:要求MLLM基于图像感知进行推理。常见的推理任务是视觉问答(VQA),模型需要回答有关图像的问题,这些问题要求推理空间关系、常识或场景文本。为全面探索MLLM的能力,HallusionBench收集了200个复杂的视觉依赖或补充问题,即使是像LLaVA-1.5和GPT-4V等最先进的MLLM也未能取得良好表现。
2. 评估范式
MLLM的响应可以通过封闭式或开放式的方式进行评估。
- 封闭式评估:传统的多模态任务通常依赖于封闭式评估框架,评估基于模型响应与真实答案之间的精确匹配。例如,VQA任务使用VQA评分,图像描述任务使用CIDEr评分。然而,MLLM的输出是开放式生成的,可能包含正确答案但未必与真实答案完全匹配。这种差异可能导致对模型表现的低估。为解决这一问题,近期的方法引入了人类或LLM作为评估者。例如,MM-Bench利用ChatGPT将模型响应与多项选择题中的最相关选项对齐,而LLaVA则利用GPT-4评估MLLM的输出,其中GPT-4将生成的图像描述和对象边界框作为视觉输入进行评估。这类开放式评估方法提高了评估的准确性,但因涉及人类或LLM而带来了更高的成本。
3. 评估基准
为促进对MLLM的更全面评估,开发了多种基准。
-
现有任务集合:部分基准通过汇集现有的视觉-语言任务进行综合评估。例如,LVLM-eHub整合了47个现有的文本相关视觉任务,以评估MLLM的六种不同能力。Reform-Eval进一步标准化现有基准中的问题,讨论基础模型如何影响MLLM的性能。
-
新问题的构建:除了整合现有任务外,一些研究还通过人工或利用LLM的帮助来生成新问题。MME通过将公共来源的图像与手动收集的文本指令配对,创建了用于感知和认知评估的数据集。MMBench将这些指令转化为多项选择题,并引入CircularEval以确保评估的一致性。SEED-Bench进一步考虑时间理解任务,并扩大评估规模,使用LLM的帮助生成19,000个多项选择题。MM-Vet则定义了六种基本的多模态能力,创建了结合多种能力的复杂问题,以评估MLLM的综合多模态能力。
Key Points for Improving MLLMs
要开发出高效的MLLM,我们从以下三个方面讨论如何提升模型能力:视觉指令数据、模型训练以及安全性与对齐。
1. 视觉指令数据
-
数量与质量:大量研究发现,视觉指令的数量和质量对MLLM的性能有重要影响。构建视觉指令的基本方法是利用LLM的卓越能力,根据图像的文本描述合成指令。为进一步提升指令质量,可以通过人工注释构建细粒度的视觉指令,或通过精心设计的提示合成更复杂的数据。
-
质量控制:尽管上述基于LLM的方法有效,但一个主要问题是,LLM(即未经过图像训练的文本生成模型)是否具备仅通过口头化的视觉信息(如标题和坐标)生成足够好的视觉指令的能力。现有研究表明,LLM生成的视觉指令有时会对视觉信息产生误解,例如对象幻觉。因此,设计有效的验证方法以控制LLM生成的指令数据质量至关重要。
-
深入研究:需要进一步调查什么构成良好的视觉指令,以及如何通过视觉指令引导MLLM特定的多模态能力。
2. 模型训练
-
训练方法:与LLM不同,MLLM并不是从头开始训练,而是基于预训练的语言模型和视觉模型进行开发。现有工作采用典型的两阶段方法训练MLLM,即视觉-语言对齐预训练和视觉指令调优。目标是(1)尽可能保留LLM的固有能力和参数知识,同时(2)通过利用预训练的LLM和视觉编码器有效适应多模态任务。
-
优化策略:在视觉指令调优中,通常采用两种典型的训练策略:仅优化连接模块,或对连接模块和LLM组件进行微调。前者可以保留LLM的原始能力,但可能适应性能较弱;后者可以充分适应多模态任务,但可能导致LLM原始能力的丧失。因此,需更多努力探讨如何有效平衡这两方面,以提高多模态能力。
-
依赖性问题:现有的MLLM仍然过于依赖LLM的能力,这在许多多模态任务(如空间定位)上造成了限制。因此,探索改进语言模型的训练方法,以便在训练过程中也能利用多模态信息,将是有意义的。
3. 安全性与对齐
-
安全性问题:安全性和对齐在LLM中得到广泛讨论,旨在通过技术手段规范模型的行为。尽管MLLM高度先进(如GPT-4V),但仍可能面临安全问题。例如,GPT-4V可能偶尔会对图像产生事实不准确和无根据的推断。在某些情况下,它甚至可能生成针对特定个人或群体的有害内容。
-
幻觉与操控:开源的MLLM也容易生成幻觉响应,并且可以被轻易操控以产生有害内容。为解决这些问题,一些研究收集了专门的视觉指令来减轻幻觉问题。另一种替代方法是训练修正模型,以后期方式纠正MLLM生成的幻觉响应。
-
知识图谱的应用:将MLLM与强化学习从人类反馈(RLHF)对齐,有助于生成更具事实性的响应。尽管已有努力,但现有的对齐技术主要集中在几个特定方面(如幻觉),缺乏对对齐标准的综合考虑。需要更多的努力来推动MLLM安全性和对齐的研究。
-
知识增强方法:知识图谱(KG)可以通过提供精确必要的知识来增强LLM的任务性能,通常以三元组格式存储大量知识。知识增强的方法可以扩展到其他形式的结构化数据(如表格和数据库),我们在此讨论将KG整合以提升LLM性能,主要分为检索增强型LLM和协同增强型LLM。
8.1.5 KG-Enhanced LLM
8.1.6 LLM for Evaluation
根据评估结果的类型,评估格式可以分为评分基础评估和语言基础评估。
1. 评分基础评估
-
可测量指标:评分基础评估使用可量化的指标为被评估文本分配质量分数(例如,评分或排名)。一种常见的方法是进行成对比较,利用LLM确定候选文本的部分顺序关系,依据特定指导方针进行评估。这种方法极大简化了评估任务,但在候选数量增加时可能面临效率问题。
-
高质量参考文本:当可用高质量参考文本时,可以指导LLM在参考的引导下对文本进行评分。
2. 语言基础评估
-
生成点评与建议:语言基础评估专注于生成批评和建议,提供定性解释,超越简单的定量评分。这种方法特别适合收集语言反馈信号,以用于人类对齐调优。
-
多轮交互框架:语言基础评估可以演变为多轮交互框架,其中基于LLM的评估者提供自然语言反馈,以改进任务解决者的现有解决方案。这种框架评估LLM利用语言反馈来细化自生成解决方案的能力。
-
提示LLM进行评估:常见的LLM基础评估方法是使用特定指令提示LLM。为进一步提高评估质量,近期研究建议使用多种上下文提示LLM,以生成多样化的评估反馈。这些上下文在候选顺序、评估视角(如相关性、清晰度、原创性)和评估解释等方面有所不同。
-
聚合反馈:生成的多种评估反馈会被聚合,以产生最终的评估结果。这使得评估过程不易受到个别反馈的偏见影响,并通过覆盖更广泛的评估方面实现更全面的评估。
-
多代理合作框架:为进一步提高单模型评估的质量,近期研究开发了多代理合作框架,或对LLM进行特定评估者的微调。在多模型合作模式中,不同的LLM通过讨论评估候选者,以对齐偏好并达成共识。这种方法有助于通过多个代理达成的共识来减少单个模型的潜在偏见。
-
微调专业化评估者:另一种改进单模型评估的方法是通过微调将LLM专业化为评分者或评审者。这一过程涉及创建带有人类或熟练LLM偏好和反馈的注释数据集,然后用这些数据集训练面向评估的模型,使其能够生成成对偏好或语言反馈。
-
评估LLM评估者的质量:为有效评估基于LLM的评估者的质量,已经引入了元评估基准,用于衡量与人类偏好的一致性和LLM所做评估的公平性。例如,MT-Bench评估LLM与人类判断之间的一致性,表明GPT-4在80个多轮问题的无平局比较中与人类偏好高度一致。
-
解决主观偏见:为解决主观人类评估可能带来的潜在偏见,LLMBar手动设计了在表面上吸引但客观上较差的输出,以免误导评估者。评估结果显示,即使是最先进的LLM在这种挑战性设置下仍未达到人类级别的评估。
-
偏见问题:近期研究表明,基于LLM的评估者暴露出多种偏见类型,如顺序偏见、自我偏好偏见和长度偏见。尽管某些偏见可以通过多路径集成或多代理合作等方法减轻,但它们仍然是LLM评估者固有的问题。因此,继续在模型内部解决这些偏见仍然是一个具有挑战性的课题。
-
理解能力不足:最近的工作揭示了LLM可能无法理解自生成内容,显示出其理解能力较弱,尤其是在缺乏外部反馈时,更难以识别推理或事实错误。这突显了当前基于LLM的评估者在评估顶级LLM或复杂任务时的不足,强调了改进基于LLM的评估者的重要性,尤其是在需要复杂推理、计划和领域特定知识的任务中。