当前位置: 首页 > article >正文

《大语言模型》学习笔记(二)

对于大语言模型,本书泛指具有超大规模参数或者经过超大规模数据训练所得到的语言模型。与传统语言模型相比,大语言模型的构建过程涉及到更为复杂的训练方法,进而展现出了强大的自然语言
理解能力和复杂任务求解能力(通过文本生成的形式)。本部分将介绍大语言模型的构建过程、扩展法则(ScalingLaw)、涌现能力(EmergentAbilities)。

大语言模型的构建过程

从机器学习的观点来说,神经网络是一种具有特定模型结构的函数形式,而大语言模型则是一种基于Transformer结构的神经网络模型。因此,可以将大语言模型看作一种拥有大规模参数的函数,它的构建过程就是使用训练数据对于模型参数的拟合过程。尽管所采用的训练方法与传统的机器学习模型(如多元线性回归模型的训练)可能存在不同,但是本质上都是在做模型参数的优化。大语言模型的优化目标更加泛化,不仅仅是为了解决某一种或者某一类特定任务,而是希望能够作为通用任务的求解器(如图1.2),为了实现这一宏大的目标,大语言模型的构建过程需要更为复杂、精细的训练方法。一般来说,这个训练过程可以分为大规模预训练和指令微调与人类对齐两个阶段。
在这里插入图片描述

大规模预训练

一般来说,预训练是指使用与下游任务无关的大规模数据进行模型参数的初始训练,可以认为是为模型参数找到一个较好的“初值点”。这一思想最早在计算机视觉领域被广泛使用,通过使用大规模的图像标注数据集合ImageNet用于初始化视觉模型的参数。在自然语言处理领域,word2vec[8]采用了类似的预训练思想,使用无标注的文本语料训练可通用的词嵌入模型;后来被ELMo[11]、BERT[13]和GPT-1 [14] 推广到训练可迁移的自然语言任务架构,逐步成为了研发大语言模型的核心技术路径。
OpenAI在GPT-2[17]的论文中,提出通过大规模文本数据的预训练实现通用任务的求解器(尽管GPT-2论文中所验证的实验还是主要以自然语言处理任务为主),并且将这一思路在GPT-3中推广到了当时最大的千亿规模。OpenAI前首席科学家IlyaSutskever在公开采访中指出大规模预训练本质上是在做一个世界知识的压缩,从而能够学习到一个编码世界知识的参数模型,这个模型能够通过解压缩所需要的知识来解决真实世界的任务。在BERT等传统预训练模型中,所采用的模型架构以及训练任务还比较多样。由于GPT系列模型的爆火,“解码器架构+预测下一个词”的有效性得到了充分验证,已经成为现有大语言模型主要采纳的技术路径。
为了预训练大语言模型,需要准备大规模的文本数据,并且进行严格的清洗,去除掉可能包含有毒有害的内容,最后将清洗后的数据进行词元化(Tokenization)流,并且切分成批次(Batch),用于大语言模型的预训练。由于大语言模型的能力基础主要来源于预训练数据,因此数据的收集与清洗对于模型性能具有重要的影响。收集高质量、多源化的数据以及对于数据进行严格的清洗是构建大语言模型关键能力的重中之重,需要大模型研发人员的高度关注。目前的开源模型普遍采用2∼3T规模的词元进行预训练,并有趋势进一步扩大这一规模。这一过程对于算力需求量极高,一般来说训练百亿模型至少需要百卡规模的算力集群(如A100 80G)联合训练数月时间(与具体的算力资源相关);而训练千亿模型则需要千卡甚至万卡规模的算力集群,对于算力资源的消耗非常惊人。
尽管整体的预训练技术框架非常直观,但是实施过程中涉及到大量需要深入探索的经验性技术,如数据如何进行配比、如何进行学习率的调整、如何早期发现模型的异常行为等。预训练过程需要考虑各种实施细节,而这些细节有很多并没有公开发表的经验可循,需要研发人员具有丰富的训练经验和异常处理能力,避免大规模训练开始以后进行回退和反复迭代,从而减少算力资源的浪费,提升训练成功的几率。大语言模型的研发看似是一个算力需求型的工程,实际上相关人才是最重要的。可以说,一个大语言模型项目的核心训练人员的能力最后会决定模型的整体水平。

指令微调与人类对齐

经过大规模数据预训练后的语言模型已经具备较强的模型能力,能够编码丰富的世界知识,但是由于预训练任务形式所限,这些模型更擅长于文本补全,并不适合直接解决具体的任务。尽管可以通过上下文学习(In-ContextLearning,ICL)等提示学习技术进行适配,但是模型自身对于任务的感知与解决能力仍然较为局限。当预训练结束后,通常需要对于大语言模型进行微调与对齐,使之更好地被用于任务求解,为人类服务。
目前来说,比较广泛使用的微调技术是“指令微调”(也叫做有监督微调,Supervised Fine-tuning, SFT),通过使用任务输入与输出的配对数据进行模型训练,可以使得语言模型较好地掌握通过问答形式进行任务求解的能力。这种模仿示例数据进行学习的过程本质属于机器学习中的模仿学习(ImitationLearning)。给定一个特定任务,虽然可能存在很多解答方式,模仿学习旨在加强对于标准答案(即师傅的示范动作)的复刻学习。一般来说,指令微调很难教会大语言模型预训练阶段没有学习到的知识与能力,它主要起到了对于模型能力的激发作用,而不是知识注入作用。与预训练相比,指令微调通常来说需要的指令实例数据规模要小的多。
除了提升任务的解决能力外,还需要将大语言模型与人类的期望、需求以及价值观对齐(Alignment),这对于大模型的部署与应用具有重要的意义。OpenAI在2022 年初发布了InstructGPT [28] 的学术论文,系统地介绍了如何将语言模型进行人类对齐。具体来说,主要引入了基于人类反馈的强化学习对齐方法RLHF(Reinforcement Learning from Human Feedback),在指令微调后使用强化学习加
强模型的对齐能力。在RLHF算法中,需要训练一个符合人类价值观的奖励模型(Reward Model)。为此,需要标注人员针对大语言模型所生成的多条输出进行偏好排序,并使用偏好数据训练奖励模型,用于判断模型的输出质量。由于强化学习需要维护更多的辅助模型进行训练,通常来说对于资源的消耗会多于指令微调,但是也远小于预训练阶段所需要的算力资源。目前还有很多工作试图通过消除奖励模型的使用,或其他使用SFT方式来达到与RLHF相似的效果,从而简化模型的对齐过程。
经历上述两个过程后,大语言模型就能够具备较好的人机交互能力,通过问答形式解决人类所提出的问题。这个构建过程需要大量的算力资源支持,也需要具有良好洞察力和训练经验的研发人员进行相关技术路线的设计与执行。

扩展法则

大语言模型获得成功的关键在于对“规模扩展”(Scaling)的充分探索与利用。在实现上,大语言模型采用了与小型预训练语言模型相似的神经网络结构(基于注意力机制的Transformer架构)和预训练方法(如语言建模)。但是通过扩展参数规模、数据规模和计算算力,大语言模型的能力显著超越了小型语言模型的能力。有趣的是,这种通过扩展所带来的性能提升通常显著高于通过改进架构、算法等方面所带来的改进。因此,建立定量的建模方法,即扩展法则(ScalingLaw),来研究规模扩展所带来的模型性能提升具有重要的实践指导意义。

KM 扩展法则

2020 年,Kaplan等人[15](OpenAI团队)首次建立了神经语言模型性能与三个主要因素——模型规模(𝑁)、数据规模(𝐷)和计算算力(𝐶)之间的幂律关系(Power-Law Relationship)。
在这里插入图片描述
这里,𝐿(·) 表示用以nat1为单位的交叉熵损失。其中,𝑁𝑐、𝐷𝑐和𝐶𝑐是实验性的常数数值,分别对应于非嵌入参数数量、训练数据数量和实际的算力开销。由上述公式可见,模型性能与这三个因素之间存在着较强的依赖关系,可以近似刻画为指数关系。上述公式为规模扩展效应提供了一种定量的普适建模方法。

Chinchilla 扩展法则

Hoffmann 等人[22](DeepMind团队)于2022年提出了一种可选的扩展法则,旨在指导大语言模型充分利用给定的算力资源进行优化训练。通过针对更大范围的模型规模(70M到16B参数)和数据规模(5B到500B词元)进行实验,研究人员拟合得到了另一种关于模型性能的幂律关系:
在这里插入图片描述
Chinchilla 扩展法则这项研究的意义并不在于给出了资源在数据规模与模型规模上的具体分配方案,而是首次形式化指出了之前的预训练工作可能忽视了训练数据的规模扩展。

涌现能力

在现有文献中,大语言模型的涌现能力被非形式化定义为“在小型模型中不存在但在大模型中出现的能力”,具体是指当模型扩展到一定规模时,模型的特定任务性能突然出现显著跃升的趋势,远超过随机水平。,涌现能力的提出有助于使得公众认识到大语言模型所具有的能力优势,能够帮助区分大语言模型与传统预训练语言模型之间的差异。在本书中,涌现能力用来指代大语言模型所具有的典型能力,并不关注该能力是否存在于小模型中。

代表性的涌现能力

(1)上下文学习(In-context Learning, ICL). 上下文学习能力在 GPT-3 的论文中被正式提出。具体方式为,在提示中为语言模型提供自然语言指令和多个任务示例(Demonstration),无需显式的训练或梯度更新,仅输入文本的单词序列就能为测试样本生成预期的输出。
(2)指令遵循(Instruction Following). 指令遵循能力是指大语言模型能够按照自然语言指令来执行对应的任务。为了获得这一能力,通常需要使用自然语言描述的多任务示例数据集进行微调,称为指令微调(InstructionTuning)或监督微调(Supervised Fine-tuning)。通过指令微调,大语言模型可以在没有使用显式示例的情况下按照任务指令完成新任务,有效提升了模型的泛化能力。相比于上下文学习能力,指令遵循能力整体上更容易获得,但是最终的任务执行效果还取决于模型性能和任务难度决定。
(3)逐步推理(Step-by-stepReasoning). 对于小型语言模型而言,通常很难解决涉及多个推理步骤的复杂任务(如数学应用题),而大语言模型则可以利用思维链(Chain-of-Thought, CoT)提示策略来加强推理性能。具体来说,大语言模型可以在提示中引入任务相关的中间推理步骤来加强复杂任务的求解,从而获得更为可靠的答案。

涌现能力与扩展法则的关系

扩展法则和涌现能力提供了两种不同观点来理解大模型相对于小模型的优势,但是刻画了较为不同的扩展效应趋势。扩展法则使用语言建模损失来衡量语言模型的整体性能,整体上展现出了较为平滑的性能提升趋势,具有较好的可预测性,但是指数形式暗示着可能存在的边际效益递减现象;而涌现能力通常使用任务性能来衡量模型性能,整体上展现出随规模扩展的骤然跃升趋势,不具有可预测性,但是一旦出现涌现能力则意味着模型性能将会产生大幅跃升。由于这两种观点反映了不同的模型性能提升趋势(持续改进v.s.性能跃升),可能在一些情况下会导致不一致的发现与结论。
目前还缺少对于大语言模型涌现机理的基础性解释研究工作。与这一问题较为相关的研究叫做“顿悟”(Grokking),是指训练过程中的一种数据学习模式:模型性能从随机水平提升为高度泛化。在未来研究中,还需要更为深入的相关讨论,才能够有效解释大模型的涌现机理。


http://www.kler.cn/a/590704.html

相关文章:

  • 【网页】CSS原子化+变量尝试
  • Redis 服务器:核心功能与优化实践
  • 基于Spring Boot的红色革命文物征集管理系统的设计与实现(LW+源码+讲解)
  • DHCP中继实验
  • prototype和proto的区别
  • 本地部署DeepSeek-R1(Dify升级最新版本、新增插件功能、过滤推理思考过程)
  • Java中接口隔离原则简介和代码举例
  • 论文速递| ECG去噪新方法:小波+ CNN提升可穿戴精度
  • CMAKE学习系列(002)--- 如何添加宏定义
  • vulnhub靶场之loly靶机
  • 5-26 黑白照片上色-Recolor
  • Java学习------static、final、this、super关键字
  • PostgreSQL 多数据库集簇配置及多数据库复制方法【流程+代码实例】
  • Redis,从数据结构到集群的知识总结
  • 基于javaweb的SpringBoot智能相册管理系统图片相册系统设计与实现(源码+文档+部署讲解)
  • 分布式锁: 并发时,redis如何避免删别人的锁
  • 如何用DeepSeek进行项目管理?AI重构项目全生命周期的实践指南
  • C51 Proteus仿真实验17:数码管显示4×4键盘矩阵按键
  • 力扣No.376.摆动序列
  • 【从零开始学习计算机科学】设计模式(一)设计模式概述