OpenAI要为GPT-4解决数学问题了:奖励模型指错,解题水平达到新高度

news2024/11/18 21:47:16

原文:OpenAI要为GPT-4解决数学问题了:奖励模型指错,解题水平达到新高度 - 知乎

对于具有挑战性的 step-by-step 数学推理问题,是在每一步给予奖励还是在最后给予单个奖励更有效呢?OpenAI 的最新研究给出了他们的答案。

现在,大语言模型迎来了「无所不能」的时代,其中在执行复杂多步推理方面的能力也有了很大提高。不过,即使是最先进的大模型也会产生逻辑错误,通常称为幻觉。因此,减轻幻觉是构建对齐 AGI 的关键一步。

为了训练更可靠的模型,目前可以选择两种不同的方法来训练奖励模型,一种是结果监督,另一种是过程监督。结果监督奖励模型(ORMs)仅使用模型思维链的最终结果来训练,而过程监督奖励模型(PRMs)则接受思维链中每个步骤的奖励。

考虑到训练可靠模型的重要性以及人工反馈的高成本,仔细比较结果监督与过程监督非常重要。虽然最近的工作已经开展了这种比较,但仍然存在很多问题。

在本文中,OpenAI 进行了调研,结果发现在训练模型解决 MATH 数据集的问题时,过程监督显著优于结果监督。OpenAI 使用自己的 PRM 模型解决了 MATH 测试集中代表性子集的 78% 的问题。

此外为了支持相关研究,OpenAI 还开源了 PRM800K,它是一个包含 800K 个步级人类反馈标签的完整数据集,用于训练它们的最佳奖励模型。

如下为一个真正(True positive)的问答示例。该问题以及 OpenAI 列举的其他问题示例均来自 GPT-4。这个具有挑战性的三角学问题需要并不明显地连续应用多个恒等式。大多数解决方案尝试都失败了,因为很难知道哪些恒等式实际上有用。尽管 GPT-4 通常无法解决这个问题(正确率仅为 0.1% ),但本文的奖励模型正确地识别出了这个解决方案是有效的。

再看一个假正(False positive)的问答示例。在第四步中,GPT-4 错误地声称该序列每 12 个项重复一次,而实际上是每 10 个项重复一次。这种计数错误偶尔会愚弄奖励模型。

论文作者之一、OpenAI Alignment 团队负责人 Jan Leike 表示,「使用 LLM 做数学题的真正有趣结果是:监督每一步比只检查答案更有效。」

英伟达 AI 科学家 Jim Fan 认为,「这篇论文的观点很简单:对于挑战性的逐步问题,要在每一步给予奖励,而不要在最后给予单个奖励。从根本上来说,密集奖励信号>稀疏。」

我们接下来细看 OpenAI 这篇论文的方法和结果。

论文地址:https://cdn.openai.com/improving-mathematical-reasoning-with-process-supervision/Lets_Verify_Step_by_Step.pdf

数据集地址:https://github.com/openai/prm800k

方法概览

该研究按照与 Uesato et al. (2022) 类似的方法对结果监督和过程监督进行了比较。值得注意的是这项研究无需人工即可提供结果监督,因为 MATH 数据集中的所有问题都有可自动检查的答案。相比之下,没有简单的方法来自动化过程监督。该研究依靠人类数据标记者来提供过程监督,具体来说是需要人工标记模型生成的解决方案中每个步骤的正确性。该研究在大规模和小规模两种情况下分别进行了实验。

范围

对于每种模型规模,该研究都使用一个固定模型来生成所有解决方案。这个模型被称为生成器,OpenAI 表示不会通过强化学习 (RL) 来改进生成器。

基础模型

所有大型模型均是基于 GPT-4 模型进行微调得来的。该研究还添加了一个额外的预训练步骤 —— 在含有约 1.5B 数学相关 token 的数据集 MathMix 上微调所有模型。与 Lewkowycz et al. (2022) 类似,OpenAI 的研究团队发现这种方法可以提高模型的数学推理能力。

生成器

为了更容易解析单个步骤,该研究训练生成器在生成解决方案时,步骤之间用换行符分隔。具体来说,该研究对 MATH 训练问题使用少样本生成解决方案,过滤出得到最终正确答案的解决方案,并在该数据集上对基础模型进行一个 epoch 的微调。

数据采集

为了收集过程监督数据,该研究向人类数据标记者展示了大规模生成器采样的数学问题的逐步解决方案。人类数据标记者的任务是为解决方案中的每个步骤分配正面、负面或中性标签,如下图 1 所示。

该研究只标记大型生成器生成的解决方案,以最大限度地发挥有限的人工数据资源的价值。该研究将收集到的按步骤标记的整个数据集称为 PRM800K。PRM800K 训练集包含 800K 步骤标签,涵盖 12K 问题的 75K 解决方案。为了最大限度地减少过拟合,PRM800K 训练集包含来自 MATH 的 4.5K 测试问题数据,并仅在剩余的 500 个 MATH 测试问题上评估模型。

结果监督奖励模型 (ORM)

该研究按照与 Cobbe et al. (2021) 类似的方法训练 ORM,并从生成器中为每个问题采样固定数量的解决方案,然后训练 ORM 来预测每个解决方案的正确与否。实践中,自动检查最终答案来确定正确性是一种常用的方法,但原则上由人工标记者来提供标签。在测试时,该研究使用 ORM 在最终 token 处的预测作为每个解决方案的总分。

过程监督奖励模型(PRM)

PRM 用来预测每个步骤(step)中最后一个 token 之后的步骤的正确性。这种预测采用单个 token 形式,并且 OpenAI 在训练过程中最大化这些目标 token 的对数似然。因此,PRM 可以在标准的语言模型 pipeline 中进行训练,无需任何特殊的适应措施。

图 2 为同一个问题的 2 种解决方案,左边的答案是正确的,右边的答案是错误的。绿色背景表示 PRM 得分高,红色背景表示 PRM 得分低。PRM 可以正确识别错误解决方案中的错误。

在进行过程监督时,OpenAI 有意选择仅对第一个错误步骤进行监督,从而使得结果监督和过程监督之间的比较更加直接。对于正确的解决方案,两种方法提供的信息相同,因为每一步都是正确的解题方法。对于错误的解决方案,两种方法都能揭示至少存在一个错误,并且过程监督还揭示了该错误的确切位置。

大规模监督

OpenAI 使用全流程监督数据集 PRM800K 来训练 PRM,为了使 ORM 基准更加强大,OpenAI 还为每个问题进行了 100 个样本的训练,这些样本均来自生成器,由此 ORM 训练集与 PRM800K 没有重叠样本。

下图为结果监督和过程监督奖励模型以及投票方案的比较,结果表明在搜索模型生成的解决方案时,PRM 比 ORM 和多数投票更有效。

小规模综合监督

为了更好的比较结果监督和过程监督,首先需要注意的是 ORM 和 PRM 的训练集不具有直接可比性,PRM 训练集是使用主动学习构建的,偏向于答案错误的解决方案,还比 ORM 训练集少一个数量级。

过程监督 VS 结果监督

首先 OpenAI 从小规模生成器中为每个问题采样 1 到 200 个解决方案。对于每个数据集,OpenAI 提供三种形式的监督:来自 PRM_large 的过程监督,来自 PRM_large 的结果监督以及来自最终答案检查的结果监督。

图 4a 表明,过程监督明显优于其他两种形式的结果监督;图 4b 表明,使用 PRM_large 进行结果监督明显比最终答案检查的结果监督更有效。

OOD 泛化

为了衡量模型在分布外(OOD)泛化的性能,OpenAI 对大规模 ORM 和 PRM 在一个由 224 个 STEM 问题组成的 held-out(留出法)上进行评估,这些问题来自最新的 AP 物理(美国大学先修课程简称 AP)、AP 微积分、AP 化学、AMC10(理解为数学竞赛)和 AMC12 考试,模型没有见过这些问题。表格 1 中报告了 ORM、PRM 和多数投票的前 100 个的最佳表现。表明,PRM 的性能优于 ORM 和多数投票,同时意味着 PRM 在新的测试问题上性能仍然保持不变。

发布于 2023-06-01 17:46・IP 属地北京

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1475935.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

LASSO算法

LASSO (Least Absolute Shrinkage and Selection Operator) 是一种回归分析的方法,它能够同时进行变量选择和正则化,以增强预测准确性和模型的解释性。LASSO通过在损失函数中加入一个L1惩罚项来实现这一点。该惩罚项对系数的绝对值进行约束。 基本概念 …

前后端延迟怎么解决

当今互联网应用的发展越来越迅猛,用户对于网站或应用的性能要求也越来越高。其中一个重要方面就是前后端延迟的解决,也就是减少前端与后端之间的通信时间延迟,提高用户体验。本文将详细介绍如何解决前后端延迟的问题。 网络延迟 数据在网络…

springboot项目中使用mybatis作为数据查询框架,如何实现查询sql的日志打印输出?

在Spring Boot项目中使用MyBatis作为数据查询框架时,可以通过配置日志记录器来实现SQL查询的日志打印输出。MyBatis支持多种日志框架,如SLF4J、Log4j2等。这里介绍几种常见的配置方法: 1. 使用application.properties或application.yml配置 …

如何开通微信小程序商城

微信小程序店铺是一种新型的线上商城,可以帮助商家快速搭建自己的线上销售平台,吸引更多的用户进行购买。作为小程序服务商,我们可以帮助商家开通微信小程序店铺,提升他们的线上销售业绩。 1. 进入采云小程序。进入采云小程序首页…

skiplist(高阶数据结构)

目录 一、概念 二、实现 三、对比 一、概念 skiplist是由William Pugh发明的,最早出现于他在1990年发表的论文《Skip Lists: A Probabilistic Alternative to Balanced Trees》 skiplist本质上是一种查找结构,用于解决算法中的查找问题,…

ntp时钟服务安装- 局域网节点时间同步

场景: 一般部署大数据相关应用服务,各个节点之间需要时间同步;内网情况下,很可能各节点之前时间可能不一致,或者过一段时间后 又不一致了 ntp 时钟服务器: 可用于内网各个节点之前得时间同步,安…

C#理论 —— 基础语法、数据类型、变量、常量、运算符、三大结构

文章目录 1. 基础语法1.1 标识符命名规则1.2 C# 关键字1.3 C#注释 2. 数据类型2.1 值类型(Value types)2.2 引用类型(Reference types)2.2.1 对象(Object)类型3.2.2 动态(Dynamic)类…

ubuntu常见配置

ubuntu各个版本的安装过程大差小不差,可以参考,ubuntu20.04 其它版本换一下镜像版本即可 安装之后需要配置基本的环境,我的话大概就以下内容,后续可能有所删改 sudo apt-get update sudo apt-get install gcc sudo apt-get inst…

【踩坑】PyTorch中指定GPU不生效和GPU编号不一致问题

转载请注明出处:小锋学长生活大爆炸[xfxuezhang.cn] 指定GPU不生效问题 解释:就是使用os.environ["CUDA_VISIBLE_DEVICES"] "1"后,后面使用起来仍然是cuda0. 解决:在最开头就使用 import os os.environ[&…

【MySQL | 第一篇】undo log、redo log、bin log三者之间的区分?

undo log、redo log、bin log三者之间的区分? 从 产生的时间点、日志内容、用途 三方面展开论述即可 1.undo log——撤销日志 时间点:事务开始之前产生,根据当前版本的数据生成一个undo log,也保存在事务开始之前 作用&#xf…

springboot+vue网站开发-渲染前端列表页面-缩略图信息

springbootvue网站开发-渲染前端列表页面-缩略图信息!内容比较多。这是第一篇,先给大家展示的是,基础的代码封装,vue前端网站模块的代码展示。 我们使用到了pinia-存储我们请求过来的数据,它是一个状态管理&#xff0c…

非线性优化-高斯牛顿法

在SLAM领域,后端多采用基于非线性优化的方法,来优化位姿和地图点,其中高斯牛顿法的使用频率很高。 求解高斯牛顿法的核心公式: 其中 f 是误差函数,J是误差关于待优化变量的雅可比矩阵。 其中H为海森矩阵&#xff08…

RRT算法学习及MATLAB演示

文章目录 1 前言2 算法简介3 MATLAB实现3.1 定义地图3.2 绘制地图3.3 定义参数3.4 绘制起点和终点3.5 RRT算法3.5.1 代码3.5.2 效果3.5.3 代码解读 4 参考5 完整代码 1 前言 RRT(Rapid Random Tree)算法,即快速随机树算法,是LaVa…

C语言第三十二弹---自定义类型:联合和枚举

✨个人主页: 熬夜学编程的小林 💗系列专栏: 【C语言详解】 【数据结构详解】 目录 1、联合体 1.1、联合体类型的声明 1.2、联合体的特点 1.3、相同成员的结构体和联合体对比 1.4、联合体大小的计算 1.5、联合的⼀个练习 2、枚举类型 …

176基于matlab的自适应滤波法预测

基于matlab的自适应滤波法预测,自适应滤波预测实质上是一种加权滑动平均预测,通过迭代得到最佳权值,并给出了相对误差图和预测效果图,程序已调通,可直接运行。 176matlab自适应滤波法预测 时间序列预测 (xiaohongshu.c…

51单片机(6)-----直流电机的介绍与使用(通过独立按键控制电机的运行)

前言:感谢您的关注哦,我会持续更新编程相关知识,愿您在这里有所收获。如果有任何问题,欢迎沟通交流!期待与您在学习编程的道路上共同进步。 目录 一. 直流电机模块介绍 1.直流电机介绍 2.电机参数 二. 程序设计…

java线程池原理源码解析,程序员如何技术划水

前言 面试大概九十分钟,问的东西很全面,需要做充足准备,就是除了概念以外问的有点懵逼了。回来之后把这些题目做了一个分类并整理出答案(强迫症的我~狂补知识)分为MySQLJavaRedis算法网络Linux等六类,接下…

2024-02-28(Kafka,Oozie,Flink)

1.Kafka的数据存储形式 一个主题由多个分区组成 一个分区由多个segment段组成 一个segment段由多个文件组成(log,index(稀疏索引),timeindex(根据时间做的索引)) 2.读数据的流程 …

Swagger接口文档管理工具

Swagger 1、Swagger1.1 swagger介绍1.2 项目集成swagger流程1.3 项目集成swagger 2、knife4j2.1 knife4j介绍2.2 项目集成knife4j 1、Swagger 1.1 swagger介绍 官网:https://swagger.io/ Swagger 是一个规范和完整的Web API框架,用于生成、描述、调用和…

textbox跨线程写入

实现实例1 实现效果 跨线程实现 // 委托,用于定义在UI线程上执行的方法签名 //public delegate void SetTextCallback(string text);public void textBoxText(string text){// 检查调用线程是否是创建控件的线程 if (textBox1.InvokeRequired){// 如果不是&#…