当前位置: 首页 > ds >正文

自主学习-《Absolute Zero: Reinforced Self-play Reasoning with Zero Data》

1. 监督学习:需要人工给出推理过程;

2. RLVR: 推理过程由agent自我生成和学习,计算reward的gold值是环境或工具给出的,题目仍需要人工给出;

3. 本方法:题目也是agent自己生成的。(gold值仍需环境或工具给出)。

基本理论:

1. SFT的公式:(优化\theta,使得input prompt x生成推理c*和结果y*的概率最大化)

痛点:模型吸收了足够多的知识后,没有更强的模型可供生成数据了,人工来标注数据又太费钱;

2. Reinforcement Learning with Verifiable Rewards的公式:(波浪线表示采样;y是模型采样得到的结果,y*是ground truth结果, r是reward function)

3. 本方法的公式:

示意图:

learnability: 模型训练了该样本之后,变强了多少;(太简单,模型每次都答对,则该样本没价值;太难,模型每次都打错,则该样本也没价值)

本文中,z这个随机变量,是用当前的题目集合中采样几个得到的题目集合;

流程图:

借助python这个工具,进行了对propose结果的learnability打分,进行了对solve结果的正确性打分。这2个分数,共同更新模型参数。

proposer的reward,就是多次solve(蒙特卡洛展开)取分数的平均值:

solver的reward,就是答对了还是答错了:

1. Buffer初始化

只用1个输入和输出都是"hello world"的极简python程序作为seed,多次迭代生成和完善新seed。

induction的program,是从另2个task的seed集合里选取的program。

2. propose

每次propose,放在prompt里的seed子集,都是变化的,采样自总seed集合。

prompt里明确强调:生成和seed不一样的program。

3. 样本过滤

3.1 <program,input>执行后,不抛异常,且有输出结果,则通过;

3.2 安全性:program不能使用敏感包(os.sys, sys, util等)

3.3 确定性:多跑几次,结果都一样,才通过;(为避免里面用了随机数)

注意:对于<i,o>生成p的任务, 只用一半<i,o>去生成p,用所有的<i,o>去验证生成的p是否正确。目的:防止生成if input1 then output1 elif input2 then output2这种取巧的program。

4 生成结果验证正确性:<p,i>生成o的任务,比对o和正确答案o是否相同即可;<p,o>生成i的任务,用p和生成的i去执行,判断o和正确答案o是否相同(因为生成同一个o的i可能有多组);<i,o>生成p的任务,用p和所有的i依次生成o,判断o和正确答案o是否相同。

用的是python程序来判断,如下:

5. 优势函数,用的是相对的:

算法描述:

每轮(t):生成一批样本(B=64个)。从总样本池里(不是本轮t生成的这B个),进行solve。计算reward,更新模型。

评测:

在Qwen2.5-7B和Qwen2.5-7B-coder的基础上,进行的训练,得到2个训练后的模型。

使用了coding和math两组评测集。

效果:两者上都有大的提升。(math评测集上的好效果,说明coding能力的提升,对general推理能力的提升是有帮助的)。比人工编写的coding训练数据上训出的SOTA模型,在coding能力上还要略有提升!

Qwen2.5-7B-coder上训练的模型,效果比Qwen2.5-7B上训练的模型,效果要更好。

In-Distribution: 大的模型,训练到后面还在提升;小的模型,效果曲线开始扁平下降;Out-of-Distribution: 越大的base模型,效果提升越大。

观察到的现象:1. <p,o>生成i任务时,反复从<p,i>推理结果,自我纠正,再更换i继续推理;2. <p,i>生成o任务时,跟踪代码,记录中间数据结构的值;3. <i,o,m>生成p任务时,每一条<i,o>都进行验证;其中1的例子:

生成代码任务,生成的代码中夹杂着step-by-step planning注释。

越训练,生成的token长度越长(DeepSeek等工作里也说过这个现象)。

消融实验(ablation studies):3个task,选择性的去除某个或某几个,和没去除的,对比效果;结果显示,3个task都在,效果更好;

不使用动态采样例子放入prompt,则效果大幅下降;

让proposer不更新模型参数,只让solver更新模型参数,效果下降不大;

Prompt示例:

<p,i>生成o的任务,proposer:

<p,i>生成o的任务,solver:

http://www.xdnf.cn/news/14642.html

相关文章:

  • 《贵州安顺棒垒球》国家队运动员·棒球1号位
  • 器件(九)—对设计的模块进行双脉冲仿真
  • 【系统分析师】2011年真题:案例分析-答案及详解
  • 阿里云OSS任意文件写入/删除漏洞修复方案
  • LDPC码的译码算法
  • 一个包含两款主题的社交APP客户端UI解决方案
  • houdini 简单流体模拟 学习笔记
  • OpenKylin安装dotnet及其永久环境配置
  • Redis windows版安装,启动配置【kaki学习备忘录】
  • 基于RSSI的室内定位的排列不变Transformer神经架构
  • 如何在 Elementary OS 上安装 Cinnamon 桌面环境
  • HTTP协议简易入门
  • Spring AOP
  • csv文档批量转换xlsx,xls文档(带界面)
  • Go语言同步原语与数据竞争:数据竞争的检测工具
  • 2011-2020年各省互联网接入端口数数据
  • 打卡day54
  • AC-MT
  • C语言常用库函数
  • LangChain面试内容整理-知识点14:工具包(Toolkits)与用法
  • 生成对抗网络(GANs)入门介绍指南:让AI学会“创造“的魔法(二)【深入版】
  • Textacy:Python 中的文本数据清理和规范化简介
  • 自我实现的量子隐喻:在可能性场域中动态拓展涌现节点
  • LLMs:《WebDancer: Towards Autonomous Information Seeking Agency》翻译与解读
  • 02-Timer0-Timer1-Timer2-Timer3-Timer4测试程序
  • Sa-Token全面深入学习指南
  • 【慧游鲁博】【15】后台管理系统功能完善:仪表盘、多模态交互日志、简单问答词条管理
  • 建造者模式Builder Pattern
  • 深度解析5W2H:高效思维与问题解决工具详解
  • 离散隐藏变量下期望最大化(EM)算法的简化