IntraSkill / ShopSimRL · Qwen3.5-4B · Iter80 · 4 rounds
Original source document; content retains its source language. Markdown ↓

Trace2Skill contribution 排序价值:后续实验计划

记录日期:2026-09-03。状态:待执行。本文件只记录后续实验,不启动任务,不改变现有 chunk selection 或覆盖已有报告。

1. 研究问题与当前进度

目标是验证 contribution 能否作为 chunk 排序/预算选择的启发式,暂不要求其符号准确表示独立作用方向,也不要求系数数值准确预测完整 skill 的 reward 增量。

这里的“按系数大小排序”指按有符号的 beta 从大到小排序,不是按 abs(beta) 排序。

当前回归设计已经从带自由截距的 R_i = intercept + C_i^T beta + epsilon_i 改为逐任务 paired-delta 无截距回归:

B_i = 同一个 validation task 的 bare reward
R_i = 该 task 的 masked-skill reward
C_i = chunk mask
Delta_i = R_i - B_i
Delta_i = C_i^T beta + epsilon_i  # 不设 intercept

这是相对 bare 的加性贡献近似。存在 chunk interactions、共同的 skill prompt 开销或服务分布差异时,系数不自动等同于稳定的平均边际因果效应;系数和也不一定等于实际 bundle 效果。

该方法现已统一为 cold-start 与训练 online gate 的默认实现;同 checkpoint 的 bare validation traces 通过 bare_run_dir 复用,配对契约见 paired_validation.md。下列路径保留为历史探索实验记录,后续受控实验使用严格匹配的数据;这里列出的排序验证实验仍待补做。

已有数据:

  • 初始 16-chunk SkillBank:runs/qwen35-4b-train-0830/trace2skill-cold-start/initial_skillbank.json
  • Gate A masks、traces 和原回归:runs/qwen35-4b-train-0830/trace2skill-cold-start/gate-a/
  • 逐任务 bare validation:runs/qwen35-4b-val/不要误用 test bare runs/qwen35-4b-test-0830/
  • 新分组为 10 个正系数 chunks、6 个负系数 chunks;已有 bundle 对比:runs/qwen35-4b-test-paired-delta-positive-vs-negative/comparison.md
  • 现有 masked validation 来自 SiliconFlow,bare validation 和新 bundle test 来自本地服务;现有重算采用了“服务分布等价”的显式假设。后续实验优先将 bare、mask、bundle 全部统一到同一本地部署。

现有主奖励证据尚不充分:原报告 positive 比 negative 高约 2.92pp,但 95% CI 跨 0;这只是两个完整 bundles 的比较,不能证明逐 chunk 排序有效。

现有 negative 重复轨迹问题

runs/qwen35-4b-test-paired-delta-negative/retry_log.json 记录了两个 runner 同时写同一目录,387 个任务各完成两次。它不是普通 failed 补测。

按完成顺序取 first/latest 会选择不同的随机 rollout,并可能引入与轨迹时长相关的选择偏差:

Negative 记录口径 Negative r_strict Positive − Negative
第一条 completed 0.572720 +0.005294
最后一条 completed(原报告) 0.548838 +0.029176
同任务 completed 取平均(敏感性分析) 0.560779 +0.017235

任务内平均口径下,主奖励差值的 task-level bootstrap 95% CI 约为 [-0.02387, +0.05823],步数和 token 优势也不再显著。此平均只是敏感性分析,不将意外重复视为规范设计的重复采样。双进程竞争资源还会干扰延迟比较。

2. 共同前提与数据规范

  • [ ] 冻结同一本地模型部署、checkpoint/权重版本、tokenizer/chat template、量化设置、context cap、解码参数、system prompt、runtime 和环境版本,并记录 provenance。
  • [ ] 两组/多组使用相同执行并发;避免同一推理服务的额外负载干扰成本与延迟比较。
  • [ ] 同一 run 目录只允许一个 runner。建议启动时使用进程锁,记录 run_idattempt_id 和进程信息。
  • [ ] failed 重试与独立重复采样分开:重试沿用 episode,已 complete 的任务不重跑;重复实验使用新的 sample_id 或独立 run ID。
  • [ ] 不按完成先后或 reward 挑选重复轨迹;在执行前冻结纳入和聚合规则。
  • [ ] 使用原始 chunk 内容与 canonical draft order,不改写/删减 Applies whenProcedureVerifyAvoid
  • [ ] skills.max_skills: null,避免注入内容被截断;逐条检查实际 selected chunk IDs。
  • [ ] 冻结主指标 reward/r_strictr_success 为重要辅助指标;报告全部条件的 coverage 和失败原因。

数据独立性

当前 beta 使用了全部 400 个 val tasks,不能事后把其中一半改称其独立 holdout。可选方案:

  1. 冻结现有 beta,在尚未用于拟合/选择的新 validation tasks 上评估。
  2. 如果没有新任务,先将 validation tasks 固定划分为 fit/holdout 两部分,只用 fit 部分重新估计 beta 和选择 chunks,在 holdout 部分评估。拟合部分仍可复用已有 paired observations。

只在同一批任务上换 seed 或 mask,验证的是重复 rollout/新 mask 下的稳定性,不等同于对新任务的泛化。两种目标需分别标注。

后续方法探索优先在独立 validation 上进行;不要连续根据已看过的 test 结果调规则,再宣称该 test 是 untouched held-out evaluation。

3. 实验 A:同预算 Top-K / Random-K / Bottom-K

假设

若 beta 具有实际排序价值,相同 skill 预算下,高分组应较低分组有更好的 held-out reward;Random-K 提供随机选择基线。

设计

  • [ ] 预先固定一个主 K(可从 K=4 开始;最终值执行前确定),不要看结果后挑 K。
  • [ ] Top-K:有符号 beta 最高的 K 个 chunks。
  • [ ] Bottom-K:有符号 beta 最低的 K 个 chunks。
  • [ ] Random-K:从 16 个 chunks 均匀无放回抽 K 个;每个随机 subset 在所有评测任务上保持固定。
  • [ ] Random-K 使用若干预先冻结的 subset seeds(例如 5 组,按预算确定),避免用一个偶然随机 bundle 代表随机选择方法。
  • [ ] 若预算允许,加一组同服务、同任务的 Bare,用于判断每组相对 no-skill 的收益。
  • [ ] 所有条件使用相同任务和明确的 rollout sample IDs;必要时增加重复采样。

相同 K 不保证相同 prompt token 数。需记录实际注入 token 长度;可以另加预先定义的长度匹配敏感性实验,但不要为了匹配长度重写 chunk,或把受长度约束的选择混称为纯 Top-K。主 Top-K 规则与长度匹配规则应分开报告。

分析与判读

  • [ ] 报告 Top-K − Bottom-K、Top-K − Random-K、Random-K − Bottom-K 的 task-paired reward 差值和 95% CI。
  • [ ] Random-K 同时报告不同 subset seeds 的结果分布,不能只挑一组;聚合时任务等权。
  • [ ] Bootstrap 保留同一任务内的所有 arms/rollouts;多个 rollout 不视为独立 task。若要泛化到随机 subset 的分布,还需反映 subset 间不确定性。
  • [ ] 主 reward 对比之外,报告 success flips、reward components、protocol/invalid action、步骤和 tokens;多重检验规则提前指定。

若能在独立数据及重复实验上稳定观察到 Top-K 优于随机和低分选择,即使系数未校准,也支持其作为选择器的价值。点估计的单次顺序不足以确证这一结论。

4. 实验 B:冻结 beta,在新 masks 上验证预测排序

假设

冻结 beta 后,预测分数较高的 mask 应倾向于产生较高的实际 reward 增量:

predicted_score_i = C_i^T beta_frozen
observed_delta_i = R_i(mask) - B_i

设计

  • [ ] 按第 2 节选择独立 holdout;测试期间不更新 beta。
  • [ ] 优先使用恰好 K 个 chunks 的随机 masks,排除“chunk 数量更多导致分数更高”的简单混杂。
  • [ ] 如果考察多个 K,在每个 K 内分别检验,或预先设计分层分析;不要仅靠跨 K 的总体相关性宣称 chunk 排序有效。
  • [ ] 冻结 mask seeds,并保存任务、sample ID、mask、预测分数、实际注入长度和 reward。
  • [ ] 为同一任务收集 bare 和 masked outcomes;同一冻结 checkpoint/config 内可以复用 bare 记录,跨 checkpoint 不复用。
  • [ ] 如果每个 task 有多个 masks,保留其共同 bare baseline 带来的相关性,使用 task-cluster bootstrap。

分析与判读

  • [ ] 主排序指标:predicted_scoreobserved_delta 的 Spearman 相关及 task-level/cluster bootstrap CI。
  • [ ] 辅助展示预测分数分位数组的实测平均增量,不用分位组结果重新修改 beta。
  • [ ] 若同一任务有多个 masks,可补充任务内排序一致性,减少剩余任务难度差异的影响。
  • [ ] 另报预测值与实测值的校准斜率/误差,用于区分“排序有效”和“绝对数值预测准确”。这些诊断不在 holdout 上用于重新拟合最终选择规则。

显著正向、可重复的排序相关性支持 beta 的排序价值;校准差但排序稳定时,应使用 rank/预算选择,不把系数和解释为预期实际 reward 增量。

5. 建议执行顺序与交付

  1. 先修复 run 隔离和重复轨迹规范,保留原报告及敏感性分析,不覆盖历史数据。
  2. 明确独立 validation 来源、冻结拟合数据和本地服务配置。
  3. 优先执行一个固定 K 的实验 A,验证最直接的选择器价值。
  4. 有预算时执行实验 B,直接检验分数的排序能力与校准程度。
  5. 最后才根据预先定义的规则冻结新方法,并在合适的独立数据上报告最终结果。

后续交付清单:

  • [ ] 独立 YAML、冻结 beta/selection、mask/subset seeds 和完整 manifest。
  • [ ] 每个 arm/seed 的完整 traces、summary 与重试记录。
  • [ ] scripts/ 下可复现的独立分析脚本;当前计划不要求修改核心 evaluator。
  • [ ] task-aligned comparison JSON/Markdown、相关性与置信区间。
  • [ ] 明确区分排序、数值校准、相对 bare 的作用方向、资源成本四类结论。