自 2022 年 11 月 ChatGPT 发布以来,大型语言模型 (LLM) 因其在广泛自然语言任务上表现出的强大性能而受到广泛关注。正如缩放定律 [1, 2] 所预测的那样,LLM 通过在海量文本数据上训练数十亿个参数,获得了通用语言理解和生成能力。LLM 研究领域虽然新兴,但正以多种方式迅速发展。
本文回顾了几个最著名的 LLM,包括三个流行的 LLM 家族 (GPT、LLaMA、PaLM),并讨论了它们的特征、贡献和局限性。我们还概述了构建和增强 LLM 的技术。然后,我们调查了用于 LLM 训练、微调和评估的流行数据集,回顾了广泛使用的 LLM 评估指标,并比较了几个流行的 LLM 在一组代表性基准上的性能。最后,我们通过讨论未解决的挑战和未来研究方向来结束本文。
语言建模是一个历史悠久的研究课题,可以追溯到 1950 年代香农将信息论应用于人类语言,他当时测量了简单 n-gram 语言模型预测或压缩自然语言文本的效率 [3]。从那时起,统计语言建模成为许多自然语言理解和生成任务的基础,涉及语音识别、机器翻译、信息检索等领域 [4, 5, 6]。
最近,基于 Transformer 的大型语言模型 (LLM) 取得了重大进展,这些模型在网络规模文本语料库上进行预训练,显著扩展了语言模型的能力。例如,OpenAI 的 ChatGPT 和 GPT-4 不仅可用于自然语言处理,还可以作为通用任务解决器,例如为微软的 Co-Pilot 系统提供支持。在需要时,它们可以遵循人类针对复杂新任务的指令,进行多步推理。因此,LLM 正在成为开发通用 AI 代理或人工智能 (AGI) 的基本构建块。
LLM 领域发展迅速,新的发现、模型和技术以几周或几个月为单位发布 [7, 8, 9, 10, 11],这使得 AI 研究人员和从业人员很难找到为其任务构建 LLM 驱动 AI 系统的最佳方法。本文及时概述了 LLM 的最新进展。我们希望这份综述能成为学生、研究人员和开发人员的宝贵资源。
LLM 是大型预训练的基于神经网络的统计语言模型。LLM 的近期成功是语言模型研究和开发的积累,可以归类为四个波段,它们具有不同的起点和速度:统计语言模型、神经语言模型、预训练语言模型和 LLM。
统计语言模型
统计语言模型 (SLM) 将文本视为单词序列,并将文本的概率估计为其单词概率的乘积。SLM 的主要形式是马尔可夫链模型,称为 n-gram 模型,它计算一个单词的概率,条件是其前面紧接的 n-1 个单词。由于单词概率是使用从文本语料库中收集的单词和 n-gram 计数估计的,因此模型需要通过平滑来处理数据稀疏性(即,为未见单词或 n-gram 分配零概率),其中部分模型概率保留给未见的 n-gram [12]。N-gram 模型广泛用于许多 NLP 系统中。然而,这些模型由于数据稀疏性而无法完全捕捉自然语言的多样性和可变性,因此是不完整的。
神经语言模型
早期的神经语言模型 (NLM) [13, 14, 15, 16] 通过将单词映射到低维连续向量(嵌入向量)并根据其前序单词的嵌入向量的聚合使用神经网络预测下一个单词来处理数据稀疏性。NLM 学习的嵌入向量定义了一个隐藏空间,其中向量的语义相似性可以很容易地计算为它们的距离。这打开了一扇门,可以计算任何两个输入的语义相似性,无论它们的形式(例如,网络搜索中的查询与文档 [17, 18],机器翻译中不同语言的句子 [19, 20])或模态(例如,图像和文本中的图像字幕生成 [21, 22])。早期 NLM 是特定于任务的模型,因为它们是在特定于任务的数据上训练的,并且它们学习的隐藏空间也是特定于任务的。
预训练语言模型
与早期 NLM 不同,预训练语言模型 (PLM) 与任务无关。这种通用性也扩展到学习的隐藏嵌入空间。PLM 的训练和推理遵循预训练和微调范式,其中具有循环神经网络 [23] 或 transformer [24, 25, 26] 的语言模型在网络规模的未标记文本语料库上针对一般任务(例如单词预测)进行预训练,然后使用少量(标记的)特定于任务的数据进行微调。最近关于 PLM 的综述包括 [8, 27, 28]。
大型语言模型
大型语言模型 (LLM) 主要指包含数十亿到数百亿参数的基于 transformer 的神经语言模型,这些模型在大量文本数据上进行预训练,例如 PaLM [31]、LLaMA [32] 和 GPT-4 [33],如表 III 所总结。与 PLM 相比,LLM 不仅模型规模更大,而且还表现出更强的语言理解和生成能力,更重要的是,LLM 具有规模较小的语言模型所不具备的涌现能力。如图 1 所示,
流行的LLM
这张图显示了大型语言模型的不同组成部分
1. 输入层: 该层接收输入文本,例如一段句子或一段代码。
2. 编码器: 该层使用 Transformer 架构对输入文本进行编码,并将其转换为一系列隐藏向量。
3. 注意力机制: 该机制允许模型在生成输出时关注输入文本的不同部分。
4. 解码器: 该层使用 Transformer 架构将隐藏向量解码为输出文本,例如生成下一个单词或预测下一个代码片段。
5. 输出层: 该层将解码器生成的输出文本转换为最终输出,例如一个句子或一段代码。
6. 预训练: 大型语言模型通常使用大量的文本和代码数据进行预训练,以学习语言的统计规律和语义信息。
7. 微调: 为了使模型能够适应特定的任务,可以使用少量特定于任务的数据对模型进行微调。
8. 任务: 大型语言模型可以用于各种自然语言处理任务,例如机器翻译、文本生成、问答、代码生成等。
暂无评论内容