AI个人学习
和实操指南
TRAE

大语言模型推理:在“思考不足”与“过度思考”之间寻求平衡

大语言模型(LLM)的发展日新月异,其推理能力已成为衡量其智能水平的关键指标。特别是具备长推理能力的模型,例如 OpenAI 的 o1DeepSeek-R1QwQ-32B 和 Kimi K1.5 等,它们通过模拟人类深度思考过程来解决复杂问题,引发了广泛关注。这种能力通常涉及到一种称为“推理时扩展”(Inference-Time Scaling)的技术,允许模型在生成答案的过程中,投入更多时间进行探索和修正。

然而,深入研究发现,这些模型在推理时常陷入两个极端:思考不足 (Underthinking) 和 过度思考 (Overthinking)


思考不足 指的是模型在推理中频繁切换思路,难以集中于一个有前景的方向进行深入挖掘。模型输出中可能充斥着 “alternatively”、“but wait”、“let me reconsider” 等词语,如同下图所示,导致最终答案错误。这种现象可类比为人类注意力不集中,影响了推理的有效性。

模型思考不足示例

过度思考 则表现为模型在简单问题上生成冗长而不必要的“思维链”。例如,对于 “2+3=?” 这样基础的算术题,某些模型可能耗费数百甚至上千 token 来反复验证或探索多种解法,如下图所示。虽然复杂的思维过程对难题有益,但在简单场景下,这无疑造成了计算资源的浪费。

模型过度思考示例

这两个问题共同指向了一个核心挑战:如何在保证答案质量的前提下,提升模型的思考效率?理想的模型应当能在最短的输出内,找到并给出正确答案。

为了应对这一挑战,EvalScope 项目引入了 EvalThink 组件,旨在提供一个标准化的工具来评估模型的思考效率。本文将以 MATH-500 数据集为例,分析包括 DeepSeek-R1-Distill-Qwen-7B 在内的一系列推理模型的表现,重点考察六个维度:模型推理 token 数、首次正确 token 数、剩余反思 token 数、token 效率、子思维链数量和准确率。

 

评估方法与流程

评估过程主要包含两个阶段:模型推理评估和模型思考效率评测。

模型推理评估

此阶段的目标是获取模型在 MATH-500 数据集上的原始推理结果和基础准确率。MATH-500 数据集包含 500 个不同难度的数学问题(从 Level 1 到 Level 5)。

准备评测环境

评估可通过接入兼容 OpenAI API 的推理服务进行。EvalScope 框架也支持使用 transformers 库在本地进行评测。对于需要处理长思维链(可能超过 10,000 token)的推理模型,使用 vLLM 或 ollama 等高效推理框架部署模型,可以显著加速评测过程。

以 DeepSeek-R1-Distill-Qwen-7B 为例,使用 vLLM 部署服务的示例命令如下:

VLLM_USE_MODELSCOPE=True CUDA_VISIBLE_DEVICES=0 python -m vllm.entrypoints.openai.api_server --model deepseek-ai/DeepSeek-R1-Distill-Qwen-7B --served-model-name DeepSeek-R1-Distill-Qwen-7B --trust_remote_code --port 8801

执行推理评测

通过 EvalScope 的 TaskConfig 配置模型 API 地址、名称、数据集、批处理大小和生成参数,然后运行评测任务。以下为示例 Python 代码:

from evalscope import TaskConfig, run_task
task_config = TaskConfig(
api_url='http://0.0.0.0:8801/v1/chat/completions',  # 推理服务地址
model='DeepSeek-R1-Distill-Qwen-7B',  # 模型名称 (需与部署时一致)
eval_type='service',  # 评测类型:服务
datasets=['math_500'],  # 数据集
dataset_args={'math_500': {'few_shot_num': 0, 'subset_list': ['Level 1', 'Level 2', 'Level 3', 'Level 4', 'Level 5']}},  # 数据集参数,包含难度级别
eval_batch_size=32,  # 并发请求数
generation_config={
'max_tokens': 20000,  # 最大生成 token 数,设置较大值防截断
'temperature': 0.6,  # 采样温度
'top_p': 0.95,  # top-p 采样
'n': 1,  # 每个请求生成一个回复
},
)
run_task(task_config)

评测完成后,会输出模型在 MATH-500 各难度级别上的准确率(AveragePass@1):

| Model                       | Dataset   | Metric        | Subset   | Num | Score  | Cat.0   |
|-----------------------------|-----------|---------------|----------|-----|--------|---------|
| DeepSeek-R1-Distill-Qwen-7B | math_500  | AveragePass@1 | Level 1  | 43  | 0.9535 | default |
| DeepSeek-R1-Distill-Qwen-7B | math_500  | AveragePass@1 | Level 2  | 90  | 0.9667 | default |
| DeepSeek-R1-Distill-Qwen-7B | math_500  | AveragePass@1 | Level 3  | 105 | 0.9587 | default |
| DeepSeek-R1-Distill-Qwen-7B | math_500  | AveragePass@1 | Level 4  | 128 | 0.9115 | default |
| DeepSeek-R1-Distill-Qwen-7B | math_500  | AveragePass@1 | Level 5  | 134 | 0.8557 | default |

模型思考效率评估

获取推理结果后,EvalThink 组件介入,进行更深入的效率分析。核心评估指标包括:

  • 模型推理 token 数 (Reasoning Tokens): 模型生成答案过程中,思考链(如 O1/R1 模型中 </think> 标志前的内容)所包含的 token 总量。
  • 首次正确 token 数 (First Correct Tokens): 从模型输出开始,到首次出现可识别正确答案位置的 token 数量。
  • 剩余反思 token 数 (Reflection Tokens): 从首次正确答案位置到思考链结束的 token 数量。这部分反映了模型找到答案后继续验证或探索所花费的代价。
  • 子思维链数量 (Num Thought): 通过统计特定标志词(如 alternativelybut waitlet me reconsider)的出现次数来估算模型切换思路的频率。
  • token 效率 (Token Efficiency): 衡量有效思考 token 占比的指标,计算公式为首次正确 token 数与总推理 token 数的比值的平均值(仅计入回答正确的样本):
    Token Efficiency = 1N ∑ First Correct TokensiReasoning Tokensi
    其中 N 为回答正确的问题数量。该值越高,表示模型的思考越“高效”。

为了确定“首次正确 token 数”,该评估框架借鉴了 ProcessBench 的思路,采用一个独立的“裁判”模型(Judge Model),例如 Qwen2.5-72B-Instruct,来检查推理步骤,定位最早出现正确答案的位置。实现方式涉及将模型输出按步骤分解(策略可选:按特定分隔符 separator、按关键词 keywords、或由 LLM 辅助重写并切分 llm),然后让裁判模型逐一判断。

执行思考效率评估的示例代码:

from evalscope.third_party.thinkbench import run_task
# 配置裁判模型服务
judge_config = dict(
api_key='EMPTY',
base_url='http://0.0.0.0:8801/v1', # 假设裁判模型也部署在此服务
model_name='Qwen2.5-72B-Instruct',
)
# 配置待评估模型的信息
model_config = dict(
report_path='./outputs/2025xxxx',  # 上一步推理结果路径
model_name='DeepSeek-R1-Distill-Qwen-7B',  # 模型名称
tokenizer_path='deepseek-ai/DeepSeek-R1-Distill-Qwen-7B',  # Tokenizer 路径,用于计算 token
dataset_name='math_500',  # 数据集名称
subsets=['Level 1', 'Level 2', 'Level 3', 'Level 4', 'Level 5'],  # 数据集子集
split_strategies='separator',  # 推理步骤分割策略
judge_config=judge_config
)
max_tokens = 20000  # 过滤 token 过长的输出
count = 200  # 每个子集抽样数量,加速评测
# 运行思考效率评估
run_task(model_config, output_dir='outputs', max_tokens=max_tokens, count=count)

评估结果会详细列出模型在各难度级别上的六个维度指标。

 

结果分析与讨论

研究团队使用 EvalThink 对 DeepSeek-R1-Distill-Qwen-7B 及其他几个模型(QwQ-32BQwQ-32B-PreviewDeepSeek-R1DeepSeek-R1-Distill-Qwen-32B)进行了评估,并加入了一个非推理的数学专用模型 Qwen2.5-Math-7B-Instruct 作为对比。

DeepSeek-R1-Distill-Qwen-7B 思考效率
图1:DeepSeek-R1-Distill-Qwen-7B 思考效率指标

6个模型思考效率对比
图2:6个模型在 MATH-500 不同难度级别上的思考效率对比

从对比结果(图2)中可以观察到以下趋势:

  1. 难度与表现关联: 随着问题难度(Level 1 到 Level 5)增加,大部分模型准确率下降。然而,QwQ-32B 和 DeepSeek-R1 在高难度问题上表现突出,QwQ-32B 在 Level 5 准确率最高。同时,所有模型的输出 token 数都随难度增加而变长,这符合“推理时扩展”的预期——模型需要更多“思考”来解决难题。
  2. O1/R1 类推理模型特性:
    • 效率提升: 有趣的是,对于 DeepSeek-R1 和 QwQ-32B 这类推理模型,虽然输出变长,但 token 效率(有效 token 占比)也随难度提升(DeepSeek-R1 从 36% 到 54%,QwQ-32B 从 31% 到 49%)。这表明它们在难题上的额外思考更具“性价比”,而在简单问题上可能存在一定的“过度思考”,例如不必要的反复验证。QwQ-32B 的 token 消耗量整体偏高,这或许是其能在 Level 5 保持高准确率的原因之一,但也暗示了其过度思考的倾向。
    • 思维路径DeepSeek 系列模型在 Level 1-4 的子思维链数量相对稳定,但在最难的 Level 5 急剧增加,表明 Level 5 对这些模型构成了显著挑战,需要多次尝试。相比之下,QwQ-32B 系列模型的思维链数量增长更平滑,反映了不同的应对策略。
  3. 非推理模型局限: 数学专用模型 Qwen2.5-Math-7B-Instruct 在处理高难度问题时准确率大幅下降,且其输出 token 数远少于推理模型(约三分之一)。这显示,虽然这类模型在普通问题上可能更快、更省资源,但缺乏深度思考过程使其在复杂推理任务上存在明显的性能“天花板”。

 

方法学考量与局限性

在应用 EvalThink 进行评估时,需要注意以下几点:

  • 指标定义:
    • 本文提出的 token 效率指标,借鉴了文献中关于“过度思考”和“思考不足”的概念,主要关注 token 数量,是对思考过程的一种简化度量,未能捕捉思考质量的全部细节。
    • 子思维链数量的计算依赖于预定义的关键词,可能需要针对不同模型调整关键词列表才能准确反映其思考模式。
  • 适用范围:
    • 当前指标主要在数学推理数据集上验证,其在开放问答、创意生成等其他场景的有效性有待检验。
    • 考虑到 DeepSeek-R1-Distill-Qwen-7B 是基于数学模型蒸馏而来,其在 MATH-500 数据集上的表现可能存在天然优势。评估结果需结合模型背景进行解读。
  • 裁判模型依赖:
    • token 效率的计算依赖裁判模型(Judge Model)准确判断推理步骤的正确性。正如 ProcessBench 4研究所指出的,这对现有模型而言是一项挑战性任务,通常需要能力很强的模型才能胜任。
    • 裁判模型的误判会直接影响 token 效率指标的准确性,因此选择合适的裁判模型至关重要。

总而言之,EvalThink 提供了一套量化评估 LLM 思考效率的框架和指标,揭示了不同模型在准确性、token 消耗和思考深度之间的权衡。这些发现对于指导模型训练(如 GRPO 和 SFT),开发出更高效、能根据问题难度自适应调整思考深度的下一代模型,具有重要的参考价值。

未经允许不得转载:首席AI分享圈 » 大语言模型推理:在“思考不足”与“过度思考”之间寻求平衡
zh_CN简体中文