Procedural Knowledge at Scale Improves Reasoning
(arxiv 2026)
离线提取知识 $\rightarrow$ 实时检索知识 $\rightarrow$ 结合数学启发式算法进行多次采样与过滤。
离线提取知识
在准备阶段,作者并不直接把冗长的解题过程存入数据库,而是将其“压缩”和“抽象”为可复用的结构。
初始状态: 假设从现有的数据集中获取了一条完整的推理轨迹实例,记为 $(q, a, r)$,其中 $q$ 是原始问题,$a$ 是最终答案,$r$ 是长篇大论的中间推理过程 。
分解过程: 通过大模型(如 QwQ-32B)对 $(q, r)$ 进行两次 Prompt 提示,将其映射为包含 $K$ 个“子问题-子程序”对的集合,记作 ${(q_{i}, s_{i})}_{i=1}^{K}$ 。
生成 $q_{i}$: 提取出包含关键目标的独立子问题(Subquestion) 。
生成 $s_{i}$: 为每个子问题生成一个高层次的子程序(Subroutine),剥离掉具体的数字和试错,只保留解题策略 。
通过这种方式,原本极其庞大且特定于某道题的推理记录,被转化为了 3200 万条通用、精简的策略条目 。
实时检索知识
在推理时,模型不再被动接收文档,而是主动生成查询,并将结果直接无缝植入其“思考过程”中。
生成查询: 模型在推理时,系统会插入一段“思维劫持(thought-hijacking)”提示词,强制模型用一句话总结它当前遇到的瓶颈,生成检索查询 $\tilde{q}$。
检索: 使用密集检索器,根据 $\tilde{q}$ 找到知识库中余弦相似度最高的 $k$ 个子问题及其对应的子程序,记为 ${(\hat{q}{j}, \hat{s}{j})}_{j=1}^{k}$。
知识注入: 对于每一个检索到的知识点,系统会以特定的格式([hint] ... [end of hint])将其直接插入模型正在生成的思维流中 。随后,模型以这部分过程知识作为“隐式先验(implicit procedural prior)”继续往下推理。
为了防止模型“跑偏”,作者在插入 [end of hint] 之后,紧接着人为地替模型写了一个词:“Okay,”(好的,) 。 大模型本质上是“接龙机器”(自回归生成)。当模型看到它最近的上下文是:
1[hint] 这是一段解题提示:应该先用海伦公式... [end of hint] Okay,
它在预测下一个 Token 时,逻辑会被顺理成章地引导为:“好的,既然我看到了这个提示,那我就顺着这个提示继续算吧。” 于是,模型就会自然而然地基于检索到的过程先验知识继续进行推理 。
多次采样与过滤
给定一定的计算预算(允许模型生成 $m$ 个答案),我们该如何分配这些预算,并从中挑出最正确的答案?
步骤 1:预算分配与采样
假设总采样预算为 $m$,检索到了 $k$ 个子程序 ${(\hat{q}{j}, \hat{s}{j})}{j=1}^{k}$ 。 系统为每个检索到的子程序平均分配采样次数,即每个子程序被探索 $\lfloor m/k \rfloor$ 次 。 由此产生了一个候选轨迹池 ${\pi{j,l}}$,其中:
- $j \in {1, \dots, k}$ 代表第 $j$ 个检索到的子程序 。
- $l \in {1, \dots, \lfloor m/k \rfloor}$ 代表在该子程序下生成的第 $l$ 个轨迹样本 。
步骤 2:不确定性评分与归一化
作者使用了一种极为巧妙的启发式标准:生成的长度(Length) 。其直觉在于:当模型对推理缺乏信心时,通常会产生额外的分支、犹豫和回退,导致生成的 Token 数量增加 。
- 首先,计算每条轨迹 $\pi_{j,l}$ 的原始长度分数 $r_{j,l} = |\pi_{j,l}|$(按词或 Token 计算) 。
- 随后,在当前问题的所有 $m$ 个样本池中找出最大长度 $r_{max}$ 和最小长度 $r_{min}$,并进行最大最小归一化,计算出该样本的质量分数 $\hat{r}_{j,l}$ :
$$\hat{r}{j,l} = \frac{r{max} - r_{j,l}}{r_{max} - r_{min}}$$
注意:由于分子是 $r_{max} - r_{j,l}$,这意味着轨迹越短,$\hat{r}_{j,l}$ 的值越接近 1,表示置信度/质量越高 。
步骤 3:两阶段过滤机制
为了选出最终的输出,算法进行了两轮过滤:
第一阶段(过滤低效子程序): 计算第 $j$ 个子程序的平均质量得分 $\bar{r}_{j}$ :
$$\bar{r}{j} \equiv \frac{1}{\lfloor m/k \rfloor} \sum{l=1}^{\lfloor m/k \rfloor} \hat{r}_{j,l}$$
保留平均得分大于设定阈值 $\tau$(例如 $\tau = 0.1$)的子程序,剔除那些总体倾向于导致冗长/不确定推理的错误引导策略 。
第二阶段(过滤低质量样本): 在被保留下来的子程序池中,将所有的轨迹样本按照质量分数 $\hat{r}_{j,l}$ 从高到低进行全局排序,并只保留排名前 $n$ 的样本(例如 $n=4$)作为最终输出进行多数投票或准确率评估。