Paper Reading: SEER (Structured Reasoning and Explanation via RL)

2025-10-20
3 min read
Featured Image

原文 https://arxiv.org/abs/2401.13246

提出了一个关于

  • 生成 证明假说 $h$ 的 entailment tree / 完成 结构化推理 任务

  • 强化学习训练算法。

Task Formulation 任务设置

输入

  • $X = \{x_1, x_2, ..., x_n\}$ — premises, 已知的背景知识、前提的集合
  • 一个假说 $h$ — hypothesis

输出

一个结构化的解释 (A structured explanation),通常是一棵蕴含树 (Entailment Tree)  $T$.

  • 叶子节点: $X$ 里边挑选出来的相关事实,也就是几个 $X$ 的元素
  • 中间节点:通过子节点推理得出的中间结论 — Intermediate conclusions
  • 其实应该可以是个 图?反正得有个根,入度是0的节点(根)只能有一个
  • 根:最终的假说 $h$

强化学习配置 RL Config

Overview

1

  1. 轨迹展开 (Trajectory Rollout): 模型(也就是“策略 Policy”)根据当前状态,生成一个完整的推理步骤序列(称为一个“轨迹”)。
  2. 策略优化 (Policy Optimization): 生成轨迹后,系统会给这个轨迹中的每一步打分(奖励 Reward),然后用这些分数来更新模型,让模型在下一次生成轨迹时,更倾向于生成分数高的(也就是更正确的)推理步骤。

State

$$ s_t = \{h, P_t, C_t\} $$
  • $P_t$: 已经完成的证明,例如 x1, x2 -> i1
  • $C_t$: 候选句子集 (Candidate sentences)。这是当前可以用来进行下一步推理的“材料库”,它包括所有还没用过的事实,以及我们已经推导出的所有中间结论。 i1, i2, … + x3, x4, ...

Action

在当前状态 $s_t$ 下可以做出的决策

两种类型

  1. Reason: <premises>

    1. agent 从 候选句子集合 $C_t$ 中生成出一个或者多个句子作为前提(premises)

    2. 调用 entailment module 蕴涵模块 生成一个中间结论 intermediate

    3. such as: 选出 x1, x2 来获取 i1 → 整个action被称为 Reason: x1, x2

      再来个例子: Reason: x5, i1

  2. End

    推理已经结束,即某个中间步骤已经 等同于 或者 足够接近于 假设 $h$

    我们结束整棵树(并且返回)

Action带来的问题:space太大了

因为 Reason: <premises> 中的 <premises> 空间是 $C_t$ 中的任意多个前提的组合

  • 闭包, closure, kleene star) $2^n$
  • 之前的工作: $n\choose 2$ ,通过每次只选2个
  • 所以 prompt 一个LLM来进行 生成: Reason: x? & x? & x?

Policy

生成 action (prompted??)

Entailment Module

在reason action生成之后,生成一个 entailment 结果

  • 问题: grad pass到这了?
  • 为什么不和policy合体?

Trajectory处理 + Reward

首先生成了一个 tau trajectory, $\tau$ 为 $\tau_1,\dots,\tau_n$

然后 $\tau$ 的最后一步 $\tau_n$ 一定是 End

所以我们假设 $\tau_{n-1}$ 一定是模型模拟 hypothesis 的步骤

我们期望

$$ \tau_{n-1}\approx h $$

seer_reward

奖励是用来告诉代理它上一步的动作“做得好不好”的信号。这是SEER的一个关键创新点,它设计了一个细粒度的奖励函数

  • 奖励 = +1 (正确步骤): 如果生成的推理步骤,在与标准答案(ground-truth tree)对比后,被认为是完全正确的。
  • 奖励 = -0.5 (冗余步骤): 如果生成的步骤本身逻辑上可能没问题,但它对于最终构建出最佳的推理树是多余的、没用的。这种步骤会受到轻微的惩罚,而不是像错误步骤那样被重罚。这鼓励模型进行必要的探索,而不会因为一点小错就完全否定探索行为。
  • 奖励 = -1 (错误步骤): 如果生成的步骤是完全错误的。