语言大模型综述
Paper:A Survey of Large language Models
目录
Paper:A Survey of Large language Models
综述
概要
LLM关键技术
规模定律(Scaling Laws)
预训练与微调
对齐调优(Alignment Tuning)
外部工具集成
GPT系列模型的技术演进
模型检查点和API
Pre-Training
数据准备和处理
数据准备
数据预处理
数据调度
架构
Emergent Architectures
解码策略
模型训练参数优化
POST-TRAINING OF LLMS
CAPACITY AND EVALUATION 模型能力评估
Basic Ability
综述
吐槽:
本文基于文献A Survey of Large language Models总结,文献篇幅过大,很多的段落都有不少内容重复出现,在读的过程中,越读越感觉这是一篇垃圾论文,冗余内容太多,段落内容与对应小标题不符,一大段文字只有最后一句有点用,前面不是废话就是废话,我认为部分内容过于啰嗦并且没有什么意义我就省略了,仅仅总结我认为重要之部分。虽然这个论文我槽点很多但是还是有一丢丢参考价值。
自从1950年图灵测试被提出以来,人类已经在探索机器掌握语言智能。语言是复杂的、错综的系统。开发能够掌握和理解自然语言的AI就是十分重大的挑战。语言建模已经被广泛的研究于语言理解和语言生成在过去的20年中,而且已经从简单统计语言模型以演变为神经语言模型。近期,预训练模型(LMs)基于Transformer预训练,同时采用更大规模的数据集,展现了处理NLP问题的强大能力。模型规模的提高会导致模型性能的提高,并且LLMs所体现的强大能力在PLMs中是没有体现的,我们称之为涌现能力(Emergent Abilities)。大模型技术的演变随着Chat-GPT的问世进入了快车道。
语言是人类十分杰出的技能,通过语言建模(LM)是使得机器理解和掌握语言的重要途经。使得机器能够像人类一样理解和掌握使用语言是一个长期的研究挑战。
一般来说,LM 的目标是对单词序列的生成可能性进行建模,从而预测未来(或缺失)标记的概率。LM的研究进行了四个阶段:Statistical language models (SLM)、Neural language models (NLM)、Pre-trained language models (PLM)、Large language models (LLM)。
概要
大规模语言模型(LLM)通常指的是基于Transformer架构,并且参数规模在数百亿个以上的语言模型。这些模型通过在大规模的文本数据上进行训练,展示了强大的自然语言理解和生成能力。
Transformer架构是当前大多数LLM的基础,它使用了自注意力机制,能够有效处理长文本的上下文信息。LLM通常会在数十亿甚至数百亿个参数的基础上进行训练,从而具备更强的语言建模能力。
模型规模的提升:随着计算能力的提升,LLM的规模不断扩大,数据量也显著增加。例如,GPT-3拥有175B(亿)个参数,PaLM则有540B个参数。研究发现,随着模型和数据规模的增加,LLM的性能呈现出明显的提升。 这种“扩展效应”(Scaling Effect)表明,扩大模型规模、训练数据量和计算资源都会显著提高模型的任务解决能力,尤其是在处理更复杂的任务时。
涌现能力 :涌现能力是指在模型参数达到某一临界点时,模型展现出一些之前未曾出现的、意料之外的能力。
上下文学习 :这种能力使得大规模语言模型能够通过少量的示例和上下文信息,快速适应不同的任务。与传统的微调方法不同,ICL让模型能够在接收到任务指令后,直接在上下文中推断并生成回答,而无需通过额外的参数调整。
LLM的涌现能力表现在它们能够高效地完成各种复杂任务,如少样本学习、推理、生成式对话等。GPT-3和GPT-4等模型在许多任务上展现出了超乎寻常的能力,尤其是在涉及到推理和复杂文本生成时。
LLM关键技术
规模定律(Scaling Laws)
模型规模、数据规模与训练计算量 :LLM的性能与三个主要因素密切相关:模型规模(N)、数据规模(D)和训练计算量(C)。研究发现,这些因素之间呈现幂律关系,随着其中任意一个因素的增加,模型性能也会显著提升。
Kaplan Scaling Law:该定律提出了模型规模、数据规模和计算资源之间的关系,指出随着资源的增加,模型性能可以呈现出强烈的正相关性。
Chinchilla Scaling Law:相较于Kaplan的定律,Chinchilla定律强调了模型规模与数据规模的均衡分配,并指出在资源有限的情况下,如何最优配置计算资源。
预训练与微调
预训练 :LLM通过在海量的无标注文本数据上进行预训练,学习通用的语言特征和知识。这一过程通常采用自回归或自编码的方式,模型通过预测文本的下一个词或填补缺失的词来学习。
微调: 尽管LLM通过预训练获得了通用的语言表示,但它们仍然需要通过微调来适应具体的下游任务(如文本分类、翻译、问答等)。这种微调通常基于有标注的任务数据进行。
对齐调优(Alignment Tuning)
人类反馈强化学习(RLHF): 为了确保LLM生成的内容符合人类价值观,避免有害或偏颇的输出,通常会使用人类反馈强化学习。这一方法通过让人类参与模型训练,给予模型正向反馈来增强其生成符合预期的内容的能力。InstructGPT是这一技术的典型应用,它通过优化模型在执行任务时的指令理解能力,改善了其生成内容的质量和安全性。
外部工具集成
增强计算能力: LLM的另一个重要技术是与外部工具的结合。例如,LLM可以使用计算器进行精确的数学计算,或通过插件接口查询实时数据。随着技术的进步,像ChatGPT这样的模型也开始支持外部插件,进一步扩展了其应用范围。
GPT系列模型的技术演进
GPT-1:作为第一个基于Transformer的生成预训练模型,GPT-1提出了生成式预训练和监督微调相结合的方法。
GPT-2:GPT-2在GPT-1的基础上扩大了模型规模,并提出了更强大的无监督学习能力,尤其在生成文本方面取得了显著进展。
GPT-3:GPT-3进一步扩大了模型规模(达到175B参数),并引入了上下文学习的概念,能够在没有额外训练的情况下处理各种任务。
GPT-4:GPT-4加入了多模态能力,不仅能处理文本输入,还能接受图像输入,并在复杂任务上展现出更高的推理能力和稳定性。
模型检查点和API
训练一个大规模语言模型需要巨大的计算资源,许多研究团队和公司已经开放了预训练的模型检查点,这使得其他研究者可以基于这些现有模型进行微调或进行进一步的实验。部分大规模语言模型的API也已经公开,开发者可以直接通过API使用这些模型,无需自行训练。
Pre-Training
预训练语料库的规模和质量对于LLM获得强大的能力至关重要。
数据准备和处理
数据准备
预训练数据的质量对于LLM的能力呈正相关性。数据来源分为两类:general data and specialized data。一般数据(general data),例如网页、对话文本、书籍等,这些数据十分庞大、多元、更近于NLP,对于LLM的泛化能力的提升十分友好。专业数据(specialized data),多语言数据、科学数据、专业代码等增强LLM的专业能力(解决特定任务的能力)。
现有LLM预训练数据中各种数据源的比例:

General Data:
一般数据的种类多、多元、而且数据源丰富,对于模型的泛化能力和长对话能力有很好的提升。但是其中网页数据质量好坏参半,所以在使用该数据之前过滤和处理网页数据十分重要;对话数据则是陈述性指令和直接疑问句被错误地视为对话的开始,从而导致指令功效下降。
Specialized Data:
Specialized datasets are useful to improve the specific capabilities of LLMs on downstream tasks.其中的队多语言语料库对于提高大模型的语言理解和语言生成能力十分重要,常常体现在语言翻译、语言总结、多轮问答等方面。科学文献文本能够弥补LLM理解科学能力不足的缺陷。构建科学语料库,现有工作主要收集 arXiv 论文、科学教科书、数学网页和其他相关科学资源。
代码Code语料库主要来源于code 问答数据以及Github,能够极大的提高LLM的代码综合能力。
数据预处理
在准备好预训练使用的语料后,对于这些数据的预处理是重要的,对其进行去噪、去毒、去冗余、去不相关等。最近提出的对于LLM友好的预处理系统Data-Juicer。但这对于LLM来说必然需要大量的计算资源。
对于各个步骤处理的具体作用不再一一介绍,可以看原文的长篇大论。其实就是字面意思。

数据调度
After data preprocessing, it is essential to design suitable strategies to schedule these multi-source data for pretraining a capable LLM.
数据预处理后,必须设计合适的策略来安排这些多源数据,以预训练有能力的LLM。调度的关键主要是:各个数据源的比例和数据源的顺序。

Data Mixture数据混合一般是在全局层面上设置的(即整个预训练数据的分布),也可以在不同训练阶段局部设置为不同的比例。特殊的数据混合可用于促进不同的目的。
Data Curriculum指的是数据混合以后,不同的混合数据块按照构建的顺序进行训练。
架构
由于出色的并行性和容量,Transformer 架构已成为开发各种 LLM 事实上的支柱,使得将语言模型扩展到数百或数千亿个参数成为可能。总的来说,现有LLM的主流架构可以大致分为三大类,即编码器-解码器、因果解码器和前缀解码器。 
Encoder-decoder Architecture:
**** vanilla Transformer 模型建立在编码器-解码器架构 [22] 上,该架构由两堆 Transformer 块组成,分别作为编码器和解码器。编码器采用堆叠式多头自注意力层对输入序列进行编码以生成其潜在表示,而解码器对这些表示进行交叉注意力并自回归生成目标序列。
Causal Decoder Architecture:
**** 因果解码器架构结合了单向注意力掩模,以保证每个输入令牌只能关注过去的令牌及其自身。输入和输出令牌通过解码器以相同的方式处理。
Emergent Architectures
传统的 Transformer 架构通常会遭遇序列长度方面的二次计算复杂性,导致处理长输入的处理成本很高。为了提高效率,最近的研究旨在设计新的语言建模架构,大多数基于参数化状态空间模型(SSM),它可以被视为 RNN 和 CNN 的组合。
SSM 可以像 RNN 一样递归地生成输出,这意味着它们在解码过程中只需要引用单个先前状态。它使解码过程更加高效,因为它不需要像传统 Transformer 那样重新访问所有先前的状态。这些模型能够像 Transformer 一样通过卷积计算并行编码整个序列。因此,他们可以通过并行扫描、FFT和 Chunkwise Recurrent等技术从 GPU 的并行性中受益。
架构的详细配置参数如下(具体详解见论文):

解码策略
Decoding是为了使得LLM根据预训练的内容和学习能力生成合适的内容。
采样:
基于采样的方法对整个词汇表中的标记进行采样,这可能会根据上下文选择错误或不相关的标记。为了提高生成质量,已经提出了几种策略来减轻或防止选择概率极低的单词。
Top-k sampling:top-k采样直接截断概率较低的token,并且仅从top k最高概率的token中进行采样。
模型训练参数优化
Batch Training:对于语言模型预训练,现有工作通常将批量大小设置为较大的数字(例如2,048个示例或4M标记)以提高训练稳定性和吞吐量。
Learning Rate:通常在预训练期间采用类似的学习率计划以及预热和衰减策略。其实就是损失参数收敛。
Optimizer:Adam 优化器和 AdamW 优化器被广泛用于训练 LLM(例如 GPT3),它们基于低阶的自适应估计,同时,Adafactor优化器也被用于训练LLM(例如PaLM和T5),它是Adam优化器的变体,专门为在训练期间节省GPU内存而设计。
Stabilizing the Training:LLM在预训练过程中,经常会遇到训练不稳定的问题,导致模型崩溃。为了解决这个问题,权重衰减和梯度裁剪已被广泛使用。
POST-TRAINING OF LLMS
经过预训练,LLM可以获得解决各种任务的通用能力。然而,越来越多的研究表明,LLM的能力可以根据具体目标进一步调整。将介绍两种调整预训练 LLM 的主要方法,即指令调优 和对齐调优 。前一种方法主要旨在增强(或解锁)LLM的能力 ,而后一种方法旨在使LLM的行为与人类价值观或偏好保持一致。
指令调优 是在自然语言形式的格式化实例集合上微调预训练的LLM的方法。
Alignment Tuning(对齐调优): LLM在广泛的 NLP 任务中表现出了卓越的能力。然而,这些模型有时可能会表现出意想不到的行为,例如捏造虚假信息、追求不准确的目标以及产生有害、误导和偏见的表达。语言建模目标通过单词预测来预训练模型参数,而缺乏对人类价值观或偏好的考虑。为了避免这些意外行为,有人提出人类对齐,以使LLM的行为符合人类的期望。
CAPACITY AND EVALUATION 模型能力评估
Basic Ability
Basic Ability主要关注LLM能力评估的三种基本类型,即语言生成、知识运用和复杂推理。
......
