OpenAl o1论文:Let’s Verify Step by Step 快速解读
OpenAl又火了,这次是o1又带给大家惊艳。网上的博主已经有了真真假假的各种评测,我这篇来一点硬核的,解读OpenAl o1背后的论文:Let’s Verify Step by Step
大模型在给定的上下文资料正确的情况下也有可能出现幻觉,这篇论文提出通过逐步验证的方式纠正大模型在处理复杂多步骤推理任务表现。论文的核心是比较过程监督(提供每个中间推理步骤的反馈)和结果监督(仅提供最终结果的反馈)在训练模型解决复杂数学问题中的效果。
- 结果监督:指仅使用模型链式推理的最终结果来训练奖励模型的方法。在这种监督方式中,奖励模型(ORMs)只根据模型生成的最终答案是否正确来进行反馈,而不考虑推理过程中的具体步骤。
- 过程监督:提供每一步中间推理步骤的反馈。这种监督方式可以更精确地指出错误发生的位置,并直接奖励模型沿着人类认可的推理路径进行推理。相比之下,结果监督只提供关于最终结果的反馈。
这篇论文的方法论主要包括以下几个步骤,每一步都有其独特的用途,以下是对论文方法论的快速解读:
-
生成器 (Generator) 的设置和训练:
为了使解析各个步骤更为简单,作者训练生成器以换行分隔的逐步格式生成解决方案。论文作者先用少量示例生成MATH训练问题的解决方案,然后从中筛选出能得出正确最终答案的解决方案,最后,用此数据集对基础模型进行单个周期的微调。此步骤的主要目的是教会生成模型以特定格式生成解答,而不是教模型新技能。 -
数据收集:
为了收集过程中监督数据,人工数据标记人员逐步对生成的问题解决方案进行标注。 -
数据收集方法:
• 研究人员让人类数据标注者针对生成的MATH问题(MATH问题是从各种来源收集和整理而来的。这些问题包括高质量的数学问题及其解决方案、涉及数学问题和概念的自由形式讨论文本,以及一些合成数据。这些问题在数据集MathMix中进行了预训练,增强了模型的数学推理能力,同时确保问题的答案是自动可检验的。)的逐步解决方案进行逐步反馈。
• 标注者任务是对每个步骤的正确性进行标注,这些步骤由模型生成。 -
标注过程:
• 解决方案的每个步骤可以被标注为三种标签之一:正面(positive)、负面(negative)或中立(neutral)。
• 正面标签表示步骤在上下文中是恰当的、合理的且正确的,并且包含的计算易于验证。此外,这一步应该推动问题的解决进展。
• 负面标签表示步骤是错误的或不合理的。
• 中立标签表示步骤在上下文中是恰当的、合理的且正确的,但可能有些模棱两可,或者尽管是有效的,但并不算是最好的建议。
• 为了评估给出标签的正确性,研究人员设定了一些质量控制问题,并标记这些问题的步骤哪些是合理标注为不正确的。标注人员需要在这些质量控制问题中表现出一致性,且与研究人员的金标准标签至少有75%的匹配度。此外,标注者的工作还会定期得到持续质量控制的评估,以确保标注质量。 -
目标数据集:
• 研究团队收集了一个大规模数据集——PRM800K,包括800,000个步骤级别的人工反馈标签,覆盖75,000个解决方案,涉及12,000个问题。 -
数据筛选和优化策略:
• 为了避免过拟合,在训练集内包含了4,500个MATH测试问题的数据,因此实际评估仅限于剩余的500个MATH测试问题。
• 筛选出具有代表性的错误解答以获取更有价值的反馈, 他们策略性地选择最有说服力的错误答案解决方案进行标注。 -
主动学习策略:
• 数据收集过程中的某些阶段,他们定期重新训练PRM,以利用最新的数据进行迭代优化。
• 通过生成多种解决方案并根据当前最好的PRM评分,优先显示那些评分较高但答案错误的解决方案给数据标注者。 -
过程监督奖励模型 (PRMs) 的训练:
现在论文团队有了大约80万个逐步标签,这些标签覆盖了75000个解决方案,涉及12000个问题。PRMs 的训练目的是预测每个步骤在每个步骤末尾的正确性,这个预测以单个标记的形式呈现。在训练过程中,最大化这些目标标记的对数似然。在测试时,为了比较多个解决方案,PRM会对每个解决方案的所有步骤进行前向传递,从而计算每一步为正面的概率。通过将这些概率相乘,可以得到整个方案的分数(解决方案的评分通过每一步为正的概率的乘积来实现)。
我的理解是使用GPT4做生成器生成解决MATH问题的逐步解答。然后,人类标注人员会对这些生成的每一步解答进行标签,然后再训练,差不多就是人类老师对GPT的步骤进行批卷,然后模型再次学习。总的来说,PRMs 的训练通过提供每一步详细的过程监督,进一步提高奖励模型的可靠性和准确性,能更好地定位错误并解决复杂任务。 -
大规模和小规模实验对比:
在大规模和小规模两个不同的训练模式中对比结果,以获得互补的视角。 -
大规模实验:
• 使用的基础模型是 GPT-4。
• 主要目的是通过训练最可靠的 ORM 和 PRM 来推进最先进的技术。
• 大规模实验的目标是提高模型的整体性能,但这种实验方式的训练集不直接可比,因此不适合用于小规模实验的对比。 -
小规模实验:
• 使用的基础模型在设计上类似于 GPT-4,但训练计算量大约是 GPT-4 的 1/200。
• 小规模实验的主要目的是进行更直接的对比,以消除抽样数据量和数据集成本的影响。
• 为了摆脱高昂的人类反馈成本,这种实验利用大规模模型对小规模模型进行监督,从而评估不同监督方法的效果。 -
有监督的数据收集方式:
通过主动学习策略改进数据收集效率。 -
结果监督(Outcome Supervision):
• 定义:仅基于最终结果对模型进行评估和反馈。
• 实现:模型生成解决方案后,通过检查最终答案是否正确来提供反馈。
• 优点:可以自动化,因为结果通常是可验证的(例如数学问题的答案)。
• 缺点:存在信用分配问题,即很难确定哪一步出的错误。特别是在复杂任务中,一个错误步骤会导致整个解决方案出错,单纯依靠最终结果很难改进模型的推理能力。 -
过程监督(Process Supervision):
• 定义:对每一步的中间推理过程进行评估和反馈。
• 实现:使用人类标注者逐步检查模型解决方案中的每一步,标注正确、错误或模糊的步骤。
• 优点:
o 精确的反馈:每一步都得到评估,可以指出具体的错误位置。
o 易于理解:对人类来说,过程监督更容易解释和理解模型是如何进行推理的。
o 奖励对齐:更直接地鼓励模型按照人类认可的思维过程推理。
• 缺点:需要依赖大量的人类标注,成本较高。
在比较这两种方法时,过程监督由于可以提供每一步的细致反馈,在解决复杂多步推理问题上显著优于结果监督。研究表明,使用过程监督训练的模型,对于解决数学问题展现了更高的成功率。例如,研究中提到的过程监督模型成功解决了78%的MATH数据集问题,远高于结果监督模型。同样,通过主动学习机制,过程监督的数据效率提高了2.6倍。
总结:尽管过程监督成本较高,但其精确反馈和高效的训练效果使其在需要复杂多步推理的任务中成为优于结果监督的方法。 -
评估方法:
-
评估奖励模型的效果,通过多解题搜索策略验证其能力。论文作者通过使用"最佳N搜寻"(best-of-N
search)来评估奖励模型的效果。具体步骤如下: 生成解决方案:使用生成模型(generator)生成一系列问题的解决方案。
评分解决方案:每个测试问题的解决方案会通过奖励模型打分,奖励模型会根据每个解决方案的最终答案来自动打分。
选择最佳解决方案:从每个测试问题的所有解决方案中选择奖励模型评分最高的那一个作为最终解。
计算成功率:统计模型选出的最终解中正确答案的比例,以此衡量奖励模型的效果。
通过这种方法,作者能够比较不同奖励模型在不同解决方案数量条件下的表现,评估它们在选择正确解决方案方面的准确性和可靠性。
论文作者也提到了一些验证局限性。具体包括:
- 测试集污染:作者指出,MATH数据集的测试集包含在多个在线平台上讨论的问题,这些问题可能出现在他们的预训练数据集中。他们尝试用字符串匹配启发法去除MathMix数据集中与MATH测试集重叠的问题,但无法保证完全没有重叠。
- 可能的记忆现象:作者在检查模型生成的解答时没有发现明显的记忆现象,但不能完全排除存在微妙记忆现象的可能性,这些现象可能会在人工检查中遗漏。
- 偏移的影响相似性:尽管可能存在测试集污染,作者认为各种方法在这种情况下表现出类似的测试污染影响,表明相对比较结果基本不受影响。
在数据收集的阶段,论文作者提到的MathMix是什么?MathMix 是一个大规模的高质量数学相关数据集,使用于轻量级预训练阶段,以提高模型在数学推理和问题解决方面的能力。与 Minerva 数据集相比,MathMix 较小且经过更严格的过滤以确保数据的高质量,并且未显式混入普通语言数据。
MathMix 的构建包括以下几部分数据:
- 数学问题及其解决方案:约 2.75 亿个 token。
- 自由形式的数学讨论文本(一):约 4.30 亿个 token。
- 自由形式的数学讨论文本(二):约 4.50 亿个 token(这些存在于预训练数据集中)。
- 合成数据(一):约 3000 万个 token。
- 合成数据(二):约 1 亿个 token(这些存在于预训练数据集中)。
- 批评性评分数据:约 5 亿个 token。
在预训练阶段,作者使用 MathMix 对所有模型进行微调,以提升模型的数学推理能力。此外,MathMix 包含海量的数学问题、讨论和合成数据,但不包含任何普通语言数据。
在训练较小模型时,作者使用 MathMix 的一个较小变体,只包含 10 亿个 token,排除了一些批评性评分数据。对于大型模型的实验,作者使用完整的 MathMix 进行大约 3 亿个 token 的训练(2 个 epoch),而对于小规模模型实验,作者训练了 6 个 epoch(大约 6.6 亿个 token)。作者应用了一套去污染检查,以确保 MathMix 数据集中没有与 MATH 数据集测试集重叠的问题。这些检查包括剥离 LaTeX 内容并搜索匹配的 n-gram。但由于人工发布的变体问题难以检测,作者无法对去污染结果做出强有力的保证。需要注意的是,尽管如此,如果存在数据集污染,作者认为不会显著影响相对比较结果,因为这种影响在所有方法中应表现一致。
看完这篇论文后我的两个感触:
Open AI公司从GPT1开始一直在突出工程的工作在AI落地中的重要性,这几年我们看了太多的论文,而Open AI公司真的是实实在在的投入资源在推动设想的落地,而不是仅仅把设想写在纸上。这次Open AI公司又花费了极大的精力构建了80万个逐步标签。
人工智能真的是有多少人工才有多少智能,Open AI公司都要勤勤恳恳脚踏实地的去构建高质量数据集,而我们很多人在梦想把文档随随便便丢给AI,AI就可以理解,是不是应该要多多少少的反思一下?
最后的最后,论文地址在:https://arxiv.org/abs/2305.20050。
相关文章:

OpenAl o1论文:Let’s Verify Step by Step 快速解读
OpenAl又火了,这次是o1又带给大家惊艳。网上的博主已经有了真真假假的各种评测,我这篇来一点硬核的,解读OpenAl o1背后的论文:Let’s Verify Step by Step 大模型在给定的上下文资料正确的情况下也有可能出现幻觉,这篇…...

Errorresponsefromdaemon:toomanyrequests:Youhavereachedyourpullratelimit.
Errorresponsefromdaemon:toomanyrequests:Youhavereachedyourpullratelimit.Youmayincreasethelimitbyauthenticatingandupgrading:https://www.docker.com/increase−rate−limit.See ′ dockerrun−−help 在拉取docker进行的时候遇到这个问题,如何解决呢?本文提供的解决方…...

[2025]医院健康陪诊系统(源码+定制+服务)
博主介绍: ✌我是阿龙,一名专注于Java技术领域的程序员,全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师,我在计算机毕业设计开发方面积累了丰富的经验。同时,我也是掘金、华为云、阿里云、InfoQ等平台…...

Golang | Leetcode Golang题解之第405题数字转换为十六进制数
题目: 题解: func toHex(num int) string {if num 0 {return "0"}sb : &strings.Builder{}for i : 7; i > 0; i-- {val : num >> (4 * i) & 0xfif val > 0 || sb.Len() > 0 {var digit byteif val < 10 {digit 0…...

VB中如何使用正则表达式(Regular Expressions)
在Visual Basic (VB) 中使用正则表达式,你需要依赖于.NET Framework的System.Text.RegularExpressions命名空间。这个命名空间提供了一系列的类,其中最常用的是Regex类,它允许你在VB.NET中执行复杂的文本搜索和替换操作。 以下是如何在VB.NE…...

Docker FROM 指定基础镜像
所谓定制镜像,其一定是以一个镜像为基础,在其上进行定制。 比如一个 nginx 镜像的容器,再进行修改一样,基础镜像是必须指定的。而 FROM 就是指定基础镜像,因此一个 Dockerfile 中 FROM 是必备的指令,并且必…...

19:I2C一:程序模拟I2C通信时序
I2C 1、什么是I2C2、I2C的通信时序2.1:起始信号2.2:停止信号2.3:主机向从机发送一个字节数据2.4:主机向从机读取一个字节数据2.5:主机接收应答2.6:主机发送应答 3、程序模拟I2C的通信时序3.1:指…...

最佳实践 · MySQL 分区表实战指南
引言 在数据量急剧增长的今天,传统的数据库管理方式可能无法有效处理海量数据的存储和查询需求。MySQL 提供了分区表功能,这不仅能够帮助优化性能,还能简化数据管理过程。分区表允许将数据表拆分成多个逻辑上的分区,每个分区可以…...

详细介绍 Redis 列表的应用场景
Redis 的列表(List)数据类型有以下一些主要应用场景: 一、消息队列 生产者-消费者模式 生产者可以使用LPUSH命令将消息从列表的左端(头部)插入到 Redis 列表中。消费者则使用BRPOP或RPOP命令从列表的右端(…...

游戏如何检测加速外挂
在游戏面临的众多外挂风险中,除了常见的内存修改挂、注入挂等作弊手段,黑灰产还常用「加速」手段实现作弊。 游戏安全风险分布占比图 「加速」顾名思义是指改变游戏内的速度。游戏在运行中需要以帧为单位播放画面,而计算每帧动画播放所需时间…...

【STM32 HAL库】OLED显示模块
【STM32 HAL库】OLED显示模块 前言理论OLED基本参数OLED基本驱动原理OLED坐标轴 应用CubeMx配置底层函数代码高层封装函数printf显示函数 前言 本文为笔者学习 OLED 的总结,基于keysking的视频内容,如有错误,欢迎指正 理论 OLED基本参数 …...

Redis---卸载Redis
简介 在Linux系统或者Mac系统卸载Redis。 步骤 1、停止Redis服务 #查看Redis服务进行 ps -ef | grep redis #停止Redis服务 redis-cli -a 111111 -p 6370 shutdown #再次查看Redis服务进程 ps -ef | grep redis2、删除/usr/local/bin目录下与Redis相关的文件 #查找Redis相…...

《C++模板元编程实战》阅读记录
目录 写在前面基本介绍第一部分 元编程基础技术第1章 基本技巧1.1元函数与type_traits1.1.1 元函数介绍 写在前面 这本书之前是在一片公众号里面介绍的,我觉的不错,想着提高一下自己C的水平,就买了一本,大概是2022年下半年买的&a…...

pybind11 学习笔记
pybind11 学习笔记 0. 一个例子1. 官方文档1.1 Installing the Library1.1.1 Include as A Submodule1.1.2 Include with PyPI1.1.3 Include with Conda-forge 1.2 First Steps1.2.1 Separate Files1.2.2 PYBIND11_MODULE() 宏1.2.3 example.cpython-38-x86_64-linux-gnu.so 的…...

36.贪心算法3
1.坏了的计算器(medium) . - 力扣(LeetCode) 题目解析 算法原理 代码 class Solution {public int brokenCalc(int startValue, int target) {// 正难则反 贪⼼int ret 0;while (target > startValue) {if (target % 2 0…...

htop(1) command
文章目录 1.简介2.格式3.选项4.交互式命令5.示例6.小结参考文献 1.简介 htop 是一种交互式、跨平台的基于 ncurses 的进程查看器。 类似于 top,但 htop 允许您垂直和水平滚动,并使用指向设备(鼠标)进行交互。您可以观察系统上运行的所有进程࿰…...

ODrive学习——添加485编码器支持
系列文章目录 文章目录 系列文章目录前言一、端口处理二、在Encoder中引入新的类型1.增加485类型2.增加串口的初始化操作3.数据处理 总结 前言 尝试在ODrive中添加485型的编码器的支持 一、端口处理 计划使用PA2及PA3作为485通信的端口。这样首先要把外部温度传感器的I/O口给…...

在OSX上: 使用brew安装nginx 后,在通过编译安装第三方模块
1. 下载nginx安装包nginx: download 2. mac环境编译源码需要安装pcre、openssl等第三方依赖,可参考在OSX上: 使用brew安装nginx 后,在通过编译安装第三方模块 - ZhYQ_note - 博客园 3. nginx可支持的配置参考Building nginx from Sources 4. 执行 ./…...

C++初阶学习第六弹------标准库中的string类
目录 一.标准库中的string类 二.string的常用接口函数 2.1string类对象的构造 2.2 string的容量操作 2.3 string类的访问与遍历 2.4 string类对象的修改 2.5 string类常用的非成员函数 三、总结 一.标准库中的string类 可以简单理解成把string类理解为变长的字符数组&#x…...

Linux基础-Makefile的编写、以及编写第一个Linux程序:进度条(模拟在 方便下载的同时,更新图形化界面)
目录 一、Linux项目自动化构建工具-make/Makefile 编辑 背景: makefile小技巧: 二、Linux第一个小程序-进度条 先导: 1.如何利用/r,fflush(stdout)来实现我们想要的效果; 2.写一个倒计时: 进度条…...

华为云DevSecOps和DevOps
目录 1.华为云DevSecOps和DevOps 1.1 DevSecOps 1.1.1 核心功能 1.1.2 优势 1.2 DevOps 1.2.1 核心功能 1.2.2 优势 1.3 DevOps和DevSecOps的区别 1.3.1 安全性集成 1.3.2 自动化的安全工具 1.3.3 团队协作 1.3.4 质量与合规性 1.3.5 成本与风险管理 1.3.5 总结 …...

RESTful API设计中的GET与POST:何时及为何成为首选?
RESTful API设计中的GET与POST:何时及为何成为首选? 在RESTful API的设计过程中,HTTP方法(GET、POST、PUT、DELETE等)作为资源的操作标识,扮演着至关重要的角色。然而,在实际开发中,…...

秋招自我介绍
1min 尊敬的面试官您好,感谢您百忙之中参加我的面试。我是来自北京大学的王峰。 在实习经历方面,我曾在美团和小米公司实习。在美团主要负责核身、质检、词云项目。 在核身项目中,完整的经历从0-1的项目上线过程 在质检项目中,进…...

html加载页面
<!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><title>算数模一体化</title> </head><b…...

【数据可视化】Arcgis api4.x 热力图、时间动态热力图、timeSlider时间滑块控件应用 (超详细、附免费教学数据、收藏!)
1.效果 目录 1.效果 2.安装配置 3.热力图 4.TimeSlider滑块应用 4.1 时间滑块控件 4.2 添加控件 5.时间动态热力图 2.安装配置 这里不教大家如何在前端框架使用arcgis api。不过npm安装、css如何引入、教学数据存放与图层加载的教程,可以浏览我之前发的一篇文…...

WEB攻防-JavaWweb项目JWT身份攻击组件安全访问控制
知识点: 1、JavaWeb常见安全及代码逻辑; 2、目录遍历&身份验证&逻辑&JWT; 3、访问控制&安全组件&越权&三方组件; 演示案例: JavaWeb-WebGoat8靶场搭建使用 安全问题-目录遍历&身份认…...

【C++算法】模拟算法
替换所有的问号 题目链接 替换所有的问号https://leetcode.cn/problems/replace-all-s-to-avoid-consecutive-repeating-characters/description/ 算法原理 代码步骤 class Solution { public:string modifyString(string s) {int n s.size();for(int i 0; i < n; i){…...

模版进阶(template)
1.非类型模版参数 模版参数分类类型形参与非类型形参。 ① 类型形参:出现在在模板参数列表中,跟在class或者typename之类的参数类型名称。 ② 非类型形参,就是用一个常量作为类(函数)模板的一个参数,在类(函数)模板中可将该参数当…...

vue2与vue3的区别
1.v-if与v-for的优先级不同 2.vue2中存在数据更新以后视频不更新的问题,故存在$set来解决这一问题,而vue3中数据双向绑定不存在数据更新视图不更新的问题,所以也就没有this.$set...

借助大模型将文档转换为视频
利用传统手段将文档内容转换为视频,比如根据文档内容录制一个视频,不仅需要投入大量的时间和精力,而且往往需要具备专业的视频编辑技能。使用大模型技术可以更加有效且智能化地解决上述问题。本实践方案旨在依托大语言模型(Large …...