专栏名称: 深度学习自然语言处理
一个从大三就接触NLP的小小NLPer,本公众号每天记录自己的一点一滴,每篇文章最后也有托福单词等新知识,学技术同时,也一点一滴积累额外的知识。期待与你在知识的殿堂与你相遇!
目录
相关文章推荐
美股投资网  ·  马斯克遗嘱都写好了!特斯拉破位了,All ... ·  昨天  
豆瓜的投资笔记  ·  外围又暴涨了 ·  昨天  
豆瓜的投资笔记  ·  外围又暴涨了 ·  昨天  
固收彬法  ·  信用 | 各省两会报告看化债 ·  3 天前  
老铁股道  ·  突然,起飞爆发! ·  3 天前  
海龟社区  ·  A股这个逻辑,大家明白不? ·  3 天前  
51好读  ›  专栏  ›  深度学习自然语言处理

Deepseek R1 Zero成功复现, 三阶段RL,Response长度涨幅超50%,涌现语言混杂,double-check

深度学习自然语言处理  · 公众号  ·  · 2025-02-05 16:22

正文

知乎 :涮月亮的谪仙人(已授权)
链接 :https://zhuanlan.zhihu.com/p/21290410831
编辑 :「深度学习自然语言处理」公众号

项目代码可见: Unakar/Logic-RL (https://github.com/Unakar/Logic-RL),欢迎关注和star!
我们将开源完整的wandb曲线和训练日志, wandb report (https://wandb.ai/ustc_ai/GRPO_logic_KK/reports/GRPO-Zero--VmlldzoxMTIwOTYyNw?accessToken=gnbnl5mu5pwfww7gtwxymohg85w7d7vthvjvbl4w8yxg0a99vf1k22m11e61cvv8)

在大四的最后一个寒假,和@AdusTinexl @ShadeCloak 两个小伙伴捣鼓出了点有意思的东西,非常开心,欢迎各位合作,指导!

先展示一下结果:

基座模型Qwen 7B在测试集上只会基础的step by step逻辑。
无 Long CoT冷启动蒸馏,三阶段Rule Based RL后 (约400steps),模型学会了

  • 迟疑 (标记当前不确定的step等后续验证),
  • 多路径探索 (Les't test both possibilities),
  • 回溯之前的分析 (Analyze .. statement again),
  • 阶段性总结 (Let's summarize, Now we have determined),
  • Answer前习惯于最后一次验证答案(Let's verify all statements),
  • Think时偶尔切换多语言作答 (训练数据纯英文的情况下,思考部分是中文,最后answer又切回英文)

测试集上性能也一举超越了gpt4o 的0.3,达到了 0.41的准确率,相比自身初始0.2 acc翻了一倍

非常漂亮的回复

demo1:迟疑,回溯,总结,verify。训练后期模型总是倾向于在最后输出answer前,优先全部verify一遍。这些能力是RL训练涌现的,未加任何引导

偶尔的多语言现象

demo2: 多语言的例子,思考忽然说中文,最后为了格式奖励用英文做最终回答,回复是对的

demo3:训练前模型原本的输出作为参考, 笨笨的也很可爱,看得出来是一点verify之类的基本思考单元也没有

Response长度增长

Demo 4, Settings: prompt mean 276 tokens, origin response mean 400 tokens 据我所知,这是第一个稳定实现输出长度大幅超越原始模型平均长度的 (数据集prompt长度全部小于300 tokens,相比于基座模型原本输出的平均长度 400 tokens, 训练后期平均长度稳定在650 tokens,约50%的涨幅)

Reward曲线

我们设置了严苛的format reward和Answer Reward。
Reward只有这两部分构成,避免任何reward hacking。
我们编写了不少if else逻辑和正则。刚开始模型总能以匪夷所思的方式绕过我的预想,在和它一次次的斗智斗勇里完善了rule的编写
我们发现模型在学习format的时候,其实是一个 快速收敛--逐渐崩坏--又忽然找回format 的形式,与我们三阶段RL训练设置吻合。
还有一个有趣的小发现, 在中间阶段,模型似乎认为格式反而阻碍了它的思考 :日志里看到不少例子,模型在 tag开始后意识到自己犯错了,想重回 进入思考模式,可惜被format reward狠狠惩罚了

Demo 5, 依次是平均reward, 全对的比例,格式错误比例,答案做错的比例

基本Settings

训练数据合成

其实只有2K不到的训练数据集, 完全由程序合成,确保对基座模型是OOD数据
其中逻辑问题类似老实人和骗子的益智题,老实人总说真话,骗子总说假话,下面N个人,各有各的表述,请判断谁是骗子。我们以此为例讲解实验细节。
可控性也不错,可以人为设置难度分级。测试下来gpt4o的acc在0.3左右,而3epoch的RL训练后,我们成功让qwen-7B达到了0.41。
gpt4o和claude sonnet在这种逻辑题上的准确率出乎意料的低。我们选了一个合适的人数来控制难度,确保它高于qwen 7B当前的能力,但又不会过难(在8个人的情况下,qwen完全不能作答,RL训练曲线也堪比蜗牛爬。我们最后选取了5人作为基线)

模型基座选取

我们注意到deepseek官方开了一系列distill模型,测试下来感觉有点矫枉过正了,小参数量承载了超越其自身的推理能力。回复里的wait, alternatively这种字眼频率过高。
Deepseek distill系列选了qwen-math-7B作为基座。我们本来也是这个,后来发现这个模型有坑:

  1. 首先它指令跟随能力比较一般,很难学会format;
  2. 其次,它说话老爱用python code解题,训练很难克服
  3. 移除system prompt后,还是习惯用\box{}包裹answer,还是format不行
  4. Markdown味道太重,一板一眼的,Reasoning模型本应思想跳脱一些才是

我们训了几版RL,效果始终不好,最后决定放弃Qwen Math系列,Qwen 7B 1M就好

RL基本设置

我们初始还是PPO,训练确实稳定,就是太慢了。Reinforce系列测试下来又快又好,显存还低,强烈推荐。
为了和deepseek对齐,我这里放出的所有结果都是GRPO Setting下的。
由于我只有四卡A100,跑实验相当费劲,坐等来个大佬资助我跑实验 ()
Train batch size只有8,Rollout先大后小 (32-64-16)

三阶段RL

我的经验是:高温采样+超大rollout Matters

Step1: 课程学习与格式遵循

为了训练的平稳过渡,我们先用少量3人逻辑题做预热,使用默认采样设置。
此阶段主要是学 的格式,只要不遵守该规则,我们就施加很大的负面奖励。模型在10step训练里很快就能学会把format error降到0.1的占比
伪变长 :此阶段观察到极少量的response length ++,主要提升的是最短response的长度,max response长度基本没变,是反馈到mean length上是一个变长的过程。
以及此阶段确实验证了 Pure Rule Based RL有效性,Val acc一直在涨,不过不如SFT来收益来的快

Step2:高温采样与大量rollout

数据集过渡到正式的5人谜题,此阶段训练持续最长。也是最容易崩溃的时候。
我训了14版超参,都是崩坏的,泪目,下面讲讲一些好玩的崩坏demo。
尝试将采样温度设置为1.2附近。(实测1.5会崩,1.5什么鸟语言都蹦出来了)。topp和topk也调了一下, 主要目的是紊乱模型回复格式,破坏其markdown的输出风格,增加token多样性
下图是截取的模型一个很有意思的repeat现象,可以看得出来,RL极大地增加了verify token被chosen的概率,这纯粹是自发形成的。数据集没有任何verify相关的思考token。

1. 模型的呓语:它想verify, 要precise, 注意consistent执念很深

2. Retrying too late,但没有后悔药可以吃

模型已经到达最后需要输出结果的answer阶段了,忽然意识到自己前面犯了错,想重回think模式,但是retry太晚了,这样的行为会被给予严厉的负format惩罚







请到「今天看啥」查看全文


推荐文章
豆瓜的投资笔记  ·  外围又暴涨了
昨天
豆瓜的投资笔记  ·  外围又暴涨了
昨天
固收彬法  ·  信用 | 各省两会报告看化债
3 天前
老铁股道  ·  突然,起飞爆发!
3 天前
海龟社区  ·  A股这个逻辑,大家明白不?
3 天前
星座  ·  我想了解金牛座
8 年前
搅沫沫  ·  有一种春天,叫青海的雪!
7 年前