Paper Note · 2026-05-30

BES:把搜索从同分布采样推进到目标反推与轨迹重组

BES 的真正价值不是又加了一种 tree search,而是把“找完整正确答案”的稀疏命中问题拆成两个更可操作的问题:先用 backward goal tree 让部分进展可见,再用 evolutionary operators 把不同轨迹里的局部正确片段重组成新候选。

Takeaway

核心判断

BES 针对的是一个很具体的瓶颈:在 hard reasoning 和 agentic problem solving 中,直接 rollout 几乎碰不到完整正确答案,terminal reward 又只告诉你“对/错”。如果继续堆 Best-of-N 或普通树搜索,候选大多仍来自模型原始分布的高概率区域,训练样本和推理候选都会卡在同一个能力边界附近。

这篇工作的 insight: hard problem 上有价值的中间片段常常分散在不同错误轨迹里。搜索系统不应只问“哪个完整答案最好”,而应问“哪些候选分别覆盖了目标树里的哪些子目标,以及能否把这些片段合成一个更完整的候选”。

训练视角

把 BES 放到 post-training 的 sample-generation stage:不是改变 GRPO / MaxRL 的 optimizer 本身,而是给后训练提供更可能含有正确轨迹和可学习行为的样本池。

推理视角

把 BES 当作 test-time search:在固定预算内维护候选程序或候选轨迹,用 backward score 作密集信号,用演化算子产生普通 rollout 不容易到达的新候选。

工程视角

它最适合有客观 verifier 的任务,例如逻辑题、检索型问答、代码/程序优化。缺少可验证子目标时,BES 会退化成昂贵的 LLM decomposition + noisy judging。

Why It Matters

问题背景

现有主流搜索路线有两个共同假设:第一,候选可以靠模型自回归扩展得到;第二,终局 verifier 足以区分好坏。BES 认为这两个假设在 hard problem 上同时失效。

Best-of-N 的上限

Best-of-N 的覆盖率主要靠重复抽样。若正确解在模型分布里概率极低,N 只带来线性覆盖增长;如果每个 rollout 都缺同一类关键步骤,继续扩大 N 会快速变成预算问题。

Tree Search 的上限

树搜索比 Best-of-N 更会分配预算,但它仍然沿着单条 lineage 追加步骤。候选生成仍是“prefix + next step”的自回归扩展,难以把两个错误轨迹中的互补片段合并。

Reward 稀疏

在 RLVR 和很多 agent 任务里,最终 reward 常是二值或粗粒度的。一个候选可能已经找到关键实体、关键约束或关键工具调用,却因为最终答案错而被当成失败样本。

探索被困在模型分布

论文用“entropy shell”描述 expansion-only search 的典型区域:rollout 大概率落在模型自身高概率质量附近,而 hard answer 往往需要跳出这个局部区域。

这里的 entropy shell 指普通自回归 rollout 在 log-probability 上高度集中的典型集合;verifier 指能给候选解打分的外部函数、规则程序、测试集、embedding 相似度或 LLM judge;trajectory 指推理段落、agent 动作序列或程序修改过程这类可分步的候选路径。

Mechanism

机制拆解

BES 的主循环维护一个候选池和一个目标树。forward search 负责生成候选,backward search 负责把总目标拆成可检查的子目标并给候选打密集分数;每隔若干步,目标树会继续细分未解决的叶子节点。

初始化目标树

从根目标开始,例如“解出整道题”或“达到某个程序优化目标”。模型或模板把根目标拆成一组 sub-goals,并为每个节点绑定 verifier。

生成候选

候选池中的节点按 backward score 做 Boltzmann selection;高分、未探索节点更容易被选中,但温度退火保留早期探索空间。

轨迹演化

除了普通 expansion,BES 会执行 combination、deletion、translocation、crossover,把两个候选的局部片段重新拼接或替换。

密集评分

候选不必完整成功;只要覆盖了部分子目标,就能获得中间分数。双亲算子还会偏好“合起来覆盖更多子目标”的互补候选对。

组件 输入 处理 输出 失败条件
Expansion 一个非终止候选前缀 继续调用 policy 追加 K 个步骤 同一 lineage 的延长候选 模型分布本身缺关键步骤时,扩展仍可能原地打转
Combination 两个共享前缀的候选 保留共同前缀,拼接两个不同 suffix 更长的合并轨迹 两个 suffix 语义冲突时,候选会变得不连贯
Deletion 单个候选 删除一个内部步骤 更短、更少干扰的候选 若删除的是必要推理,候选质量下降
Translocation 两个候选 把候选 B 的一个步骤移植到候选 A 的对应位置 继承 A 主线与 B 局部信息的新候选 移植片段依赖 B 的上下文时,A 中可能不可用
Crossover 两个候选 用 A 的 prefix 接 B 的 tail 普通 rollout 不容易生成的跨轨迹组合 拼接边界不自然时,需要 LLM rewrite 或额外格式校验
关键不是“随机拼接”。 BES 的双亲选择使用 pair score:如果候选 A 覆盖了子目标 1,候选 B 覆盖了子目标 2,那么它们作为父母会比两个重复覆盖同一子目标的候选更有价值。这个设计把“互补性”直接写进搜索调度。
Theory

理论直觉

论文的理论部分不应理解成严格证明“BES 一定会解难题”,而应理解成两个结构性动机:为什么只靠 expansion 会被限制,为什么 backward sub-goals 能把极小终局命中概率拆成更易收集的局部证据。

轨迹重组为什么能跳出 shell

普通 rollout 的总 surprisal 会集中在模型分布的典型集合附近。若把轨迹切成多个 block,再从不同 seed trajectory 取 block 重组,重组样本在原 policy 下的 expected surprise 会增加;直觉上,它打破了原模型生成过程中的 block dependence。

目标反推为什么省样本

若完整成功需要同时满足 m 个子目标,terminal-only search 要一次抽到全满足候选,概率近似是各子目标概率的乘积。backward-guided search 先在候选池里分别收集每个子目标的证据,再由 evolution recombination 合成,样本需求从乘法命中变成局部覆盖。

这里有一个很重要的工程翻译:BES 把“找到完整正确解”转换成“在候选池中维护可复用局部证据”。这和人类做难题时的策略接近:先拆条件、找中间引理、保留不同草稿中的有用局部结论,然后重组为最终证明或程序。

Evidence

实验证据

论文覆盖 post-training 与 inference 两类用法。结果最强的部分不是单个 benchmark 绝对分数,而是“在 baseline 无法稳定进步甚至退化的 hard setting 中,BES 能让训练样本或推理候选带来可见改善”。

7.0% MuSiQue 3B:Base 4.0%,GRPO 2.1%,Tree-GRPO 3.9%,BES 7.0%。
10.4% MuSiQue 8B:Base 6.6%,Tree-GRPO 7.4%,BES 10.4%。
$18.6 Circle Packing Square 平均 API cost:ShinkaEvolve $13.0,BES $18.6;论文称收益伴随 modest 额外成本。
场景 任务 模型/框架 BES 插入位置 主要观察
逻辑推理 post-training Knights-and-Knaves Gemma-3-1B-it,经 1K SFT cold-start 后训练 替换 sample generation,BES 叠加到 MaxRL GRPO / MaxRL 进展有限,BES validation accuracy 持续改善;ablation 显示 answer reweighting 和 evolution operators 都有贡献。
多跳检索 agent post-training MuSiQue 3-4 hop train,全量 validation Llama-3.2-3B-Instruct / Llama-3.1-8B-Instruct 叠加到 GRPO 的候选生成,使用 offline Wikipedia retriever BES 提高 accuracy、valid search、valid actions 与 finish ratio;论文解释 GRPO 会 reward hack 成少搜索、直接猜。
Inference-time open problem solving Circle Packing Square / Rectangle、Heilbronn Convex GPT-5 + ShinkaEvolve 基础框架 程序级 LLM rewrite 实现演化算子,backward goal tree 作 tie-breaker BES 在三个任务平均值均高于 OpenEvolve、GEPA、ShinkaEvolve,并报告更低方差;best 值接近但仍低于 AlphaEvolve / human high-compute 参考。
读实验时要注意: post-training 的绝对 accuracy 不高,特别是 MuSiQue 的 7.0% / 10.4% 仍是 hard subset 上的低基线改善;open problem solving 的 baseline 数字来自 SkyDiscover,且 GPT-5、API cost、框架实现和 evaluator 配置都会影响可复现性。BES 证明的是方向有效,不是所有搜索场景都已经被解决。
Implementation

实现细节

GitHub 仓库把三个 setting 分在 logical/multihop/inference/ 下。最值得注意的是,论文中的抽象 BES 在不同任务里并不是同一种 verifier。

K&K:模板化目标树

Gemma-3-1B-it 太小,不可靠做开放式 goal decomposition,因此 K&K 使用人类求解策略模板树:按人物角色和矛盾/一致性检查拆目标,backward LLM 主要负责调度遍历顺序。

MuSiQue:embedding 覆盖子问题

每个问题被拆成有序 atomic sub-questions,候选的 search query 与子问题在 all-MiniLM-L6-v2 空间里做 cosine similarity;超过阈值才视为覆盖,且后续子目标依赖前序子目标。

程序优化:Python verifier expression

每个 backward goal leaf 带一个返回 [0,1] 的 Python 表达式;源码中 verify_node 出错即 0 分,recursive_score 把父节点 self score 与子节点均值混合。

不覆盖真实目标

程序优化里用 bucket interpolation:raw objective 先按精度分桶,backward score 只在同 bucket 内排序,不能把程序推过下一个 raw objective 桶,避免密集代理信号压过真实指标。

这组实现选择很务实,也揭示了 BES 的核心工程难点:真正难的是把一个任务拆成“既可验证、又能指导搜索、还不会污染最终目标”的 sub-goals。算法框架相对清楚,domain verifier 设计才是可复现和可迁移的关键。

Limits

边界与风险

BES 的优势建立在“可验证目标 + 可分解子目标 + 可重组轨迹”这三件事同时成立上。任何一个条件坏掉,搜索收益都会下降,甚至可能产生更隐蔽的 reward hacking。

主观任务不适配

论文也明确承认 BES 需要 objective reward signal。学术写作、产品文案、开放式策略建议这类任务很难给出稳定 verifier,backward goal tree 可能只是在制造伪密集奖励。

弱模型拆不出好子目标

backward search 依赖模型把任务拆成 meaningful sub-goals。弱模型或领域外任务中,decomposition 本身可能错,后续 forward search 会被错误目标牵引。

重组不总是语义闭合

在自然语言 reasoning 中直接拼接步骤可能产生上下文断裂;在程序优化中直接拼接更不可行,因此仓库使用 LLM-driven joint rewrite,这也引入了额外成本和不可控变量。

规模证据仍有限

post-training 只到 8B 级别;open problem solving 依赖 GPT-5 API 和外部框架基线。要判断大模型、大规模 RL 或企业 agent 是否受益,还需要独立复现。

我的判断: BES 最适合被当作“难样本生成和工具轨迹搜索”的框架,而不是通用推理药方。它启发我们在 agent 系统里显式维护中间目标覆盖状态,设计可组合的 partial credit,并防止代理分数压过真实目标。
Implications

工程启发

  • 把 benchmark 变成目标树。 如果一个 agent 任务只有最终 pass/fail,先问能否拆出稳定的状态、检索、工具调用、约束满足和格式检查子目标。
  • 保存错误轨迹里的可用片段。 失败样本不应只被丢弃;如果它覆盖了某个关键子目标,应该进入候选池,等待与其他候选重组。
  • 代理分数只能辅助真实分数。 程序优化中的 bucket interpolation 是一个值得复用的设计:dense score 作同档 tie-breaker,而不是替代 objective metric。
  • 先做 verifier,再谈搜索。 没有便宜、稳定、可解释的 verifier,BES 会变成昂贵的 prompt engineering。KISS 的落点是先把子目标检查器做扎实。
Evidence Boundary

证据边界与资料索引

本文基于 X 原帖线程、arXiv 论文、GitHub 仓库、Hugging Face collection 与公开项目链接交叉核验。项目页的自动网页读取在当前环境返回 stale page identity,但其 URL 与论文、仓库 README、HF collection 互相一致;分析主体以论文 PDF、仓库文件和 X thread 为准。

检索路径记录:优先使用 OpenCLI 的 twitter threadtwitter profilearxiv paperhf paperweb read,并用 GitHub CLI、GitHub raw/API、HF API、PDF 文本抽取补充核验。Grok-Search 工具在当前会话未暴露;已按仓库规则降级到可用联网工具。