大家好,我是刘聪NLP。
总所周知,推理模型在很多任务上效果显著,但因为存在思考过程,也会增加推理过程的时长。
对于相对简单的问题,非推理模型即可。Claude3.7、Qwen3模型也是混合推理模型,也就是大模型即可以直接回答问题,也可以思考后再进行回答。
但其实,都是通过开关进行控制得,也就是人来判断哪些使用推理、哪些不使用推理,而不是模型自主根据用户问题难度来进行判断的。
今天刷到一个paper,《AdaptThink: Reasoning Models Can Learn When to Think》,让推理模型学会何时推理何时不推理并自行决策。
Github: https://github.com/THU-KEG/AdaptThink
通过让DeepSeek-R1-Distill-Qwen-7B模型使用NoThinking和Thinking两种模式预测5个难度等级的MATH500问题。
发现在1-3级的问题上NoThinking和Thinking效果相当,甚至在1级上NoThinking效果还更优,但回答长度明显变短。
AdaptThink核心优化:
- 约束优化目标:在保证整体性能不下降的情况下,鼓励模型选择NoThinking模式。
- 重要性采样策略:在在线策略训练期间,平衡 Thinking 和 NoThinking 样本,探索和利用两种思考模式。
约束优化目标
在确保模型准确率不下降的情况下,最大化生成NoThinking响应的概率。
假设推理模型
和数据集
,参考模型为
,由
初始,并且在训练过程中保持不变。
设
为奖励函数,其中
、
和
分别表示提示、模型回答和标准答案。如果
是错误的/正确的,则该函数返回0/1。为简化表达,省略
,将函数记作
。设
为指示函数,如果
的第一个token是(即
是一个NoThinking响应),则返回1,否则返回0。
优化目标为:
将约束条件作为惩罚项纳入目标函数中,惩罚权重为
:
将等式两边同时除以
,令
,并重新整理涉及
的项,得到:
在实际应用中,
可以通过预采样在训练前进行近似。对于每个
,从
中采样
个响应,并计算平均奖励:
优化目标变为:
由于
和
均不可微,采用策略梯度方法来解决这一优化问题。目标函数可以转化为PPO风格:
其中,
表示截断函数,有助于提高训练的稳定性。
重要性采样
在使用策略训练优化
的每一步中,从数据集
中采样一批数据
,然后对于每个
,从
中采样
个响应
,以估计
。
然而,模型只能从Thinking样本中学习,无法生成NoThinking响应。为了解决这一冷启动问题,采用了重要性采样技术。
定义了一个新的分布
:
是一个常见的用于开始长思考的词,例如“Alright”。在训练过程中,从
中采样响应
,这样每批样本中有一半是Thinking模式,一半是NoThinking模式。使得模型能从一开始就学习两种模式,并最终自适应地选择合适的模式。最终损失函数为:
除了实现冷启动外,重要性采样还保留了在整个训练过程中探索和利用两种思考模式的机会。防止了
永远陷入一种思考模式,并完全忽略另一种模式。
实验结果
基座模型选择DeepSeek-R1-Distill-Qwen-1.5B和DeepSeek-R1-Distill-Qwen-7B,训练框架为VeRL。
训练上下文长度、batch size 和学习率分别为 16K、128 和 2e-6。AdaptThink 中的超参数K、 δ和 ϵ 分别为 16、0.05 和 0.2。
在GSM8K、MATH500和AIME 2024上进行评测,如下表所示,与原始的1.5B和7B模型相比,AdaptThink平均响应长度分别降低了53.0%和40.1%,,同时平均准确率分别提高了2.4%和2.3%。
同时,随着问题难度的增加,NoThinking占比逐渐减少,如下图所示。
分析δ的影响,发现随着δ的增加,NoThinking响应的比例增加,平均响应长度减少,但准确率的提升也逐渐减少。
重要性采样的效果如下图所示,相较于GRPO,AdaptThink的响应长度更低。
在MMLU上进行泛化性评测,如下表所示,AdaptThink大约16%的问题通过NoThinking回答,平均响应长度减少了30%以上,同时比原始模型更高的准确率。
GIthub有代码可以直接跑,模型也开源了。
HF: https://huggingface.co/collections/THU-KEG/adaptthink-682a1059aa9f5102c4fa0470
PS:看到这里,如果觉得不错,可以来个点赞 、在看 、关注 。 给公众号添加【星标⭐️】不迷路!您的支持是我坚持的最大动力!
欢迎多多关注公众号「刘聪NLP」,加入交流群,交个朋友吧,一起学习,一起进步!