#大规模语言模型 #基本概念 #发展历程 #构建流程 #内容安排
大语言模型是一种由包含数百亿个及以上参数的深度神经网络构建的语言模型,通常使用自
监督学习方法通过大量无标注文本进行训练。2018年以来, Google、OpenAI、Meta、百度、华 为等公司和研究机构相继发布了BERT[1]、GPT[6]等多种模型,这些模型在几乎所有自然语言处 理任务中都表现出色。2019年,大语言模型呈现爆发式的增长,特别是2022年11月ChatGPT
(ChatGenerativePre-trainedTransformer)的发布,引起了全世界的广泛关注。用户可以使用
自然语言与系统交互,实现问答、分类、摘要、翻译、聊天等从理解到生成的各种任务。大语言模型展现出了强大的对世界知识的掌握和对语言的理解能力。
本章主要介绍大语言模型的基本概念、发展历程和构建流程。
## 1.1 大语言模型的基本概念
使用语言是人类与其他动物最重要的区别之一,而人类的多种智能也与此密切相关,逻辑思
维以语言的形式表达,大量的知识也以文字的形式记录和传播。如今,互联网上已经拥有数万亿个网页的资源,其中大部分信息都是用自然语言描述的。因此,如果人工智能算法想要获取知识,就必须懂得如何理解人类所使用的不太精确、可能有歧义甚至有些混乱的语言。语言模型 (LanguageModel,LM)的目标就是对自然语言的概率分布建模。词汇表V上的语言模型,由函数P(ω₁ω₂…w ₘ)表示,可以形式化地构建为词序列w₁w₂…w ₘ的概率分布,表示词序列w₁w₂⋅⋅⋅wm作为一个句子出现的可能性的大小。由于联合概率P(w₁w₂⋅⋅⋅wm)的参数量巨大,因此直接计算P(ω₁ω₂⋯wm)非常困难[7]。《现代汉语词典》(第7版)包含约7万词,句子长度按照20个词计算,语言模型的参数量达到7.9792×1096的天文数字。在中文的书面语中,超过100个词的句子并不罕见,如果要将所有可能性都纳入考虑,则语言模型的复杂度会进一步增加,以目前的计算手段无法进行存储和运算为了减小P(ω₁ω₂…wm)模型的参数空间,可以利用句子序列(通常是从左至右)的生成过
程将其进行分解,使用链式法则可以得到
![[$LZYDKN%3%UUC4QUI5E%UTY_tmb.jpg|400]]
n元语言模型从整体上看与训练数据规模和模型的阶数有较大的关系,不同的平滑算法在不
同情况下的表现有较大的差距。虽然平滑算法较好地解决了零概率问题,但是基于稀疏表示的n
==元语言模型仍然有以下三个较为明显的缺点==。
(1)无法对长度超过n的上下文建模。
(2)依赖人工设计规则的平滑技术。
(3)当n增大时,数据的稀疏性随之增大,模型的参数量更是呈指数级增加,受数据稀疏问
题的影响,其参数难以被准确学习。
此外,n元文法中单词的离散表示也忽略了单词之间的相似性。
Bengio等人在2000年提出了使用前馈神经网络对 ![[Pasted image 20250120005752.png|100]] 进行估计的语言模型。
词的独热编码被映射为一个低维稠密的实数向量,称为词向量(Word Embedding)。
循环神经网络、卷积神经网络、端到端记忆网络等神经网络方法都成功应用于语言模型建模。
相较于n元语言模型,神经网络方法可以在一定程度上避免数据稀疏问题,有些模型还可以避免对历史长度的限制,从而更好建模长距离依赖关系。这类方法通常称为神经语言模型(Neural Language Models,NLM)
循环神经网络语言模型由三部分组成:输入层、隐藏层和输出层
![[Pasted image 20250120005851.png]]
![[Pasted image 20250120005901.png]]
![[Pasted image 20250120005911.png]]![[Pasted image 20250120005925.png]]
深度神经网络需要采用有监督方法,使用标注数据进行训练,因此,语言模型的训练过程也不 可避免地需要构造训练数据。由于训练目标可以通过无标注文本直接获得,因此模型的训练仅需要 大规模无标注文本。语言模型也成了典型的自监督学习(Self-supervisedLearning)任务。互联网 的发展,使得大规模文本非常容易获取,因此训练超大规模的基于神经网络的语言模型成为可能。 受计算机视觉领域采用ImageNet对模型进行一次预训练,使模型可以通过海量图像充分 学习如何提取特征,再根据任务目标进行模型精调的预训练范式影响,自然语言处理领域基于预 训练语言模型的方法逐渐成为主流。以ELMol为代表的动态词向量模型开启了语言模型预训练
的大门。此后,以GPT和BERT为代表的基于Transformer结构的大规模预训练语言模型
的出现,使自然语言处理全面进入预训练微调范式新时代。将预训练模型应用于下游任务时,不需要了解太多的任务细节,不需要设计特定的神经网络结构,只需要“微调”预训练模型,使用具体任务的标注数据在预训练语言模型上进行监督训练,就可以取得显著的性能提升。这类方法通常被称为预训练语言模型(Pre-trainedLanguageModels,PLM)
![[Pasted image 20250120010331.png]]
2020年,OpenAI发布了由包含1750亿个参数的神经网络构成的生成式大规模预训练语言
模型GPT-3(GenerativePre-trainedTransformer3),开启了大语言模型的新时代。由于大语
言模型的参数量巨大,在不同任务上都进行微调需要消耗大量的计算资源,因此预训练微调范式 不再适用于大语言模型。研究人员发现,通过语境学习(In-ContextLearning,ICL)等方法,直 接使用大语言模型,就可以在很多任务的少样本场景中取得很好的效果。此后,研究人员提出了面 向大语言模型的提示词(Prompt)学习方法,以及模型即服务范式(ModelasaService,MaaS)、
指令微调(InstructionTuning)等方法,在不同任务中都取得了很好的效果。与此同时,Google、
Meta、BigScience、百度、华为等公司和研究机构纷纷发布了PaLM、LaMDA、T0等不
同大语言模型。2022年年底ChatGPT的出现,将大语言模型的能力进行了充分的展现,也引发了大语言模型研究的热潮。
Kaplan等人在文献中提出了缩放法则(ScalingLaws),指出模型的性能依赖于模型的
规模,包括参数量、数据集大小和计算量,模型的效果会随着三者的指数增加而平稳提升。如图所示,模型的损失(Loss)值随着模型规模的指数增加而线性降低。这意味着模型的能力可以根据这三个变量估计,增加模型参数量,扩大数据集规模都可以使模型的性能可预测地提升。这为继续扩大大语言模型的规模给出了定量分析依据。
![[Pasted image 20250120010640.png]]
## 1.2大规模语言模型发展历程
![[Pasted image 20250120010809.png]]
大语言模型的发展可以粗略地分为如下三个阶段:**基础模型阶段、能力探索阶段和突破发展阶段**
**基础模型阶段**主要集中于2018 年至2021 年:
2017 年,Vaswani 等人提出了Transformer架构,在机器翻译任务上取得了突破性进展。
2018 年,Google 和OpenAI 分别提出了BERT 和 GPT-1模型,开启了预训练语言模型时代。
2019 年,OpenAI 发布了GPT-2,参数量15 亿。Google 发布了参数规模为110 亿的T5模型。
2020 年,OpenAI 进一步将语言模型参数量扩展到1750 亿,发布了GPT-3。
此阶段的研究主要集中在语言模型本身,包括对仅编码器(Encoder Only)、编码器-解码器(Encoder-Decoder)、仅解码器(Decoder Only)等各种类型的模型结构都有相应的研究。模型大小与BERT 相类似的算法,通常采用预训练微调范式,针对不同下游任务进行微调。但是模型参数量在10 亿以上时,由于微调的计算量很高,这类模型的影响力在当时相较BERT 类模型有不小的差距。
**能力探索阶段**集中于2019 年至2022 年
由于大语言模型很难针对特定任务进行微调,研究人员开始探索在不针对单一任务进行微调的情况下如何发挥大语言模型的能力
2019 年,Radford等人使用GPT-2 模型研究了大语言模型在零样本情况下的任务处理能力
Brown 等人在GPT-3模型上研究了通过语境学习进行少样本学习的方法
指令微调将大量各类型任务,统一为生成式自然语言理解框架,并构造训练语料进行微调
2022 年,Ouyang 等人提出了使用“有监督微调+ 强化学习”的InstructGPT 算法
这些方法在直接利用大语言模型进行零样本和少样本学习的基础上,逐渐扩展到利用生成式框架针对大量任务进行有监督微调的方法,有效提升了模型的性能。
**突破发展阶段**以2022 年11 月ChatGPT 的发布为起点
ChatGPT 通过一个简单的对话框,利用一个大语言模型就可以实现问题回答、文稿撰写、代码生成、数学解题等过去自然语言处理系统需要大量定制开发才能分别实现的能力
2023 年3 月GPT-4 发布,相较于ChatGPT 又有了非常明显的进步,并具备了多模态理解能力。GPT-4 在多种基准考试测试上的得分高于88% 的应试者
各大公司和研究机构相继发布了此类系统,包括Google 推出的Bard、百度的文心一言、科大讯飞的星火大模型、智谱ChatGLM、复旦大学MOSS 等
![[Pasted image 20250120011042.png]]
![[Pasted image 20250120011053.png]]
![[Pasted image 20250120011104.png]]
![[Pasted image 20250120011129.png]]
## 1.3大规模语言模型构建流程
使用的大语言模型构建流程如图1.3所示,主要包含四个阶段:==预训练、有监督微调、奖励建模和强化学习==。这四个阶段都需要不同规模的数据集及不同类型的算法,会产出不同类型的模型,所需要的资源也有非常大的差别。
![[Pasted image 20250120011229.png]]
![[Pasted image 20250120011256.png]]
**预训练(Pretraining)阶段**需要利用海量的训练数据(数据来自互联网网页、维基百科、书
籍、GitHub、论文、问答网站等),构建包含数千亿甚至数万亿单词的具有多样性的内容。利用由数千块高性能GPU和高速网络组成的超级计算机,花费数十天完成深度神经网络参数训练,构建基础模型(BaseModel)。基础模型对长文本进行建模.使模型具有语言生成能力.根据输入的提示词,模型可以生成文本补全句子。有一部分研究人员认为.语言模型建模过程中隐含地构建了包括事实性知识(FactualKnowledge)和常识性知识(Commonsense)在内的世界知识(World Knowledge)。根据文献中的介绍,GPT-3完成一次训练的总计算量是3640PFLOPS.按照NVIDIAA10080GBGPU和平均利用率达到50%计算.需要花费近一个月的时间使用1000块
GPU完成。由于GPT-3的训练采用NVIDIAV10032GBGPU.其实际计算成本远高于上述计
算。文献介绍了参数量同样是1750亿个的OPT模型.该模型训练使用992块NVID1A
A10080GBGPU,整体训练时间将近2个月BLOOM[22]模型的参数量也是1750亿个.该模型
训练一共花费3.5个月,使用包含384块NVIDIAA10080GBGPU集群完成。可以看到,大语
言模型的训练需要花费大量的计算资源和时间。LLaMA、Falcon、百川(Baichun)等模型都属
于基础语言模型。由于训练过程需要消耗大量的计算资源.并很容易受到超参数影响。==如何提升分布式计算效率并使模型训练稳定收敛==是本阶段的研究重点。
BLOOM使用Megatron-DeepSpeed框架进行训练,主要包含两个部分:Megatron-LM提供张量并行能力和数据加载原语;DeepSpeed提供ZeRO优化器、模型流水线以及常规的分布式训练组件。通过这种方式可以实现数据、张量和流水线三维并行。
![[Pasted image 20250121002155.png]]
**有监督微调(SupervisedFineTuning)**.也称为指令微调,利用少量高质量数据集,通过有
监督训练使模型具备问题回答、翻译、写作等能力 有监督微调的数据包含用户输入的提示词和对应的理想输出结果。用户输入包括问题、阐晰对话、任务指令等多种形式和任务。
例如:提示词:复旦大学有几个校区? 理想输出:复旦大学现有4个校区,分别是鄂邦陵区、新江湾校区、枫林校区和张江校区。其中邯郸校区是复旦大学的主校区,鄂郭校区与新江湾校区都位于杨浦区,枫林校区位于徐汇区,张江校区位于浦东新区。利用这些有监督数据、使用与预训练阶段相同的语言模型训练算法,在基础模型的基础上进行训练,得到有监督微调模型(SFT模型)。经过训练的SFT模型具备初步的指令理解能力和上下文
理解能力,能够完成开放领域问答、阅读理解、翻译、生成代码等任务,也具备了一定的对未知任务的泛化能力。由于有监督微调阶段所需的训练数据量较少,SFT模型的训练过程并不需要消耗大量的计算资源。根据模型的大小和训练数据量.通常需要数十块GPU,花费数天时间完成训练。SFT模型具备了初步的任务完成能力.可以开放给用户使用,很多类ChatGPT的模型都属于该类型,包括Alpaca、Vicuna、MOSS、ChatGLM-6B等。很多这类模型的效果非常好, 甚至在一些评测中达到了ChatGPT的90%的效果。当前的一些研究表明,有监督微调阶段的数据选择对SFT模型效果有非常大的影响。==构造少量并且高质量的训练数据是本阶段的研究重点。==
**奖励建模(RewardModeling)** 阶段的目标是构建一个文本质量对比模型。对于同一个提示
词,SFT模型对给出的多个不同输出结果的质量进行排序。奖励模型可以通过二分类模型,对输入的两个结果之间的优劣进行判断。奖励模型与基础模型和SFT模型不同,奖励模型本身并不能单独提供给用户使用。奖励模型的训练通常和SFT模型一样,使用数十块GPU,通过数天时间完成训练。由于奖励模型的准确率对强化学习阶段的效果有至关重要的影响,因此通常需要大模的训练数据对该模型进行训练。AndrejKarpathy在报告中指出,该部分需要百万量级的对数据标注,而且其中很多标注需要很长时间才能完成。InstructGPT系统中奖励 型训练样本标注示例。示例中文本表达都较为流畅,标注其质量排序需要制定非常 详细的规范,标注者也需要认真地基于标规范进行标注,需要消耗大量的人力。同时,保持众
标注者之间的一致性,也是奖励建模阶段需要解决的难点问题之一。此外,奖励模型的泛化能;边界也是本阶段需要重点研究的一个问题。如果奖励模型的目标是针对系统所有的输出都能够 质量地进行判断,那么该问题的难度在某种程度上与文本生成等价,因此限定奖励模型应用的化边界是本阶段需要解决的问题。
**强化学习(ReinforcementLearning,RL)** 阶段根据数十万名用户给出的提示词,利用前一
阶段训练的奖励模型,给出SFT模型对用户提示词补全结果的质量评估,并与语言模型建模目标综合得到更好的效果。该阶段使用的提示词数量与有监督微调阶段类似,数量在十万个量级,并且不需要人工提前给出该提示词所对应的理想回复。使用强化学习,在SFT模型的基础上调整参数,使最终生成的文本可以获得更高的奖励(Reward)。该阶段需要的计算量较预训练阶段也少很多,通常仅需要数十块GPU,数天即可完成训练。文献[24]给出了强化学习和有监督微调的对比,在模型参数量相同的情况下,强化学习可以得到相较于有监督微调好得多的效果。关于为什么强化学习相比有监督微调可以得到更好结果的问题,截至2023年9月还没有完整或得到普遍共识的解释。AndrejKarpathy也指出,强化学习并不是没有问题的,它会使基础模型的熵降低,从而减少模型输出的多样性。经过强化学习方法训练后的RL模型,就是最终提供给用户使用、具有理解用户指令和上下文的类ChatGPT系统。由于强化学习方法稳定性不高,并且超参数众多,使得模型收敛难度大,叠加奖励模型的准确率问题,使得在大语言模型上有效应用强化学习非常困难。
## 1.4 本书的内容安排
本书共分为8章,围绕大语言模型==基础理论、预训练、指令理解和模型应用==四个部分展开:第
一部分介绍大语言模型的基础理论;第二部分介绍大语言模型的预训练,包括大语言模型预训练 数据和分布式训练;第三部分介绍大语言模型如何理解并服从人类指令,包括有监督微调和强化学习;第四部分介绍大语言模型应用和评估 。
|