微软提出 Logic-RL:基于规则的强化学习释放大语言模型推理能力

更多 LLM 架构文章点击查看:
LLM 架构专栏
大模型架构专栏文章阅读指南
1. AI 智能体,颠覆还是赋能?一文读懂!
2. 1W8000 字 解锁 AI 高效运作密码:工作流与智能体如何协同?
3. 万字深度剖析 AI 代理:类型、应用及优势与局限全解析
4. 1W5000 字 深度剖析大模型 Agent 框架
5. Agent 系列 1W 字用 Python 从零搭建 AI 智能体

在大推理模型中,基于规则的强化学习(RL)潜力几何?今天咱们就来深入探讨一篇与之相关的研究。研究人员选用合成逻辑谜题作为训练数据,这是因为其复杂度可控,答案验证也简单直接。

研究发现,参数量 70 亿的模型在训练后,发展出了反思、验证和总结等先进推理技能,而这些技能在原始逻辑语料库中是不存在的。令人惊喜的是,仅在 5000 道逻辑题上训练后,该模型就在具有挑战性的数学基准测试 AIME 和 AMC 中展现出了泛化能力。

下面,就为大家详细解读这项研究中的有趣发现。

  1. 更长的回复不一定意味着更好的推理:回复长度并不能作为衡量训练效果的有效指标,最有效的推理往往来自最短路径。
  2. 语言混合会阻碍推理:这一现象表明,在奖励建模中需要引入语言一致性惩罚机制。
  3. 增加 “思考” 标记有帮助:强化学习训练会自然提高与反思相关词汇的出现频率,这显示出某些标记的频率与模型表现之间存在关联。
  4. 监督微调(SFT)靠记忆,强化学习能泛化:监督微调严重依赖记忆,常导致表面的捷径学习;而强化学习能自我进化,对数据集结构的依赖极小。
  5. 冷启动是加分项,但不是必需的:无论从基础模型还是指令模型开始训练,训练动态都惊人地相似,不过指令模型表现稍好。
  6. 课程学习仍然重要:在固定的数据整理比例下,精心设计的课程学习方法总是优于随机打乱数据的方式。

数据合成

“骑士与无赖(K&K)” 谜题是通过算法生成的推理数据集。在这些谜题中,角色要么是骑士(总是说真话),要么是无赖(总是说谎)。玩家需要根据角色的陈述来判断每个角色的身份。这个数据集有以下几个显著特点:

  1. 程序生成:谜题由逻辑模板系统生成,既保证了一致性,又具有无限的可变性。而且,这些谜题对原始模型来说是全新的数据,非常适合测试模型的泛化能力。
  2. 可控的难度级别:谜题难度可以精确调整,便于设计课程学习策略。通过改变角色数量(2 - 8 个)和逻辑运算的复杂度(1 - 4 种布尔运算符组合)来调节难度。更复杂的谜题还能作为分布外测试,检验在简单谜题上训练的模型的泛化能力。
  3. 易于验证:每个谜题都有唯一确定的正确答案,生成算法保证了答案的正确性。解题需要严格的演绎推理,能准确评估模型的回答,降低奖励作弊的风险。

基于规则的奖励建模

在监测模型输出的作弊行为过程中,研究人员不断迭代优化奖励设计,最终形成了两种类型的奖励。

  1. 格式奖励:利用正则表达式提取,强制模型采用结构化的回复格式。模型需要将推理过程放在 <think></think>标签内,最终结论放在 <answer></answer>标签内。在提示末尾直接加上 <think>标签,能显著降低基础模型遵循指令的难度。

在早期不完善的规则设计下,出现了一系列问题: - 跳过<think></think>过程直接回答。 - 在<answer></answer>标签内进行推理。 - 反复猜测答案,没有合理推理。 - 除了给出答案,还包含不相关的内容。 - 以错误的方式组织正确答案,导致无法提取。 - 由于推理不充分,在输出<answer>后又回到思考阶段。 - 重复原始问题或使用 “思考过程在此” 之类的短语来避免真正的推理。

针对这些问题,研究人员不断改进规则设计。例如,每个标签只能出现一次且顺序正确,思考过程必须包含真正的推理,结论要以可提取且易读的方式呈现。通过这些约束,模型的不同行为会根据对格式的遵守程度获得相应奖励。

  1. 答案奖励:在格式验证通过后,检查模型的答案是否与正确答案匹配。

实验设置

实验最初选用 Qwen2.5 系列的多个模型作为潜在基线候选。比如,Qwen2.5 - Math - 7B 模型生成 Python 代码块的倾向很强,这常常与严格的格式要求冲突。尽管研究人员尝试通过去除系统提示和惩罚特定的 Markdown 样式来缓解这一问题,但仍难以完全解决。

随后,对 Qwen2.5–7B-Base 和 Qwen2.5–7B-Instruct 模型进行测试。令人惊讶的是,在强化学习训练过程中,基础模型和指令模型的训练指标几乎相同,包括验证准确率、回复长度增长曲线和奖励曲线。不过,指令模型的测试准确率略高,因此成为更优选择。

评估

  1. 不同模型在 K&K 逻辑谜题上的表现:研究人员对比了推理模型和通用模型在不同难度的 K&K 逻辑谜题上的表现。尽管训练数据集仅包含不到 5000 个 3 - 7 人 K&K 逻辑谜题的合成样本,但模型在分布外(OOD)场景(如 8 人谜题)中展现出了惊人的泛化能力。
  2. 回复长度的变化:在强化学习训练 1000 步后,模型输出的平均长度从最初的 500 个标记几乎线性稳定增长到 2000 个标记,增长了 4 倍。随着回复长度增加,模型开始表现出更复杂的行为,如反思和探索其他解决方案。
  3. 研究问题相关评估
    • RQ 1:GRPO 与其他强化学习算法相比如何?:在训练速度、准确率和奖励增益方面(通过滑动窗口 = 50 取平均值)进行比较,近端策略优化算法(PPO)达到了最高的准确率和奖励,但训练速度比 REINFORCE++慢 138%。REINFORCE++在稳定性、性能提升和训练效率方面均优于广义策略优化算法(GRPO),在几乎所有指标上都超过了 GRPO,而 GRPO 在这三种算法中表现最差。
    • RQ 2:特定的思考标记和语言混合现象会提高推理能力吗?:语言混合会显著降低推理能力。像“wait”“verify”“yet”“re - evaluate”等词汇能显著提升推理能力,但并非所有复杂思考标记都有此效果,例如“recheck”。“recheck”会明显降低推理能力,可能是因为它表明模型对自己的答案不确定。“re - evaluate”和“reevaluate”也有明显差异,前者能带来更高的答案得分,而后者会降低得分。从原始回复来看,“reevaluate”几乎从未出现,“re - evaluate”则频繁出现,这可能意味着模型对在预训练语料库中出现频率更高的词汇更适应。
    • RQ 3:训练过程中会出现 “顿悟时刻” 吗?:通过跟踪前 1800 个训练步骤中词汇的频率发现,复杂推理行为(自我反思、探索、验证、总结)在训练过程中逐渐出现,早在第 10 步就已显现,并没有出现某个突然的 “顿悟时刻” 使这些行为突然出现。
    • RQ 4:模型能泛化到分布外(OOD)任务吗?:研究人员在 AIME 2021 - 2024 和 AMC 2022 - 2023 数据集上测试模型性能,这些数据集因其具有挑战性和问题的多样性被视为 “超级分布外” 测试。模型展现出了强大的超级分布外泛化能力,在 AIME 数据集上性能提升了 125%,在 AMC 数据集上提升了 38%。强化学习过程不仅提高了模型在分布内的性能,还促进了强大且可迁移的推理策略的发展,模型的推理技能能够超越训练数据的特定模式,凸显了强化学习在更广泛泛化方面的潜力。
    • RQ 5:监督微调(SFT)和强化学习(RL)哪个泛化能力更好?:研究人员在原始训练数据和略有扰动的数据上评估模型性能,使用了两种扰动类型:改变陈述的布尔逻辑和重新排列陈述顺序。结果表明,监督微调(以 RFT 为代表)具有更高的记忆得分,对扰动更敏感,说明它只是表面上适应训练数据格式;而强化学习的记忆得分较低,但对未见过的测试数据泛化能力更好,意味着它具有更强的推理能力,对表面模式的依赖更少,更鼓励独立探索,从而实现更好的泛化。
    • RQ 6:课程学习在强化学习中仍然必要吗?:对比课程学习和混合难度训练的测试分数发现,在训练中期,课程学习的测试分数略高,但随着时间推移,这种优势逐渐减弱,几乎可以忽略不计。在训练早期,两者的性能差异在统计上可以忽略不计,对初始收敛影响不大。虽然课程学习在样本效率上可能有微弱的理论优势,但由于在实际应用中性能差异极小,且分阶段训练增加了复杂性,其实际必要性值得商榷。
    • RQ 7:更长的回复长度能保证更好的推理吗?:研究人员对比了两个使用相同算法和基础模型,但超参数和数据集难度不同的模型:正例模型(蓝色,回复长度随时间减少)和负例模型(红色,回复长度随时间增加)。正例模型尽管回复长度减少,但验证准确率和奖励都有所提高,推理和泛化能力更好;负例模型回复长度增加,验证准确率和奖励却没有提升,这表明回复长度本身并不能提升推理能力。回复长度的变化更可能是训练动态(如强化学习动态)的副产品,而非推理能力提升的直接原因。从统计数据来看,没有显著证据表明回复长度的增加幅度与推理性能的提升成正比。更长的回复不一定意味着更好的推理,虽然推理能力的提升可能会导致更详细、更长的解释,但人为增加回复长度并不一定能提高性能。

论文链接:Logic - RL: Unleashing LLM Reasoning with Rule - Based Reinforcement Learning 2502.14768[1]

推荐阅读

1. DeepSeek-R1 的顿悟时刻是如何出现的? 背后的数学原理
2. 微调 DeepSeek LLM:使用监督微调(SFT)与 Hugging Face 数据
3. 使用 DeepSeek-R1 等推理模型将 RAG 转换为 RAT
4. DeepSeek R1:了解 GRPO 和多阶段训练
5. 深度探索:DeepSeek-R1 如何从零开始训练
6. DeepSeek 发布 Janus Pro 7B 多模态模型,免费又强大!

Reference
[1]

Logic - RL: Unleashing LLM Reasoning with Rule - Based Reinforcement Learning 2502.14768: https://arxiv.org/abs/2502.14768

本文由 mdnice 多平台发布

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

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

相关文章

STM32八股【1】-----启动流程和startup文件理解

启动流程 知识点 MCU 上电复位。MSP从向量表第0个地址读取一个32位&#xff08;2字节&#xff09;的值并保存&#xff0c;该值为栈顶地址。PC计数器从第1个地址读取一个两字节的值并保存&#xff0c;该值为程序入口&#xff0c;一般是Reset_Handler。想了解FLASH地址映射可以…

详解c++20的协程,自定义可等待对象,生成器详解

协程 c20的协程三大标签&#xff1a;“性能之优秀”&#xff0c;“开发之灵活”&#xff0c;“门槛之高” 在讲解c的协程使用前&#xff0c;我们需要先明白协程是什么&#xff0c;协程可以理解为用户态的线程&#xff0c;它需要由程序来进行调度&#xff0c;如上下文切换与调…

JavaEE企业级开发 延迟双删+版本号机制(乐观锁) 事务保证redis和mysql的数据一致性 示例

提醒 要求了解或者熟练掌握以下知识点 spring 事务mysql 脏读如何保证缓存和数据库数据一致性延迟双删分布式锁并发编程 原子操作类 前言 在起草这篇博客之前 我做了点功课 这边我写的是一个示例代码 数据层都写成了 mock 的形式(来源于 JUnit5) // Dduo import java.u…

A2 最佳学习方法

记录自己想法的最好理由是发现自己的想法&#xff0c;并将其组织成可传播的形式 (The best reason for recording what one thinks is to discover what one thinks and to organize it in transmittable form.) Prof Ackoff 经验之谈&#xff1a; 做培训或者写文章&#xff…

嵌入式硬件工程师从小白到入门-PCB绘制(二)

PCB绘制从小白到入门&#xff1a;知识点速通与面试指南 一、PCB设计核心流程 需求分析 明确电路功能&#xff08;如电源、信号处理、通信&#xff09;。确定关键参数&#xff08;电压、电流、频率、接口类型&#xff09;。 原理图设计 元器件选型&#xff1a;匹配封装、电压、…

vue创建子组件步骤及注意事项

在 Vue 中创建子组件需要遵循组件化开发的核心原则&#xff0c;并注意数据流、通信机制、复用性等关键点。以下是详细步骤和注意事项&#xff0c;结合代码示例说明&#xff1a; 一、创建子组件的步骤 1. 定义子组件 创建一个 .vue 文件&#xff08;单文件组件&#xff09;&am…

Cocos Creator版本发布时间线

官网找不到&#xff0c;DeepSeek给的答案&#xff0c;这里做个记录。 Cocos Creator 1.x 系列 发布时间&#xff1a;2016 年 - 2018 年 1.0&#xff08;2016 年 3 月&#xff09;&#xff1a; 首个正式版本&#xff0c;基于 Cocos2d-x 的 2D 游戏开发工具链&#xff0c;集成可…

【Spring AI】基于专属知识库的RAG智能问答小程序开发——功能优化:用户鉴权主体功能开发

系列文章目录 【Spring AI】基于专属知识库的RAG智能问答小程序开发——完整项目&#xff08;含完整前端后端代码&#xff09;【Spring AI】基于专属知识库的RAG智能问答小程序开发——代码逐行精讲&#xff1a;核心ChatClient对象相关构造函数【Spring AI】基于专属知识库的R…

【AI神经网络】深度神经网络(DNN)技术解析:从原理到实践

引言 深度神经网络&#xff08;Deep Neural Network, DNN&#xff09;作为人工智能领域的核心技术&#xff0c;近年来在计算机视觉、自然语言处理、医疗诊断等领域取得了突破性进展。与传统机器学习模型相比&#xff0c;DNN通过多层非线性变换自动提取数据特征&#xff0c;解决…

目标跟踪——deepsort算法详细阐述

deepsort 算法详解 Unmatched Tracks(未匹配的轨迹) 本质角色: 是已存在的轨迹在当前帧中“失联”的状态,即预测位置与检测结果不匹配。 生命周期阶段: 已初始化: 轨迹已存在多帧,可能携带历史信息(如外观特征、运动模型)。 未被观测到: 当前帧中未找到对应的检测框…

Vue-admin-template安装教程

#今天配置后台管理模板发现官方文档的镜像网站好像早失效了&#xff0c;自己稍稍总结了一下方法# 该项目环境需要node17及以下&#xff0c;如果npm install这一步报错可能是这个原因 git clone https://github.com/PanJiaChen/vue-admin-template.git cd vue-admin-template n…

Rust从入门到精通之进阶篇:14.并发编程

并发编程 并发编程允许程序同时执行多个独立的任务&#xff0c;充分利用现代多核处理器的性能。Rust 提供了强大的并发原语&#xff0c;同时通过类型系统和所有权规则在编译时防止数据竞争和其他常见的并发错误。在本章中&#xff0c;我们将探索 Rust 的并发编程模型。 线程基…

算法训练营第二十三天 | 贪心算法(一)

文章目录 一、贪心算法理论基础二、Leetcode 455.分发饼干二、Leetcode 376. 摆动序列三、Leetcode 53. 最大子序和 一、贪心算法理论基础 贪心算法是一种在每一步选择中都采取当前状态下的最优决策&#xff0c;从而希望最终达到全局最优解的算法设计技术。 基本思想 贪心算…

css基础-display 常用布局

CSS display 属性详解 属性设置元素是否被视为块级或行级盒子以及用于子元素的布局&#xff0c;例如流式布局、网格布局或弹性布局。 一、基础显示模式 1. block 作用&#xff1a; 元素独占一行可设置宽高和内外边距默认宽度撑满父容器 应用场景&#xff1a; 布局容器&a…

速卖通API数据清洗实战:从原始JSON到结构化商品数据库

下面将详细介绍如何把速卖通 API 返回的原始 JSON 数据清洗并转换为结构化商品数据库。 1. 数据获取 首先要借助速卖通 API 获取商品数据&#xff0c;以 Python 为例&#xff0c;可使用requests库发送请求并得到 JSON 数据。 import requests# 替换为你的 API Key 和 Secret …

【零基础入门unity游戏开发——2D篇】2D物理系统 —— 2D刚体组件(Rigidbody2D)

考虑到每个人基础可能不一样,且并不是所有人都有同时做2D、3D开发的需求,所以我把 【零基础入门unity游戏开发】 分为成了C#篇、unity通用篇、unity3D篇、unity2D篇。 【C#篇】:主要讲解C#的基础语法,包括变量、数据类型、运算符、流程控制、面向对象等,适合没有编程基础的…

Collectors.toMap / list 转 map

前言 略 Collectors.toMap List<User> userList ...; Map<Long, User> userMap userList.stream().collect(Collectors.toMap(User::getUserId, Function.identity()));假如id存在重复值&#xff0c;则会报错Duplicate key xxx, 解决方案 两个重复id中&#…

热门面试题第13天|Leetcode 110.平衡二叉树 257. 二叉树的所有路径 404.左叶子之和 222.完全二叉树的节点个数

222.完全二叉树的节点个数&#xff08;优先掌握递归&#xff09; 需要了解&#xff0c;普通二叉树 怎么求&#xff0c;完全二叉树又怎么求 题目链接/文章讲解/视频讲解&#xff1a;https://programmercarl.com/0222.%E5%AE%8C%E5%85%A8%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E8…

关于Object.assign

Object.assign 基本用法 Object.assign() 方法用于将所有可枚举属性的值从一个或者多个源对象source复制到目标对象。它将返回目标对象target const target { a: 1, b: 2 } const source { b: 4, c: 5 }const returnedTarget Object.assign(target, source)target // { a…

GitHub高级筛选小白使用手册

GitHub高级筛选小白使用手册 GitHub 提供了强大的搜索功能&#xff0c;允许用户通过高级筛选器来精确查找仓库、Issues、Pull Requests、代码等。下面是一些常用的高级筛选用法&#xff0c;帮助你更高效地使用 GitHub 搜索功能。 目录 搜索仓库搜索Issues搜索Pull Requests搜…