ChatGPT是OpenAI最新发布的语言模型,相比其前身GPT-3有了明显的改进。与许多大型语言模型类似,ChatGPT可以生成不同风格和目的的文本,并且在准确性、叙述细节和上下文连贯性方面有更好的表现。它代表了OpenAI最新一代的大规模语言模型,其设计非常注重交互性。OpenAI结合监督学习和强化学习对ChatGPT进行了调整,其中强化学习组件使ChatGPT独一无二。OpenAI使用一种称为强化学习与人类反馈(RLHF)的训练方法,该方法在训练中使用人类反馈来最大限度地减少无用、扭曲或有偏见的输出。本文将剖析GPT-3的局限性以及它们在训练过程中产生的原因,解释RLHF的原理并了解ChatGPT如何使用RLHF来克服GPT-3的问题,最后讨论这种方法的局限性。大型语言模型中的能力与一致性一致性与能力可以被认为是准确性与精度的更抽象的类比。在机器学习中,模型的能力是指模型执行特定任务或一组任务的能力。模型的能力通常通过它能够优化其目标函数的程度来评估。例如,用于预测市场价格的模型可能具有衡量模型预测准确性的目标函数。如果模型能够准确预测票价随时间的变化情况,则该模型被认为具有高性能。一致性关注的是模型实际上被期望做什么,而不是它被训练做什么。它问的问题是“目标函数是否按预期运行”,即模型目标和行为与人类期望的匹配程度。假设你想训练一个鸟类分类器,将鸟类分类为“麻雀”或“知更鸟”,以logloss为训练目标,最终目标是分类准确率高。该模型可能具有低对数损失,即该模型在测试集上的能力更强但准确性较低,这是不一致的示例,其中模型能够优化训练目标但与最终目标不一致。最初的GPT-3是非一致性模型。像GPT-3这样的大型语言模型是根据来自互联网的大量文本数据进行训练的,能够生成类似人类的文本,但它们可能并不总是产生符合人类期望的输出。事实上,他们的目标函数是一个单词序列的概率分布,预测序列中的下一个单词是什么。但在实践中,这些模型的目的是执行某种形式的有价值的认知工作,并且这些模型的训练方式与预期使用方式之间存在明显差异。虽然从数学上讲,机器计算单词序列的统计分布可能是建模语言的有效选择,但人类实际上是通过选择最适合给定情况的文本序列,并使用已知的背景知识和常识来生成语言的。协助这个过程。当语言模型用于需要高度信任或可靠性的应用程序(例如对话系统或智能个人助理)时,这可能会成为一个问题。虽然这些基于大量数据训练的大型模型在过去几年变得非常强大,但在以实际方式用于帮助人们生活更轻松时,它们往往无法发挥其潜力。大型语言模型中的一致性问题通常表现为:提供无效的帮助:不遵循用户的明确指示。内容小说:构成不存在或虚假事实的模型。缺乏可解释性:人们很难理解模型是如何得出特定决策或预测的。有害内容偏见:在有偏见的有害数据上训练的语言模型可能会在其输出中表现出这种情况,即使没有明确指示这样做也是如此。但具体来说,一致性问题从何而来?语言模型的训练方式是否天生就容易出现不一致?语言模型训练策略如何造成不一致?Next-token-prediction和masked-language-modeling是训练语言模型的核心技术。在第一种方法中,模型被赋予一个单词序列作为输入,并被要求预测序列中的下一个单词。如果给模型一个输入句子:“Thecatsatonthe”,它可能会将下一个词预测为“mat”、“chair”或“floor”,因为这些词在之前的上下文中出现的概率很高;语言模型实际上能够评估给定先前序列的每个可能单词的可能性。masked-language-modeling方法是Next-token-prediction的一种变体,其中输入句子中的某些单词被特殊标记替换,例如[MASK]。然后要求模型预测应该插入掩码位置的正确单词。如果给模型一句话:“The[MASK]satonthe”,它可能会预测到应该填在MASK位置的词是“cat”和“dog”。这些目标函数的优点之一是它允许模型学习语言的统计结构,例如常见的单词序列和单词使用模式。这通常有助于模型生成更自然、更流畅的文本,是每个语言模型预训练阶段的重要一步。然而,这些目标函数也会导致问题,主要是因为模型无法区分重要错误和不重要错误。一个非常简单的示例是,如果您向模型输入以下句子:“奥古斯都统治下的罗马帝国[MASK]。”可能预测MASK位置应该填“begin”或“ended”,因为这两个词出现的概率很高。一般来说,这些训练策略可能会导致语言模型在一些更复杂的任务中不一致,因为仅训练预测文本序列中的下一个单词的模型可能不一定学习其含义表征的一些更高层次的方面。因此,该模型很难泛化到需要更深入地理解语言的任务。研究人员正在研究各种方法来解决大型语言模型中的一致性问题。ChatGPT基于原始的GPT-3模型,但为了解决模型不一致问题,它使用人工反馈进一步训练以指导学习过程。具体使用的技术就是前面提到的RLHF。ChatGPT是第一个在真实场景中使用该技术的模型。那么ChatGPT是如何利用人工反馈来解决一致性问题的呢?来自人类反馈的强化学习方法通??常包括三个不同的步骤:监督调优:预训练语言模型根据少量标记数据进行调优,以学习一种有效的方式从给定的提示列表中生成输出。监督策略(即SFT模型);模仿人类偏好:注释者对相对大量的SFT模型输出进行投票,这会创建一个由比较数据组成的新数据集。在这个数据集上训练一个新的模型,称为训练奖励模型(RewardModel,RM);ProximalPolicyOptimization(PPO):RM模型用于进一步调优和改进SFT模型,PPO输出即为策略模型。第一步只做一次,而第二步和第三步可以不断重复:收集更多当前最佳策略模型的比较数据,用它来训练新的RM模型,然后训练新的策略。接下来,将详细描述每个步骤的细节。第1步:监督调整模型第一步是收集数据以训练监督策略模型。数据收集:选择提示列表,并要求注释者写下预期的输出。对于ChatGPT,使用了两种不同的提示源:一些是直接使用注释者或研究人员准备的,另一些是从OpenAI的API请求中获得的(即来自GPT-3用户)。虽然整个过程缓慢且昂贵,但最终结果是一个相对较小的高质量数据集(可能有12-15k个数据点),可用于调整预训练语言模型。模型选择:ChatGPT的开发者选择了GPT-3.5系列的预训练模型,而不是对原始GPT-3模型进行微调。使用的基线模型是最新版本的text-davinci-003(程序代码调优的GPT-3模型)。要创建像ChatGPT这样的通用聊天机器人,开发人员需要在“代码模型”而非纯文本模型之上进行微调。由于此步骤的数据量有限,此过程获得的SFT模型可能会输出用户仍然不感兴趣的文本,并且经常会出现不一致的情况。这里的问题是监督学习步骤具有很高的可扩展性成本。为了克服这个问题,所使用的策略是让人工注释者对SFT模型的不同输出进行排序以创建RM模型,而不是让人工注释者创建更大的精选数据集。第2步:训练奖励模型这一步的目标是直接从数据中学习目标函数。此函数的目的是对SFT模型输出进行评分,这表示它们对人类的期望程度。这强烈反映了所选人工注释者的特定偏好以及他们同意遵循的通用准则。最终,该过程将产生从数据中模仿人类偏好的系统。它是这样工作的:选择提示列表,SFT模型为每个提示生成多个输出(4到9之间的任何值);注释器将输出从最好到最差排序。结果是一个新的标记数据集,大约是用于SFT模型的确切数据集大小的10倍;这个新数据用于训练RM模型。该模型将SFT模型输出作为输入,并按优先顺序对它们进行排序。注释者对输出进行排序比从头开始要容易得多,这是一个更有效地扩展的过程。实际上,所选提示的数量约为30-40k,并且包括不同的排序输出组合。第3步:使用PPO模型微调SFT模型在此步骤中,应用强化学习通过优化RM模型来微调SFT模型。使用的特定算法称为近端策略优化(PPO),而调优模型称为近端策略优化模型。什么是PPO?该算法的主要特点如下:PPO是强化学习中训练agent的算法。之所以称为“on-policy”算法,是因为它直接学习和更新当前的策略,而不是像DQN的“off-policy”算法那样从过去的经验中学习。PPO根据代理人采取的行动和获得的奖励不断调整策略;PPO采用“trustregionoptimization”的方法对policy进行训练,在一定程度上限制了policy相对于之前policy的变化范围,保证了稳定性。这与其他使用梯度方法的策略形成鲜明对比,后者有时会通过大规模更新破坏策略的稳定性;PPO使用价值函数来估计给定状态或动作的预期奖励。价值函数用于计算优势函数,它表示预期收益与当前收益之间的差异。然后使用优势函数通过比较当前策略正在执行的操作与先前策略将采取的操作来更新策略。这使PPO可以根据所采取行动的估计价值对政策进行更明智的更新。在这一步中,PPO模型由SFT模型初始化,价值函数由RM模型初始化。该环境是一个生成随机提示并期望对提示做出响应的“强盗环境”。对于给定的提示和响应,它会产生相应的奖励(由RM模型确定)。SFT模型会在每个token上加上一个KL惩罚因子,以避免RM模型过度优化。性能评估因为模型是在人工标注的输入上训练的,所以评估的核心部分也是基于人工输入,即要求标注者对模型输出的质量进行打分。为了避免训练阶段涉及的注释者的判断过度拟合,测试集使用了来自其他OpenAI客户端的提示,这些提示不存在于训练数据中。该模型根据三个标准进行评估:有用性:判断模型遵循和推断用户指令的能力。现实:判断模型倾向于在封闭域任务中产生虚构的事实。Harmless:标注者评估模型的输出是否合适,是否包含歧视性内容。该模型还评估了传统NLP任务(如问答、阅读理解和摘要)的零样本学习性能,开发人员发现该模型在其中一些任务上的表现略逊于GPT-3,这是“对齐税的一个例子,其中基于人类反馈强化学习的对齐程序是以降低某些任务的性能为代价的。通过称为预训练混合的技巧可以大大减少这些数据集上的性能回归:在训练期间通过梯度下降的PPO模型,通过混合SFT模型和PPO模型的梯度来计算梯度更新。该方法的缺点该方法一个非常明显的局限性是,在将语言模型与人类意图对齐的过程中,用于微调模型的数据会受到各种错综复杂的主观因素的影响,主要包括:人工标注者的偏好用于演示数据;设计研究和编写标签说明的研究人员;选择开发人员制作或OpenAI客户提供的提示;注释者偏差包含在RM模型训练和模型评估中。ChatGPT的作者还承认一个明显的事实,即参与训练过程的注释者和研究人员可能无法完全代表语言模型的所有潜在最终用户。除了这种明显的“内生”限制外,该方法还有一些其他缺点和需要解决的问题:缺乏对照研究:报告的结果将最终PPO模型的性能与SFT模型进行了基准比较。这可能会产生误导:您怎么知道这些改进是由于RLHF?因此,有必要进行对照研究,包括投入与训练RM模型完全相同数量的标记工时,以创建具有高质量数据的更大的精选监督调整数据集。与监督方法相比,这允许客观测量RLHF方法的性能改进。简而言之,缺乏此类对照研究使一个基本问题完全悬而未决:RLHF真的擅长连贯的语言模型吗?比较数据缺乏基本事实:注释者通常不同意模型输出的排名。从技术上讲,由此产生的风险是在没有任何基本事实的情况下为比较数据增加显着差异。人类偏好不是同质的:RLHF方法将人类偏好视为同质和静态的。假设所有人都具有相同的价值观显然是不准确的。虽然有大量的公共价值观,但人类对很多事情还是有很多不同的认知。RM模型提示稳定性测试:没有实验显示RM模型对输入提示变化的敏感性。如果两个提示在句法上不同但在语义上是等价的,那么RM模型能否在模型输出的排名中显示出显着差异?即提示的质量对RM来说有多重要?其他问题:在RL方法中,模型有时可以学习操纵自己的RM模型以实现预期的结果,从而导致“过度优化的策略”。这可能会导致模型重新创建一些模式,由于某些未知原因,这些模式会使RM模型得分更高。ChatGPT通过在RM函数中使用KL惩罚来解决这个问题。相关阅读:一篇关于ChatGPT的RLHF方法的相关论文:Traininglanguagemodelstofollowinstructionswithhumanfeedback(https://arxiv.org/pdf/2203.02155.pdf),里面其实详细描述了一种叫做InstructionGPT的模型,OpenAI将其称为ChatGPT的“兄弟模型”。LearningtosummarizefromHumanFeedback(https://arxiv.org/pdf/2009.01325.pdf)描述了文本摘要上下文中的RLHF。PPO(https://arxiv.org/pdf/1707.06347.pdf):PPO算法论文。根据人类偏好进行深度强化学习(https://arxiv.org/abs/1706.03741)DeepMind在Sparrow(https://arxiv.org/pdf/2209.14375.pdf)和GopherCite(https:https://arxiv.org/abs/2203.11147)文件。
