Files
memabra/docs/reward_spec.md
2026-04-15 11:06:05 +08:00

4.3 KiB
Raw Permalink Blame History

Reward Specification

目标

memabra 的 reward 不是简单判断“任务做成没”,而是评估:

  • 是否选对了 memory / skill / tool
  • 是否高效
  • 是否稳定
  • 是否减少了用户重复输入和纠正
  • 是否控制了工具成本与上下文成本

reward 的作用不是直接美化分数,而是给路由策略提供可归因、可优化的训练信号。

Reward 组成

总奖励记为:

R = ws*S + wr*H - we*E - wc*C - wl*L - wx*X + wu*U

其中:

  • S = task success
  • H = retrieval hit quality
  • E = execution/tool error penalty
  • C = user correction penalty
  • L = latency penalty
  • X = context cost penalty
  • U = useful reuse bonus

1. Task Success (S)

定义:任务最终是否完成,以及完成质量如何。

建议取值:

  • 1.0:完整达成目标
  • 0.5:部分达成
  • 0.0:未完成
  • -0.5:明显误导或做错方向

数据来源:

  • 自动任务验收器
  • 用户显式反馈
  • 回放对比规则

2. Retrieval Hit Quality (H)

定义:是否命中对任务真正有帮助的 memory / skill / tool。

建议拆分:

  • Hmmemory hit
  • Hsskill hit
  • Httool hit

取值思路:

  • 命中高价值候选并帮助减少步骤:正奖励
  • 召回很多但没用:低奖励或 0
  • 漏掉关键候选:负奖励

3. Execution / Tool Error Penalty (E)

定义:是否出现无效调用、错误调用、明显多余调用。

示例:

  • 调了不该调的工具
  • 工具参数明显错
  • 重复调用同一无效动作
  • 本可以直接答,却走了长链路

建议取值:

  • 每次轻微错误:0.10.3
  • 严重错误:0.51.0

4. User Correction Penalty (C)

定义:用户是否需要补充本应已知的信息,或纠正错误动作。

示例:

  • 用户重复说明偏好
  • 用户指出调用了错误工具
  • 用户要求撤回错误记忆

解释: 这项对长期系统非常关键,因为它直接代表“系统到底有没有真正学会”。

5. Latency Penalty (L)

定义:系统完成任务消耗的时间和步骤是否过长。

建议包括:

  • wall-clock latency
  • action count
  • retry count

思路:

  • 少量额外推理可以接受
  • 大量无效绕路必须惩罚

6. Context Cost Penalty (X)

定义:是否过度膨胀上下文。

包括:

  • 注入了太多无关 memory
  • 加载了不必要的 skill
  • 输出了过大的中间内容

原因: agent 很容易“为了保险多塞一点”,结果把上下文拖死。 这个成本必须显式进 reward。

7. Useful Reuse Bonus (U)

定义:是否复用了正确的长期信息,并确实提升了效率或质量。

例子:

  • 成功复用用户偏好,避免再次确认
  • 复用已验证的 skill减少试错
  • 复用相似 episode加速完成任务

初始权重建议

可先用一个朴素版本:

ws = 1.0
wr = 0.35
we = 0.30
wc = 0.40
wl = 0.15
wx = 0.20
wu = 0.25

解释:

  • success 最高
  • user correction 罚得较重,因为它直接暴露系统没学会
  • retrieval hit 有明显价值,但不能盖过结果
  • latency/context 重要,但初期不该过重

信号来源

reward 可来自三类来源:

A. 显式信号

  • 用户说“对/不对”
  • 用户纠正
  • 用户二次要求重做

B. 隐式信号

  • 是否减少步骤
  • 是否触发错误
  • 是否重复问同样的问题
  • 是否超时

C. 程序性验收

  • 测试是否通过
  • 目标文件是否生成
  • 指定字段是否匹配
  • 工具执行是否成功

反事实记录要求

为后续训练,必须记录:

  • 候选集有哪些
  • 最终选了谁
  • 哪些高分候选没有被选
  • 每个动作的局部 outcome

否则 reward 只能打给“整个过程”,无法学习具体路由策略。

初期策略

Phase 0 / Phase 1 不建议直接把 reward 用于大模型权重更新。 先用于:

  • 路由规则评估
  • 样本打标
  • 候选排序优化
  • bandit / reranker 训练

风险

  • 只看 success会奖励瞎猫碰死耗子
  • 只看效率,会让系统不敢探索
  • 只看用户反馈,会受用户表达噪声影响
  • 不记录反事实,训练会非常盲

当前结论

reward 在 memabra 中不是附属件,而是学习闭环的核心基础设施。 如果 reward 设计不清,后面所有“根据结果更新权重”都会变成伪学习。