本文 2W8000 字,建议转发收藏,空闲时间再看,确实很长~ 点击文末阅读原文 跳转网页端查看更方便,网站稍微有点慢
LLM 架构专栏
大模型架构专栏文章阅读指南
1. AI 智能体,颠覆还是赋能?一文读懂!
2. 1W8000 字 解锁 AI 高效运作密码:工作流与智能体如何协同?
3. 万字深度剖析 AI 代理:类型、应用及优势与局限全解析
4. 1W5000 字 深度剖析大模型 Agent 框架
5. Agent 系列 1W 字用 Python 从零搭建 AI 智能体
知乎【柏企】
公众号【柏企阅文】
1.1 GPT-1:生成式预训练范式的创始人
在自然语言处理领域,基于 LSTM 和 RNN 的深度学习方法在分类和词性标注等任务上取得了进展,但仍面临五大核心挑战:
- 标注数据依赖:浅层模型严重依赖大量标注数据,低资源语言和复杂推理任务的标注成本很高。
- 语义捕捉局限:传统词嵌入等迁移方法只能传递单词级信息,无法有效捕获句子和段落级语义及长距离依赖关系。
- 架构设计难题:早期迁移学习需要为每个下游任务设计特定架构,导致参数膨胀和系统复杂性增加。
- 输入结构冲突:预训练模型和目标任务(如问答对、文本蕴涵对)之间的输入结构存在冲突,需要进行复杂的结构调整。
- 预训练目标差异:无监督预训练目标(如语言建模、机器翻译等)对下游任务的影响差异很大。
为了解决这些问题,GPT-1 提出了创新的“预训练+微调”范式。其理念是先在未标记数据上训练生成语言模型,然后针对特定任务进行微调。它解决的监督任务包括自然语言推理、问答和常识推理、语义相似度判断以及分类。
通过使用无监督学习作为监督模型的预训练目标,这种方法被称为生成预训练(GPT)。在自然语言处理领域,GPT-1 代表了将无监督预训练与监督微调相结合以提高语言相关任务性能的重要里程碑。
1.1.1 模型构建
GPT-1 采用基于 Transformer 的 Decoder-Only 架构,由 12 层改进的 Transformer 解码器堆栈组成。它移除了 Encoder-Decoder 注意力子层,保留了屏蔽多头注意力(维度为 768 和 12 头)和 Position-wise Feed Forward(隐藏层维度为 3072)。
这种结构可以处理多达 512 个标记的连续序列,关键技术组件包括动态掩码机制、分层表示以及创新的位置编码。
1.1.2 无监督的预训练
在无监督预训练期间,GPT-1 的目标函数使用自回归语言建模。给定一个未标记的序列,其优化目标(优化器是 SGD)是最大化以下可能性:
1.1.3 监督微调
得到无监督预训练模型后,将其应用于有监督任务。对于标记数据集 C,每个实例有 m 个输入标记:{x1,x2,…,xm}和一个标签 y。首先,这些标记被输入预训练模型以获得最终的特征向量 $h_{l}^{m}$。接下来,通过一个全连接层,将获得预测结果 y。
监督微调的损失如下所示:(
GPT-1 没有直接使用 $L_{2}(C)$,而是使用结合 $L_{2}(C)$ 和 $L_{1}(u)$ 的联合损失。使用权重 lambda(通常设置为 0.5)来调整这两个损失的贡献。
1.1.4 特定于任务的输入转换
对于文本分类,可以直接微调模型。但问答或文本蕴涵等任务具有结构化输入,需要进行修改。
GPT-1 采用遍历风格的方法,将结构化输入转换为有序序列以供预训练模型处理,避免跨任务进行广泛的架构更改。具体的任务转换如下:
- 文本分类:将起始和结束标记添加到原始序列的两端,输入到变换器中得到特征向量,最后通过全连接得到预测的概率分布。
- 文本蕴涵:连接前提 p 和假设 h 标记序列,中间有一个分隔符标记($)。
- 相似性:修改输入以包含两个可能的句子顺序(带有分隔符)并独立处理每个。两个结果序列表示 $h_{l}^{m}$ 在输入到线性输出层之前按元素添加。
- 问答和常识推理:给定一个上下文文档 z、一个问题 q 和可能的答案{a{k}},连接每个答案的[z;q;$;a{k}]。使用模型独立处理这些序列,并通过 softmax 层进行归一化,以获得答案的输出分布。
1.1.5 GPT-1 的数据集
GPT-1 利用了 BooksCorpus 数据集,该数据集包含 7000 多本独特的未发表书籍。选择这个数据集的主要原因有两个:一是数据集具有更长的上下文依赖关系,有助于模型学习更多的长期依赖关系;二是这些书籍未发表,很难在下游数据集中遇到,更有效地验证模型的泛化能力。
1.1.6 无监督训练的参数设置
GPT-1 采用字节对编码(BPE),共 40000 个字节对,字编码长度为 768,位置编码也需要学习。变压器共 12 层,每个变压器块有 12 个头,位置编码长度为 3072。采用注意、残差、Dropout 等机制进行正则化,丢弃比为 0.1,激活函数为 GLEU。训练批量大小为 64,学习率为 2.5e-4,序列长度为 512,序列历元为 100,模型参数数为 117 亿。
1.1.7 监督微调的参数设置
来自无监督部分的模型也被用于微调,训练纪元数为 3,学习率为 6.25e-5,这表明该模型在无监督部分学习了大量有用的特征。
1.1.8 GPT-1:卓越性能和核心微分器
在监督学习领域,GPT-1 在 12 个任务中的 9 个任务中优于最先进的模型,展示了其强大的实力。在零概率场景中,与基于 LSTM 的模型相比,GPT-1 表现出更大的稳定性。随着训练迭代次数的增加,其性能稳步提高,凸显了卓越的泛化能力。
GPT-1 成功的关键在于利用 Transformer 学习词向量,为下游任务提供了坚实的基础。在训练下游任务时,GPT-1 通常只需要最小的微调就可以获得出色的结果,节省了计算资源,展示了模型的适应性。
GPT-1 在任务转换中的独特方法也使其与众不同。通过将四个自任务转换为序列+注释形式,GPT-1 保持了一致的 Transformer 结构,促进了模型处理各种任务的能力,有助于其在一系列 NLP 场景中的卓越性能。不过,GPT-1 在非微调任务上的泛化能力比监督微调任务低得多,更像是特定领域的专家,而非成熟的通用语言模型。
1.2 GPT-2 深度剖析:从多任务学习到零样本能力的突破
GPT-2(生成预训练变压器 2)由 OpenAI 于 2019 年提出,旨在验证“无监督多任务学习”的可行性。基于 GPT-1 和 BERT 的研究,GPT-2 通过扩大模型大小(参数)和数据集,探索语言模型无需微调即可直接执行下游任务的能力。其核心假设是,当模型容量和数据量足够大时,语言模型可以通过零样本学习覆盖各种监督任务,成为“通用问题解决者”。
1.2.1 GPT - 2 的数据集
GPT-2 使用的数据集名为 WebText,文章来源于 Reddit 上高度点赞的内容,总计约 800 万篇文章,数据量约为 40GB。为避免与测试集冲突,与维基百科相关的文章已从该数据集中删除。在构建这个更大的数据集时,作者使用了 Dragnet 和报纸等内容提取器。同时,模型的参数从 1 亿(110M)扩展到 15 亿(1.5B),为模型训练提供了更丰富、更高质量的数据支持。
1.2.2 零样本学习
GPT-2 最显著的变化是放弃了以前的“无监督预训练+监督微调”模型,创新地引入了零样本技术。预训练后,大规模模型可以在不改变其参数的情况下完成各种任务。零样本意味着当使用预训练模型进行下游任务时,不需要额外的注释信息,模型参数保持不变。
从 GPT1 到 GPT2 的零样本过渡中,GPT1 在为下游任务进行微调时会引入许多特殊符号,模型需要在微调过程中逐渐识别这些符号。而零样本学习中,由于没有额外的下游任务训练,模型无法动态学习这些特定任务的构造。因此,在为下游任务构建输入时,不应引入特殊符号,整个下游任务的输入应与预训练时看到的文本形式相同,使其更像自然语言。
从 Zero-shot 到 Prompting 的演变过程中,由于输入形式应更像自然语言,模型应能通过自然语言理解要执行的任务。实现 Zero-shot 学习的前提是不需要为模型设计特定的下游任务输入结构,只提供指令(即提示)即可。OpenAI 推测,当数据量足够大,模型足够强大时,语言模型会学习推断并执行以自然语言呈现的任务,以更好地预测下一个单词(这是 ICL 的雏形)。GPT2 实现了一个更通用的系统,支持多个 NLP 任务的学习,实现了 Zero-Shot。不同任务的一些提示如下表所示:
1.2.3 模型构建
GPT-2 的模型设计基于 GPT-1 的变换。与 GPT-1 相比,GPT-2 的架构有以下区别:
- 层归一化调整:在每个子块的输入中添加层归一化,类似于 ResNet;在自我关注结束时还添加了额外的图层归一化。
- 残差层权重初始化:残差层的权重通过乘以 $1/\sqrt{N}$(N 是残差层的数量)来初始化。
- 词汇量和上下文大小扩展:词汇量扩大到 50257 个单词,上下文大小从 512 个令牌增加到 1024 个令牌。
- 批量大小:使用的批量大小为 512。
- 数据和模型调整:采用多任务和大规模数据,对于零样本学习,修改序列使不同任务的输入序列与训练时看到的文本相似;将后范数改为前范数,并在模型的最后一个自关注层之后添加了一个额外的层归一化。
任务 2 和任务 3 的表格显示了四种不同的模型大小,以及它们对应的模型层数和模型在不同数据集上的性能。
1.2.4 贡献
GPT-2 最显著的贡献是验证了用海量数据和大量参数训练的词向量模型无需额外训练即可转移到其他类型的任务中,展示了零样本学习能力。然而,它在这方面的表现相当平庸。GPT-2 表明,随着模型容量和数据量的增加,其潜力仍有进一步挖掘的空间,这一概念也导致了 GPT-3 的出现。
1.3 GPT-3 释放:从元学习到无与伦比的多功能
GPT-3 是真正席卷全球的 GPT 系列中的一代。它以更多样化的功能超越了前辈的局限,能够在广泛的应用程序中生成高度流畅和逼真的文本,包括文本分析和摘要、文案和代码生成。发布后不久,GPT-3 引发了全球热潮,催生了无数应用程序和初创公司。
GPT-3 开发背后的动力是解决低效率问题。GPT 模型认为,使用 Transformer 解码器和大量未标记样本对语言模型进行预训练,然后对子任务进行少量注释样本的微调,可以显著提高性能。GPT-2 更进一步,表明在不提供子任务相关训练样本的情况下,足够大的预训练模型可以理解自然语言需求并做出预测。但不幸的是,GPT-2 的性能不尽如人意,有效性也很低。
零样本的概念很吸引人,但即使是人类也需要样本来学习一项任务,而机器通常需要大量标记样本进行微调。因此,问题出现了:预训练的语言模型能否仅用几个样本快速学习下游任务?在 GPT-3 中,少样本学习仅涉及在预测期间提供几个示例,而不需要微调网络。GPT-2 讲述了零样本多任务学习的故事,GPT-3 则通过元学习和上下文学习做到了这一点。
1.3.1 GPT-3 的数据集
GPT-3 在五个不同的语料库上进行训练:低质量的 Common Crawl 和高质量的 WebText2、Books1、Books2 和 Wikipedia。GPT-3 根据这些数据集的质量水平为其分配不同的权重,在训练期间,权重较高的数据集更有可能被采样。
1.3.2 模型构建
GPT-3 继承了 GPT-2 的结构,但大大增强了其网络容量。它具有 96 层多头 Transformer,具有 96 个头,字向量长度为 12,888,并将上下文窗口大小扩展到 2,048 个标记。此外,它利用了交替的密集和局部带状稀疏注意力,架构还结合了稀疏 Transformer,以处理高维、稀疏和长序列数据,减少计算负载,提高计算效率。
GPT-3 的批量大小达到 320 万,这样大的值有几个原因:一是大模型不太容易过度拟合,使用更大、噪音更小的批量几乎没有负面影响;二是训练大型模型时经常使用多台机器进行分布式计算,数据并行;三是虽然增加批量会提高梯度计算的时间复杂度,但较大的批量通常会提高模型的训练效率和性能。
只需零样本或少样本,GPT-3 就能在下游任务中表现出色。除了常见的 NLP 任务之外,GPT-3 在极具挑战性的任务中表现出非凡的能力,比如制作与人类编写的文章无法区分的文章,甚至编写 SQL 查询、React 或 JavaScript 代码。这些强大的能力依赖于 GPT-3 惊人的 1750 亿参数、45TB 的训练数据和高达 1200 万美元的训练成本。
1.3.3 元学习
随着模型中参数数量的不断增加,参数训练和相应的超参数设置成为重大挑战。元学习的目标是让机器通过自动学习超参数来自主设计学习策略,而不是依赖于手动预设的算法。其过程与传统机器学习在训练数据形式、学习目标等方面有本质区别。
传统机器学习使用单个任务的数据集,而元学习的训练数据是多个任务的组合。传统机器学习的目标是“学习如何解决问题”,元学习的目标是“学习如何学习解决问题”。
MAML(与模型无关的元学习)的核心目标是识别一组元初始化参数,这些参数起到“通用起点”的作用。MAML 通过内环和外环的交替优化来实现元初始化的学习,与传统预训练在优化目标、数据需求和更新机制等方面存在差异。在实际应用场景中,MAML 在少样本学习和动态任务环境中表现出色。
1.3.4 语境学习
在 GPT-3 中,上下文学习(ICL)作为元学习的内环,而基于随机梯度下降(SGD)的预训练构成外环。外环的 SGD 预训练使 GPT-3 能够学习通用语言模式和任务适应性,内环的 ICL 在推理阶段通过注意力机制从输入中动态提取示例信息,相当于在预训练参数的基础上进行隐式微调。
数学上,Transformer 的注意力机制具有梯度下降的双重形式,ICL 过程中注意力权重的计算相当于生成“元梯度”,通过前向传播隐式调整模型的预测方向。OpenAI 采用了少样本学习、一次性学习和零样本学习三种方法来评估 GPT-3 中的 ICL,但 ICL 也存在输入窗口长度有限、无法存储先前输入信息等局限性。
1.3.5 性能和限制
自 GPT 系列问世以来,从 GPT-1 到 GPT-3 一直采用 Transformer 架构,没有突破性的结构创新。GPT-3 通过大量参数从大量数据中学习,依靠 Transformer 强大的拟合能力实现模型收敛,但模型分布受训练数据集分布的影响。
在性能方面,GPT-3 在大量语言模型数据集上优于绝大多数零样本或少样本的最先进方法,在许多复杂 NLP 任务中甚至超过了微调后的最先进方法。它在其他领域也展示了惊人的能力,如进行数学加法、生成文章和编写代码等。
尽管 GPT-3 取得了显著成就,但它也不是万能的。对于超出训练数据分布或与其冲突的任务,GPT-3 难以提供令人满意的结果,生成长文本的能力也相对较弱。
1.4 InstructGPT & ChatGPT
ChatGPT,堪称 GPT-3 的进阶之作,它成功攻克了长期以来困扰 GPT-3 及类似大型语言模型的“对齐”难题。以往的传统模型尽管在文本生成方面能力不俗,但生成的内容常常难以契合人类的期望。它们基于海量互联网文本数据进行训练,主要聚焦于预测序列中的下一个标记,然而在实际应用场景中却屡屡碰壁。就拿医疗咨询聊天机器人来说,一个未“对齐”的模型可能会给出不准确或毫无根据的建议。
ChatGPT 借助人类反馈强化学习(RLHF)成功突破了这些局限。这一创新的训练方式将人类的偏好融入到学习过程中,有效减少了无用、错误或有偏见的输出。通过 RLHF,ChatGPT 能够生成更可靠、贴合语境且友好的回复,使其在从教育到内容创作等广泛领域中,成为更加实用和值得信赖的工具。
在探讨 ChatGPT 时,InstructGPT 是无法绕过的重要存在。从某种意义上讲,ChatGPT 的核心便是 InstructGPT。因此,在这里我们将一同介绍 InstructGPT 和 ChatGPT。InstructGPT 和 ChatGPT 的架构均源于 GPT-3,它们的训练过程主要分为三个关键步骤。首先,利用预先收集的 SFT 数据集对 GPT-3 模型进行监督微调(SFT),这一步有助于模型适应特定任务和数据特点,优化其基本的回复能力。例如,通过在富含各种人类语言交互的数据集上进行微调,模型能够逐渐生成更符合语境的文本。
随后,借助人工标注(OpenAI 聘请了约 40 名承包商进行标注)的比较数据来训练奖励模型(RM)。RM 就像是一个质量评估员,根据模型输出与人类期望的契合程度,为不同的输出打分。以客户服务场景为例,RM 可以判断对客户查询的回复是否有用、准确且富有同理心。
最后,近端策略优化(PPO)算法登场。在强化学习中,PPO 将 RM 的分数作为优化目标,对 SFT 模型进行微调。RM 和 SFT 模型在强化学习中的这种迭代过程,促使模型不断提升性能。通过 PPO,模型能够依据获得的奖励调整生成策略,逐步趋向于输出更理想的内容 。
1.4.1 SFT
数据收集
ChatGPT 开发的首要步骤是收集用于训练监督策略模型的数据。为此,需要精心挑选一系列提示词,然后注释人员按照特定要求写下预期输出。ChatGPT 的提示词来源主要有两种,一部分由注释人员或研究人员直接编写,另一部分则来自 OpenAI 的 API 请求,这些请求最初由 GPT-3 的用户发起。尽管这个数据收集过程既耗时又耗费成本,但最终得到的数据集质量很高,虽然规模相对较小,大约包含 12000 到 15000 个数据点。而这个数据集正是微调预训练语言模型的基石。
型号选择
ChatGPT 的开发者做出了一个明智的策略性决策,他们选用了 GPT-3.5 系列中的预训练模型,而非直接对原始的 GPT-3 模型进行微调。所采用的基线模型是最新版本的 text-davinci-003,这是一个在程序代码上经过微调的 GPT-3 模型。为打造像 ChatGPT 这样的通用聊天机器人,开发者选择微调“代码模型”而非纯文本模型,目的在于增强模型处理各类任务的能力,尤其是与逻辑推理和代码相关的语言理解任务。
1.4.2 RM
这一步的核心目标是直接从数据中学习目标函数。该函数用于对监督微调(SFT)模型的输出进行评分,以此体现这些输出对人类的符合程度,强烈反映了所选人类注释者的特定偏好以及他们共同遵循的标准。最终,这个过程会构建出一个从数据中模拟人类偏好的系统。
工作原理
- 提示选择和输出生成:先选定一组提示词,SFT 模型针对每个提示词生成多个输出(数量在 4 到 9 之间)。
- 注释者的输出排名:注释人员将这些输出按照从优到劣的顺序进行排列,由此产生一个新的标记数据集,其规模大约是用于 SFT 模型精确数据集的 10 倍。
- RM 模型训练:利用这个新数据集来训练奖励模型(RM)。RM 将 SFT 模型的输出作为输入,并按照偏好程度进行排序。
对于注释者而言,对输出进行排序比从头开始创建注释要容易得多,这种方式在流程上具有更高的可扩展性。在实际操作中,选定的提示词数量大约在 30000 - 40000 之间,涵盖了不同排序输出的组合,这不仅丰富了数据集,还提升了模型生成更全面、更贴合语境回复的能力。
1.4.3 PPO
PPO 的核心原则
PPO 是 OpenAI 团队于 2017 年提出的一种强化学习中的在线策略算法,其主要目的是通过限制策略更新的幅度,解决传统强化学习算法(如信任区域策略优化 TRPO)在稳定性和效率方面的问题。例如,在策略更新时,PPO 运用剪裁机制,将新旧策略之间的差异控制在 0.8 - 1.2 倍的范围内(当 ϵ = 0.2 时),避免因策略剧烈变化而导致性能下降。
PPO 采用了多种关键技术机制,其中之一是信任区域优化,它用代理目标函数替代传统的策略梯度目标,通过剪裁或 KL 散度惩罚来约束策略更新的范围,剪裁函数公式为:
另一个重要机制是重要性采样,PPO 通过调整旧数据的权重,将在线策略数据收集转变为离线策略训练,实现了历史数据的重复利用,显著提高了样本效率 ,具体公式为:
这样一来,就无需在每次更新策略时都收集新数据。
PPO 在培训过程中的应用
在训练过程中,模型的初始化是至关重要的第一步。PPO 模型借助 SFT 模型进行初始化,从而继承其基本的语言生成能力。而值函数则由 RM 模型进行初始化,用于计算响应质量分数(奖励)。
训练所处的环境是一个会生成随机提示的“Bandit 环境”。比如,它可能随机生成 1000 个问题模板来模拟用户交互场景。对于每个提示,由 SFT 初始化的 PPO 模型生成回复,然后 RM 模型计算这些提示和回复对应的奖励,以此评估回复的质量。
为防止 RM 模型过度优化,SFT 模型会给每个标记添加一个 KL 惩罚因子,总奖励公式为:
这种 KL 惩罚机制确保 PPO 优化后的模型不会过度偏离 SFT 模型原有的语言生成能力。
PPO 中的优势函数是依据 RM 输出的即时奖励 $r_{t}$ 和 Critic 网络估计的长期价值 $V(s_{t})$ 来计算的,公式为:
其中折扣因子 γ 通常设置在 0.95 - 0.99 之间,用于平衡当前和未来的奖励。
在训练期间,策略网络和值网络会进行迭代更新。策略网络使用 Adam 优化器进行更新,学习率一般设置在 1e - 5 ~ 5e - 5 之间;值网络则利用均方误差(MSE)计算值函数损失 ,
同样使用 Adam 优化器以相同的学习率进行更新。
PPO 在模型对齐中的优势
PPO 在模型对齐方面具备诸多优势。在稳定性上,相较于需要计算二阶导数的 TRPO,PPO 仅需进行一阶优化,实现复杂度降低了 60%。实验表明,在语言模型训练中,PPO 的收敛成功率比 TRPO 高 42%。
在样本效率方面,借助重要性采样机制,PPO 在相同数据量的情况下,提升奖励的速度比传统策略梯度快三倍以上。
在大规模模型训练(如 ChatGPT)中,PPO 的 KL 惩罚机制能够将生成内容的语义偏差控制在 15%以内,大幅降低生成有害内容的概率。
PPO 培训过程中的细节
- 初始化 - 政策网络(演员)
输入:SFT 模型(GPT-3.5 的 SFT 版本)
输出:初始策略网络 - 价值网络(评论家)
输入:奖励模式(RM)
输出:初始值网络
RM 模型完成人类偏好数据训练后,奖励分数被限制在[-1,1]区间内。 - 环境设置
输入:随机提示生成器(强盗环境)
输出:提示集
(例如,1000 个随机问题模板) - 示例:
- 数据收集
- 计算实时奖励
输入:RM 模型(此处是 RM 模型而非值网络,RM 的参数在 PPO 中不更新)、Critic 模型、响应 $a_{t}$
输出:实时奖励 $r_{t}=R_{RM}(s_{t},a_{t})$,状态值 $V_{phi}(s_{t})$
例如:在训练初期,Critic 模型尚未完全训练好,值估计可能不准确。因此,初始状态值可能通过随机初始化并继承 RM 的参数来获取。 - 计算优势函数
- 优化阶段
- 价值网络优化阶段
- 迭代与收敛
1.4.4 ChatGPT 的性能评估
由于 ChatGPT 模型是基于人工标注的输入进行训练的,其评估核心也围绕人类提供的数据展开。具体来说,注释人员会对模型输出的质量进行评分。为避免模型过度拟合训练阶段注释人员的判断,测试集选用了来自 OpenAI 其他客户、且未在训练数据中出现的提示词。
该模型主要依据三个标准进行评估:
- 有用性:评估模型遵循用户指令并推断用户意图的能力。
- 真实性:判断模型在封闭领域任务中生成虚构事实的倾向。
- 无害性:要求注释人员评估模型输出是否恰当,是否包含歧视性内容。
此外,还对模型在传统 NLP 任务(如问答、阅读理解和总结)的零样本学习性能进行了评估。开发者发现,在部分任务中,模型的表现不如 GPT-3,这就是所谓的“对齐税”。基于人类反馈强化学习(RLHF)的对齐过程,在某些任务上是以牺牲性能为代价的。不过,通过一种名为预训练混合的技术,可以显著缓解这些数据集上的性能衰退。在通过梯度下降训练 PPO 模型时,会混合 SFT 模型和 PPO 模型的梯度来计算梯度更新。
ChatGPT 的缺点
这种方法存在一个明显的局限性,即在使语言模型与人类意图对齐的过程中,用于微调模型的数据会受到多种复杂主观因素的影响。这些因素主要包括生成演示数据的人类注释者的偏好、设计研究并编写标签指令的研究人员的影响,以及开发者选择的提示词或 OpenAI 客户提供的提示词的选择偏差。注释者的偏见在 RM 模型的训练和模型评估中都有所体现。ChatGPT 的开发者也承认,参与训练过程的注释者和研究人员可能无法完全代表语言模型的所有潜在终端用户。
除了这种“内在”的局限性,该方法还存在其他一些缺点和问题亟待解决。目前缺乏对照研究,已报告的结果只是将最终 PPO 模型的性能与 SFT 模型进行基准比较,这可能会产生误导。没有对照研究,就很难确定性能提升是否归因于 RLHF。这类研究需要投入与 RM 模型训练注释相同的时间,创建一个更大的、精心策划的高质量监督调优数据集,以便客观衡量 RLHF 方法相较于监督方法在性能上的提升。从本质上讲,缺乏此类研究使得一个基本问题悬而未决:RLHF 在对齐语言模型方面是否真的表现出色?
另一个问题是比较数据中缺乏事实依据。注释者经常对模型输出的排名存在分歧,从技术层面看,这在没有任何事实标准的情况下,为比较数据增添了显著的方差。此外,人类偏好并非一成不变,RLHF 方法却将其视为同质且静态的,假定所有人都具有相同的价值观,这显然并不准确。尽管存在许多共同的价值观,但人类在许多问题上的认知是多样的。目前也缺乏对 RM 模型提示稳定性的测试,没有实验表明 RM 模型对输入提示变化的敏感性。例如,如果两个提示在语法上不同但语义等效,RM 模型能否在模型输出排名上显示出显著差异?换句话说,提示的质量对 RM 模型有多重要?在 RL 方法中,模型有时会学会操纵自己的 RM 模型以达到期望的结果,从而导致“过度优化策略”。这可能会使模型重新生成某些模式,由于一些未知原因,这些模式会使 RM 模型给出高分。ChatGPT 通过在 RM 函数中使用 KL 惩罚项来解决这一问题。
尽管 ChatGPT 取得了显著成就,但它仍存在一些表现不佳的方面。例如,它可能会重复某些短语,难以准确辨别事实。此外,目前 ChatGPT 在推理阶段并未连接外部信息。尽管它已经远超天猫精灵和小爱等之前的语音助手类模型,在该领域实现了重大飞跃,但这些局限性表明它仍有改进的空间。
文本、图像、音频甚至视频输入,大幅提高了响应速度,支持更自然流畅的实时对话。
1.5 GPT4
自 2023 年 3 月发布以来,GPT-4 在大型模型领域掀起了一场革命。它凭借卓越的语言理解和生成能力、先进的学习与推理能力,以及开创性的多模态功能(涵盖图像和音频分析),成为大型模型发展历程中的一座里程碑,引领我们迈入了多模态 AI 时代。而 2024 年 5 月推出的 GPT-4o,其中“o”代表“omni”(全方位),并非全新创造,而是基于 GPT-4 的坚实基础进行的全面进化。GPT-4o 继承了 GPT-4 的强大能力,并在此基础上实现了质的飞跃,具备更强大的多模态处理能力,能同时处理文本、图像、音频乃至视频输入,大幅提升了响应速度,支持更自然流畅的实时对话。
1.5.1 GPT-4 可能的改进
自 GPT-3 发布后,OpenAI 对后续模型(包括 GPT-4)采取了闭源策略,因此有关 GPT-4 模型架构、训练数据等方面的详细技术论文极为稀缺。不过,基于各机构的分析和泄露的信息,我们还是能推断出 GPT-4 的一些关键改进和架构决策。接下来为大家全面且专业地梳理这些进展。
- 模型架构和规模:普遍认为 GPT-4 是混合专家(MoE)模型,这与 GPT-3 的密集架构差异显著。据业内人士透露,GPT-4 由 16 个专家网络构成,每个专家网络约含 1110 亿个参数,总计约 1.8 万亿参数,规模超 GPT-3(1750 亿参数)十倍有余 。MoE 架构使 GPT-4 在推理时能动态将令牌路由至特定专家模型,降低计算成本的同时维持高性能。每次前向传递(生成一个令牌)仅激活约 2800 亿参数,需约 560 万亿次浮点运算(TFLOPs)的计算能力。相比之下,同等规模的密集模型每次前向传递则需 1.8 万亿参数和 3700 万亿次浮点运算。
- 训练基础设施和数据集:GPT-4 的训练动用了包含 13 万亿令牌的海量数据集,且涉及多个训练轮次的重复计算。其中,文本数据训练 2 轮,代码数据训练 4 轮。此外,还融入了 ScaleAI 和内部提供的数百万行指令微调数据。训练过程在 90 - 100 天内使用 25000 个 A100 GPU,利用率为 32% - 36%。总计算成本约 2.15×10²⁵ 次浮点运算,云计算费用估计约 6300 万美元。若使用 H100 GPU,训练时间可缩至 55 天,成本降至 2150 万美元。
- 并行性和推理:为驾驭 GPT-4 的庞大模型规模,OpenAI 采用了先进的并行策略。模型运用 8 路张量并行和 15 路流水线并行技术,并借助 NVLink 和 ZeRo Stage 1 优化。推理时,GPT-4 在 128 个 GPU 组成的集群上运行,每个节点处理约 1300 亿参数。由于集群规模大且利用率低,其推理成本是 GPT-3 Davinci 模型的 3 倍。以 8k 上下文版本为例,在 A100 GPU 上推理成本约为每 1000 个令牌 0.0049 美元,在 H100 GPU 上为 0.0021 美元。
- 多模态和视觉适应:GPT-4 具备多模态功能,可处理文本和视觉输入。其视觉编码器与文本编码器相互独立,采用类似 Flamingo 架构的交叉注意力机制,这为原本庞大的 1.8 万亿参数模型又增添了更多参数。视觉模型在完成基于文本的预训练后,在约 2 万亿令牌上进行微调。训练数据涵盖渲染的 LaTeX/文本、网页截图以及从 YouTube 视频采样的帧,并借助 OpenAI 的 Whisper 模型获取转录文本。这种多模态能力让 GPT-4 能够执行诸如读取网页内容、从图像和视频中转录内容等任务。
- 路由和效率:相较于文献中讨论的复杂算法,GPT-4 的 MoE 路由机制相对简洁。对于每个令牌,选取两个专家模型,模型共享约 550 亿参数用于注意力计算。虽然理论上增加专家数量(如 64 - 128 个)可能提升性能,但 OpenAI 选择 16 个专家,以平衡泛化能力和收敛性。这种保守选择反映出将 MoE 模型扩展到如此大规模所面临的挑战。
- 上下文长度和批量大小:预训练期间,GPT-4 的上下文长度(seqlen)为 8k 令牌,32k 上下文版本则是在预训练后从 8k 模型微调而来。训练时批量大小逐渐增至 6000 万令牌,不过由于 MoE 架构,每个专家模型每批仅处理 750 万令牌,凸显了大规模 MoE 模型中管理批量大小的复杂性。
- 成本和利用:GPT-4 的训练和推理成本远超 GPT-3,主要源于模型规模和 MoE 架构带来的低效性。训练时低利用率(32% - 36%)是由于频繁出现故障和需要重启检查点。尽管面临这些挑战,但 MoE 架构使 OpenAI 相较于同等规模的密集模型,能更好地控制成本。
虽然关于 GPT-4 泄露信息的真实性难以核实,但这些细节为我们了解 OpenAI 的架构决策和权衡提供了宝贵见解。MoE 的运用、先进的并行策略以及多模态功能,代表了大型语言模型的重大进步。正如原作者所说:“有趣的是理解 OpenAI 为何做出某些架构决策。”这些决策体现了性能、可扩展性和成本之间的平衡,为未来 AI 创新奠定了基础。
1.5.2 GPT-4 的扩展能力
在探讨大语言模型(LLMs)的优势时,涌现能力和思维链这两个关键特征往往最先被提及。它们是 LLMs 逐步逼近人类认知水平的基础。GPT-4 被广泛视为这一发展进程中的里程碑,主要归因于其多模态特性,它增强了视觉理解和视觉 - 文本语义融合能力。
- 涌现能力:涌现能力指的是 LLMs 从训练数据中自主学习和发现新的、更高级特征及模式的能力。这就好比超市促销中的意外惊喜——赠品的质量出奇地高。在 LLMs 领域,这些能力并非通过明确编程实现,而是随着模型处理海量数据自然涌现。与传统 LLMs 相比,多模态大语言模型(MLLMs)在需要常识推理的任务中表现更为出色。MLLMs 中的跨模态知识转移促进了更高效的知识获取,加速了新能力的涌现,增强了模型的整体功能。这些涌现特征,无论是特定模态的还是跨模态的,通常都不是针对性编程或训练的结果,而是通过接触多样化的多模态数据有机学习而来。
在语言模型发展的早期阶段,准确性的提升主要依赖于规模定律——在越来越大的数据集上训练更大的模型。大约在 2015 年,深度学习技术的进步和语料库的指数级增长使模型规模达到了一个关键阈值。从那时起,像 GPT-3、GLaM、LaMDA 和 Megatron-Turing NLG 等模型开始展现出开发者最初未预期的复杂能力和特征。这些意外能力如今被视为涌现能力的表现。
对 GPT-4 的研究揭示了一些在 OpenAI 的预训练目标或技术文档中未明确界定的能力。这些属于涌现能力范畴的能力,得益于深度学习模型固有的层次结构和权重学习机制。像 GPT-4 这类模型的训练过程可以理解为求解一个方程组:每一层神经元的输出(代表变量的组合)作为下一层的输入,权重通过强化学习算法迭代更新。这种层次架构使模型能够从原始数据中自主提取隐含特征和模式,从而实现涌现能力。
随着 LLMs 在广泛的多模态数据集上进行训练,它们根据数据中的统计模式调整内部参数和结构,进而产生新的能力和特征。这一过程体现了量变引起质变的原理。涌现能力是 LLMs 的一个决定性特征,支撑着当代模型的多样化功能。例如,GPT-4 能够在无需人工干预的情况下,从多模态数据中学习复杂特征和模式,实现更准确高效的预测和决策。涌现能力的另一个关键方面是模型的泛化能力。即便没有专门的训练,GPT-4 也能对新的、不熟悉的多模态数据样本进行泛化。这种泛化能力取决于模型的架构、训练过程以及所接触数据的多样性和规模。具备足够的复杂性和泛化能力,模型就能从数据中发现新颖且未知的特征和模式。
- 思维链:思维链可被视为大型语言模型的核心涌现能力之一。目前对各种 GPT 模型的研究蓬勃发展,这与在这些模型中训练的思维链的实际应用密切相关。思维链的形成机制可以解释为模型通过学习大量语言数据,构建语言结构和意义的内部表示,并通过一系列中间自然语言推理步骤完成最终输出。思维链是使 ChatGPT 和 GPT-4 给公众留下语言模型“类人”印象的关键特征。虽然像 GPT-4 这样的模型并不具备真正的意识或思维能力,但用思维链提示语言模型(采用类似人类的推理方式)显著提升了 GPT-4 在推理任务中的表现,打破了微调的平缓曲线。配备思维链能力的 GPT-4 模型具有一定的逻辑分析能力,不再是传统的词汇概率逼近模型。然而,训练思维链并非易事。尽管众多团队投身大语言模型训练领域,但在未来几年,可能只有少数团队能够掌握训练诀窍并完成思维链的训练。对于初创企业而言,完成思维链的训练意味着真正获得了这一波大模型 AI 竞赛的入场券。
通过思维链技术,GPT-4 将多步骤问题(如图表推理)分解为可独立解决的中间步骤。在解决多步骤推理问题时,模型生成的思维链模仿人类思维过程。这意味着为需要更多推理步骤的问题分配了额外的计算资源,进一步增强了 GPT-4 的表达和推理能力。
一般认为,模型的思维和推理能力与模型参数规模呈正相关。通常,模型需要超过一个关键规模(约 620 亿,B 代表十亿),才能通过思维链提示训练获得相应能力。若低于 60 亿,可能仅处于 GPT-2 水平的初级模型。此外,一些研究表明,在语言训练集中添加编程语言(如 Python 代码)可以提升模型的逻辑推理能力。具备思维链推理能力的 GPT-4 模型可用于简单数学问题、符号运算和常识推理等任务 。
GPT-4 的多模态思维链是一种通过观察大量多模态数据学习内部表示,然后利用该表示生成连续语言输出的机制。这一过程通过模型训练、内部表示构建和语言输出生成三个步骤实现。
1.5.3 GPT-4 系列模型的优点和性能
GPT-4 系列包括 GPT-4 和 GPT-4o,展现出一系列推动人工智能领域显著进步的能力。GPT-4 作为大语言模型(LLM),主要用于以文本为中心的操作。在复杂的文本推理、编码和逻辑分析等基于文本的任务中表现卓越。在数学、语言理解和代码生成相关的基准测试中,GPT-4 性能出色,输出可靠。它能够准确解读用户提示并避免错误推断,是数据提取和分类等高精准度任务的理想选择。在合同分析和代码开发等复杂场景中,GPT-4 稳定性强,幻觉问题较少。虽然它本身不具备原生多模态功能,但可集成 DALL-E 和 Whisper 等其他模型,间接支持图像生成和语音交互。开发者反馈显示,在编程和技术文档生成方面,GPT-4 优于 GPT-4o,常被视为这些场景下“更智能的模型”。
而 GPT-4o 作为 GPT-4 的升级版,带来了诸多显著改进。其最突出的特点是原生多模态支持,可无缝处理文本、图像、音频和视频,无需调用外部模型。这使得响应时间大幅缩短,延迟从 5 秒降至仅 320 毫秒。在图像分析等视觉理解任务和基于语音的对话等跨模态交互中,GPT-4o 表现更加流畅。从经济角度看,GPT-4o 为开发者提供了更具成本效益的解决方案,其 API 成本显著降低,输入 Token 成本仅为 GPT-4 的六分之一。此外,它增强了对非西方语言(如汉语、印地语和韩语)的支持,优化了分词和处理效率,有利于全球应用。在用户交互方面,GPT-4o 的对话更符合人类交流模式,适合语言练习和休闲聊天等活动,用户常形容它“更像人类”。
在性能比较方面,在 OpenAI 的官方测试中,GPT-4o 在数学、语言理解和视觉理解相关指标上超过了 GPT-4。然而,在第三方测试中,特别是复杂的数据提取和分类任务中,GPT-4 的结果更稳定。在实际应用中,GPT-4o 在语言推理和图像相关任务中速度更快,但在处理代码生成和技术文档时可能出现幻觉或重复输出问题。相比之下,GPT-4 虽然响应速度较慢,但更适合法律合同解释和代码调试等需要高精度的复杂任务。
基于这些特性,对于追求高精度文本输出(如代码开发和学术研究),或处理复杂逻辑推理、需要避免幻觉(如法律和医学领域)的用户,GPT-4 是更合适的选择。相反,对于涉及多模态交互(如语音对话和图像分析),或有高频、低成本需求(如客户服务聊天机器人和多语言翻译),以及非技术日常对话(如语言学习和创意写作)的应用场景,GPT-4o 则更为适用。
1.5.4 GPT-4 的局限性及未来改进方向
尽管 GPT-4 在基于上下文的对话、编程、理解图像模因和分析数据图等方面表现出色,但它仍存在一定的局限性,且处于不断改进的过程中。
其中一个局限性是,GPT-4 在一些缺乏大量语料库训练的领域,缺乏“人类常识”和扩展能力。它在许多领域能“创造答案”,但当用户寻求正确答案时,可能会给出误导性回应。大型预测模型的安全问题仍是其大规模商业化的主要障碍。在面临关键决策时,很难确定是否能信任 GPT-4 提供的结果。
另一个突出问题是其训练和部署所需的高计算能力(芯片)。除了需要大量语料库数据训练模型外,目前在应用中,GPT-4 仍依赖具有强大计算能力的高性能服务器,其成本对于普通企业在高流量服务期间难以承受。对于私有化部署,行业期待更轻量级的模型或更具成本效益的计算平台。
GPT-4 在在线融入新知识方面也存在困难。由于训练时间长、成本高,每次有新知识出现就重新预训练 GPT 模型并不现实,这对普通训练者来说难以接受。虽然新知识的在线训练在语料库成本相对较低的情况下看似可行,但新数据的引入容易导致对原始知识的灾难性遗忘。此外,未经检验的新知识可能给模型带来安全问题,GPT-4 还可能从新数据中继承偏见和不平等。如果数据集包含与种族、性别或地理位置相关的偏见,GPT-4 在生成文本时也可能表现出类似偏见。
作为黑盒模型,GPT-4 的内部算法逻辑目前无法分解,因此无法保证它不会生成攻击或伤害用户的语句。根据 OpenAI 提供的文档报告,GPT-4-launch 的错误行为率为 0.02%,远低于 GPT-3.5 的 0.07%和 GPT-3 的 0.11%。然而,即使每 10000 次文本生成中仅出现 2 次违规行为,也可能使 OpenAI 面临严重法律诉讼。
GPT-4 还存在社会和道德风险。因其黑盒性质,它可能生成有偏见、虚假和仇恨的文本,也可能被黑客攻击(如通过提示越狱)以绕过安全保护。尽管 OpenAI 提出了多种措施来降低模型风险,但 GPT-4 仍可能被滥用于制造假新闻、宣传、垃圾邮件或有害内容,并可能产生误导或伤害用户的事实错误或偏见。OpenAI 的研究表明,GPT-4 在许多领域可与人类宣传者相抗衡。
关于幻觉和推理错误,尽管 OpenAI 称 GPT-4 相比之前模型能显著减少幻觉(内部评估得分比 GPT-3.5 高 40%),但它仍可能产生有害建议(尽管更可能拒绝回答)、不正确的代码或不准确的信息。因此,GPT-4 不应用于错误成本高的领域,如医疗手术。
最后,GPT-4 存在泄露隐私的潜在风险。它可从各种内部授权和公开数据源学习,其中可能包含大量个人信息。它能从互联网上获取有影响力人物(如名人和公众人物)的大量私人信息,还能聚合不同信息,关联挖掘大量隐含信息,形成有效的私人信息。
1.6 O1
2024 年 9 月 13 日,OpenAI 重磅推出了最新模型 O1,此前在社区中它被传闻命名为“Strawberry” 。当这一模型从抽象概念变为现实,其表现远超预期,惊艳众人。以至于 OpenAI 决定摒弃 GPT 系列的命名惯例,将这款新模型纳入“Orion”(O 系列)。现在,就让我们深入探索 O1 的强大能力。
1.6.1 自我强化学习+COT
O1 模型中的自我游戏强化学习+思维链(CoT)是一项重大创新。自我游戏强化学习是强化学习中的一种训练方法,它让智能体通过与自身的副本或历史版本进行交互来优化策略。一开始,智能体的表现处于较低水平,行为往往带有随机性。随后,它会与自身副本进行多次匹配,这些副本可以是完全相同的模型,也可以是经过若干次迭代后的不同版本。每次匹配结束后,会根据结果给予奖励。例如在棋盘游戏里,获胜方获得正奖励,失败方则可能得到负奖励或零奖励。之后,智能体根据匹配过程中的表现和奖励信号调整策略,以提高未来获胜的概率。
在训练大型模型时,依赖扩大数据量和模型规模的“蛮力”方法逐渐遭遇瓶颈,特别是对于不公开源代码的模型,其开发速度明显放缓。与此同时,开源和闭源模型之间的性能差距也在逐渐缩小。在训练大型模型的过程中,人类知识几近被挖掘殆尽,模型主要从提供的数据集、反馈和注释信息中获取有价值的内容,而不是自主探索底层语言规则。这时,自我游戏强化学习就发挥了重要作用,它能够自动生成数据,无需手动注释(对于推理任务来说手动注释几乎是不可能完成的任务),从而减轻了研究人员在数据方面的压力。
然而,仅靠强化学习还不足以实现 O1 模型所展现的卓越成果,还需要另一个强大工具——思维链(CoT)。思维链并非新事物,它在编写提示的过程中经常被使用,主要是将人类的思维过程逐步固化,把复杂问题分解成更简单、易处理的小问题。当 O1 模型将思维链与自我游戏强化学习相结合时,便展现出了非凡的能力,具备了强大的自我改进和纠错能力,这是以往大型模型所不具备的。
针对 O1 模型的这些进步,OpenAI 甚至为其提供了最适宜的提示指南。一般来说,提示应更加简洁明了,建议使用分隔符来增强可读性。由于 O1 模型自身就能进行推理,所以应避免使用之前的“逐步提示”方法。在提供额外信息或文档时,只需包含与问题直接相关的关键点即可。此外,O1 模型让“思维链”变得透明化,用户能够观察到模型是如何逐步得出结果的,这无疑提高了模型的可解释性,使其更值得信赖。
在展示思维链时,O1 模型会隐藏最原始的版本,只呈现符合安全准则的版本。与之前的模型相比,O1 模型更能有效抵制生成有害内容。在“越狱测试”中,O1 模型的得分是 GPT-4o 的四倍,充分证明了它能更准确地理解和执行安全规则。
1.6.2 理解 O1 类模型中的奖励模型和训练过程
在对 O1 模型的研究中,其对强化学习(RL)的运用尤为突出,其中奖励模型在引导和提升模型性能方面发挥着关键作用。一个至关重要的问题是,如何定义一个有效的奖励机制。在思考奖励模型的设计时,有两个关键方面需要重点关注。
- 定义广义奖励:第一个关键方面是制定通用奖励。例如,OpenAI 训练的奖励模型不应局限于特定任务,如解决数学问题或编程练习,而应旨在评估模型响应具备的通用特征程度。这对于模型在不同领域的能力迁移至关重要。一个简单的通用奖励示例是,对更长且更多样化的模型输出给予更高分数,以此鼓励模型生成更全面、丰富的回复,进而实现更好的泛化效果。机器学习领域的研究表明,具备更广泛泛化能力的模型在多种任务中往往表现更优。比如在自然语言处理中,能够捕捉通用语义和句法模式的模型,在文本摘要、情感分析和机器翻译等任务中更易取得成功。
- 训练数据:第二个关键要点是训练数据的收集。虽然 O1 并非单纯的“只解决问题”的模型(不包括 O1-mini,根据公开信息,它可能从预训练阶段就更专注于解决问题),但数据收集很可能利用了数学问题的特点,即数学问题难以生成但易于验证。通过强化学习,模型的解题能力会逐渐接近奖励模型的判断能力。因此,基于数学问题生成奖励模型数据是一个合理的起点。为了保证通用性,数据不太可能仅仅按照结果奖励模型(ORM)所要求的格式组织,即在 ORM 中每个数据点仅将最终结果标记为正确或错误,这种简单的方式可能导致奖励模型过度依赖特定领域的技巧。相比之下,在论文《Let’s Verify Step by Step》中提出的过程监督奖励模型(PRM)似乎更为合适。在 PRM 中,数据收集时会记录每个推理步骤的分数,训练时奖励模型会学习预测每个步骤的分数。
然而,这种方法也带来了两个新挑战:一是如何高效地为中间步骤标注分数,二是如何生成足够长的思维链(CoT)数据,以防止奖励模型出现分布外(OOD)的情况。对于前者,尽管 OpenAI 资源丰富,最初可以依靠大量人力进行启动标注,但自动化标注方法仍是理想选择。像 Math-Shepherd 和 OmegaPRM 等研究成果提供了可能的解决方案,它们根据最终获得正确结果的概率为每个步骤分配重要性分数,这似乎是一种合理的方法。至于生成较长的思维链数据,单个模型很难实现。正如在 LongWriter 中提到的,模型输出长文本的能力与监督微调(SFT)数据集的长度分布密切相关。通过提示工程等技术强迫现有模型扩展输出,可能无法有效地提供包含有价值信息的训练数据。一种可能的解决方案是使用多个模型(基于相同的基础模型,但具有不同的系统消息),例如,一些模型负责规划,一些用于细化,还有一些进行批评和验证。《Self-Correct》论文在一定程度上遵循了这一思路,但该方法的轮数仍然有限。此外,在使用多个智能体生成数据时,还需注意数据生成过程中可能引入过多先验知识的问题。例如,如果要求模型在每个步骤进行反思,可能会偏离其自然的“涌现”能力,如回溯或自我纠正能力。OpenAI 在访谈中指出,这些能力似乎是自发出现的,而非人为主动诱导产生的。不过,通过大量多样的数据收集或迭代模型更新,这些问题可能会逐渐得到缓解。
- 从基于结果的监督转向基于过程的监督:OpenAI 在 2023 年 5 月推出了一项重要技术,该技术通过“过程监督”而非传统的“结果监督”来处理数学问题。与结果监督中仅对最终正确答案给予奖励不同,过程监督通过奖励每个正确的推理步骤来提升模型解决数学问题的能力。这不仅提高了与结果监督相关的性能,还具有重要的对齐优势,它直接训练模型生成被人类认可的思维链。在模型训练的大背景下,这种向基于过程的监督的转变,是提高模型可解释性和可靠性的大趋势的一部分。通过关注推理过程,能够在模型决策的每个步骤更好地理解和优化模型。
1.6.3 O1 的复现
O1 的潜在关键在于训练过程监督奖励模型(PRM),而非基于结果评估的结果监督奖励模型(ORM),以此引导模型在推理阶段更好地寻找最佳答案。这个过程包含多个步骤:
- 格式训练:首先,对模型进行监督微调(SFT),使它能够生成带有过程数据的结果。对于未经任何预处理的基础模型来说,面对问题时通常会直接输出答案。但我们希望模型在给出答案前进行更多“思考”,即按照“思考步骤 + 答案”的格式返回响应。为实现这一目标,需要进行格式微调,具体方法如下:在提示中添加格式示例来自我生成数据,引导模型生成期望格式的结果。例如,按照论文《lets verify step by step》的建议,要求模型每行呈现一个思考步骤(step)。这些结果会被添加到 SFT 数据集中,然后用这个自动构建的 SFT 数据集对模型进行微调,这样后续模型在回答问题时就能生成“思考步骤 + 答案”格式的数据。需要注意的是,这个 SFT 过程主要侧重于格式微调,对思考步骤的质量要求并不高,后续步骤会对此进行考量。
训练 PRM:为了有效训练用于评估模型中间推理步骤的过程监督奖励模型(PRM),构建一个为每个步骤分配真实分数的标记数据集至关重要。构建这个数据集的方法会因可用资源的不同而有所差异,下面我们概述三种针对不同资源水平的策略:“亿万富翁”策略、“千万富翁”策略和“百万富翁”策略。
“亿万富翁”策略:直接人工标注:对于资源雄厚的实体,最直接的方法是使用经过格式微调的模型生成大量“步骤 + 答案”数据,然后进行人工标注,根据每个步骤的正确性和相关性将其标记为正、负或中性。
- 优势:高质量的标注确保 PRM 在准确可靠的数据上进行训练;无需复杂的筛选或自动标注机制。
- 缺点:由于需要大量人力,该过程成本高昂且耗时。
“千万富翁”策略:迭代数据筛选和人工标注:对于资源中等的情况,一种更具成本效益的策略是迭代数据筛选结合有针对性的人工标注。具体过程如下:
- 步骤 1:初始数据生成和筛选:使用格式微调后的模型生成较小规模的“步骤 + 答案”数据,并筛选掉包含“无效答案”的数据,如无法解析的 LaTeX 公式或其他格式错误的数据。需要注意的是,“无效”并不等同于“错误”。
- 步骤 2:人工标注和 PRM 训练:让人工对筛选后的数据进行标注,将每个步骤标记为正、负或中性,然后使用标注后的数据训练 PRM。
- 步骤 3:整体评分和数据选择:建立规则将 PRM 的单步分数映射为整个推理链的整体分数,常见的方法包括:乘积(Prod)法,即将所有步骤的分数相乘;最小值(Min)法,即取所有步骤中的最低分数,因为一个错误步骤可能使整个推理链无效;最后一步(Last-Step)法,即将所有步骤连同上下文一起输入 PRM,将最后一步的分数作为整体分数 。使用 PRM 对新一批数据进行评分,仅选择那些模型最终答案错误但整体分数较高的数据进行人工标注,这种有偏向性的选择聚焦于使当前 PRM 产生混淆的数据。
- 步骤 4:迭代训练:重复上述过程,通过在新标注的数据上训练 PRM 来迭代优化。
- 优势:通过聚焦最具挑战性的数据,降低了人工标注的成本和时间;随着时间推移,迭代优化提高了 PRM 的准确性。
“百万富翁”策略:自动标签估计:对于资源有限的情况,可以使用自动方法估计每个步骤的真实标签,从而避免人工标注。
- 步骤 1:数据生成和筛选:使用格式微调后的模型生成“步骤 + 答案”数据,每个问题采样多个解决方案(例如,N = 16),并筛选掉无效答案的数据。
- 步骤 2:蒙特卡洛滚动估计标签:对于样本中的每个步骤(例如,“step1 -> step2 -> step3 -> 答案”),使用蒙特卡洛滚动估计其价值。具体来说,从给定步骤(例如,step1)开始,生成 N 个额外样本,模拟从该步骤到最终答案的求解路径,计算这些路径中通向正确答案的比例,这个比例作为该步骤的“软标签”,表示从该点到达正确答案的可能性。
- 步骤 3:PRM 训练:使用估计的软标签训练 PRM。在 DeepMind 的方法中,PRM 被视为二元分类模型,但损失使用非离散的真实标签进行计算。
- 优势:无需人工标注,显著降低成本;软标签的使用提供了对每个步骤对最终答案贡献的细致理解。
- 使用 PRM 指导搜索过程:到目前为止,存在两个模型:一个是能够生成正确格式中间思考步骤,但步骤质量无法保证的生成器;另一个是可以评估中间思考步骤的奖励模型 PRM(验证器)。需要再次强调的是,在将数据输入 PRM 进行评估时,输入的是完整的“问题 + 步骤”数据,因为逻辑思考步骤之间存在上下文关系。现在的目标是弄清楚如何使用验证器引导生成器搜索最佳的“步骤 + 答案”,同时不再对生成器进行进一步训练,即不在生成器本身上花费额外的计算资源(FLOPs),而是将计算资源用于推理阶段,通过更长、更复杂的推理过程(表现为生成器“思考”时间更长)让生成器找到最佳答案。
PRM 的典型示例:蒙特卡洛树搜索:蒙特卡洛树搜索(MCTS)是一种在复杂搜索空间中寻找最优解的算法。它通过不断模拟随机试验构建搜索树,逐步探索各种可能的决策路径,从而找到具有高价值的行动策略。在众多应用场景中,MCTS 的性能提升往往依赖于与其他模型的协作,其中过程奖励模型(PRM)与 MCTS 密切相关。MCTS 在搜索过程中生成的大量节点和路径需要有效的评估机制,PRM 恰好承担了这一职责,对 MCTS 生成的节点质量进行评分,引导 MCTS 优化搜索树结构,使搜索方向更具针对性。反之,MCTS 为 PRM 的训练提供了丰富的数据,使 PRM 能够不断优化评估能力。
- 如何为 MCTS 设计合适的提示:在深入探讨 MCTS 的概念之前,让我们先关注一个基本问题。当面对一个问题时,我们是如何思考解决它的?考虑一个简单的问题:“如果停车场有 3 辆车,又开来 2 辆,停车场现在有多少辆车?”为了解决这个问题,我们可能会有不同的思考过程。对这种思考过程的探索将为理解如何在大型模型中应用蒙特卡洛方法时优化提示设计奠定基础。
在这里,我们将使用 rStar-Math 模型(应用了微软发布的 MCTS 算法)的多个提示来说明在使用 MCTS 时需要准备的提示相关工作。
- 提出一步思考:直接通过思维链(COT)思考生成所有答案。
提出一步思考示例:
- 指令:如果停车场有 3 辆车,又开来 2 辆,停车场现在有多少辆车?
响应:
- 步骤 1:从停车场原有的车辆数开始,即 3 辆车。
- 步骤 2:加上新开来的车辆数,即 2 辆车。
- 步骤 3:将两个数字相加,停车场现在有 3 辆车 + 2 辆车 = 5 辆车。
- 步骤 4:答案是 5。
提出剩余思考步骤:对于一些简单问题,我们可能不会逐步思考,而是在进行一些简单推断后直接给出答案。例如:
- 指令:如果停车场有 3 辆车,又开来 2 辆,停车场现在有多少辆车?
- 响应:(此处原文未给出具体响应内容,可根据前文逻辑补充,如“直接计算 3 + 2 = 5,答案是 5” )
提出下一个子问题及答案:我们可以将原始问题分解为多个子问题,然后通过回答这些子问题得到最终答案。 - 问题 1:如果停车场有 3 辆车,又开来 2 辆,停车场现在有多少辆车?
- 问题 1.1:停车场原来有多少辆车?
- 答案 1.1:停车场原来有 3 辆车。
- 问题 1.2:后来又开来多少辆车?
- 答案 1.2:又开来 2 辆车。
- 问题 1.3:现在我们可以回答原问题:停车场现在有多少辆车?
- 答案 1.3:现在停车场有 3 + 2 = 5 辆车。答案是 5。
- 再次回答子问题:这种方法会与“提出下一个子问题及答案”结合使用。例如,对于“提出下一个子问题及答案”中的问题 1.1,如果你不确定答案 1.1 是否正确,就可以再次思考答案 1.1。此时因为只是修改某个子答案,所以可以采用“提出剩余思考步骤”的方法进行简单推断,重新得到答案 1.1。这里不再给出具体示例。
- 重新表述问题/子问题:有时在解决问题时,我们通常会从原始问题描述的大段内容中提取关键信息,比如:条件 1…,条件 2 等。我们可以先按照这种方式重写原始问题/子问题,然后再给出答案。这比较容易理解,此处也不再给出具体示例。
- MCTS 的详细过程:为了更清楚地理解大型语言模型(LLM)中 MCTS 的过程,下面将介绍一个实例。问题是“求解四次方程:(此处原文未给出具体方程内容,可补充具体方程,如 $x^4 - 5x^2 + 4 = 0$ )”
阶段 1:确保 LLM 生成单一步骤而非完整答案的机制:
在结合 MCTS 和 LLM 的框架中,控制 LLM 只生成单一步骤而不是完整答案,需要提示设计、状态表示和解码约束的协同作用。具体实现机制如下:
状态隔离和动态提示(状态隔离):在这个实例中,我们将当前推理步骤作为独立输入,屏蔽 LLM 的全局视角,使其仅专注于生成局部行动。
-- 根节点输入: - [问题] 解方程:(假设方程为 $x^4 - 5x^2 + 4 = 0$) - [当前状态] 初始方程 - [指令] 请生成一个可能的下一步数学运算。请勿继续推导后续步骤。 - LLM输出候选行动: - 行动1:令 $y = x^2$,则方程变为 $y^2 - 5y + 4 = 0$ - 行动2:尝试因式分解,原方程可化为 $(x^2 - 1)(x^2 - 4)=0$ - 子节点输入(以行动1为例): - [问题] 解方程:$x^4 - 5x^2 + 4 = 0$ - [当前状态]$y^2 - 5y + 4 = 0$ - [指令] 请生成一个可能的下一步数学运算。请勿继续推导后续步骤。 - LLM输出: - 行动1a:对 $y^2 - 5y + 4 = 0$ 进行因式分解,得到 $(y - 1)(y - 4)=0$ - 行动1b:使用求根公式 $y=\frac{5\pm\sqrt{25 - 16}}{2}$
这里有两个关键技术:
- 动态上下文截断:仅保留当前步骤之前的推导链,隐藏后续步骤。
明确指令约束:在提示中强调“仅生成下一步”。
- 解码约束(Decoding Constraints):通过控制生成参数,强制 LLM 输出单步运算:
令牌级约束:
- 设置 max_new_tokens = 10 以限制生成长度。
- 使用正则表达式匹配数学运算模板。
- 语法引导解码:使用受控生成库(如 Guidance、Outlines)定义语法规则。
采样策略:
- 低温度(temperature = 0.1)降低随机性。
- Top-p 采样(top_p = 0.9)过滤掉低概率令牌。
-
阶段 2:MCTS 生成轨迹并收集数据 :
假设当前奖励模型是 $RM_{old}$,MCTS 通过以下步骤生成训练数据:
注意:这里的奖励值并非直接来自 $RM_{old}$,而是通过基于规则或手动评分等实际模拟结果计算得出。
- 构建训练数据集:收集所有步骤及其奖励标签,形成对比样本:
train_data = [
{"step": "令 $y = x^2$,方程变为 $y^2 - 5y + 4 = 0$", "problem_state": "$x^4 - 5x^2 + 4 = 0$", "reward": 0.92},
{"step": "尝试因式分解,原方程化为 $(x^2 - 1)(x^2 - 4)=0$", "problem_state": "$x^4 - 5x^2 + 4 = 0$", "reward": 0.85},
{"step": "对 $y^2 - 5y + 4 = 0$ 进行因式分解,得到 $(y - 1)(y - 4)=0$", "problem_state": "$y^2 - 5y + 4 = 0$", "reward": 0.95}
]
阶段 3:训练奖励模型(反向传播的核心):
阶段 4:UCB(上置信界):
UCB 采样过程:
初始状态:(描述初始状态下相关参数的设定,如节点访问次数初始化为 0 等 )
第一次迭代:(详细说明第一次迭代中如何根据 UCB 公式选择节点,以及更新相关参数的过程 )
第二次迭代:(继续描述第二次迭代的情况 )
第三次迭代:(依此类推 )
基于模拟结果的过程奖励优化:
贡献衰减因子:(解释贡献衰减因子的作用和设置方式,例如它如何随着步骤的推进调整每个步骤对最终奖励的贡献 )
多路径加权平均:(说明如何对多个路径的奖励进行加权平均,以更准确地评估步骤的价值 )
奖励模型与 UCB 的协同增强:
冷启动阶段的探索引导:当节点访问次数较少时,奖励模型的预测主导选择方向。从数学角度看,可表示为:(此处原文未给出具体公式,可补充类似公式,如选择概率与奖励模型预测值成正比等 )这使得早期搜索能够快速聚焦于高潜力路径,避免随机探索的低效性。例如,在游戏场景中,如果奖励模型预测某个动作有很高的获胜潜力,搜索算法在早期会更倾向于探索这个动作,而不是随机尝试各种动作。
数据积累后的自适应平衡:随着 $N(s,a)$(节点访问次数)的增加,历史奖励 $Q(s,a)$ 变得越来越可靠。对于实际表现优于奖励预测($Q>RM$)的行动,UCB 会自动提高其优先级。这意味着,如果通过多次模拟,某个行动的实际奖励高于奖励模型最初的预测,上置信界(UCB)公式会调整,使该行动在未来搜索中被选中的概率更高。对于奖励模型高估的行动,UCB 会降低其选择概率。也就是说,如果模拟某个行动获得的实际奖励低于奖励模型的预测,该行动的 UCB 值会下调,在后续探索中被选中的可能性降低。
数学问题中的动态情况:考虑行动 a2(比如在解方程过程中某一步的特定运算),其真实成功率仅为 20%,但奖励模型的初始预测值 $RM(s0, a2)$ 较高。经过 5 次访问后:(此处结合具体数据计算 UCB 值,展示其对行动选择概率的影响 )此时,尽管奖励模型仍给出 0.5 的预测值,但实际较低的 Q 值会抑制该行动的选择。在解方程的情境中,如果某一步除以 3 的操作在实践中实际成功率较低,但最初被奖励模型高估,UCB 机制会综合考虑历史奖励和奖励模型的预测。随着对该行动访问次数的增加,其实际低表现(反映在低 Q 值上)会抵消奖励模型相对较高的预测,降低该行动在后续搜索步骤中被选中的可能性。
工程实现中的关键超参数
- 探索系数 c 的动态调整:随着总访问次数 N(s)的增加,c 的值会逐渐减小(例如,从 2.5 减小到 1.0)。当前 c 值的计算公式为:$c = c_{init} \cdot e^{-\lambda \cdot N(s)}$ ,其中 lambda($\lambda$)控制衰减率。这对于防止在搜索后期过度开发(exploitation)至关重要。在搜索的早期阶段,需要一个较大的 c 值来鼓励更多的探索(exploration),因为此时对解空间还存在很多不确定性。然而,随着搜索的进行和更多数据的积累,一个较小的 c 值更为合适,以便专注于开发已发现的更有希望的区域。参数 lambda($\lambda$)经过仔细调整,以确保在探索和开发之间实现平稳过渡。
奖励模型校准
- 温度缩放(Temperature Scaling):奖励模型(RM)的输出会进行平滑处理,以避免极端值干扰 UCB 的计算。校准后的奖励模型 $RM_{calibrated}$ 的计算公式为:$RM_{calibrated} = \frac{1}{1 + e^{-\frac{RM - \mu}{\tau}}}$,当 $i = 0.5$ 时,它可以有效地将评分范围压缩到[0.2, 0.8] 。温度缩放是一种用于调整奖励模型输出的锐度的技术。通过设置合适的 $i$ 值,可以减少奖励模型的极端预测对 UCB 计算的影响。这有助于使基于 UCB 公式的行动选择更加稳定和可靠,特别是当奖励模型可能产生一些过于乐观或悲观的预测时。
1.7 结论
GPT 系列模型在自然语言处理领域是一股革命性的力量,不断突破语言模型的能力边界。本结论将简要介绍 GPT 系列中的每个模型,并通过一个综合表格进行总结,突出关键方面,如模型结构、数据集、训练方法、优点和缺点。
GPT 系列模型简介
- GPT-1:作为生成式预训练范式的先驱,GPT-1 引入了两步法,即先在大规模文本语料库上进行无监督预训练,然后针对特定任务进行监督微调。它采用 Transformer 解码器架构,证明了迁移学习在自然语言处理中的有效性。
- GPT-2:GPT-2 凭借零样本学习能力和多任务学习方法实现了重大飞跃。在更大的数据集上进行训练,它旨在生成高质量文本,而无需针对特定任务进行微调。其模型构建基于 GPT-1 的基础,并进一步扩展了模型的规模和范围。
- GPT-3:GPT-3 以其巨大的规模和元学习技术改变了游戏规则。它引入了上下文学习,使模型能够根据输入上下文中提供的示例执行各种任务。拥有大量参数的 GPT-3 在广泛的自然语言处理任务中展现出卓越的性能。
- InstructGPT & ChatGPT:InstructGPT 专注于通过监督微调(SFT)、奖励建模(RM)和近端策略优化(PPO)等技术,使模型行为与人类偏好保持一致。ChatGPT 建立在 InstructGPT 的基础上,成为了一款广受欢迎的聊天机器人,能够生成自然且引人入胜的对话。
- GPT-4:GPT-4 相较于其前身有了显著改进,在各个领域的能力都有所增强。它在语言理解、推理和生成方面表现更出色,还扩展了处理多模态输入的能力。
- O1:O1 整合了自我博弈强化学习和思维链(COT)技术,以提高模型性能。它旨在更好地理解奖励模型和训练过程,其复现展示了这些技术在语言模型开发中的潜力。
- 结论:GPT 系列模型为自然语言处理领域做出了重大贡献,从 GPT-1 最初建立生成式预训练范式,到 GPT-4 的先进能力以及 O1 的创新技术。每个模型都有其独特的特点和优势,但也面临着各种限制和挑战。
展望未来,语言模型的研究可能会集中在解决这些限制上,例如提高模型的透明度和可解释性、减少偏差和伦理问题,以及增强在复杂和新任务上的性能。GPT 系列将继续发展,并激发该领域的新进展,塑造自然语言处理和人机交互的未来。
本文由mdnice多平台发布
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。