大家好,我是刘聪NLP。
前几天分享了一篇模型自动适应是否推理的文章,推理or不推理?AdaptThink实现思维模式的自动切换,今天又刷到一篇,Arm: Adaptive Reasoning Model。
Github: https://github.com/TEAM-ARM/ARM
自适应推理模型的核心就是
让模型自己根据用户问题的来判断是否进行推理预测。
Arm存在三种格式:直接回答、短CoT或代码、长CoT,同时引入Ada-GRPO解决传统 GRPO 中的格式崩溃问题。
除了自适应模式,Arm还支持另外两种模式;
- 指令引导模式,用户明确强制选择某一种指定推理格式
- 共识引导模式,聚合直接回答、短CoT或代码三种格式的输出,当答案一致时,直接返回,否则认为任务较复杂,切换到Long CoT推理模式。
模型的训练分为两个阶段,SFT和Ada-GRPO。
第一阶段:SFT 推理格式理解
SFT作为冷启动,让模型可以用各种推理格式解决问题。
- 直接答案:直接给出答案,不进行任何推理链
<ANSWER>answer</ANSWER>
- 短CoT:先进行简短的推理,然后给出答案
<COT>cot</COT><ANSWER>answer</ANSWER>
- 代码:采用基于代码的推理方式,格式:
<CODE>code</CODE><ANSWER>answer</ANSWER>
- 长CoT:涉及更详细、迭代的推理过程,例如自我反思和替代方案生成等
<LONG\_COT>cot</LONG\_COT><ANSWER>answer</ANSWER>
模型训练采用LlamaFactory框架,lora训练,批次为128,学习率为 2e-4,采用余弦学习率调度器,6个epoch,10%步数预热,训练策略 ZeRO-3。
第二阶段:Ada-GRPO训练格式选择
SFT 之后,模型会了使用多种推理格式进行回复,但无法根据任务自适应切换的能力,因此提出了自适应 GRPO,通过格式多样性奖励机制,让模型能够根据任务难度动态地选择合适的推理格式。
传统GRPO,模型为每个问题
采样一组输出
,其中
表示组大小。对每个
,使用奖励函数计算二进制奖励
,预测
与真实值
是否匹配:
但传统GRPO仅优化准确性会这导致,模型过度依赖最高准确性的格式,抑制了对其他更高效格式的探索。
或者说,如果长CoT的准确性高于其他格式,经过GRPO训练的模型倾向于逐渐加强长链推理的使用,导致格式崩溃。
Ada-GRPO,主要通过放大不常采样的推理格式的奖励
来防止其消失,将奖励
按以下方式缩放为
:
其中
表示
对应的推理格式在其组
内出现的次数,
表示训练步骤。
α
是格式多样性缩放因子,从训练开始时的
逐渐减小到训练结束时的
。
α
由两部分组成:
- 格式多样性缩放因子
:为了防止模型过早收敛到最高准确性的格式(即长CoT格式崩溃),对不常出现的格式给予更高的奖励以鼓励探索。
- 衰减因子
:为了避免由于过度奖励罕见格式而导致的长期错位。比如,
会使模型倾向于选择准确性较低的格式,仅仅因为它出现得较少,这虽然在训练初期是有益的,但长期可能会阻碍收敛。衰减机制随着训练增加,逐渐将重点重新放回到准确性上。
然后,基于调整后的奖励
,计算每个输出中所有token的组优势
:
最后,通过最大化以下目标函数来优化模型:
结果
基座模型采用Qwen2.5-Base-3B、7B、14B模型。
SFT数据集,使用AQuA-Rat,由于仅存在直接答案和简短CoT回答,利用GPT-4o和 DeepSeek-R1分别补充代码和长CoT格式,过滤错误答案后,保留 3K 个多选题和 7.8K 个开放问题。
GPT-4o补充代码
DeepSeek-R1补充长CoT
RL数据集,从简单的常识推理到复杂的数学推理,包括 CommonsenseQA、GSM8K 和 MATH,总共包含 19.8K 条。
如下表所示,ARM的平均效果下降不到1%,但节省了超过30%的token。
同时,SFT只能让模型学会格式,但没办法根据任务选择合适的格式,而GRPO 确实提高了推理能力,但倾向于依赖长CoT来解决所有任务,如下图所示。
比较自适应模式、指令引导模式、共识引导模式如下表所示,共识引导可以提高整体效果,但消耗token也更多。
验证,自适应模式中格式的选择不是随机选择,与指令引导模式上每种单独模式比较,效果均好。
比较Ada-GRPO和GRPO,如下图所示,在早期训练步骤中Ada-GRPO由于选择了次优的推理格式,最初在准确率上落后于GRPO,但最终都收敛到相似的最终准确率。而Ada-GRPO最终将平均响应长度减少到大约GRPO的一半。
最后,想说,
自适应推理应该推理模型的必经之路,
同时支持强制选择推理模式也要支持,
应用上,可以前置的就选择强制指令,无法判断的再让大模型自己自适应。
PS:看到这里,如果觉得不错,可以来个点赞 、在看 、关注 。 给公众号添加【星标⭐️】不迷路!您的支持是我坚持的最大动力!
欢迎多多关注公众号「刘聪NLP」,加入交流群,交个朋友吧,一起学习,一起进步!