笔记整理:刘康为、方润楠,浙江大学硕士,研究方向为自然语言处理
链接:https://arxiv.org/abs/2303.18223
一、介绍
在当前机遇和挑战的背景下,对大语言模型的研究和开发需要更多的关注。为了让读者对大语言模型有一个基本的了解,本调查从四个主要方面对大语言模型进行了文献回顾。
首先是预训练方面,调查详细探讨了如何进行有效的预训练,以培养出具备强大能力的大型语言模型。其次是适应性调优,这一方面考虑了如何从有效性和安全性的角度对预训练的大语言模型进行优化和调整。第三个方面是利用,研究探讨了如何利用大语言模型解决各种下游任务。最后,是能力评估,调查介绍了如何评估大语言模型的能力以及现有的研究结果。
二、回顾
2.1 背景
大型语言模型(LLMs)通常指的是包含数千亿(或更多)参数的语言模型,这些模型是在海量文本数据上训练出来的,如GPT-3、PaLM、Galactica和LLaMA。
2.2 涌现能力
大语言模型的最显著特征之一是其具备了以往预训练语言模型所不具备的涌现能力。代表性的涌现能力包括上下文学习、指令遵循、逐步推理。这些代表性的涌现能力彰显了大语言模型的独特优势。
2.3 关键技术
大语言模型之所以能够取得成功,有五个主要原因。首先是模型、数据和计算资源的扩展,其次是高效稳定的训练手段,第三是语言模型能力诱导,第四是对齐训练,将大语言模型与人类偏好对齐,最后是工具使用。
三、大语言模型的资源
3.1 公开检查点和API
考虑到参数规模是使用大型语言模型(LLMs)时需要重要考虑的关键因素,作者将这些公共模型划分为两个规模等级,即百亿个参数或千亿个参数。这种划分有助于用户根据其资源预算确定适合自己的资源配置。此外,在推理阶段,可以直接使用公共API来执行任务,而无需在本地运行模型。
作者简要概述了大型语言模型的公开可用检查点和API。根据模型的预训练语料、任务类型或评估指标,推荐不同能力的模型。此外,作者还统计了近年来大语言模型的各项数据,包括容量评估、预训练数据规模和硬件资源成本等,详见表1。
表1
3.2 常用语料库
作者简要总结几个广泛使用的用于训练大语言模型的语料库。根据其内容类型,我们将这些语料库分为六组: 书籍、CommonCrawl、Reddit链接、维基百科、代码,以及其他。从图2中我们可以看出,大语言模型不再依赖单一的语料库,而是利用多个数据源进行预训练。因此,现有的研究通常将几个现成的数据集(如C4、OpenWebText和Pile)混合在一起,然后进行进一步的处理以获得预训练语料,如下图所示。
3.3 代码库
作者搜集了一些用于训练的代码库,包括常用模型库和并行算法库。
四、预训练
4.1 数据
作者介绍了数据的来源以及处理方法,通用数据可以提高大语言模型的语言建模和概括能力,专用的数据集有助于提高大语言模型在下游任务上的能力。数据处理流程如下图所示:
4.2 模型
本文解答了为什么大语言模型往往采用 Decoder-Only 架构的问题。本文从 Transformer 做语言模型的主干架构、具体模块和预训练任务三方面向读者们介绍如今大模型的常用方案,并在最后结合文献讨论大家选用 Decoder-Only 架构的原因。
4.3 训练
本章对 3D 并行、ZeRO 等被集成于 DeepSpeed 等代码库的相关训练技术进行归纳整理,并在最后对如何稳定、高效地预训练一个大语言模型给出建议。
五、适应性调整
5.1 指令调整
格式化实例构造:实例是指令微调中的重要因素,主要由任务描述,样例,输入和输出构成。如何构造格式化的实例对指令微调十分重要。首先可以从已经存在的数据集中来构造实例,通过对数据集进行人为的任务功能描述,来构造实体。第二种方法是格式化人们的具体需求。实例构造中需要注意实例的覆盖范围以及实例的数量和质量。具体实例如下图所示。
指令微调策略要平衡数据集的分布,尽可能涵盖到更多的领域,可以在预训练环节中将实例作为语料一起训练。
指令微调有助于大模型在特定领域的表现的进步,并且研究发现,指令微调获得的能力具有迁移性(英文指令微调后面对部分中文任务的表现也有进步)
5.2 对齐调整
对齐调整的目标是使大模型的输出更符合人类规范,变得更有,更确真,更少的攻击性语言。
对齐调整主要通过RLHF(Reinforcement Learning from Human Feedback)实现,通过收集人们对模型输出的内容的评价,来训练一个Reward model,之后利用这个Reward model以及相关的强化学习算法来对大模型进行调整来达到对齐的目的。
六、模型使用
6.1 上下文学习
上下文提示方式是通过将之前的输入输出作为样例参考,来推得目前的输出。公式如下所示:
样例参考的设计方法主要有启发式和基于大模型的方法。样例设计的格式为输入输出对,任务描述以及思维链构成。需要注意的是,样例的顺序对结果也有影响,具有偏向末尾的先向,因此在调整样例次序的时候尽量将与新输入相似的实例安排在末尾。
6.2 思维链提示
思维链设计是一种有效的思考方式,它注重多路线的方法来解决复杂的问题。这种方法可以通过不同的思考方式来探索问题的多个方面,从而更全面地理解问题并找到最佳解决方案。同时,思维链设计也能够通过自监督的方式来判断是否出现自相矛盾的情况并做出调整,从而保证思考的准确性和连贯性。
对于大模型而言,思维链设计在何时产生了效用大模型通常需要在处理复杂任务时进行大量的计算和推理。在这个过程中,思维链设计可以帮助大模型更好地理解问题、生成更准确的答案或预测,并且可以提高其效率和性能。因此,思维链设计在大模型应用中具有很高的实用价值。
为什么大模型能够涌现出思维链的能力?这主要是因为大模型具备强大的自学习和自适应能力。它们可以通过大量的数据和模型训练来自我优化,逐渐形成对于复杂问题的理解和处理能力。同时,大模型也可以通过自我监督和反馈机制来修正自身的错误和偏差,从而不断提高其性能和准确性。这些特点使得大模型具备了涌现出思维链的能力,能够更好地应对复杂任务和挑战。
七、能力评估
7.1 基本能力评估任务
语言建模和条件性文本生成是语言生成中的两个主要任务。语言建模是LLMs最基本的能力,它的目的是预测下一个符号。为了评估模型的性能,常用的数据集包括Penn Treebank、WikiText-103、Pile和LAMBADA等。困惑度指标通常被用来评估模型的性能。条件性文本生成则着重于根据给定的条件生成满足特定任务需求的文本,例如机器翻译、文本总结和问题回答等。为了衡量生成文本的质量,统一的指标和人类的评分通常被用来评估大模型的性能。LLM在这些任务上已经取得了显著的性能,甚至超过了人类的表现。然而,现有的评估基准可能无法适当地评估和反映LLMs的能力,因此需要更多的努力来开发新的指标和评估基准来更好地评估LLMs的性能。
除了以上两种文本生成任务之外,代码生成能力和复杂推理能力也是属于基本能力的评估任务。代码生成能力也是一个对大模型能力的评估方向,可以通过对LLM生成的代码的任务完成度,通过率来进行能力评估,如将Codeforces和ACM中的一些题目作为测试,通过率为评估分数。而复杂推理能力评估包括知识推理的正确性和质量,符号推理的能力评估,以及如数学计算问题的解答和证明题的推理相关的数学推理能力。
7.2 高级能力评估任务
大模型的高级能力评估通常包括人类价值对齐,外部交互能力,工具操作。
人类价值对齐有以下方面:有效性、正确性、安全性、无害性。其中,有效性是指模型是否能够完成预期的任务,正确性是指模型是否能够正确地完成任务,安全性是指模型是否能够保护用户的隐私和数据安全,无害性是指模型是否会生成一些具有攻击性的语言。在外部交互方面,代码提示能力是人工智能模型的一种应用场景,可以帮助程序员更快地编写代码。在工具操作方面,搜索引擎和编译器都是程序员常用的工具,可以帮助程序员更快地查找信息和编写代码,大模型可以结合搜索引擎和编译器进行应用,也是对其能力评估的一种方式。
八、总结与展望
尽管大模型在语言生成任务上的表现令人惊奇,但是它们还需要更多的可解释性,这可能需要跨学科的知识来实现。在模型架构方面,我们需要更加有效的Transformer结构,并寻找方法来解决灾难性遗忘和微调对模型综合能力的下降问题。此外,在模型训练方面,我们需要更加系统化和经济的方法,并提供更多的开源检查点以便更多的研究者能够复现和扩展现有工作。同时,我们也需要解决大模型在复杂逻辑推理和安全性方面的问题。为此,我们可能需要跨学科合作来探求模型的可解释性,并且未来朝着开发更加高效、可解释和安全的大型语言模型的方向努力。
OpenKG
OpenKG(中文开放知识图谱)旨在推动以中文为核心的知识图谱数据的开放、互联及众包,并促进知识图谱算法、工具及平台的开源开放。
点击阅读原文,进入 OpenKG 网站。