文本内容参考论文《A Survey of Large Language Models》
论文标题:A Survey of Large Language Models
论文链接:https://arxiv.org/pdf/2303.18223v10.pdf
大模型技术发展概述 -(四)
- 6. 使用方法
- 6.1 上下文学习
- 6.1.1 提示形式
- 6.1.2 示范设计
- 6.1.3 潜在机制
- 6.2 CoT提示
- 6.2.1 CoT下的上下文学习
- 6.2.2 CoT进一步讨论
- 7. 性能评估
- 7.1 基本评估任务
- 7.1.1 语言生成
- 7.1.2 知识利用
- 7.1.3 复杂推理
- 7.2 先进能力的评估
- 7.3 公共基准和实证分析
6. 使用方法
在预训练或适应微调之后,使用LLM的主要方法是为解决各种任务设计合适的提示策略。一种典型的提示方法是上下文学习(in-context learning),它将任务描述和/示范以自然语言文本的形式表示。此外,可以通过链式思考提示(chain-of-thought prompting)增强上下文学习,其中涉及一系列中间推理步骤的提示。接下来,将详细介绍这两种技术的细节。
6.1 上下文学习
作为一种特殊的提示形式,上下文学习(In-Context Learning,ICL)是首次随着GPT-3 提出的,已成为利用LLM的典型方法。
6.1.1 提示形式
上下文学习使用一种格式化的自然语言提示,由任务描述和/或几个任务示例作为示范组成。如下图展示了上下文学习的示例。首先,从任务数据集中选择一些示例作为示范。然后,将它们按特定顺序组合,形成带有特殊设计模板的自然语言提示。最后,将测试实例附加到示范中作为LLM的输入,生成输出。基于任务示范,LLM可以在没有明确梯度更新的情况下识别并执行新任务。
形式化地说,设 D k = f ( x 1 , y 1 ) , . . . , f ( x k , y k ) Dk = {f(x_1, y_1), . . . , f(x_k, y_k)} Dk=f(x1,y1),...,f(xk,yk)表示包含k个示例的示范集,其中 f ( x k , y k ) f(x_k, y_k) f(xk,yk)是将第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的预测可以表示为:
其中实际答案 y k + 1 y_{k+1} yk+1为空,需要LLM预测。由于ICL的性能严重依赖示范,正确设计提示中的示例是一个重要问题。根据方程上面瘩中的构造过程,我们关注提示中格式化示例的三个主要方面,包括如何选择组成示范的示例、如何将每个示例格式化为提示中的示例(使用函数f(·)),以及如何合理地排列示范。
6.1.2 示范设计
多项研究表明,示范的设计对ICL的有效性有很大影响[247-249]。
根据前面第6.1.1节的讨论,我们将从示范选择、格式和顺序这三个主要方面介绍ICL的示范设计。
示范选择
ICL的性能在不同的示范示例下变化较大[250],因此选择能够有效利用LLM的ICL能力的示范子集非常重要。有两种主要的示范选择方法,即启发式方法和基于LLM的方法:
- 启发式方法:由于简单和低成本的特点,现有的工作广泛采用启发式方法来选择示范。几项研究使用基于k-NN的检索器选择与查询语义相关的示例。然而,他们是针对每个示例单独进行选择,而不是整体评估示例集合。为了解决这个问题,提出了基于多样性的选择策略,用于选择特定任务的最具代表性的示例集合。此外,在选择示范时,还同时考虑了相关性和多样性。
- 基于LLM的方法:另一种方法是利用LLM选择示范。例如,LLM可以直接测量每个示例的信息量,即添加示例后的性能提升。此外,EPR提出了一种两阶段检索方法,首先使用无监督方法(如BM25)召回相似示例,然后使用经过LLM标记的正负示例训练的密集检索器对它们进行排序。作为一种替代方法,可以将示范选择任务制定为强化学习问题,其中LLM作为奖励函数为策略模型提供反馈[257]。由于LLM在文本注释方面表现出色,一些最近的研究甚至不需要人工干预,直接使用LLM作为示范生成器。
总结一下,在ICL中选择的示范示例应包含足够的关于要解决的任务的信息,并与测试查询相关,对于上述两种选择方法来说都是如此。
示范格式
在选择任务示例后,下一步是将它们集成和格式化为LLM的自然语言提示。一种简单的方法是使用预定义的模板与相应的输入-输出对实例化。为了构建更具信息性的模板,最近的研究考虑添加任务描述或使用思维链式提示增强LLM的推理能力。例如,在中,作者收集了一个由人类编写的任务描述的大规模数据集。在使用该数据集进行调整后,可以提高在已知任务上的性能,并且LLM还可以在一定程度上推广到未知任务。为了减少注释成本,提出了一种半自动化方法,通过使用由人类编写的任务描述的种子集来引导LLM生成新任务的任务描述。由于为不同任务手动注释示范格式的成本很高,一些研究还研究了如何自动生成高质量的示范格式。作为两种典型方法,Auto-CoT利用带有“让我们一步一步思考”零-shot提示的LLM生成中间推理步骤,而“从少到多提示”首先查询LLM执行问题分解,然后使用LLM根据先前解决问题的中间答案逐步解决子问题。
示范顺序
LLM有时会受到最近性偏差的影响,即易于重复出现在示范的末尾的答案。因此,合理地安排示范(即任务示例)非常重要。早期的研究提出了几种启发式方法来快速找到良好的顺序。例如,示范可以根据它们在嵌入空间中与查询的相似性直接组织:相似性越大,越靠近末尾。此外,全局和局部熵指标可以用来评分不同的示范顺序。为了整合更多的任务信息,一些最近的研究提出了最小化压缩和传输任务标签所需的代码长度的方法,这是受信息论启发的。然而,这些方法需要额外的标记数据作为验证集来评估特定示范顺序的性能。为了消除这个需求,提出从LLM本身中采样验证数据的方法。
6.1.3 潜在机制
在预训练后,LLM在不进行更新的情况下可以展现出令人感兴趣的ICL能力。接下来,我们将讨论LLM的ICL能力的两个关键问题,即“预训练如何影响ICL能力”和“LLM在推理过程中如何执行ICL”。
预训练如何影响ICL?
ICL首次在GPT-3中提出,并且已经显示出ICL能力在模型尺寸越大时变得更加显著。然而,一些研究揭示了小规模的PLM在特定设计的训练任务下也能展示出强大的ICL能力(例如,通过使用任务示例进行标签预测和将查询作为输入),甚至可能超过更大的模型。这表明训练任务的设计是影响LLM的ICL能力的重要因素。除了训练任务,最近的研究还调查了ICL与预训练语料库之间的关系。研究表明,ICL的性能严重依赖于预训练语料库的来源,而不仅仅是规模。另一项研究对训练数据分布的影响进行了深入分析。他们发现,只有当训练数据可以聚类成许多罕见的类别时,ICL才会出现,而不是均匀分布。
LLM如何执行ICL?
在推理阶段,研究人员专注于分析LLM在给定示范的基础上执行ICL能力的方式,因为这个过程不涉及显式的学习或更新。他们通常从梯度下降的角度分析,并将ICL视为隐式微调。根据这个框架,ICL过程可以解释如下:通过前向计算,LLM根据示范生成与示范相关的元梯度,并通过注意力机制隐式地执行梯度下降。实验还表明,LLM中的某些注意力头能够执行与任务无关的原子操作(例如,复制和前缀匹配),这与ICL能力密切相关。为了进一步探索ICL的工作机制,一些研究将ICL抽象为一种算法学习过程。具体而言,在预训练过程中,LLM本质上通过其参数对隐式模型进行编码。通过ICL提供的示例,LLM可以实现学习算法,例如梯度下降,或者直接计算封闭形式的解来更新这些模型。根据这个解释框架,已经证明LLM可以有效地学习简单的线性函数,甚至可以使用ICL学习一些复杂的函数,如决策树。
6.2 CoT提示
Chain-of-Thought(CoT)是一种改进的提示策略,用于提高LLM在复杂推理任务(如算术推理、常识推理和符号推理)上的性能。与ICL中简单地使用输入-输出对构造提示不同,CoT将可以导致最终输出的中间推理步骤纳入提示中。接下来,我们将详细讨论如何在ICL中使用CoT以及CoT提示何时以及为何有效。
6.2.1 CoT下的上下文学习
通常,CoT可以在两种主要设置下与ICL一起使用,即少样本和零样本设置,如下所介绍。
少样本CoT
少样本CoT是ICL的特殊情况,通过将每个示范⟨输入,输出⟩增加为⟨输入,CoT,输出⟩,加入CoT推理步骤。为了应用这种策略,我们接下来讨论两个关键问题,即如何设计适当的CoT提示以及如何利用生成的CoT推导最终答案。
- CoT提示设计:设计适当的CoT提示对于有效引发LLM复杂推理能力至关重要。直接方法表明,使用多样的CoT(即每个问题的多个推理路径)可以有效增强性能。另一个直观的想法是,具有更复杂推理路径的提示更有可能引发LLM的推理能力,从而在生成正确答案方面具有更高的准确性。然而,这两种方法都依赖于带注释的CoT数据集,限制了它们在实践中的使用。为了克服这个限制,Auto-CoT提出利用Zero-shot-CoT(在下面的“零样本CoT”部分详细介绍)通过特殊提示LLM生成CoT推理路径,从而消除了手动努力。为了提高性能,Auto-CoT进一步将训练集中的问题分成不同的簇,并选择与每个簇的中心最接近的问题,这被认为能够很好地代表训练集中的问题。虽然少样本CoT可以被看作是ICL中一种特殊的提示情况,但相比于ICL中的标准提示,调整示范的顺序对性能的影响似乎相对较小:调整示范只会导致大多数任务的性能变化小于2%。
- 增强的CoT策略:除了丰富上下文信息外,CoT提示还提供了在给定问题情况下推断答案的选项。现有的研究主要集中在生成多个推理路径,并尝试在派生的答案之间找到共识。例如,自一致性被提出作为在生成CoT和最终答案时的新解码策略。它首先生成几个推理路径,然后通过对所有答案进行集成(例如,在这些路径之间通过投票选择最一致的答案)来选择最一致的答案。自一致性通过很大程度上提升CoT推理的性能,甚至可以改善一些通常比标准提示更差的任务(例如,闭书问题回答和自然语言推理)。上述方法可以轻松集成到CoT提示中,以提高性能,而无需额外的训练。相反,其他研究则训练评分模型来衡量生成的推理路径的可靠性,或者持续训练LLM在自己生成的推理路径上,以提高性能。
零样本CoT
与少样本CoT不同,零样本CoT在提示中不包含人工注释的任务示范。相反,它直接生成推理步骤,然后使用生成的CoT推导答案。零样本CoT首次提出出,其中LLM首先通过“让我们一步一步思考”进行提示生成推理步骤,然后通过“因此,答案是”进行提示生成最终答案。他们发现,当模型规模超过一定大小时,这种策略显著提高性能,但在小规模模型上并不有效,显示出显著的能力出现模式。为了在更多任务上解锁CoT能力,Flan-T5和Flan-PaLM进一步对CoT注释和在未见任务上的零样本性能进行了指导调整,并取得了改进。
6.2.2 CoT进一步讨论
在本部分中,我们对与CoT相关的两个基本问题进行讨论,即“CoT何时适用于LLM”和“为什么LLM可以进行CoT推理”。
CoT何时适用于LLM?
由于CoT是一种新兴的能力,它只对足够大的模型产生积极影响(例如,通常包含10B或更多参数的模型),而对小型模型没有影响。此外,由于CoT通过中间推理步骤增强了标准提示,它主要有效地改善需要逐步推理的任务,如算术推理、常识推理和符号推理。然而,对于不依赖于复杂推理的其他任务,它可能比标准提示表现更差,例如来自GLUE的MNLI-m/mm、SST-2和QQP。有趣的是,CoT提示带来的性能提升似乎只有在标准提示的结果较差时才显著。
为什么LLM可以进行CoT推理?
作为第二个问题,我们从以下两个方面讨论CoT的基本机制。
- CoT能力的来源:关于CoT能力的来源,广泛的假设是它可以归因于在代码上的训练,因为在代码上训练的模型表现出强大的推理能力。直观地说,代码数据具有算法逻辑和编程流程的良好组织,这可能对提高LLM的推理性能有用。然而,这个假设仍然缺乏公开报道的消融实验证据(有代码训练和无代码训练)。此外,指令调整似乎不是获得CoT能力的关键原因,因为实证研究表明,在非CoT数据上进行指令调整并不能提高在CoT基准测试上的性能。
- 提示组件的影响:CoT提示和标准提示之间的主要区别在于在最终答案之前插入推理路径。因此,一些研究人员研究了推理路径中不同组件的影响。具体而言,最近的研究确定了CoT提示中的三个关键组件,即符号(例如算术推理中的数值数量)、模式(例如算术推理中的方程)和文本(即不是符号或模式的其余标记)。研究表明,后两个部分(即模式和文本)对模型性能至关重要,删除其中任何一个都会导致显著的性能下降。然而,符号和模式的正确性似乎并不重要。此外,文本和模式之间存在共生关系:文本帮助LLM生成有用的模式,而模式帮助LLM理解任务并生成有助于解决任务的文本。
总之,CoT提示提供了一种通用且灵活的方法来调动LLM的推理能力。还有一些初步的尝试将这种技术扩展到解决多模态任务和多语言任务。除了直接利用LLM进行ICL和CoT之外,一些最近的研究探索了如何使LLM专门针对特定任务的能力,这被称为模型专业化。例如,研究人员通过在LLM生成的CoT推理路径上对小规模Flan-T5进行微调,使数学推理的能力得到专门化。模型专业化还可以应用于解决各种任务,如问题回答、代码合成和信息检索。
7. 性能评估
为了检验LLMs的有效性和优越性,人们已经利用了大量的任务和基准来进行实证评估和分析。首先,我们介绍LLMs的三种基本评估任务,即语言生成、知识利用和复杂推理;然后,我们介绍几个具有更复杂设置或目标的LLMs的高级任务;最后,我们讨论现有的基准和实证分析。
7.1 基本评估任务
在本部分,我们主要关注LLMs的三种评估任务,即语言生成、知识利用和复杂推理。需要注意的是,我们并不打算对所有相关任务进行全面覆盖,而是只关注广泛讨论或研究的LLMs任务。接下来,我们详细介绍这些任务。
7.1.1 语言生成
根据任务定义,现有的语言生成任务可以大致分为语言建模、条件文本生成和代码合成任务。需要注意的是,代码合成不是典型的自然语言处理任务,但我们包括它进行讨论,因为许多LLMs(在代码数据上训练的)可以通过类似自然语言文本的生成方法直接解决它。
语言建模
作为LLMs的最基本能力,语言建模旨在基于前面的标记预测下一个标记,主要关注基本语言理解和生成的能力。为了评估这种能力,现有研究常用的典型语言建模数据集包括Penn Treebank 、WikiText-103和Pile,其中困惑度(perplexity)是常用的评估模型在零样本设置下的性能的指标。实证研究表明,LLMs在这些评估数据集上的性能远远超过先前的最先进方法。为了更好地测试文本中长距离依赖关系的建模能力,引入了LAMBADA数据集,在这个数据集中,LLMs需要根据上下文段落预测句子的最后一个词。然后,使用预测的最后一个词的准确性和困惑度来评估LLMs。正如现有研究所示,语言建模任务的性能通常遵循缩放规律,即扩大语言模型会提高准确性并降低困惑度。
条件文本生成
作为语言生成的一个重要领域,条件文本生成旨在根据给定的条件生成满足特定任务需求的文本,通常包括机器翻译、文本摘要和问题回答。为了衡量生成文本的质量,通常使用自动评估指标(如准确性、BLEU和ROUGE)和人工评分来评估性能。由于强大的语言生成能力,LLMs在现有数据集和基准上取得了显著的性能,甚至超过了人类表现(在测试数据集上)。例如,只给出32个示例作为输入,使用上下文学习的GPT-3可以在SuperGLUE的平均得分上胜过完整数据微调的BERT-Large;在MMLU上,5个示例的Chinchilla几乎使人类评分者的平均准确率翻倍,而在5个示例的设置下,GPT-4进一步实现了最先进的性能,相比之前最好的模型,平均准确率提高了10%以上。因此,这引发了人们对现有条件文本生成任务基准是否能够恰当评估和反映LLMs能力的严重关注。考虑到这个问题,研究人员试图通过收集当前无法解决的任务(即LLMs无法表现良好的任务)或创建更具挑战性的任务(例如超长文本生成)来创建新的评估基准(例如BIG-bench Hard)。此外,最近的研究还发现,自动评估指标可能低估了LLMs的生成质量。在OpenDialKG中,ChatGPT在BLEU和ROUGE-L指标上表现不如经过微调的GPT-2,但在人工判断中更受欢迎。因此,需要更多努力来开发与人类判断更加一致的新指标。
代码合成
除了生成高质量的自然语言文本,现有的LLMs还展示了生成正式语言,特别是满足特定条件的计算机程序(即代码)的强大能力,称为代码合成。与自然语言生成不同,由于生成的代码可以直接通过相应的编译器或解释器进行执行检查,现有工作主要通过计算针对测试用例的通过率来评估LLMs生成的代码的质量,即pass@k。最近,提出了几个侧重于功能正确性的代码基准,用于评估LLMs的代码合成能力,例如APPS、HumanEval和MBPP。通常,它们包含多样的编程问题,其中包括文本规范和用于正确性检查的测试用例。为了提高这种能力,关键是对LLMs进行代码数据的微调(或预训练),这可以有效地使LLMs适应代码合成任务。此外,现有研究还提出了一些生成代码的新策略,例如采样多个候选解决方案 和基于计划的解码,这可以被视为程序员进行错误修复和代码规划过程的模仿。令人印象深刻的是,LLMs最近在编程竞赛平台Codeforces上获得了与用户排名前28%相当的排名。此外,GitHub Copilot已发布,用于辅助编程IDE(例如Visual Studio和JetBrains IDEs),它可以支持包括Python、JavaScript和Java在内的多种语言。ACM通信杂志上的一篇名为“程序的终结”的观点文章讨论了AI编程对计算机科学领域的影响,强调了LLMs作为新的计算原子单元的高度适应性。
主要问题
虽然LLMs在生成类似人类文本方面取得了辉煌的表现,但它们容易受到语言生成方面的两个主要问题的困扰,如下所述。
- 可控生成:对于LLMs来说,生成具有特定条件的文本的主流方式是通过自然语言指令或提示来实现的。尽管这种机制很简单,但在对生成的输出施加细粒度或结构性约束方面存在着重大挑战。现有研究表明,当在文本结构上施加复杂约束时,LLMs在局部规划(例如相邻句子之间的交互)方面表现良好,但在全局规划(即长距离相关性)方面可能遇到困难。例如,要生成包含多个段落的复杂长文本,要直接确保特定的文本结构(例如概念的顺序和逻辑流程),考虑到整个文本是仍然困难的。对于需要遵循正式规则或语法的生成任务(例如代码合成),情况将更具挑战性。为了解决这个问题,一个潜在的解决方案是将单次生成扩展为LLMs的迭代提示。这模拟了人类的写作过程,将语言生成分解为计划、起草、重写和编辑等多个步骤。一些研究已经证明,迭代提示可以引出相关知识,从而在子任务中获得更好的性能。从本质上讲,链式思维提示已经利用了将复杂任务分解为多步推理链的思想。此外,生成的文本的安全控制对于实际部署也很重要。已经显示LLMs可能生成包含敏感信息或冒犯表达的文本。虽然RLHF算法在一定程度上可以缓解这个问题,但它仍然依赖于大量人工标注的数据来微调LLMs,没有遵循客观优化目标。因此,有必要探索有效的方法来克服这些限制,并对LLMs的输出实现更安全的控制。
- 专门化生成:尽管LLMs已经学习了生成连贯文本的一般语言模式,但在处理专门领域或任务时,它们的生成能力可能受到限制。例如,一个在通用网络文章上进行训练的语言模型在生成涉及许多医学术语和方法的医学报告时可能面临挑战。直观地看,领域知识对于模型的专门化至关重要。然而,将这样的专业知识注入到LLMs中并不容易。
7.1.2 知识利用
LLMs具备广泛的知识利用能力,可以应用其预训练的大规模混合来源数据中所获得的丰富知识。知识利用的评估方法包括使用特定任务的数据集来评估LLMs在各种任务中的表现。此外,还有通用的评估方法,如上下文理解和追问技术。研究人员还使用对抗性样本来测试LLMs的鲁棒性和对抗性。
7.1.3 复杂推理
LLMs在复杂推理方面展现出强大的能力。它们可以执行诸如逻辑推理、数学问题解决和常识推理等任务。评估复杂推理能力可以使用具有挑战性的数据集和任务,以及针对特定领域的数据集。
7.2 先进能力的评估
LLMs还展示了一些先进的能力,需要特殊的评估方法。这些能力包括与人类对齐、与外部环境的交互和工具操作。在与人类对齐方面,评估方法包括人工评估和自动评估,使用数据集和专家的反馈来提高LLMs的行为。与外部环境的交互可以通过虚拟环境和真实世界实验来评估。工具操作的评估可以通过复杂的推理任务来进行,评估LLMs在利用外部工具解决问题时的表现。
7.3 公共基准和实证分析
为了评估LLMs的性能,已经提出了多个公共基准和实证分析方法。其中包括MMLU、BIG-bench和HELM等广泛使用的基准。这些基准涵盖了多个领域和任务,可以用于评估LLMs的各种能力。此外,还有一些特定能力的基准,如TyDiQA和MGSM。
此外,还有许多综合分析研究,探讨LLMs的能力和限制。这些研究涵盖了LLMs的通用能力和专业能力的评估,以及LLMs在人类特征、公平性和准确性等方面的研究。