分类 二、深度学习 下的文章
此内容被密码保护
A Survey of Large Language Models
摘要
由于研究人员发现模型缩放可以提高性能,他们通过将模型大小增加到更大的大小来进一步研究缩放效应。有趣的是,当参数尺度超过一定水平时,这些放大的语言模型不仅实现了显著的性能改进,而且还显示出一些小规模语言模型(如BERT)中不存在的特殊能力(如上下文学习)。为了区分参数尺度的差异,研究界为显著大小的PLM(例如,包含数百亿或数千亿个参数)创造了“大型语言模型”(LLM)一词。
在本次调查中,我们通过介绍背景、关键发现和主流技术来回顾LLM的最新进展。特别是,我们关注LLM的四个主要方面,即预训练、适应调整、利用和能力评估(pre-training, adaptation tuning, utilization, and capacity evaluation. )
1、INTRODUCTION
1.Technically, language modeling (LM)
2.Neural language models (NLM). word2vec,rnn,cnn
3.Pre-trained language models (PLM). ELMo,LSTM
4. Large language models (LLM).
研究人员发现,扩展PLM(例如,扩展模型大小或数据大小)通常会提高下游任务的模型能力。许多研究已经通过训练越来越大的PLM(例如,175B参数GPT-3和540B参数PaLM)来探索性能极限。尽管缩放主要在模型大小(具有类似的架构和预训练任务)下进行,但这些大型PLM表现出与较小PLM不同的行为(例如,330M参数BERT和1.5B参数GPT-2),并在解决一系列复杂任务时表现出令人惊讶的能力(称为涌现能力[31],called emergent abilities)。
强调LLM和PLM之间的三个主要区别:
(1)首先,LLM显示出一些令人惊讶的涌现能力,这在以前的较小PLM中可能没有观察到。
(2)其次,LLM彻底改变了人类开发和使用人工智能算法的方式。与小型PLM不同,访问LLM的主要方法是通过提示接口(例如GPT-4API)。人类必须了解LLM是如何工作的,并以LLM可以遵循的方式格式化他们的任务。
(3)第三,LLM的发展不再明确区分研究和工程。LLM的训练需要在大规模数据处理和分布式并行训练方面有丰富的实践经验。为了开发有能力的LLM,研究人员必须解决复杂的工程问题,与工程师合作或成为工程师。
挑战
但LLM的基本原则仍然没有得到很好的探索。
(1)首先,为什么新兴能力出现在LLM中,而不是较小的PLM中,这仍然是个谜。
(2)其次,很难为研究界训练有能力的LLM。由于模型预训练的巨大成本,很难对研究界进行重复、消融的研究。
(3)第三,使LLM与人类价值观或偏好保持一致是非常具有挑战性的。尽管有这种能力,LLM也可能产生有毒、虚构或有害的内容。它需要有效和高效的控制方法来消除LLM使用的潜在风险[46]。
2.OVERVIEW(概述)
在本节中,我们将介绍LLM的背景以及关键术语、能力和技术。
Background
通常,大型语言模型(LLM)指的是包含数千亿(或更多)参数的语言模型5
,它们是在海量文本数据[32]上训练的,如GPT-3[55]、PaLM[56]、Galactica[35]和LLaMA[57]。具体而言,LLM建立在Transformer架构[22]的基础上,其中多头注意力层堆叠在非常深入的神经网络中。
Emergent Abilities of LLMs
在文献[31]中,LLM的涌现能力被正式定义为“不存在于小模型中但出现于大模型中的能力”,这是LLM与以前的PLM区别开来的最显著特征之一。当涌现能力出现时,它还引入了一个显著的特征:当规模达到一定水平时,表现显著高于随机。
在这里,我们简要介绍LLM的三种具有代表性的涌现能力,描述如下。
• In-context learning:
GPT-3[55]正式引入了上下文学习能力:假设语言模型已经提供了一个自然语言指令和/或几个任务演示,它可以通过完成输入文本的单词序列来生成测试实例的预期输出,而不需要额外的训练或梯度更新。
• Instruction following.
通过对通过自然语言描述(即指令)格式化的多任务数据集的混合进行微调,LLM在同样以指令形式描述的看不见的任务上表现良好[28,61,62]。有了这种能力,指令调优使LLM能够通过理解任务指令来执行新任务,而无需使用明确的示例,这可以在很大程度上提高泛化能力。
• Step-by-step reasoning.
对于小型语言模型,通常很难解决涉及多个推理步骤的复杂任务,例如数学单词问题。而通过思维链推理策略[33],LLM可以通过利用提示机制来解决这些任务,该机制涉及推导最终答案的中间推理步骤。据推测,这种能力可能是通过对代码进行训练获得的[33,47]。
Key Techniques for LLMs.
• Scaling
• Training
需要分布式训练算法来学习LLM的网络参数,其中经常联合使用各种并行策略。为了支持分布式训练,已经发布了几个优化框架来促进并行算法的实现和部署,如DeepSpeed[64]和Megatron LM[65]。
• Ability eliciting(启发)
思维链提示已被证明通过包括中间推理步骤来解决复杂的推理任务是有用的。此外,我们可以通过自然语言的任务描述进一步对LLM进行指令调整,以提高LLM在看不见的任务上的可推广性。
• Alignment tuning
由于LLM是为了捕捉预训练语料库的数据特征而训练的(包括高质量和低质量的数据),因此它们很可能会对人类产生有毒、有偏见甚至有害的内容。有必要使LLM与人类价值观保持一致,例如有益、诚实和无害。为此,InstructGPT[61]设计了一种有效的调整方法,使LLM能够遵循预期的指令,该方法利用了人类反馈的强化学习技术[61,67]。
它通过精心设计的标签策略将人融入训练循环。ChatGPT确实是在与InstructGPT类似的技术上开发的,它在产生高质量、无害的回答方面表现出强大的协调能力,例如拒绝回答侮辱性问题。
• Tools manipulation(操作)
本质上,LLM被训练为大规模纯文本语料库上的文本生成器,因此在文本中没有最好地形成或表达的任务(例如,数值计算)上执行得不太好。此外,他们的能力也局限于训练前的数据,最近提出的一种技术是使用外部工具来弥补LLM的不足[68,69]。
例如,LLM可以利用计算器进行精确计算[69],并使用搜索引擎检索未知信息[70]。最近,ChatGPT启用了使用外部插件(现有或新创建的应用程序)的机制,这与LLM的“眼睛和耳朵”类似。
3. RESOURCES OF LLMS
在本节中,我们将主要总结开源模型检查点或API、可用的语料库和用于LLM的有用库。
3.1Publicly Available Model Checkpoints or APIs
• Models with Tens of Billions of Parameters
• Models with Hundreds of Billions of Parameters
• Public API of LLMs.
3.2 Commonly Used Corpora
在本节中,我们将简要总结几种广泛用于培训LLM的语料库。根据它们的内容类型,我们将这些语料库分为六组:图书、CommonCrawl、Reddit链接、维基百科、代码和其他。
3.3 Library Resource
在这一部分中,我们简要介绍了一系列可用于开发LLM的库。
Transformers、DeepSpeed、Colossal-AI
chatgpt前世今生
向量,矩阵,张量的定义分别是什么
在深度学习中,向量、矩阵和张量是数学概念,它们用于表示和处理数据。下面是它们的定义:
一、向量(Vector):
向量是一个一维数组,可以表示为一个有序的数值列表,通常用于表示单个数据点的特征。在数学上,向量可以是列向量(垂直于行向量)或行向量(水平于列向量)。在深度学习中,向量通常用来表示单个样本的特征。
- 向量是一组有序排列的数,可以是行向量或列向量。
- 行向量是一个水平排列的数值集合,通常表示为 $ \mathbf{v} = [v_1, v_2, \ldots, v_n]$
- 列向量是一个垂直排列的数值集合,通常表示为
在深度学习中,向量通常用来表示一组特征或者是神经网络中的权重
二、矩阵(Matrix):
矩阵是一个二维数组,由行和列组成。矩阵可以被看作是向量的集合,其中每个向量可以是列向量或行向量。在深度学习中,矩阵常用于表示多个数据点的特征集合,例如,一个矩阵的每一行可以代表一个样本,每一列代表一个特征。
- 矩阵是一个由数字按照矩形排列成的数组,有行和列的概念。
- 一个 m times nm×n 的矩阵可以表示为$ A = [a_{ij}] $,其中 $a_{ij} $ 表示位于第 ii 行第 jj 列的元素。
- 在深度学习中,矩阵常被用来表示权重参数、输入数据以及中间计算结果。
三、张量(Tensor):
张量是向量和矩阵的推广。一个张量可以有任意数量的维度,而不仅仅是一维或二维。张量的阶数(order)或秩(rank)是指它的维度数。例如:
0阶张量是一个标量(scalar),是一个单一的数值。
1阶张量是一个向量。
2阶张量是一个矩阵。
3阶张量可以被看作是一个立方体,有三层维度。
4阶张量可以被看作是一个四维数组,等等。
在深度学习中,张量用于表示复杂的数据结构,如多维数组,这些数据结构可以包含图像、视频帧、序列数据等。张量运算(如加法、乘法等)是深度学习算法中的基础,它们允许我们执行复杂的数学操作来处理数据。