网站开发主要内容和要求,网页制作工具程,做淘宝设计能做网站吗,郑州网站建设公司制作定制1、绪论 大规模语言模型#xff08;Large Language Models#xff0c;LLM#xff09;是由包含数百亿以上参数的深度神经网络构建的语言模型#xff0c;采用自监督学习方法通过大量无标注文本进行训练。自2018年以来#xff0c;多个公司和研究机构相继发布了多种模型#…1、绪论 大规模语言模型Large Language ModelsLLM是由包含数百亿以上参数的深度神经网络构建的语言模型采用自监督学习方法通过大量无标注文本进行训练。自2018年以来多个公司和研究机构相继发布了多种模型如BERT和GPT并在自然语言处理任务中取得了显著的成果。尤其是2022年11月发布的ChatGPT引发了广泛关注使得用户能够通过自然语言与系统交互完成多种任务包括问答、分类、摘要、翻译和聊天等。本文主要介绍大规模语言模型的基本概念、发展历程和构建流程。
1.1、大规模语言模型基本概念 直接计算整个句子的联合概率是不现实的因为涉及到的参数非常庞大。使用链式法则可以将这个复杂的计算分解为几个较小的、易于估计的条件概率。 语言是人类与动物的重要区别许多知识以自然语言的形式记录和传播。语言模型的目标是建模自然语言的概率分布。词汇表 上的语言模型使用链式法则可表示为 这表示词序列的生成过程为单词逐个生成。例如对于句子“把努力变成一种习惯”其概率计算为 通过上述过程将联合概率转换为多个条件概率的乘积。为减少模型的参数空间可以假设任意单词 的出现概率只与过去 个词相关 这种模型称为 元语法或 元文法n-gram模型。 Q能举例说明一下直接计算句子得联合概率和使用链式法则计算的方式的区别吗 A 1. 词汇表和语料库 首先我们需要一个词汇表vocabulary和一个训练好的语料库。语料库中的文本数据将用于统计各个词及其组合出现的频率。 2. 频率统计 在语料库中统计每个词的出现频率以及每对或三词组合的出现频率。例如 计算“我”的出现次数 C(我) 计算“我 爱”的出现次数 C(我 爱) 计算“我 爱 学习”的出现次数 C(我 爱 学习) 3. 计算联合概率 通过频率统计我们可以使用最大似然估计MLE来估计联合概率 P(我 爱 学习)C(我 爱 学习)/C(所有句子) 其中C(所有句子)是语料库中所有句子的总数。 4. 链式法则 由于直接计算联合概率可能非常稀疏因此通常采用链式法则将其分解为条件概率 P(我 爱 学习)P(我)×P(爱∣我)×P(学习∣我 爱) 这样我们可以分别估计每个词的概率和条件概率通常通过相似的方法进行统计。 大规模语言模型LLM通过分析大量无标注文本来理解和生成自然语言。然而由于语言的复杂性和多样性传统的 元语言模型在处理稀疏数据时存在一些挑战。具体来说 零概率问题在训练语料中某些词组可能未出现这会导致模型计算联合概率时出现零值。因此平滑技术被引入以确保每个可能的字符串都有非零的概率。 平滑技术通过调整概率分布使得低概率的词组概率提高而高概率的词组概率降低从而使整体分布更加均匀。这有助于减少零概率现象使模型更为鲁棒。 缺点 元语言模型只能建模长度不超过 的上下文。 依赖人工设计的平滑规则。 随着 的增大数据稀疏性和模型参数量急剧增加导致学习困难。 为了解决这些问题研究者们转向基于神经网络的语言模型NLM。Bengio等人在2000年提出了使用前馈神经网络来估计词的条件概率这种方法使用词向量Word Embedding将词映射为低维稠密向量能更好地捕捉词之间的相似性。随着深度学习的发展循环神经网络RNN、卷积神经网络CNN等方法也被广泛应用于语言模型。这些神经网络模型能够处理长距离依赖关系并在一定程度上减少数据稀疏问题。 神经语言模型的训练可以基于大规模无标注文本这使得自监督学习成为一种主流方法。受计算机视觉领域预训练的启发自然语言处理也逐渐采用预训练模型的方法。例如动态词向量模型ELMo、生成式预训练模型GPT和BERT等代表了基于Transformer的预训练语言模型的最新进展。这些模型在预训练阶段学习了丰富的语言知识然后通过微调fine-tuning来适应特定任务。用户只需在预训练模型上进行监督训练而无需设计新的网络结构从而大幅提升了性能。 在2020年OpenAI发布了包含1750亿参数的生成式大规模预训练语言模型GPT-3Generative Pre-trained Transformer 3这标志着大规模语言模型时代的到来。GPT-3的庞大参数量使得在不同任务上进行微调需要消耗巨大的计算资源这一预训练微调范式变得不再适用。
新的学习方法
为了应对这一挑战研究人员开始探索新的方法 语境学习In-context Learning, ICL直接利用大规模语言模型在少样本场景下进行任务取得良好效果。 提示词Prompt学习通过设计提示词来引导模型进行特定任务而无需进行复杂的微调。 模型即服务Model as a Service, MaaS提供基于模型的服务使得用户能够方便地使用大规模模型。 指令微调Instruction Tuning通过特定指令进一步优化模型在某些任务上的表现。 随着这些方法的出现众多公司和研究机构相继发布了各自的大规模语言模型如Google的PaLM、Meta的LaMDA、百度的T0等。
缩放法则
Kaplan等人提出了缩放法则Scaling Laws强调模型的性能与以下三个因素密切相关 参数数量 数据集大小 计算量 研究表明如下图所示随着这三者的指数增加模型的效果会线性提升。具体而言模型的损失值会随着规模的增加而降低这为进一步提升大模型规模提供了定量分析依据。 1.2、大规模语言模型发展历史 尽管大规模语言模型的发展历程不足五年但其进展速度惊人。截至2023年6月国内外已发布超过百种大模型如下图所示从2019年至2023年5月比较有影响力且模型参数量超过100亿的大规模语言模型的发展可以粗略分为以下三个阶段 基础模型阶段 能力探索阶段 突破发展阶段
这些阶段反映了大规模语言模型在技术、应用和研究方面的快速演变。 大规模语言模型的发展经历了基础模型的建立、能力的探索以及突破性进展各阶段展现出不同的技术创新和应用潜力推动了自然语言处理领域的快速发展。
典型开源大模型汇总 典型闭源大模型汇总 基础模型阶段2018-2021
2017年Vaswani等人提出了Transformer架构突破了机器翻译任务的瓶颈。2018年Google和OpenAI分别推出了BERT1.1亿参数和3.4亿参数的BERT-Large和GPT-11.17亿参数开启预训练语言模型时代。2019年OpenAI发布了GPT-215亿参数Google随后发布了T5110亿参数。2020年OpenAI推出了GPT-31750亿参数成为当时最大规模的语言模型。国内也推出了如清华大学的ERNIE、百度的ERNIE和华为的盘古-α等大规模语言模型。研究集中在各种模型结构仅编码器、编码器-解码器、仅解码器和预训练微调。 能力探索阶段2019-2022
探索方法研究人员探索如何在不进行特定任务微调的情况下利用大规模语言模型的能力。2019年Radford等人研究了GPT-2的零样本学习能力。GPT-3Brown等人提出了通过语境学习In-Context Learning进行少样本学习展示了模型在多个任务上的强大能力。指令微调提出统一生成式自然语言理解框架利用大量任务进行有监督微调提升了模型性能。2022年Ouyang等人提出了InstructGPT结合监督微调和强化学习提升模型对人类指令的响应能力。 突破发展阶段2022至今
ChatGPT发布2022年11月通过简单对话框实现问题回答、文稿撰写、代码生成等多种功能超越传统自然语言处理系统。GPT-4发布2023年3月具备多模态理解能力在多种基准考试中表现出色展现近乎通用人工智能的能力。许多公司和研究机构相继发布类似系统如Google的Bard、百度的文心一言、科大讯飞的星火大模型等。从2022年开始大规模语言模型呈现爆发式增长各类模型不断涌现。
1.3、大规模语言模型构建流程 根据OpenAI联合创始人Andrej Karpathy在微软Build 2023大会上公开的信息如下图所示OpenAI的大规模语言模型构建流程可分为四个主要阶段 1. 预训练Pretraining 在预训练阶段模型利用大量多样化的数据包括互联网网页、维基百科、书籍、GitHub、论文和问答网站等构建一个包含数千亿到数万亿单词的语料库。训练过程中使用由数千块高性能GPU和高速网络组成的超级计算机通常需要数十天来完成深度神经网络的参数训练从而构建基础语言模型Base Model。 建模能力模型能够生成文本并在接收输入提示Prompt后补全句子。研究人员认为语言模型在训练中也隐含构建了事实性知识Factual Knowledge和常识知识Commonsense即世界知识World Knowledge。 计算资源例如GPT-3的训练总计算量达到3640PFlops使用1000块NVIDIA A100 80G GPU训练时间约为一个月。其他模型如OPT和BLOOM的训练也消耗了相应的计算资源和时间。
2. 有监督微调Supervised Finetuning 在这一阶段利用少量高质量的数据集包括用户输入的提示词和对应的理想输出结果进行训练。 例子 提示词Prompt复旦大学有几个校区 理想输出复旦大学现有4个校区分别是邯郸校区、新江湾校区、枫林校区和张江校区。 使用这些有监督数据通过与预训练阶段相同的训练算法在基础模型上进行进一步训练得到有监督微调模型SFT模型。训练后的SFT模型具备初步的指令理解能力和上下文理解能力可以完成开放领域问题、阅读理解、翻译、生成代码等任务具备一定的泛化能力。 计算需求SFT模型训练需要的计算资源相对较少通常使用数十块GPU训练时间为数天。许多类似ChatGPT的模型如Alpaca、Vicuna、MOSS等都属于这一类型。
3. 奖励建模Reward Modeling 在奖励建模阶段目标是构建一个文本质量对比模型。对于同一个提示词SFT模型生成的多个输出结果的质量进行排序。 工作原理奖励模型RM模型通过二分类模型来判断输入的两个输出结果的优劣。RM模型不同于基础模型和SFT模型不能单独提供给用户使用。训练RM模型通常需要数十块GPU耗时几天。 数据需求RM模型的训练需要大规模的对比数据标注过程需耗费大量人力标注人员必须认真遵循规范以确保一致性。此阶段的难点在于如何界定RM模型的泛化边界以确保模型能够高质量地评估所有生成输出。如下图所示给出了 InstructGPT 系统中奖励模型训练样本标注示例
4. 强化学习Reinforcement Learning 在强化学习阶段利用数十万用户提供的提示词通过之前训练的奖励模型RM模型评估SFT模型对用户提示的文本补全结果的质量。这一阶段的提示词数量与有监督微调阶段相似通常在十万量级并且不需要人工提前指定每个提示词的理想回复。 工作原理通过强化学习调整SFT模型的参数使得最终生成的文本能够获得更高的奖励Reward。这一过程相较于预训练阶段所需的计算量少得多通常只需要数十块GPU经过几天即可完成训练。 效果对比根据文献强化学习在模型参数量相同的情况下通常能获得比有监督微调更好的效果。然而截止到2023年9月关于为何强化学习能够取得更好结果的原因尚未有完整和广泛认可的解释。 潜在问题Andrej Karpathy指出强化学习也存在问题例如它可能导致基础模型的熵降低从而减少模型输出的多样性。经过强化学习训练后的RL模型最终提供给用户的就是一个具备理解用户指令和上下文能力的类ChatGPT系统。 挑战由于强化学习方法的稳定性较低并且超参数众多使得模型收敛难度增加。此外RM模型的准确性对结果也有重要影响因此在大规模语言模型中有效应用强化学习仍然面临诸多挑战。 这四个阶段在数据规模、算法类型和所需资源上存在显著差异形成了一个逐步优化的模型构建流程从基础的语言理解到复杂的任务执行能力确保了模型在实际应用中的有效性和灵活性。
1.4、 本专栏后文内容安排
后文围绕大规模语言模型的构建和评估展开主要涵盖三个部分
第一部分预训练相关内容 第2章介绍大规模语言模型的基础理论包括语言模型的定义、Transformer架构和大规模语言模型框架以LLaMA的模型结构为例提供代码实例。
第二部分理解与指令遵循 第3章和第4章聚焦于大规模语言模型的预训练阶段讨论分布式训练中的数据并行、流水线并行和模型并行等技术以及Zero系列优化方法。同时介绍预训练所需的数据分布和数据预处理方法以Deepspeed为例展示如何进行大规模语言模型的预训练。 第5章和第6章探讨如何在基础模型上利用有监督微调和强化学习方法提升模型对指令的理解和人类回答能力。包括高效微调方法如Lora、Delta Tuning、有监督微调数据构造、强化学习基础及近端策略优化PPO。并以DeepSpeed-Chat和MOSS-RLHF为例展示如何训练类ChatGPT系统。
第三部分扩展应用与评价 后续章节将讨论大规模语言模型的应用场景和评价方法重点分析模型的性能和实用性。