OpenAI前对齐团队「遗作」:RLHF不够用了!用GPT-4训练GPT-4
原创 关注AI的 机器之心 2024年06月28日 16:00 北京
机器之心报道
编辑:饼饼、山茶花
用魔法打败魔法。
随着大模型在推理能力和行为表现上的不断提升,ChatGPT 的错误变得越来越难以察觉。
为了解决这一问题,最近,OpenAI 基于 GPT-4 训练了一个专门找 bug 的新模型 ——CriticGPT。它通过精准地分析 ChatGPT 的回答并提出建设性的批评,帮助人类训练师更准确地评估模型生成的代码,并识别其中的错误或潜在问题。
据介绍,在 CriticGPT 的辅助下,人们审查 ChatGPT 代码的准确率提高了 60%。
研究人员还发现,CriticGPT 在很多情况下比人类专家更擅长发现错误,它们甚至能在一些被认为是「完美无缺」的任务中找出问题,尽管这些任务大多数并不是代码任务,对 CriticGPT 来说有点超纲。
有意思的是,OpenAI 发布的这篇论文中,赫然出现了 Jan Leike 的大名。
论文链接:https://cdn.openai.com/llm-critics-help-catch-llm-bugs-paper.pdf
说到 Jan Leike,大家并不陌生。在 OpenAI,他曾共同领导了超级对齐团队,致力于开发 InstructGPT、ChatGPT 和 GPT-4 的对齐工作。
然而,一个多月前,OpenAI 联合创始人、首席科学家 Ilya Sutskever 宣告离职,几乎同时,Jan Leike 也撒手不干了,后转投 Anthropic 麾下。
尽管 Jan Leike 离开时与「老东家」OpenAI 上演了一出撕逼大战,不过,这次 CriticGPT 的发布,Jan Leike 仍为其站台,只是在 X 帖文的最后,Jan Leike 附上了 Anthropic 的招聘信息。
CriticGPT:专门给ChatGPT挑毛病的模型
OpenAI 研究团队训练了一个名为 CriticGPT 的模型,它是基于 GPT-4 构建的,专门用于捕捉 ChatGPT 代码输出中的错误。
实验结果表明,在 CriticGPT 的辅助下,人们审查 ChatGPT 代码的准确率比没有辅助时提高了 60%。
目前,该团队正着手将类似 CriticGPT 的模型整合到他们的 RLHF 流程中,以便为训练师提供更为明确的 AI 支持。这是朝着能够评估高级 AI 系统输出迈出的重要一步,没有更好的工具,人们很难对这些输出进行评级。
随着模型在推理能力和行为表现上的不断提升,ChatGPT 的错误变得越来越难以察觉,这给 AI 训练师在发现不准确的答案时带来了挑战,使得驱动 RLHF 的比较任务变得更加艰巨。这是 RLHF 的一个根本性限制,随着模型逐渐超越任何提供反馈的人类知识水平,这一局限可能会使得模型的校准变得更加困难。
为了应对这一挑战,OpenAI 研究团队训练了 CriticGPT,它能撰写批判性评论,专门指出 ChatGPT 回答中的不准确之处。
当然,CriticGPT 提供的建议并不总是正确的,但研究团队发现,它能帮助训练师发现模型写出的答案中的很多问题,这些是他们没有人工智能辅助时发现不了的。
此外,当人们使用 CriticGPT 时,这个人工智能增强了他们的技能,使得他们提出的批评比单独工作时更全面,而且比模型单独工作时产生的幻觉错误要少。在他们的实验中,另一名随机选取的训练师在超过 60% 的情况下,更倾向于选择人类与 CriticGPT 团队提供的批评,而不是未经辅助的个人所提供的。
图注:CriticGPT 帮助训练师写出比他们独立工作时更全面的批评意见,同时产生的幻觉错误比模型单独工作时的批评意见要少。
方法
用 LLM 来评价 LLM 采用了类似于 InstructGPT 和 ChatGPT 的自回归 Transformer 策略。在训练时,研究人员将「问题 - 答案」对作为输入。模型输出的批评将遵循特定格式,在答案中穿插附加评论。
评价
评价标准
对于有 bug 的代码,LLM 可能做出多种类型的批评。例如,一种正确地指出了代码中的严重错误,但这个批评中也包含一个错误的断言;另一种只指出了两个次要的问题。收到这两种批评:有一部分不正确,但可能更有用;另一种未能指出严重问题,但没有明显错误。哪种来自 LLM 的批评更有效呢?为了解决这个问题,研究团队设置了以下标准请人工训练师做了进一步评价:
-
是否全面,即没有遗漏任何明显和严重的问题(全面性)。
-
是否捕捉到了名为「critique-bug inclusion」(CBI)的预先指定的特定错误。
-
是否包含任何臆想的错误或特别吹毛求疵的小问题。
-
根据回答的风格和有用程度,给 LLM 的批评一个整体的主观评分。
人工训练师将根据 1-7 的等级评价这些来自 LLM 的批评。前两个特征(CBI 和全面性)类似于召回率 —— 模型撰写了包括多个错误点的长篇批评,通常评分会提高。然而,批评变长时更可能包含臆想的问题和吹毛求疵。训练师在总体评分时倾向于给准确、全面、简洁且避免吹毛求疵的批评以高分。
比较批评与 Elo 评分
在评价过程中,人工训练师将同时看到对同一问题的四个批评,据此,研究人员可以通过比较得出特定属性的偏好率。例如,如果批评 A 在全面性方面得分为 1/7,而批评 B 得分为 2/7,那么 B 比 A 更全面。
为了总结模型之间的成对偏好率,研究人员计算了 Elo 评分。Elo 评分通过使用 BFGS 对数据集中用于比较的成对模型进行拟合计算得出。模型 A 的 Elo 评分为
。
模型 B 的 Elo 评分为
,人工训练师更偏好由 Elo
生成的响应而非 Elo
的概率估计为:
这是模型 A 相对于模型 B 的预估胜率。平局被视为半赢半输。置信区间参考非参数自助法(bootstrap)。
人类批评与 LLM 辅助
除了打分外,人工训练师还需审查答案并撰写自己的批评。他们和训练 ChatGPT 的是同一批人,Python 经验的中位数是五年。在评价过程中,人工训练师还可以获得 CriticGPT 的帮助,他们将在评价时看到预先填好的来自 LLM 的批评,但是来自 LLM 的建议被训练师拒绝很常见,添加额外评论虽然较少见但也会发生。
评估数据分布
该论文几乎所有的训练和评估输入都来自 OpenAI 的 RLHF 管线。它们由(问题,答案)对组成。研究人员通过启发式方法对模型用代码回答的情况进行了降采样:如果模型的回答中至少有 50% 的行数是 Python 代码,就选择该样本。此数据流包含两种已知错误的数据集:
-
人为插入错误:人工训练师将「篡改」部分回答,在其中插入错误,并保留一个子集进行评估。
-
人为检测错误:来自 ChatGPT 标签管线的一组被原始评估者给出低分并存在明显问题的编程任务。
这两个分布具有不同的特征:人为检测错误更「自然」,但通常更容易被人类发现。相比之下,人为插入错误更难被人类发现,平均来说更严重,但不属于模型错误的自然分布。在这两种设置下对来自 LLM 的批评进行评分时,人工训练师会将原始错误描述(插入或首次检测时撰写)作为背景提供给模型。
在实验中,论文作者研究了 CriticGPT 能否捕捉到插入的错误以及之前训练师发现的 ChatGPT 中「自然发生」的错误。他们发现,在 63% 的情况下,训练师更倾向于 CriticGPT 的批评而非 ChatGPT 的批评,部分原因是新的 CriticGPT 产生的「吹毛求疵」(小且无用的抱怨)较少,并且较少出现虚构的问题。
使用 RLHF 训练 CriticGPT
他们采取了和 ChatGPT 类似的 RLHF 管线来训练 CriticGPT。
步骤 0:篡改。
人工训练师将编辑模型生成的答案,引入细微的错误,并特别标注。「篡改」是对抗性收集的:在访问生成批评的 LLM 时 ,他们将在每三次样本中有意漏掉他们「篡改」的错误,使研究团队和 CriticGPT 都更难发现这些错误。之所以采取「篡改」这种方法,是因为论文作者想为没有真实奖励函数的长篇和开放式任务找到一种方法,可以简单地在未修改的答案上训练批评模型。「篡改」的优势在于它提供了高质量、难度大的参考错误,一方面人工训练师更容易区分 LLM 是否抓住了回答中的问题,巩固排名任务,另一方面,能确保确保大部分数据是在与 LLM 分布相似的有错误代码上收集的,而不是来自现有的错误数据集。
步骤 1:为数据集中每个(问题,答案)对抽取多个批评。
步骤 2:人工训练师对抽取的批评的属性进行整体上的评分。他们将对三个 LLM 批评和一个「黄金批评」进行排名。「黄金批评」是根据「篡改」任务中提供的错误描述形成的。论文作者发现未修改输入的批评的对比评分结果在标注者间的一致性较低,并导致 CriticGPT 的表现较差。
步骤 3:训练一个奖励模型来预测人类的整体质量排名。论文作者发现,通过在测试时对批评奖励模型进行额外搜索,可以生成更长、更全面的批评。此搜索过程允许研究人员在代码中查找问题的积极性上进行平衡,并在幻觉和检测到的错误数量之间配置精度 - 召回权衡。这意味着 CriticGPT 可以生成对 RLHF 尽可能有帮助的批评。
步骤 4:使用 PPO 优化策略对抗奖励模型。由于 CriticGPT 是是 GPT-4 家族的 Transformer 语言模型,经过预训练以进行下一个词的预测,方法参考 GPT-4 的技术报告。
技术报告:https://cdn.openai.com/papers/gpt-4.pdf
步骤 5:应用一种称为强制采样束搜索(FSBS)的推理时采样策略。
FSBS 能让 CriticGPT 生成更长且更全面的批评,同时减少幻觉或吹毛求疵的发生率。CriticGPT 将(问题,答案)对作为输入,并输出包含从答案中引用的内容和潜在问题评论的结构化批评。在批评中,答案的部分内容通过以「```」 开头的 markdown 代码块被引用为「高亮」。随后是指示该高亮部分错误的批评。在 FSBS 中,论文作者强制模型生成带有受限采样的高亮部分进行搜索,然后根据表达式 rm_score + LENGTH_MODIFIER * num_highlights 选择评分最高的批评。
该研究团队也坦言,现在的 CriticGPT 只能处理很短的答案,但未来他们需要更厉害的方法,来帮助 AI 训练师理解那些又长又难的任务。
CriticGPT 仍然会产生幻觉,这种幻觉还会影响训练师,让他们在标记的时候也出错。而且,现阶段CriticGPT主要集中在单点错误的检测,对于分散在多个部分的错误还需进一步研究。
CriticGPT 虽然很有用,但如果任务太难太复杂,即使是专家用了这个模型也可能评估不出来。
为了让越来越复杂的 AI 系统更好地协同工作,他们需要更先进的工具。该团队在研究 CriticGPT 时发现,用一种叫做 RLHF 的技术来训练 GPT-4,能帮助人类产生更好的数据。他们正计划进一步扩大该研究,并将其付诸实践。
参考链接:
https://openai.com/index/finding-gpt4s-mistakes-with-gpt-4/
https://x.com/janleike/status/1806386442568142995