OpenAI最近的拖延症状逐渐严重,不仅GPT-5遥遥无期,前几天还宣布GPG-4o的语音功能将推迟一个月发布。
或许是为了缓解广大网友的热切期待,OpenAI在今天放出了新模型CriticGPT,相当于GPT-4的「拐杖」。
我们训练了一个模型CriticGPT,来捕获GPT-4生成代码中的错误。我们开始将此类模型集成到RLHF对齐管道中,以帮助人类监督AI执行困难的任务。
值得注意的是,CriticGPT依旧是用GPT-4模型训练的,但被用于给GPT-4生成的代码「捉虫」,这似乎有点「自我闭环」的意思?
推特网友迅速质疑,「我用石头摧毁石头」,矛盾得有点好笑。
但也有人从另一个角度发现了华点:这难道就是模型自我提升的开始?
官方发布的推文和博客中还没有提及CriticGPT何时会集成到ChatGPT中,但技术文章已经发布,而且又是一篇离职人员的遗留作品——由超级对齐的scalable oversight团队共同完成,作者署名包含Jan Leike。
论文地址:https://cdn.openai.com/llm-critics-help-catch-llm-bugs-paper.pdf
那就来仔细看看,让GPT-4「自我提升」的结果究竟如何?
GPT-4自己批自己
RLHF全称为Reinforcement Learning from Human Feedback,是包括ChatGPT在内的很多LLM常用的对齐方法。人类AI训练师们会收集模型对同一个问题的不同响应并进行评分,以此改进模型。
随着ChatGPT的响应变得更加准确,它犯的错误也会更微妙、让人类训练师更难察觉,因而降低了RLHF的有效性。
事实上,这也是RLHF的根本限制,随着模型逐渐进化到比任何提供反馈的专家都更有知识,基于人类的评价来调整模型就会越来越困难。
因此,OpenAI的「可扩展监督」团队想到了跳出RLHF的框架,干脆训练模型为ChatGPT撰写评论,纠正输出结果中不准确的地方。
这种方法似乎取代了RLHF,但好像又没取代——因为训练CriticGPT的过程,仍然采用了RLHF。
核心思想非常简洁:CriticGPT依旧是自回归模型。标注者先向ChatGPT的响应输出中人为注入一些微妙的错误,CriticGPT针对这些有错误的答案生成批评意见,之后再由人类训练师为批评意见进行打分排名。
CriticGPT训练流程
RLHF的训练过程与ChatGPT类似,具体如下:
- 为数据集中每个问题和答案采样CriticGPT生成的批评意见
- 人类评估者对其各个属性及总体质量进行评分
- 训练奖励模型用于预测人类对模型输出的整体质量排名
- 使用PPO优化奖励模型
- 应用一种创新的推理时采样策略:强制采样束搜索(FSBS)
大部分的训练数据都来自人类篡改GPT答案的这个过程,但也包含少部分未经修饰的原始答案。
为什么一定要人为向ChatGPT的响应输出中注入bug?不能直接筛选出有bug的答案吗?
论文中提出,使用原始、未经修饰的答案会存在如下几个问题:
- 许多答案不会包含严重问题,进而降低了数据对于改进批评意见的价值
- 如果无法控制错误类型,CriticGPT会输出自由形式且模糊不清的批评意见,难以验证其正确性
- 人类也很难发现CriticGPT遗漏的重要问题
- 偏好率可能受到许多风格因素的影响,并会高估模型性能
需要注意的是,人类已经检测到有bug的模型输出,本身就说明它们更容易被人发现!
篡改方法最重要的优点是制造出了高质量、难以发现的错误,而且平均而言更严重。知道了哪里有预先插入的bug,人类训练师也更容易区分出那些不够全面、遗漏bug的批评。
团队有意地保证了这些人为篡改的复杂和微妙。他们训练了一个二元判别器预测代码是否被篡改,发现较小的模型并没有较好的分辨能力(图13),以此验证了篡改代码的质量。
人类评估CriticGPT的批评意见时,从以下几个维度给出评分和排名:
- 是否全面 ,即没有遗漏任何明显或严重的问题
- 是否捕获到了之前插入的特定bug,即CBI(critique-bug inclusion)
- 有没有出现幻觉或者挑剔现象,指出了不存在的问题
- 对整体有用性的主观评级,包含上述内容并考虑风格和整体的实用性
在训练CriticGPT的过程中,除了RLHF方法,团队将奖励模型与搜索结合,提出了一种名为强制采样束搜索的方法(Forced Sampling Beam Seach,FSBS)。
一般来说,模型产生的批评意见更长时,也更容易出现幻觉。这有点类似于「准确率」和「召回率」之间的权衡。
FSBS能够激励CriticGPT在产生更长、更全面的批评时,减少「无中生有」或者「鸡蛋里挑骨头」的发生率。
之后进行的消融实验也证明了FSBS方法的有效性(图12)。
当然,OpenAI还是忘不了他们最喜欢的Scaling Law。他们用RLHF训练并评估了一系列模型,来描述模型规模对bug检测效果的影响(图5)。
直观来看,要达到CriticGPT(只进行了RL)的同等水平,在没有额外数据或修改pipeline的情况下,需要将ChatGPT的预训练计算量扩大30×。
评估结果
首先,团队把人类和CriticGPT撰写的批评意见混杂在一起,再交给人类进行评估。
标注者们会更喜欢自己同行们的产出吗?并没有。
ChatGPT和CriticGPT都超过了人类表现(图1b),而且63%的情况下,CriticGPT撰写的批评意见比人类的更受青睐(图1a)。
要知道,研究团队招来写批评意见的不是编程门外汉,而是有平均5年Python研发经验的技术人员。他们在每个例子上大约会花费50分钟,并能执行代码或查找参考手册,结果也只能发现25%左右的人为注入的bug。
论文认为,这些评估者在没有LLM帮助下撰写的批评意见相对较短,而且可能缺乏所需的领域知识(比如特定的Python库),并且有些篡改行为确实难以发现,这三个原因导致了人类和模型之间如此明显的差异。
从图6中可以看到,CriticGPT的检测错误能力比较全面,对于人为篡改的错误以及原始输出中就存在的错误,都达到了最高的全面性百分比。
更令人惊讶的是,ChatGPT在这两个方面的表现也都超过人类独立撰写的批评意见。人类评估者要借助CriticGPT,才能与ChatGPT水平相当。
但是下面的图7又开启了一轮反转。团队发现,虽然人类容易遗漏错误,但人类也最不容易产生幻觉或者「鸡蛋里挑骨头」的问题。
在产生幻觉这方面,ChatGPT的表现最不如人意,CriticGPT稍有提升。
考虑到批评意见的全面性与减少幻觉之间的权衡,作者提出了团队中「人机合作」模式的好处。如图8所示,人类+CriticGPT的团队表现能够超越模型或人类分别单独工作时的Pareto边界。
总结
可扩展监督(scalabel oversight)的终极目标是帮助人类评估模型,来训练出更好、更安全的策略。
从长期来看,我们应该找到一种泛化性更强的批评模型训练方法,适用于没有groung truth和奖励函数的长形式、开放式任务。
在现实场景中,模型输出的错误可能分布在答案的很多部分。CriticGPT的工作重点是指出一处的重要错误,但未来依旧需要探索,如何识别出分散在答案中各处的错误。
CriticGPT依旧存在幻觉问题,且帮助有限。如果编码任务或者原模型的输出过于复杂,即使是有模型协助的专家也可能无法做出很好的评估。
但这篇文章的方法为今后的RLHF训练带来了一种新鲜思路:将RLHF应用到GPT-4中,训练出CriticGPT这样的模型,可以合成出更多的高质量RLHF数据。