跳到主要内容大规模语言模型从理论到实践 | 极客日志编程语言AI算法
大规模语言模型从理论到实践
大规模语言模型从理论到实践涵盖了基本概念、发展历程、构建流程及核心技术。文章介绍了语言模型作为自然语言概率分布建模的本质,回顾了从 Transformer 架构提出到 GPT、BERT 等模型演进的历史,划分为基础模型、能力探索和突破发展三个阶段。详细阐述了预训练、有监督微调、奖励建模及强化学习(RLHF)的四阶段构建流程,解析了 Transformer 的自注意力机制与 GPT 的 Decoder-only 架构。此外,还探讨了训练数据的质量要求、Tokenization 技术以及当前面临的幻觉、算力成本与伦理安全等挑战,展望了 MoE 架构与多模态融合的未来趋势。
引言
语言是人类与其他动物最重要的区别之一,人类的多种智能也与此密切相关。逻辑思维以语言的形式表达,大量的知识也以文字的形式记录和传播。如今,互联网上已经拥有数万亿网页资源,其中大部分信息都是用自然语言描述。因此,如果人工智能算法想要获取知识,就必须懂得如何理解人类所使用的不太精确、可能有歧义并且甚至有些混乱的语言。
语言模型(Language Model, LM)的目标就是建模自然语言的概率分布。词汇表 $V$ 上的语言模型,由函数 $P(w_1...w_m)$ 表示,可以形式化地构建为词序列 $w_1...w_m$ 的概率分布,表示词序列 $w_1 w_2 ... w_m$ 作为一个子串出现的可能性大小。由于联合概率 $P(w_1 w_2 ... w_m)$ 的参数量十分巨大,直接计算非常困难。按照《现代汉语词典 (第七版)》包含约 7 万单词,句子长度按照 20 个词计算,语言模型参数量达到天文数字。中文的书面语中,超过 100 个单词的句子也并不罕见,如果要将所有可能性都纳入考虑,语言模型的复杂度还会进一步急剧增加,以目前的计算手段无法进行存储和运算。
深度神经网络需要采用有监督方法,使用标注数据进行训练,因此,语言模型的训练过程也不可避免需要构造训练语料。但是由于训练目标可以通过无标注文本直接获得,从而使得模型的训练仅需要大规模无标注文本即可。语言模型也成为了典型的自监督学习(Self-supervised Learning)任务。互联网的发展,使得大规模文本非常容易获取,因此训练超大规模的基于神经网络的语言模型也成为了可能。
受到计算机视觉领域采用 ImageNet 对模型进行一次预训练,使得模型可以通过海量图像充分学习如何提取特征,然后再根据任务目标进行模型精调的预训练范式影响,自然语言处理领域基于预训练语言模型的方法也逐渐成为主流。以 ELMo 为代表的动态词向量模型开启了语言模型预训练的大门,此后以 GPT 和 BERT 为代表的基于 Transformer 模型的大规模预训练语言模型的出现,使得自然语言处理全面进入了预训练微调范式新时代。将预训练模型应用于下游任务时,不需要了解太多的任务细节,不需要设计特定的神经网络结构,只需要'微调'预训练模型,使用具体任务的标注数据在预训练语言模型上进行监督训练,就可以取得显著的性能提升。这类方法通常称为预训练语言模型(Pre-trained Language Models, PLM)。
大规模语言模型发展历程
大规模语言模型的发展历程虽然只有短短不到五年的时间,但是发展速度相当惊人。截止 2023 年 6 月,国内外有超过百种大模型相继发布。中国人民大学赵鑫教授团队在文献 [18] 按照时间线给出 2019 年至 2023 年 5 月比较有影响力并且模型参数量超过 100 亿的大规模语言模型。大规模语言模型的发展可以粗略地分为如下三个阶段:基础模型、能力探索、突破发展。
基础模型阶段
基础模型阶段主要集中于 2018 年至 2021 年。2017 年 Vaswani 等人提出了 Transformer 架构,在机器翻译任务上取得了突破性进展。2018 年 Google 和 OpenAI 分别提出了 BERT 和 GPT 模型,开启了预训练语言模型时代。BERT-Base 版本参数量为 1.1 亿,BERT-Large 的参数量为 3.4 亿,GPT-1 的参数量 1.17 亿。这在当时,相比其它深度神经网络的参数量已经是有数量级上提升。2019 年 OpenAI 又发布了 GPT-2,其参数量达到了 15 亿。此后,Google 也发布了参数规模为 110 亿的 T5 模型。2020 年 OpenAI 进一步将语言模型参数量扩展到 1750 亿,发布了 GPT-3。此后,国内也相继推出了一系列的大规模语言模型,包括清华大学 ERNIE (THU)、百度 ERNIE (Baidu)、华为盘古-A 等。这个阶段研究主要集中在语言模型本身,包括仅编码器(Encoder Only)、编码器 - 解码器(Encoder-Decoder)、仅解码器(Decoder Only)等各种类型的模型结构都有相应的研究。模型大小与 BERT 相类似的算法,通常采用预训练微调范式,针对不同下游任务进行微调。但是模型参数量在 10 亿以上时,由于微调的计算量很高,这类模型的影响力在当时相较 BERT 类模型有不小的差距。
能力探索阶段
能力探索阶段集中于 2019 年至 2022 年。由于大规模语言模型很难针对特定任务进行微调,研究人员们开始探索在不针对单一任务进行微调的情况下如何能够发挥大规模语言模型的能力。2019 年 Radford 等人在文献 [4] 就使用 GPT-2 模型研究了大规模语言模型在零样本情况下的任务处理能力。在此基础上,Brown 等人在 GPT-3 模型上研究了通过语境学习(In-Context Learning)进行少样本学习的方法。将不同任务的少量有标注的实例拼接到待分析的样本之前输入语言模型,使用语言模型根据实例理解任务并给出正确结果。在包括 TriviaQA、WebQSP、CoQA 等评测集上都展示出了非常强的能力,在有些任务中甚至超过了此前的有监督方法。上述方法不需要修改语言模型的参数,模型在处理不同任务时无需花费大量计算资源进行模型微调。但是仅依赖基于语言模型本身,其性能在很多任务上仍然很难达到有监督学习效果,因此研究人员们提出了指令微调(Instruction Tuning)方案,将大量各类型任务统一为生成式自然语言理解框架,并构造训练语料进行微调。大规模语言模型一次性学习数千种任务,并在未知任务上展现出了很好的泛化能力。2022 年 Ouyang 等人提出了使用有监督微调再结合强化学习方法,使用少量数据有监督就可以使得大规模语言模型服从人类指令的 InstructGPT 算法。Nakano 等人则探索了结合搜索引擎的问题回答算法 WebGPT。这些方法从直接利用大规模语言模型进行零样本和少样本学习的基础上,逐渐扩展到利用生成式框架针对大量任务进行有监督微调的方法,有效提升了模型的性能。
大规模语言模型构建流程
根据 OpenAI 联合创始人 Andrej Karpathy 在微软 Build 2023 大会上所公开的信息,OpenAI 所使用的大规模语言模型构建流程主要包含四个阶段:预训练、有监督微调、奖励建模、强化学习。这四个阶段都需要不同规模数据集合以及不同类型的算法,会产出不同类型的模型,同时所需要的资源也有非常大的差别。
预训练(Pretraining)
预训练阶段需要利用海量的训练数据,包括互联网网页、维基百科、书籍、GitHub、论文、问答网站等,构建包含数千亿甚至数万亿单词的具有多样性的内容。利用由数千块高性能 GPU 和高速网络组成的超级计算机,花费数十天完成深度神经网络参数训练,构建基础语言模型(Base Model)。基础大模型构建了长文本的建模能力,使得模型具有语言生成能力,根据输入的提示词(Prompt),模型可以生成文本补全句子。也有部分研究人员认为,语言模型建模过程中也隐含地构建了包括事实性知识(Factual Knowledge)和常识知识(Commonsense)在内的世界知识(World Knowledge)。根据文献介绍,GPT-3 完成一次训练的总计算量是 3640 PFlops,按照 NVIDIA A100 80G 和平均利用率达到 50% 计算,需要花费近一个月时间使用 1000 块 GPU 完成。
有监督微调(Supervised Fine-Tuning, SFT)
SFT 阶段旨在让模型学会遵循指令。通过人工编写的高质量指令 - 响应对(Instruction-Response Pairs)对预训练模型进行微调。这一步骤将通用的语言模型转化为能够理解用户意图并执行特定任务的助手模型。常见的数据集包括 Alpaca、Dolly 等开源指令数据集。
奖励建模(Reward Modeling)
为了对齐人类价值观,需要训练一个奖励模型(Reward Model, RM)。该模型接收模型生成的文本作为输入,并输出一个标量分数,表示该文本符合人类偏好的程度。RM 通常通过对比学习训练,即给定同一个 Prompt 下模型生成的多个回复,由人类标注者排序,训练 RM 预测正确的排序。
强化学习(Reinforcement Learning from Human Feedback, RLHF)
最后一步是使用强化学习优化策略模型。通常采用 PPO(Proximal Policy Optimization)算法,以奖励模型提供的分数作为奖励信号,更新语言模型的参数。这使得模型在保持语言能力的同时,更加符合人类的偏好,减少有害内容的生成,提高回答的相关性和有用性。
Transformer 模型详解
Transformer 模型是由谷歌在 2017 年提出并首先应用于机器翻译的神经网络模型结构。机器翻译的目标是从源语言(Source Language)转换到目标语言(Target Language)。Transformer 结构完全通过注意力机制完成对源语言序列和目标语言序列全局依赖的建模。当前几乎全部大语言模型都是基于 Transformer 结构。
核心组件
- 自注意力机制(Self-Attention):允许序列中的每个位置关注序列中的所有其他位置,从而捕捉长距离依赖关系。计算公式涉及查询(Query)、键(Key)和值(Value)矩阵的交互。
- 多头注意力(Multi-Head Attention):并行运行多个注意力头,使模型能够关注不同子空间的信息。
- 前馈神经网络(Feed-Forward Network):对每个位置的表示进行非线性变换。
- 层归一化(Layer Normalization)与残差连接(Residual Connection):帮助稳定训练并缓解梯度消失问题。
基于 Transformer 结构的编码器和解码器结构通常由若干个基本的 Transformer 块(Block)组成。每个 Transformer 块都接收一个向量序列作为输入,并输出一个等长的向量序列作为输出。这里的输入和输出分别对应着文本序列中的一个单词的表示。而输出是当前 Transformer 块对输入进一步整合其上下文语义后对应的输出。
生成式预训练语言模型 GPT
OpenAI 公司在 2018 年提出的生成式预训练语言模型(Generative Pre-Training, GPT)是典型的生成式预训练语言模型之一。GPT 模型结构由多层 Transformer 组成的单向语言模型,主要分为输入层、编码层和输出层三部分。GPT 系列采用了 Decoder-only 架构,这意味着它只能看到过去的 token,不能看到未来的 token,非常适合文本生成任务。
GPT-1 引入了预训练 + 微调的范式;GPT-2 展示了零样本学习能力;GPT-3 实现了 Few-shot Learning 的飞跃;GPT-3.5 和 GPT-4 则在推理能力和多模态能力上有了显著提升。GPT 系列的成功证明了模型规模扩大(Scaling Law)带来的性能提升规律。
语言模型训练数据
大语言模型训练需要数万亿的各类型数据。如何构造海量'高质量'数据对于大语言模型的训练具有至关重要的作用。虽然,截止到 2023 年 9 月为止,还没有非常好的大模型的理论分析和解释,也缺乏对语言模型训练数据的严格说明和定义。但是,大多数研究人员都普遍认为训练数据是影响大语言模型效果以及样本泛化能力的关键因素之一。
数据来源
从此前的研究来看,预训练数据需要涵盖各种类型。包括网络数据、图书、论文、百科和社交媒体等,还需要覆盖尽可能多的领域语言、文化和视角,从而提高大语言模型的泛化能力和适应性。
数据清洗
原始数据通常包含噪声,如 HTML 标签、广告、乱码等。数据清洗流程包括去重、过滤低质量文本、去除隐私信息、标准化编码等。Tokenization 是将文本转换为模型可理解的 token 序列的过程,常用的方法有 Byte-Pair Encoding (BPE) 和 WordPiece。
挑战与未来展望
尽管大规模语言模型取得了巨大成功,但仍面临诸多挑战。
- 幻觉问题(Hallucination):模型可能会生成看似合理但事实错误的信息。这需要通过改进训练数据和评估方法来缓解。
- 计算成本:训练和推理大模型需要巨大的算力支持,限制了其普及。
- 伦理与安全:防止模型被用于生成恶意内容、偏见歧视或侵犯隐私。
- 上下文窗口限制:虽然已有长上下文模型,但处理超长文档仍面临效率瓶颈。
未来,随着 MoE(Mixture of Experts)架构的引入、量化技术的进步以及多模态融合的发展,大规模语言模型将更加高效、智能和通用。开发者应关注模型的可解释性、公平性以及在实际业务场景中的落地应用。
结语
大规模语言模型代表了人工智能领域的重要里程碑。从理论基础的夯实到工程实践的突破,LLM 正在重塑人机交互的方式。深入理解其原理、构建流程及局限性,对于技术从业者把握 AI 发展趋势至关重要。
相关免费在线工具
- 加密/解密文本
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
- RSA密钥对生成器
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
- Mermaid 预览与可视化编辑
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
- Base64 字符串编码/解码
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
- Base64 文件转换器
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
- Markdown转HTML
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online