注意,本文不涉及太多复杂的公式与数学推导,初学者或者像笔者一样数学不好的读者可以放心阅读!
Q:这些年,我们在做什么?
A:自从图灵测试在1950年代提出以来,人类一直在探索如何让机器掌握语言智能。为了理解和掌握语言,开发能力强的人工智能算法面临着重大挑战。语言模型LM在过去的二十年中被广泛研究,用于语言理解和生成,从统计语言模型发展到神经语言模型。
Q:你说的这些都是比较老的事情了,现在在做什么?
A:确实,那近几年的话,研究人员提出了预训练语言模型PLM,通过对大规模语料库进行Transformer模型的预训练,展现了解决各种NLP任务的强大能力。并且,由于研究人员发现模型缩放可以导致模型容量的提高,他们进一步通过增加参数规模来探究缩放效应。
Q:等会儿等会儿,听不懂了,解释解释什么叫模型缩放,模型容量?
A:
补充一点有趣的,当参数规模超过一定水平时,这些扩大的语言模型不仅可以实现显著的性能提升,还表现出一些特殊的能力,比如上下文学习能力等等,这是小规模语言模型(例如BERT)所没有的,这种现象被称为涌现Emergence。
Q:这么厉害?那是不是越涌现就越好?
A:你都这么问了,显然心存疑虑,实际上,涌现现象也可能导致模型出现一些意外的错误或偏见,因此需要在模型设计和训练中加以注意和控制。
Q:那这么多参数的模型是不是应该给赋予一个新的名字?
A:没错,为了区分不同参数规模的语言模型,研究界为具有包含数十亿或数百亿参数的PLM创造了LLM这一术语,也就是大语言模型LargeLanguageModel。
Q:那就是所谓的ChatGPT了!
A:是的,但LLM不只有ChatGPT,还有很多很多...
Q:这么多?我想更多的了解LLM,你能介绍一下吗?
A:当然可以,我们今天读的这篇综述就是在介绍LLM的背景、关键发现和主流技术。
一般而言,LM的目标是建模单词序列的生成概率,以预测未来的或缺失的token的概率。
StatisticalLanguageModel是一种基于统计方法的语言模型,它通过计算给定上下文条件下各个可能的下一个词出现的概率,来对自然语言进行建模。
SLM通常使用N-gram模型来表示上下文,即假设下一个词的出现只与前面N个词有关。
SLM在NLP和信息检索等领域有着广泛的应用,但是其表现受限于数据量和特征选择,主要的应用如统计机器翻译SMT和GMM+HMM模型。
NeuralNetworkLanguageModel是一种基于神经网络的语言模型,它通过将自然语言转化为向量表示,利用神经网络建模词汇之间的关系来预测下一个词。
NLM通常使用RNN或者变种(如LSTM、GRU)来处理序列数据,并将上下文表示为隐藏状态。
Pre-trainedLanguageModel是一种在大规模数据上进行预训练的语言模型,它通过无监督的方式学习自然语言的特征表示,从而为不同的任务提供通用的特征提取器。
PLM通常使用自编码器、Transformer等模型结构,在大规模数据上进行预训练,并通过微调FT等方式适应不同的下游任务。
PLM的出现极大地促进了NLP的发展,如BERT、GPT等模型就是PLM的代表。
LargeLanguageModel是一种具有大量参数的语言模型,它通过增加模型的容量和训练数据量来提高模型的表现。
LLM通常基于PLM进行设计,通过增加模型规模、调整模型结构、加入更多的任务等方式来增加模型的复杂度和泛化能力。
LLM在NLP领域表现出了惊人的性能,在PLM的基础上,增大模型参数,使得LLM出现PLM不具有的涌现能力,同样采用预训练+微调的形式。
LM与LLM已经逐渐成为热点话题,事实上,我们通过近年来包含这两个关键词的Arxiv论文数量的变化趋势便可窥见一斑:
LLM的研发需要大量的数据处理和分布式训练经验,这与传统的研究和工程界限已经模糊。
目前,LLM对于人工智能领域产生了巨大的影响,ChatGPT和GPT-4已经引发了对于AGI的重新思考。
不过,虽然LLM已经取得了很大的进展和影响,但其底层原理仍然没有得到很好的探索。其中一个很浅显而又重要的问题是,为什么LLM会出现新的能力,而较小的PLM不会?
其次,研究人员很难训练出有能力的LLM,因为需要大量的计算资源,而训练LLM的许多重要细节(如数据收集和清洗)也没有被公开。
再者,如何使LLM符合人类价值观和偏好也是一个挑战,因为它们可能会产生有害的内容。
LLM已经演变成目前的状态,成为通用和有能力的学习器,这得益于多项重要技术。
其中,缩放、训练、能力激发、对齐调整和工具操作是导致LLM成功的关键技术。
简要解释一下:
需要指出的是,实线表示两个模型之间的演化路径存在明确的证据,虚线表示演化关系相对较弱。
LargeLanguageModelAnalysis是一个用于评估大型语言模型的工具集,它由OpenAI开发并开源,旨在帮助研究人员和开发人员评估和理解大型语言模型的行为和性能,并发现其中可能存在的问题和偏见。
LLaMA提供了一系列工具和指标,可以帮助用户对大型语言模型进行各种分析,包括模型的性能评估、模型的内部结构和行为分析、模型的偏见检测等。
LLaMA的主要功能:
下图是LLaMA研究工作的演化图,由于数量庞大,无法将所有的LLaMA变体包括在这个图中。
这些模型通常采用预训练的方式进行训练,并具有较高的性能和泛化能力。OpenAI的GPT系列模型和Google的BERT模型等都是公开可用的模型检查点。
训练大型语言模型需要大量的文本数据,因此,常用语料库是训练大型语言模型所需的重要资源之一。
常用语料库包括CommonCrawl、维基百科、新闻数据、网络文本等。这些语料库通常可以通过互联网公开获取,并且已经被清洗和标记。
这些框架和工具提供了丰富的API和函数库,可以帮助研究人员和开发人员更加高效地构建、训练和评估大型语言模型,比如:
此外,还需要一些数据处理、可视化和模型调试等工具来辅助训练和分析。这些工具和资源通常可以通过互联网免费获取。
LLM的预训练是指在大规模语料库上进行的无监督学习过程,通过学习语料库的统计规律和语言结构,让模型获得基础的语言理解和生成技能。
预训练为LLM的能力奠定了基础,使得LLM在进行特定任务的微调时能够更快、更准确地收敛,并且可以具备更好的泛化能力。
但我们需要注意的是,在预训练过程中,语料库的规模和质量对于LLM获得强大的能力至关重要。一般来说,有如下规律:
为了开发具有强大能力的LLM,需要收集大量自然语言的语料库。
下图是各种数据源在现有LLM预训练数据中的比例:
在收集大量文本数据之后,对数据进行预处理以构建预训练语料库非常重要,尤其是需要去除噪声、冗余、无关和可能有害的数据,这些因素可能会严重影响LLM的容量和性能。
典型的数据清洗流程如下:
下图是三种主流架构中注意力模式的比较。
其中,蓝色、绿色、黄色和灰色的圆角矩形分别表示前缀符号之间的注意力、前缀与目标符号之间的注意力、目标符号之间的注意力和被掩盖的注意力。
我们来解释一下这几个注意力有什么区别:
首先我们要知道,实例格式化是什么?
实例格式化是指将数据实例(如文本、图像、音频等)处理成一种特定的格式,以便它们可以被用于机器学习算法的输入。
下图是实例格式化的说明和用于构造指令格式实例的常见的三种不同方法:
调参是LLM训练过程中的一个重要环节,目的是找到最优的超参数组合,以提高模型在测试集上的性能。
那么,有几种常见的Tuning方法呢?
InstructionTuning是通过添加一些人工规则或指令来对模型进行微调,以使其更好地适应特定的任务或应用场景。
Example:在文本生成任务中,可以添加一些指令来控制生成的文本的长度、内容和风格。
AlignmentTuning是通过对齐源语言和目标语言的数据来对模型进行微调,以提高翻译或文本生成的质量。
Example:在机器翻译任务中,可以通过对齐源语言和目标语言的句子来训练模型,以提高翻译的准确性。
RLHF是使用强化学习算法来对模型进行微调,以使其更好地适应特定的任务或应用场景。
该技术通常分为三个阶段:数据预处理、基准模型训练和强化学习微调。在微调阶段,模型会通过与人类交互来学习如何生成更符合人类预期的文本。
下图是RLHF算法的工作流程:
AdapterTuning是在预训练模型中添加适配器层,以适应特定的任务或应用场景。适配器层可以在不改变预训练模型权重的情况下,对特定任务进行微调。这种技术可以提高模型的效率和泛化能力,同时减少对计算资源的需求。
PrefixTuning是通过在输入中添加一些前缀来对模型进行微调,以使其更好地适应特定的任务或应用场景。前缀可以提供一些额外的信息。
Example:任务类型、领域知识等,以帮助模型更准确地生成文本。
PromptTuning是通过设计合适的Prompt来对模型进行微调,以使其更好地适应特定的任务或应用场景。提示是一些关键词或短语,可以帮助模型理解任务的要求和期望输出的格式。
LoRA是通过将预训练模型分解成低秩矩阵来进行微调,以提高模型的效率和泛化能力。该技术可以减少预训练模型的参数数量,同时保留模型的表示能力,从而提高模型的适应性和泛化能力。
下图是2.42.52.62.7四种调参方法的对比示意图:
Utilization是在预训练或自适应调优之后进行的,一种典型的提示方法是上下文学习,它以自然语言文本的形式制定任务描述或演示。
此外,思维链提示可以通过在提示中加入一系列中间推理步骤来增强上下文学习。对于复杂任务的求解,提出了规划,首先将复杂任务分解为更小的子任务,然后生成一个行动计划来逐个解决这些子任务。
LLM大致可分为Pre-train阶段、Tuning阶段,使用Prompt阶段。
接下来,我们将简要介绍这三种Prompt技术,长话短说:
语境学习旨在通过模型自身的学习过程来改进其在特定上下文中的表现。通过对模型进行反馈和调整,可以使模型逐渐适应不同的语境和场景,从而提高其在各种任务中的性能和泛化能力。
思维链提示通过提示来引导模型生成连贯的、具有逻辑关系的文本。
该技术基于思维链的概念,即人们在思考时通常会按照一定的逻辑顺序组织思维和语言。通过在生成文本时引导模型按照特定的思维链顺序组织文本,可以使生成的文本更加连贯和合理。
下图是情境学习ICL和思维链CoT提示的对比说明。ICL用自然语言描述、几个演示和一个测试查询提示LLM,而CoT提示涉及提示中的一系列中间推理步骤:
其实就是分治,通过将任务分解为多个子任务,并为每个子任务制定计划来解决复杂任务的技术。
该技术可以帮助模型更好地理解任务的结构和要求,从而更有效地解决复杂任务。此外,该技术还可以通过对任务和子任务之间的依赖关系进行建模,来提高模型的泛化能力和鲁棒性。
Bytheway,LLM的涌现实际上也表现在这几个方面。
下图是LLM解决复杂任务的基于提示的规划公式示意图:
注意,此处与原文有出入,我们选择了一些原文中提到的细节,但也添加了一些新的内容。
PromptCreation:关键成分,设计原则,有用技巧。
我们回顾了LLM的最新进展,并介绍了理解和利用LLM的关键概念、发现和技术。
此外,我们还总结了开发LLM的可用资源,并讨论了复现LLM的重要实施指南。
接下来,我们总结了本次调查的讨论,并介绍了LLM在以下方面的挑战和未来方向: