#让模型学会回退:LLM Search Trace / Backtracking 研究脉络综述

这篇文章专门展开上一文里的“路线 D”:backtracking / search trace training。核心问题是:

LLM 的长推理到底应该怎样学习“试错、检查、回退、换分支、停止”?错误轨迹有没有训练价值?如果有,什么样的错误才有价值?

一句话结论:

错误本身没有价值;有价值的是可诊断、可恢复、能暴露搜索结构的错误。回退本身也没有价值;有价值的是知道为什么回退、回退到哪里、换什么策略、以及什么时候不要继续浪费 test-time compute。

更人话一点:

不是让模型学会说“等等,我错了”,而是让模型学会:我现在这一步为什么错、错在哪里、这个局面还能不能救、该退回哪个分叉点、换哪条路、以及什么时候应该直接放弃重采样。

这条线和 reasoning SFT 的 off-policy 问题非常紧密。很多强模型 CoT 里都有“反思”“检查”“回退”文本,但直接 SFT 这些文本不一定让 student 学会搜索,反而可能只学到一种漂亮但空洞的反思腔调。


#1. 先把概念说清楚:reflection、search、backtracking 不是一回事

这几个词经常混在一起,但研究上最好分开:

概念人话解释关键问题
Reflection / self-correction模型对自己刚才的答案或步骤做检查和修改检查是否有新信息或可靠反馈支撑?
Verification用规则、verifier、工具、测试、环境反馈判断某步或某个答案是否正确verifier 是否可靠,反馈粒度够不够?
Search同时或顺序探索多个候选路径搜索空间怎么表示,怎么扩展,怎么剪枝?
Backtracking发现当前路径不行后,回到早前节点换分支回退点在哪里,错误是否可恢复?
Test-time compute allocation在推理时决定花多少计算、用在哪种策略上简单题别过度思考,难题别太早停止

一个常见误区是把“模型输出了反思文本”当成“模型具备了反思能力”。但事实上,LLM 可以生成很像反思的话,却没有真正获得新证据,也没有改变错误决策。

因此这条研究线的核心不是“让 CoT 更长”,而是:把推理过程组织成可评估、可分叉、可回滚、可停止的计算过程。


#2. 第一阶段:CoT 把中间计算显性化,但还不是搜索

#2.1 Chain-of-Thought:语言 scratchpad 的出现

Chain-of-Thought Prompting(arXiv:2201.11903)和 Zero-shot CoT(arXiv:2205.11916)让大家看到:模型在回答前写出中间步骤,复杂推理会显著变好。

它解决的问题是:标准 next-token generation 太像“直接报答案”,没有显式中间计算空间。CoT 给模型一个语言 scratchpad,让它可以把中间变量、子问题、推导步骤写出来。

但 CoT 的局限也很明显:

  • 它通常还是一条线性路径;
  • 一旦前面走错,后面可能继续错下去;
  • 它不天然包含搜索、分支、剪枝、回退;
  • CoT 文本也未必忠实反映模型内部真正因果计算。

所以 CoT 是 search trace 的基础,但不是 search trace 本身。

#2.2 Self-Consistency:先不回退,先多采样

Self-Consistency(arXiv:2203.11171)提出一个很重要的想法:复杂问题往往有多条推理路径通向同一个答案,所以不要只贪心生成一条 CoT,而是采样多条路径再投票。

这其实是 test-time search 的早期形式,只不过它是并行独立采样,不是单条轨迹内部的顺序回退。

它的重要启发是:

多想不一定等于一条链想更久;也可以是多条链并行探索。

这会在后面 “To Backtrack or Not to Backtrack” 中成为一个关键对照:在固定 compute 下,顺序 backtracking 不一定比 best-of-N parallel sampling 更好。


#3. 第二阶段:verifier / process reward 让“检查”有了外部锚点

#3.1 Training Verifiers:生成器之外还需要裁判

Training Verifiers to Solve Math Word Problems(arXiv:2110.14168)提出:生成很多候选答案,再训练 verifier 选择正确答案。这个工作比 CoT 更早,但对后来的 reasoning search 很关键。

它说明:LLM 推理不一定要完全靠 generator 自己一次性成功。可以把系统拆成:

生成候选路径 -> verifier 评估 -> 选择更好路径

这就把 reasoning 从“单次生成”变成了“生成 + 评价”的组合系统。

#3.2 Let's Verify Step by Step:final answer reward 太粗,中间步骤也要评估

Let's Verify Step by Step(arXiv:2305.20050)进一步推进到 process supervision:不仅判断最终答案,还给每个中间推理步骤打标签。论文在 MATH 上发现 process supervision 可以显著优于只看 final outcome 的监督,并发布 PRM800K。

这对 backtracking 非常关键。因为回退需要知道:

  • 哪一步开始错?
  • 这个错误是否会污染后续?
  • 应该从哪里重新开始?

如果只有 final answer wrong,模型最多知道“整条路错了”;如果有 process feedback,才可能知道“第 4 步错了,应该回到第 3 步换分支”。

这也是为什么我说:可诊断的错误才有价值。


#4. 第三阶段:ReAct / Reflexion / ToT 把搜索外部化

#4.1 ReAct:reasoning 和 acting 交替,反馈来自环境

ReAct(arXiv:2210.03629)把 reasoning trace 和 action trace 交织起来:模型一边想,一边调用工具或环境获取 observation。

这和纯 CoT 的关键区别是:模型不是在脑内自言自语,而是在和外部世界交互。外部 observation 可以纠错。

对于 LLM Agent 来说,这一点非常重要:agent 的错误不是只发生在文字里,而是发生在 tool call、文件修改、网页操作、代码执行中。回退也不是“重新说一句”,而是要回滚状态、修正操作、重新规划。

#4.2 Reflexion / Self-Refine:反思循环的早期形态

Reflexion(arXiv:2303.11366)提出 language agent 可以在试错后,把反馈写成 verbal reflection 存进 memory,下次尝试时使用。Self-Refine(arXiv:2303.17651)则是生成、反馈、修改的循环。

这类方法展示了 reflection 的潜力,但也埋下一个问题:如果 feedback 本身不可靠,或者没有外部信息,reflection 可能只是更长、更自信的文本。

#4.3 Tree of Thoughts:显式分支、评估、回溯

Tree of Thoughts(arXiv:2305.10601)更接近经典搜索:把 “thought” 当作中间节点,对多个 thought 分支进行扩展、评估、lookahead 和 backtracking。

它解决了 CoT 的一个核心限制:线性 left-to-right generation 不能很好处理需要探索和全局选择的问题。

但 ToT 主要是 inference-time framework:它告诉我们可以外部组织搜索,却还没有回答更深的问题:模型能否通过训练,把搜索/回退策略内化为自己的能力?

这正是后面 Stream of Search 和 Self-Backtracking 要回答的问题。


#5. 一个重要反例:没有外部反馈的“自我纠错”并不可靠

Large Language Models Cannot Self-Correct Reasoning Yet(arXiv:2310.01798)是这条线里必须认真看的反例。它指出,在没有外部反馈时,LLM 的 intrinsic self-correction 并不可靠,有时甚至会把正确答案改错。

这篇工作的意义不是说 reflection 永远没用,而是提醒我们:

reflection 的有效性来自反馈结构,不来自“反思”这个词本身。

例如:

  • 如果模型调用编译器得到报错,再修改代码,这是有反馈的 reflection;
  • 如果模型用 verifier 发现第 3 步不成立,再回退,这是有锚点的 reflection;
  • 如果模型只是生成“让我重新检查一下”,但没有新证据,它可能只是在生成更像自我纠错的文本。

Chain-of-Verification(arXiv:2309.11495)也说明了类似点:把验证拆成明确问题,并让模型独立回答这些 verification questions,能降低 hallucination。也就是说,反思要变可靠,最好被结构化成可检查的子任务。


#6. 第四阶段:test-time compute 成为新的 scaling axis

2024 年之后,一个更大的框架出现了:推理能力不只是模型参数和训练 token 的函数,也是 test-time compute allocation 的函数。

#6.1 Large Language Monkeys:多采样可以按 compute 扩展覆盖率

Large Language Monkeys(arXiv:2407.21787)研究 repeated sampling。它发现,在 coding、formal proofs 等可自动验证任务上,采样很多候选解会显著提高 coverage。例如 SWE-bench Lite 中,DeepSeek-Coder-V2-Instruct 从单样本 15.9% 提升到 250 samples 下 56%。

这说明一个重要事实:

很多时候模型不是完全不会,而是一次采样没采到。

所以,backtracking 不是唯一的 test-time scaling。并行采样 + verifier 也是强基线。

#6.2 Scaling LLM Test-Time Compute Optimally:关键是怎么花预算

Scaling LLM Test-Time Compute Optimally(arXiv:2408.03314)把问题说得更系统:固定 inference compute 下,到底应该用搜索、PRM-guided selection,还是 adaptive distribution update?

这对 backtracking 的启发是:

回退只是花 test-time compute 的一种方式。它必须和并行采样、verifier reranking、工具调用、latent compute 等策略比较。

#6.3 Overthinking:不是所有题都值得长思考

Do NOT Think That Much for 2+3=?(arXiv:2412.21187)指出 o1-like 长思考模型会 overthinking:简单题也花大量 tokens,收益很小甚至有害。

因此,真正成熟的 reasoning 系统不应该只有“会回退”,还应该会:

  • 判断题目难度;
  • 决定是否需要长 CoT;
  • 决定是顺序搜索还是并行采样;
  • 决定什么时候停止;
  • 避免在低价值路径上继续浪费 token。

这把 backtracking 问题上升为推理预算控制问题


#7. 第五阶段:Search Trace Training —— 把搜索过程本身变成训练数据

现在进入这条线最核心的部分:如果 search/backtracking 有价值,能不能把搜索过程直接训练进模型?

#7.1 STaR:从正确 rationale 中自举

STaR(arXiv:2203.14465)可以看作 search trace training 的早期亲戚。它不是显式搜索树,但它把“模型自己生成 rationale、筛选正确结果、再训练自己”变成闭环。

它的关键贡献是:模型可以从自己生成的数据中提升 reasoning,但前提是有可靠筛选信号。

这也对应一个基本原则:self-training 不是从虚无中产生能力,而是在 feedback / answer / verifier 的锚点下放大已有能力。

#7.2 Quiet-STaR:把 thinking 扩展到任意文本

Quiet-STaR(arXiv:2403.09629)把 STaR 从 QA rationale 推广到任意文本:模型在每个 token 前生成 hidden rationale 来预测未来文本。

它说明 reasoning 不一定只发生在显式问答里;语言建模本身也可能需要隐式推理。

不过对于 backtracking 来说,Quiet-STaR 更像是“让模型学会先想再说”,还不是“学会搜索和回退”。真正把搜索树序列化成语言的是 Stream of Search。

#7.3 Stream of Search:让模型看到 fruitful mistakes

Stream of Search(arXiv:2404.03683)是这条线的代表工作。它的出发点非常直接:

Language models are rarely shown fruitful mistakes while training.

模型训练数据里通常只有最终正确解,或者最优路径。这样模型很难学到:如果某条路走不通,该怎样识别、剪枝、回退、换分支。

SoS 的做法是把搜索树探索过程 flatten 成一个语言序列:生成节点、探索、剪枝、backtrack、goal check。它在 Countdown 任务上用 heuristic solvers 生成 search streams,然后预训练 transformer。结果显示,相比只训练 optimal search trajectory,SoS pretraining 的 search accuracy 提升约 25%。

这个工作的核心价值是:

它把“错误路径”从噪声变成结构化教材。

但注意,不是所有错误都被无脑加入训练。SoS 中有价值的是“搜索过程里的错误”:它们有上下文、有剪枝信号、有回退动作、有最终目标检查。也就是说,它们是可诊断、可恢复、能暴露搜索结构的错误。

#7.4 SoS 留下的新问题

SoS 也留下几个问题:

  1. 任务依赖强:Countdown 这种符号搜索任务很适合生成 search trace,但开放域 agent/code 任务如何生成高质量 search trace?
  2. 搜索语言是否泛化:模型学到的是抽象搜索控制,还是某个 solver 的固定风格?
  3. trace 长度成本:完整搜索过程很长,训练和推理都昂贵。
  4. 错误质量控制:哪些错误是 fruitful mistakes,哪些只是垃圾路径?

这些问题引出了后面的 backtracking debate。


#8. 第六阶段:Backtracking Debate —— 回退不是万能的

#8.1 Self-Backtracking:让模型学会何时、何处回退

Self-Backtracking(arXiv:2502.04404)明确提出:有效 reasoning 需要 internalize search process,而 backtracking 是传统搜索算法里的关键操作。它希望模型在训练和推理中都能自主决定 when and where to backtrack。

论文报告相对 optimal-path SFT 有超过 40% 的提升。它的重要性在于:

  • 不只是给模型看正确路径;
  • 而是教模型处理走错后的恢复;
  • 把“慢思考”中的搜索过程转化成更可内化的策略。

但这类工作容易被误读成“backtracking 越多越好”。后续研究正好反驳了这一点。

#8.2 To Backtrack or Not to Backtrack:顺序回退 vs 并行采样

To Backtrack or Not to Backtrack(arXiv:2504.07052)提出了一个非常关键的问题:

固定 compute 下,顺序 backtracking 真的比 parallel best-of-N 更好吗?

它在 Countdown 和 Sudoku 上比较后发现:

  • Countdown 中,sequential search/backtracking 反而不如 direct + best-of-N;
  • Sudoku 中,backtracking 更有帮助。

这说明 backtracking 的收益强烈依赖任务结构。

论文还指出两个导致 backtracking 退化的因素:

  1. 固定 search trace 训练会把模型锁进 suboptimal strategy
  2. 显式 CoT supervision 可能抑制模型的 implicit reasoning

这个结论对 reasoning SFT 很重要。它说明:直接 SFT 一套 teacher backtracking trace,可能不是教会模型搜索,而是把模型绑到 teacher 的固定搜索风格上。

#8.3 How Much Backtracking is Enough:回退量也要按任务调节

How Much Backtracking is Enough?(arXiv:2505.24273)进一步系统分析 SFT 和 RL 在八类 reasoning tasks 上的关系。它关注的问题是:backtracking 到底贡献多少?多少 backtracking 合适?

它的结论可以概括为:

  • 短 CoT SFT warm-up 对 RL 有一定帮助;
  • 任务越难,简单 SFT 的帮助越有限;
  • 最优 backtracking 数量随任务而变:浅层任务可能不需要,Countdown 需要少量,Sudoku / 深约束任务需要更多;
  • RL 可能学到的是结构化搜索模式,而不只是正确 CoT 内容。

所以 backtracking 的正确定位应该是:

它不是普适能力按钮,而是某些任务结构下的 test-time compute strategy。


#9. 与 RLVR / R1 的关系:RL 可能让搜索行为自然涌现

DeepSeek-R1(arXiv:2501.12948)显示,通过 verifiable reward 的 RL,模型可以涌现 self-reflection、verification、dynamic strategy adaptation 等 long reasoning pattern。

这和 search trace SFT 有一个重要对比:

路线训练信号优点风险
Search trace SFT人工/solver/teacher 生成的搜索过程dense、可直接教搜索格式off-policy、固定策略、表面模仿
RLVRstudent rollout + 可验证 rewardon-policy、能发现新策略reward 稀疏、探索难、credit assignment 难
Search trace + RLtrace warm-up + reward refinement兼顾 cold start 和 on-policy如何平衡 imitation / exploration 仍未解决

这也解释了为什么 LUFFY 那条线和 backtracking 线会汇合:

  • 如果直接 SFT teacher backtracking trace,可能 off-policy;
  • 如果纯 RL,弱模型可能探索不到有效回退策略;
  • 更合理的是让 trace 提供 guidance / warm-up,让 RL 或 verifier 在 student 自己的状态分布上选择性强化。

#10. Latent reasoning:也许不是所有搜索都应该写成可见 CoT

Scaling up Test-Time Compute with Latent Reasoning(arXiv:2502.05171)提出用 recurrent depth 在 latent space 中扩展 test-time compute,而不是生成更多可见 tokens。

这对 search/backtracking 有一个很深的启发:

可见 CoT 方便监督、审计和教学,但不一定是最高效或最忠实的 reasoning 载体。

有些搜索控制可能应该显式写出来,例如:

  • tool call;
  • 关键分支选择;
  • 回退点;
  • verifier 结果;
  • 最终可审计的推理依据。

但有些局部探索、模式匹配、隐式剪枝,也许更适合在 latent space 中完成。

未来可能不是 visible CoT vs latent reasoning 二选一,而是混合架构:

latent compute 负责快速局部搜索与状态压缩;
visible trace 负责关键决策、外部工具、可审计回退;
verifier / reward 负责校准是否继续思考。

#11. 技术 taxonomy:什么样的错误轨迹值得训练?

现在回到最核心的问题:错误轨迹到底有没有价值?

我认为可以按下面几类区分。

错误类型是否值得训练原因
随机胡说型错误不值得没有结构,不能暴露可学习策略
最终错但中间有局部正确结构可能值得可用于学习部分 subgoal 或局部启发式
可诊断错误值得能定位 earliest wrong step,适合 process supervision
可恢复错误很值得能教模型如何 backtrack / repair
能暴露搜索边界的错误很值得让模型学会哪些分支该剪枝
高质量失败案例值得对 agent/code 任务尤其重要,可教 debugging
不可恢复 off-manifold 错误通常不值得继续应该 reset / resample,而不是继续 SFT 后续 token

换句话说,训练数据不应该只是:

正确答案 trajectory

也不应该粗暴加入:

所有失败 trajectory

更好的格式应该是:

尝试路径 -> 诊断信号 -> 回退点 -> 替代分支 -> 验证结果 -> 停止条件

这才是真正有教学意义的 search trace。


#12. 和 reasoning SFT off-policy 问题的关系

现在可以更清楚地解释,为什么直接 SFT teacher reflection/backtracking trace 有问题。

teacher 的回退发生在 teacher 自己的状态分布上。teacher 在第 8 步说“等等,我们应该回到第 4 步”,这是因为 teacher 的前 1-7 步形成了某个局面。

student 推理时可能第 3 步就偏了。此时 teacher trace 中第 8 步的回退动作,对 student 当前局面未必有意义。

所以直接 SFT 会产生三种风险:

  1. 表面反思化:student 学会说“wait, let's reconsider”,但不知道为什么;
  2. 错误回退点:student 模仿 teacher 的回退位置,但自己的错误发生在别处;
  3. 策略锁死:student 被 teacher 固定 search trace 锁住,失去并行采样、隐式推理或其他有效策略。

因此更合理的做法是:

  • 让 student 先 rollout 自己的 reasoning;
  • 用 verifier / process reward / teacher critique 标注 student 自己的错误;
  • 只在可诊断、可恢复的状态上训练 backtracking;
  • 对不可恢复状态 reset 或重新采样;
  • 对正确但不同于 teacher 的路径保留,而不是用 KL 拉回 teacher。

这和 OPD / LUFFY 的思想完全一致:训练应该发生在 student-visited states 上,而不是纯 teacher trajectory 上。


#13. 对 LLM Agent / Code Agent 的启发

这条线对 LLM Agent 和 Code Agent 比数学题更重要。

数学题的 search trace 主要在文字空间里;code agent 的 search trace 包含:

  • 修改哪个文件;
  • 运行哪个测试;
  • 看到什么报错;
  • 判断错误来自实现、依赖还是测试理解;
  • 回滚哪段 patch;
  • 保留哪个局部修改;
  • 换哪种 debugging strategy。

这天然就是 search / backtracking / repair 问题。

一个好的 code agent 训练轨迹,不应该只是成功 patch 的最终 diff,也不应该只是强模型完整操作录像,而应该包含:

初始假设 -> 操作 -> 测试反馈 -> 错误诊断 -> patch 回滚/局部保留 -> 新假设 -> 再测试 -> 最终通过

这就是“可诊断、可恢复、能暴露搜索结构”的错误轨迹。

#13.1 一个值得研究的方向:Agent Search Trace Dataset

可以考虑构建一种 agent search trace 数据格式:

字段说明
state当前 repo / browser / environment 状态摘要
actiontool call、edit、test、search、read file 等动作
observation编译器、测试、网页、环境返回
diagnosis当前失败原因的结构化判断
rollback target如果需要回退,回到哪个状态或撤销哪个 patch
alternative branch下一条尝试路径
verifier resulttest pass/fail、reward、judge score
keep/drop decision哪些中间修改保留,哪些丢弃

这类数据比“最终答案 SFT”更接近真实 agent 能力形成。

#13.2 另一个方向:Repairability-Aware Agent RL

在 agent rollout 中,不是所有错误都应该继续优化。有些错误还能救,有些已经把环境带坏了。

因此 reward / critic 可以显式预测:

  • 当前状态是否可恢复;
  • 最早错误动作在哪里;
  • 回退成本是多少;
  • 是否应该继续局部修复,还是 reset;
  • 是否应该切换为 parallel sampling / best-of-N。

这会把 backtracking 从“输出一个回退文本”变成真正的 agent 控制能力。


#14. 当前研究现状总结

#14.1 已经比较清楚的共识

第一,长 CoT 不是能力本身。

长 CoT 是 test-time compute 的一种载体。它可以承载搜索、验证、反思,也可以只是冗长废话。

第二,反思需要反馈锚点。

没有新信息的 self-correction 不可靠;有 verifier、工具、环境、process reward 的 reflection 才更可能有效。

第三,backtracking 是任务依赖的。

Sudoku 这类深约束搜索任务需要回退;Countdown 这类任务在固定 compute 下可能并行采样更强;简单题则应该避免 overthinking。

第四,search trace 的价值取决于错误质量。

fruitful mistakes、recoverable failures、diagnosable wrong turns 有价值;随机错误和不可恢复 off-manifold 状态不该被无脑 SFT。

第五,SFT 和 RL 应该组合,而不是对立。

SFT 可以提供 search warm-up;RL / verifier / OPD 可以把训练拉回 student 自己状态分布,避免固定 trace 模仿。

#14.2 仍然没解决的问题

  1. 如何自动生成高质量 search traces?

- 数学和符号任务可以用 solver;code/agent/open-world task 更难。

  1. 如何判断一个错误是否 recoverable?

- 需要 earliest-error detection、state value、repair cost、future success probability。

  1. 如何避免固定 trace 锁死策略?

- 需要多样 search traces、productive divergence 保留、RL refinement。

  1. 如何在 parallel sampling 和 sequential backtracking 间路由?

- 这本质是 test-time compute controller。

  1. 哪些推理应该可见,哪些应该 latent?

- 可见 trace 便于监督和审计;latent compute 更高效但难解释。

  1. agent 环境中的 rollback 如何定义?

- 文件系统、网页状态、工具副作用、长期 memory 都使回退更复杂。


#15. 我认为最值得做的研究机会

结合 LLM Agent、code intelligence、model-based RL、latent reasoning,我觉得这条线后面最值得做的不是“再发明一个反思 prompt”,而是以下几个方向。

#15.1 Repairability-Aware Search Trace Learning

核心问题:给定 student 当前推理状态,判断这个错误是否还能救。

训练策略:

  • 可恢复错误:训练 critique + backtrack + alternative branch;
  • 不可恢复错误:训练 reset / resample / abandon;
  • 正确但低效路径:训练 budget-aware shortening;
  • 正确且不同于 teacher 的路径:保留 productive divergence。

#15.2 Decision-Sufficient Backtracking

不要监督全部 CoT token,只监督关键决策点:

  • 是否继续;
  • 是否验证;
  • 是否回退;
  • 回退到哪里;
  • 换哪个分支;
  • 是否调用工具;
  • 是否停止。

这和 decision-sufficient OPD / latent reasoning 很自然地连接起来。

#15.3 Model-Based Backtracking for Agents

让模型学习一个“任务状态转移模型”或“结果预测器”:如果我继续这条路,未来成功概率如何?如果回退到某点,成本多少?

这就是 model-based RL 在 LLM Agent 中的自然落点:不是只预测下一个 token,而是预测 action 对任务状态、错误可恢复性、最终成功率的影响。

#15.4 Search Trace Compression

完整 search trace 太长。需要把它压缩成:

关键错误 -> 诊断 -> 回退点 -> 新策略 -> 验证结果

而不是保留每个无意义中间 token。这可以连接到 latent-space reasoning 和通用上下文压缩器。

#15.5 Agent Rollback Benchmark

构建专门评估 agent 是否会回退的 benchmark,而不是只看最终成功率。例如:

  • 给 agent 一个带陷阱的 repo;
  • 初始线索会诱导错误 patch;
  • 测试反馈暴露真正 bug;
  • 评估 agent 是否能撤销错误 patch、保留有用修改、换正确路径。

这比普通 SWE-bench 更直接测试 search/backtracking 能力。


#16. 代表工作速查表

阶段工作链接核心意义
CoT scratchpadChain-of-Thought Promptinghttps://arxiv.org/abs/2201.11903让中间推理显性化
Zero-shot CoTLarge Language Models are Zero-Shot Reasonershttps://arxiv.org/abs/2205.11916简单触发语也能诱导 step-by-step
多路径采样Self-Consistencyhttps://arxiv.org/abs/2203.11171并行采样多条 reasoning paths 再投票
verifierTraining Verifiershttps://arxiv.org/abs/2110.14168generator + verifier 组合
process rewardLet's Verify Step by Stephttps://arxiv.org/abs/2305.20050中间步骤监督
agent feedbackReActhttps://arxiv.org/abs/2210.03629reasoning + acting + observation
reflection loopReflexionhttps://arxiv.org/abs/2303.11366verbal reflection memory
iterative revisionSelf-Refinehttps://arxiv.org/abs/2303.17651generate-feedback-revise
search frameworkTree of Thoughtshttps://arxiv.org/abs/2305.10601thought-level tree search / backtracking
self-correction limitLLMs Cannot Self-Correct Reasoning Yethttps://arxiv.org/abs/2310.01798无外部反馈的自我纠错不可靠
verification planningChain-of-Verificationhttps://arxiv.org/abs/2309.11495把反思拆成验证问题
repeated samplingLarge Language Monkeyshttps://arxiv.org/abs/2407.21787inference compute scaling
compute allocationScaling Test-Time Compute Optimallyhttps://arxiv.org/abs/2408.03314固定预算下选择搜索/PRM/更新策略
overthinkingDo NOT Think That Much for 2+3=?https://arxiv.org/abs/2412.21187简单题不该长思考
self-trainingSTaRhttps://arxiv.org/abs/2203.14465rationale self-bootstrap
hidden thinkingQuiet-STaRhttps://arxiv.org/abs/2403.09629任意文本中的 tokenwise rationale
search traceStream of Searchhttps://arxiv.org/abs/2404.03683把搜索树 flatten 成语言训练
autonomous backtrackingSelf-Backtrackinghttps://arxiv.org/abs/2502.04404学会何时何处回退
backtracking debateTo Backtrack or Not to Backtrackhttps://arxiv.org/abs/2504.07052回退 vs best-of-N,任务依赖
SFT+RL interplayHow Much Backtracking is Enough?https://arxiv.org/abs/2505.24273不同任务需要不同回退量
RL reasoningDeepSeek-R1https://arxiv.org/abs/2501.12948RL 涌现 reflection / verification
latent computeScaling up Test-Time Compute with Latent Reasoninghttps://arxiv.org/abs/2502.05171用 recurrent latent depth 扩展推理计算

#17. 最后一段判断

如果说 CoT 让模型学会“把思考写出来”,那么 search trace / backtracking 这条线真正想解决的是:

模型能不能把思考组织成可探索、可评估、可回滚、可停止的过程?

目前的研究状态还远没有收敛。我们已经知道:

  • 多采样和 verifier 很强;
  • 无反馈 self-correction 不可靠;
  • 搜索轨迹里的 fruitful mistakes 有训练价值;
  • backtracking 对某些任务有帮助,但不是万能;
  • SFT search trace 容易 off-policy 和策略锁死;
  • RL 可以让搜索行为涌现,但探索和 credit assignment 很难。

所以,这条线接下来的关键不是让模型生成更多“反思文本”,而是建立一种更精细的训练范式:

student 自己探索 -> 识别错误类型 -> 判断可恢复性 -> 选择回退/重采样/继续 -> 用 verifier/RL 校准 -> 压缩成可泛化的决策策略

对 LLM Agent 来说,这可能就是从“会调用工具”走向“会调试自己、会撤销错误、会管理长期任务”的关键一步。真正的 agent 不是永远不犯错,而是犯错后知道哪里错、能不能救、怎么救、什么时候停止。