欢迎光临散文网 会员登陆 & 注册

ChatGPT核心技术

2023-04-21 15:47 作者:数字化技术专家  | 我要投稿

一、介绍 大型语言模型,特别是2020年GPT-3推出,取得突破性进展,并获得广泛关注,但是,大型语言模型依然存在以下严重问题:

1. 生成不真实的输出:这些模型可能会生成与事实不符或不真实的输出,这可能会导致误导和混淆。

2. 生成有毒的输出:这些模型可能会生成带有攻击性、歧视性或其他有害内容的输出,这可能会对用户造成伤害。

3. 生成对用户没有帮助的输出:这些模型可能会生成与用户意图不一致或无关紧要的输出,这可能会浪费用户时间和精力。

因此,InstructGPT提出了一种通过使用人类反馈进行微调的方法,以将语言模型与用户意图对齐,并解决上述问题。实验结果表明,通过使用人类反馈进行微调,可以显著提高语言模型在各种任务上的性能。具体而言,在问答、摘要和翻译等任务中,微调后的模型相对于基准模型的性能提高了很多。

二、具体方案

2.1 总体方案

具体而言,InstructGPT主要包括以下三个步骤:

1. 收集数据,并进行有监督微调(SFT):首先,收集一些比较数据,其中包括模型输出之间的比较。具体而言,让人类标注人员评估两个模型输出,并指出哪一个更好。利用有监督学习对GPT-3进行微调。

2. 训练奖励模型(RM):接下来,使用收集到的比较数据来训练一个奖励模型,将比较数据视为一种强化学习信号,并使用它来训练一个能够预测人类偏好的奖励模型。

3. 使用奖励模型进行强化学习(PPO):最后,使用训练好的奖励模型来对语言模型进行强化学习。将奖励信号视为一种强化学习信号,并使用它来更新语言模型参数。

通过上面的方法,可以使语言模型更好地满足用户需求,并且在各种任务中表现更好。

2.2 有监督微调模型(SFT)

微调模型是通过在一个任务特定的数据集上对预训练模型进行进一步训练来实现的。预训练模型通常会在大规模的通用语料库上进行预训练,可以捕捉到一般的语言知识,但不能完成特定任务。因此,需要对预训练模型进行微调,使其能够适应特定的任务。

在微调过程中,通常会固定预训练模型的大部分参数,只更新最后的一些层或添加一些新的层来适应特定的任务。这样可以利用预训练模型的丰富语言知识,同时在特定任务上获得更好的性能。

例如,在自然语言处理任务中,可以利用预训练的语言模型进行微调,使其能够完成特定的任务,如情感分析、命名实体识别等。在微调过程中,通常会在预训练模型的基础上添加一些任务特定的层,然后使用一个较小的、任务特定的数据集进行训练。

SFT 的微调过程主要涉及两个方面:一是微调 GPT-3 模型,使其更好地遵循人类反馈;二是微调 SFT 模型,使其更好地预测人类反馈。在微调 GPT-3 模型时,主要是微调它的输出层权重,以便更好地对任务进行调整。同时,还可以根据具体任务,微调其他层的权重以增强模型的适应性。在微调 SFT 模型时,主要是通过反向传播优化损失函数,以便更好地预测人类反馈。这一过程中需要微调 SFT 的权重参数,以便让模型更好地理解人类的反馈信息,并在接下来的生成过程中更好地应用这些信息。

SFT 模型是指使用有监督学习方法微调 GPT-3 预训练语言模型得到的模型。在微调过程中,使用了一个标注器来为每个生成的响应分配一个标签,并将这些标签作为有监督学习的目标。在微调过程中,使用了余弦学习率衰减和残差丢失等技术来提高模型性能。SFT 模型的具体结构与 GPT-3 预训练语言模型相似。GPT-3 是一种基于 Transformer 的语言模型,由多个 Transformer 编码器组成。在微调过程中,保留了 GPT-3 的大部分结构,并对最后一层进行微调。

2.3 奖励模型(RM)

RM 是指使用奖励函数来指导模型学习的一种方法,RM 通过将任务目标转化为奖励信号,使得模型可以在不需要人类干预的情况下自主地学习如何完成任务。

使用 RM 来微调语言模型,要首先定义了一个奖励函数,并使用人类数据来训练奖励模型。在定义奖励函数时,需要考虑了多个因素。首先,希望奖励函数能够鼓励模型生成符合要求的输出。其次,希望奖励函数能够惩罚不符合要求的输出。最后,还考虑了一些特殊情况(如歧义、错误和敏感信息),并相应地调整了奖励函数。

在训练奖励模型时,使用了人类标注数据来训练一个分类器,并将其作为奖励函数。在训练过程中,标注者需要根据不同人群的偏好和潜在风险对模型输出进行评估,并将评估结果作为训练数据。然后,使用这些数据来训练一个分类器,并将其作为奖励函数。InstructGPT使用了多个公共自然语言处理数据集(如ARC、BoolQ、CoQA等)来训练奖励模型。RM 是一种有效的方法,可以帮助模型自主地学习如何完成任务。通过定义奖励函数、训练奖励模型和微调语言模型等步骤,InstructGPT,成功地将 RM 应用于语言生成任务,并取得了很好的效果。

RM 模型的问题集来自于人类编写的问题集和自动生成的问题集。在 RM 训练过程中,使用了多个公共自然语言处理数据集(如 ARC、BoolQ、CoQA、DROP、MultiNLI、OpenBookQA、QuAC、RACE 和 Winogrande)来微调 GPT-3 预训练语言模型,并生成了一个包含 20 万个问题的自动生成问题集。在 RM 训练过程中,将这些人类编写的问题和自动生成的问题组合在一起,并使用它们来训练 RM 模型。通过这种方式,RM 模型可以学习如何评估语言生成模型在不同任务上的输出质量。

InstructGPT,使用了两个不同大小的 RM 模型:一个是 6B 的模型,另一个是 175B 的模型。这两个模型在强化学习过程中起到了不同的作用。在强化学习过程中,首先使用 6B 的 RM 模型来评估语言生成模型的输出质量,并将其作为奖励信号来指导模型学习。然后,使用 175B 的 RM 模型来评估最终训练出的语言生成模型的性能,并与其他模型进行比较。

2.4 强化学习

当涉及到决策和行动的情况下,强化学习是一种流行的机器学习技术。 在强化学习中,模型需要在未知的环境中做出决策,并通过观察结果和获得反馈来学习做出更好的决策。例如,让我们考虑一个机器人学习如何在房间里找到一个特定的物体。在开始时,机器人不知道这个物体在哪里,但可以从其传感器获取有关周围环境的信息。机器人需要使用这些信息来决定移动到哪里,直到找到该物体。如果机器人找到了该物体,它会得到一个积极的奖励。如果机器人移动到房间的其他位置,它会受到惩罚。通过观察结果和获得反馈,机器人可以逐步学习如何更有效地找到该物体,最终成为一个更好的物体寻找机器人。

当应用强化学习到GPT-3中,可以将其看作一个代理(agent)和一个环境(environment)之间的交互过程。在这个场景下,代理就是GPT-3模型,环境则是人类用户提供的指令。假设我们要让GPT-3写一篇介绍人工智能的文章,我们可以将任务作为环境,GPT-3模型作为代理。一开始,模型对任务的理解可能是模糊的,可能会输出不合适的内容。然而,我们可以通过给模型提供人类专家提供的反馈信号,例如通过SFT方法和RM模型的训练过程,让模型逐渐调整自己的行为,最终输出符合任务要求的内容。例如,当GPT-3模型输出的文章中有明显的错误时,RM模型可以给出负反馈信号,告诉模型这部分内容是错误的,并指导模型调整输出内容。通过这种方式,模型可以学习到在不断交互的过程中,如何优化自己的输出,逐渐学会如何正确地完成任务。

2.5 强化学习模型和微调模型

强化学习模型和微调模型都是机器学习中常用的模型训练方法,但两者的区别在于目标和应用场景不同。

强化学习是一种通过智能体与环境的交互学习最佳行动策略的方法,其目标是通过奖励信号来最大化长期回报。在强化学习中,模型需要不断地尝试行动,并接收环境的奖励或惩罚,以逐渐调整其行动策略。这种方法适用于需要实现复杂决策的任务,如游戏、机器人控制等。在自然语言处理领域,增强学习也被应用于对话系统等任务中。

而微调模型是在一个已经预训练好的模型基础上,针对特定任务进行微调,以提高模型在特定任务上的性能。微调的过程通常包括在特定任务数据集上重新训练模型的顶部层,或是在顶部层和底层同时微调。微调可以用于各种自然语言处理任务,例如文本分类、命名实体识别、情感分析等。与增强学习不同,微调的目标是在已有的模型结构和参数的基础上,优化模型在特定任务上的性能,而不是从零开始训练一个新的模型。

2.6 强化学习(PPO)

在RM模型训练好之后,使用强化学习算法PPO(Proximal Policy Optimization)对GPT-3模型进行微调,以最大化RM模型对生成文本的奖励值。PPO是一种在策略梯度算法基础上进行改进的算法,能够克服策略梯度算法中的一些缺点,如训练不稳定、采样效率低等问题。

首先使用SFT方法微调GPT-3模型,然后将微调后的模型和RM模型结合起来,形成一个强化学习框架。具体地,使用RM模型评估GPT-3生成的文本,计算出奖励值,然后将奖励值作为PPO算法的目标函数,更新GPT-3模型的参数,从而最大化奖励值。PPO算法会不断优化GPT-3模型,使其生成的文本能够得到更高的奖励,从而达到根据人类反馈指导GPT-3生成更符合要求的文本的目的。

InstructGPT,使用了一种名为 PPO(Proximal Policy Optimization)的强化学习算法来微调 GPT-3 模型。PPO 是一种基于策略梯度的算法,它可以在不需要计算值函数的情况下直接优化策略。相比于其他强化学习算法,PPO 具有许多优点,例如:易于实现、收敛速度快、稳定性高等。在 PPO 算法中,首先定义了一个目标函数 J(θ),其中 θ 表示模型参数。然后,使用梯度下降方法来最大化目标函数,并且通过不断迭代来更新模型参数。在更新过程中,采用了一些技巧来提高训练效率和稳定性,例如:使用多步骤 PPO、剪枝和截断等方法。在多步骤 PPO 中,将每个样本分成多个子序列,并且对每个子序列进行单独的更新。这种方法可以减少方差,并且提高训练效率。在剪枝和截断中,使用了一些技巧来减少计算量和内存占用,并且避免过拟合。

OpenAI使用了 PPO 算法来微调 GPT-3 模型,并且通过不断迭代来优化模型性能。这种方法可以使 GPT-3 模型更好地遵循人类编写的指令,并且在人类评价任务中取得了很好的表现。

2.7 RM和PPO

PPO 和 RM 是两个不同的概念,它们在本文中分别用于微调 GPT-3 模型的不同阶段。

InstructGPT,使用了 RM(Reward Model)来评估 GPT-3 生成的答案是否符合人类偏好,并且将 RM 的输出作为强化信号来微调模型。RM 是一个基于人类反馈的模型,它可以预测人类对不同答案的偏好程度。在训练阶段,使用了一组标注者来对数据进行标注,并且根据标注者的表现选择出最优秀的标注者。然后,将这些标注者分成两组:一组用于生成训练数据,另一组用于提供奖励信号。在训练阶段,将 GPT-3 模型呈现给第一组标注者,并要求他们根据给定的指令编写出相应的输出。然后,将这些输出与第二组标注者提供的参考答案进行比较,并计算出每个输出对应的奖励值。

而 PPO(Proximal Policy Optimization)是一种强化学习算法,它可以在不需要计算值函数的情况下直接优化策略。使用 PPO 算法来微调 GPT-3 模型,并且通过不断迭代来优化模型性能。在微调阶段,使用了 RM 的输出作为强化信号,并且通过 PPO 算法来更新模型参数。在更新过程中,采用了一些技巧来提高训练效率和稳定性,例如:使用多步骤 PPO、剪枝和截断等方法。

因此,可以看出,PPO 和 RM 是两个不同的概念。

2.8 SFT,RM和PPO关系

OpenAI使用了三个不同的步骤来训练 InstructGPT模型:SFT、RM 和 PPO。这些步骤是递进的,每个步骤都建立在前一个步骤的基础上,并且通过不断迭代来优化模型性能。

首先,在 SFT(Supervised Fine-Tuning)阶段,使用了大量的无监督数据来预训练 GPT-3 模型,并且通过自回归任务来学习语言表示。然后,在 RM(Reward Model)阶段,使用了一组标注者来对数据进行标注,并且根据标注者的表现选择出最优秀的标注者。然后,将这些标注者分成两组:一组用于生成训练数据,另一组用于提供奖励信号。在训练阶段,将 GPT-3 模型呈现给第一组标注者,并要求他们根据给定的指令编写出相应的输出。然后,将这些输出与第二组标注者提供的参考答案进行比较,并计算出每个输出对应的奖励值。最后,在 PPO(Proximal Policy Optimization)阶段,使用了 RM 的输出作为强化信号,并且通过 PPO 算法来更新模型参数。在更新过程中,作者采用了一些技巧来提高训练效率和稳定性,例如:使用多步骤 PPO、剪枝和截断等方法。

因此,可以看出,SFT、RM 和 PPO 是在训练中递进的关系。每个步骤都建立在前一个步骤的基础上,并且通过不断迭代来优化模型性能。在 SFT 阶段,模型通过预训练学习到了语言表示;在 RM 阶段,模型通过人类反馈学习到了如何生成符合人类偏好的答案;在 PPO 阶段,模型通过强化学习算法进一步微调,以最大化 RM 的输出作为奖励信号。

三、各种任务

使用InstructGPT模型可以完成的各种任务,这些任务包括:

1. 生成任务:生成任务是指让模型生成符合特定要求的文本。例如,我们可以让模型生成一篇文章、一封电子邮件或一段对话。

2. 问答任务:问答任务是指让模型回答与给定问题相关的问题。例如,我们可以让模型回答关于历史事件、科学知识或地理信息的问题。

3. 对话任务:对话任务是指让模型与人类进行自然对话。例如,我们可以让模型与用户进行聊天、提供帮助或解决问题。

4. 摘要任务:摘要任务是指让模型从给定文本中提取关键信息,并生成一个简短的摘要。例如,我们可以让模型从新闻文章、科技报告或学术论文中提取关键信息。

5. 提取任务:提取任务是指让模型从给定文本中提取特定信息(如实体、关系或事件)。例如,我们可以让模型从新闻报道、社交媒体或法律文件中提取实体和关系。

四、数据集

作者OpenAI雇用了约40名承包商通过Upwork和ScaleAI平台来收集数据。与以往的研究相比,输入涵盖了更广泛的任务范围,并且有时包括有争议和敏感的主题。为了确保数据质量,OpenAI进行了一系列筛选测试,以选择对不同人群偏好敏感且能够识别潜在有害输出的标注者。在筛选测试中,标注者需要根据不同人群的偏好和潜在风险对模型输出进行评估。

五、模型评估

OpenAI使用了两种不同的评估方法来评估InstructGPT模型的性能:定量评估和定性评估。

在定量评估中,使用了两个不同的数据集来测试 GPT-3 模型的性能。第一个数据集是 API Prompt Distribution 数据集,它包含了 100 个 API prompt,并且每个 prompt 都有多个参考答案。在测试阶段,将每个 prompt 提供给 GPT-3 模型,并要求模型生成相应的输出。然后,将模型生成的输出与参考答案进行比较,并计算出 BLEU、ROUGE 和 METEOR 等指标。

第二个数据集是公共 NLP 数据集,包括 SQuAD、CoQA 和 SuperGLUE 等数据集。在测试阶段,将这些数据集提供给 GPT-3 模型,并要求模型完成相应的任务。然后,将模型生成的输出与参考答案进行比较,并计算出 F1 分数等指标。

在定性评估中,邀请了一些人类标注者对 GPT-3 模型生成的输出进行主观评价。在测试阶段,将一些 API prompt 提供给 GPT-3 模型,并要求模型生成相应的输出。然后,将模型生成的输出呈现给标注者,并要求他们对输出进行评价。标注者需要根据一些指标(例如:流畅性、准确性、相关性等)对输出进行打分。

通过定量评估和定性评估,发现 InstructGPT 模型在许多任务上表现出色,并且在某些任务上甚至超过了人类表现。这表明 模型具有很强的生成能力和泛化能力,并且可以应用于各种自然语言处理任务。同时, InstructGPT-3 模型存在一些局限性,例如:在某些任务上表现不佳、对于一些特定领域的知识缺乏理解等。

六、测试结果

在 API Prompt Distribution 数据集上,InstructGPT 模型表现出色,并且在某些指标上甚至超过了人类表现。特别地,作者发现,在使用 PPO-ptx 模型时,模型的 BLEU 分数可以达到 0.92 左右,这比使用 SFT 模型时高出了很多。此外,在使用 PPO-ptx 模型时,模型的 ROUGE 和 METEOR 分数也比使用 SFT 模型时高出很多。

不同模型之间进行了比较,并发现 PPO-ptx 模型在大多数情况下都优于其他模型。特别地,在与 GPT-3 和 GPT-prompted 进行比较时,PPO-ptx 模型的性能明显更好。

在公共 NLP 数据集上,GPT-3 模型表现出色,并且在某些任务上甚至超过了人类表现。特别地,在 SQuAD 和 CoQA 数据集上,GPT-3 模型的 F1 分数可以达到 90% 左右,这比其他模型高出很多。此外,在 SuperGLUE 数据集上,GPT-3 模型也取得了很好的成绩,并且在某些任务上超过了人类表现。还对不同模型之间进行了比较,并发现 GPT-3 模型在大多数情况下都优于其他模型。特别地,在与 BERT 和 RoBERTa 进行比较时,GPT-3 模型的性能明显更好。

在定性评估中,GPT-3 模型表现出色,并且在某些指标上甚至超过了人类表现。特别地,在与其他模型进行比较时,GPT-3 模型的生成结果更加流畅、准确和相关。通过一些案例来展示 GPT-3 模型的生成能力。例如,在一个关于狗的问题中,GPT-3 模型可以生成一个非常详细和准确的答案,并且包含了很多有趣的细节。在另一个关于历史事件的问题中,GPT-3 模型可以生成一个非常生动和详细的描述,并且让人感觉像是亲身经历过这个事件一样。

七、总结

InstructGPT模型的成功表明了一种新的 AI 对齐方法:使用大规模预训练语言模型来实现 AI 系统与人类意图之间的对齐。即可以将“遵循指令”的能力推广到没有监督的情况下,例如在非英语语言任务和代码相关任务中。这意味着,即使在没有特别训练的情况下,InstructGPT 模型也可以在这些任务中表现出色,可以被视为一种涌现能力。涌现能力是指 AI 系统在没有显式编程或特别训练的情况下,通过自我学习和优化,表现出超出预期的能力。在这种情况下,InstructGPT 模型可以将其“遵循指令”的能力推广到新领域,并且表现出色,这可以被视为一种涌现能力。这种方法具有很强的泛化能力,并且可以应用于各种自然语言处理任务。同时,这种方法存在一些局限性,例如:在某些任务上表现不佳、对于一些特定领域的知识缺乏理解等。

在将语言模型与人类意图对齐时,其最终行为取决于底层模型(及其训练数据)、微调数据和所使用的对齐方法。因此,在进行 AI 对齐时,需要考虑这些因素,并且确定要对齐的对象是谁或是什么。

在进行 AI 对齐时存在一些其他局限性,例如,InstructGPT 模型的行为部分取决于从承包商那里获得的人类反馈。一些标注任务依赖于价值判断,这些判断可能会受到承包商身份、信仰、文化背景和个人经历等因素的影响。

InstructGPT虽然取得很大成功,但是,依然存在一些需要进一步探索的开放性问题,以进一步将语言模型的行为与人们实际想要它们做的事情相对齐。例如:如何在不同领域和任务中进行对齐?如何在不同语言和文化背景下进行对齐?如何处理多义词和歧义性?如何处理指令中的隐含信息?这些问题需要进一步研究才能更好地将语言模型的行为与人们实际想要它们做的事情相对齐。

ChatGPT核心技术的评论 (共 条)

分享到微博请遵守国家法律