G02:程序化规则任务生成器
程序化任务生成器用显式规则生产可无限采样、可控制难度且答案可验证的任务族,使“泛化到哪里”从题目印象变成训练规则、组合结构与测试规则之间的可审计关系。
内容类型:预习教材(不代表已完成)
日期:2027-02-23
阶段:P3 · AGI Foundations 90
总路线:Day 182 / 360
周次 / 节奏:W1 · 周二最小机制
状态:教材已备;学习未完成
主题:task family、规则组合、IID/OOD 切分与生成器
一句话定义
程序化任务生成器用显式规则生产可无限采样、可控制难度且答案可验证的任务族,使“泛化到哪里”从题目印象变成训练规则、组合结构与测试规则之间的可审计关系。
学习目标
- 能把单道题提升为
task specification → instance generator → deterministic verifier三层结构。 - 能区分实例 IID、组合 OOD 与规则 OOD,避免随机切分掩盖模板泄漏。
- 能设计一个小型符号规则任务,明确控制变量、难度与生成失败条件。
- 能解释生成器的先验怎样限制结论:程序能生成的任务空间不等于现实世界的全部问题。
核心知识
任务实例可以表示为 x = render(z, r),其中 z 是对象、长度、噪声等潜变量,r 是决定答案的规则,标签由 y = solve(z, r) 得到。生成器的价值是同时掌握数据生成过程和正确答案,而不是让题目“看起来复杂”。如果训练与测试仅对实例随机打散,而它们共享相同规则模板、词汇和长度,测试只说明同分布插值。
组合 OOD 保留基础操作符,却在测试中出现训练未见的组合,例如训练只见 reverse 与 select-even 的单步任务,测试要求先筛选再反转。规则 OOD 则引入新操作语义,例如从位置变换切换到模运算。两者难度不同:组合 OOD 主要检查已有原语的系统组合,规则 OOD 还要求从说明或示例中识别新规则。
生成器也必须防止捷径。标签可能与长度、固定词、输出格式或样本顺序偶然相关。如果正例总比负例长,模型无需学习规则。因而要记录每个实例的 rule id、primitive set、depth、length、seed 和 nuisance attributes,并检查标签与非目标属性的相关性。
机制与推导
定义一个列表变换语言:
[ r ::= identity \mid reverse \mid rotate(k) \mid filter(p) \mid map(f) \mid r_2 \circ r_1 ]
训练深度 d≤1,组合测试可用 d=2;规则测试留出某个 primitive。生成实例的伪代码是:按 split 选择规则集合;从指定长度区间采样输入;计算确定性输出;若答案不唯一、超出范围或与已有样本重复则拒绝重采样;最后保存 specification 和 provenance。
切分可写为规则集合约束:R_train ∩ R_ruleOOD = ∅,但 Primitive(R_train) 与 Primitive(R_compOOD) 可以相同。单纯要求实例集合不相交 X_train ∩ X_test = ∅ 太弱,因为模板仍可能完全相同。难度向量可写成 h=(length, depth, distractors, description_noise),测试时一次只改变一到两个分量,更容易定位失败来源。
确定性 verifier 不应重新调用同一个生成模型判断答案,而应执行规则解释器。若答案包含多个等价形式,先做 canonicalization,再比较语义结果。生成器与 verifier 共用同一错误实现仍可能产生一致但错误的“真值”,因此至少准备几个手工 oracle case 做交叉检查。
最小练习或观察步骤
- 选择整数列表任务,先只实现
reverse、rotate、filter-even三个原语,暂不加入自然语言模型。 - 为每个原语手推两个输入输出,作为 oracle fixture;再写 specification、generator 与 verifier 的职责边界。
- 构造三个 split:训练为单原语,IID 为同原语新实例,组合 OOD 为两个原语复合;可选保留一个未训练原语做规则 OOD。
- 统计各 split 的长度、标签长度、原语频次和重复率,寻找非目标相关性。
- 故意让某个标签与输入长度相关,再设计平衡采样消除捷径,写下修正前后“模型可能学到什么”。
常见误区与边界
- 把随机 train/test split 称为新规则泛化;它通常只是新实例。
- 只保存题面和答案,不保存生成规则、seed 与难度,导致失败无法定位。
- 用同一个语言模型生成题目、给答案并评分,形成闭环自证。
- 认为程序化任务天然无污染;公开代码、固定模板和重复 seed 也会泄漏。
- 通过增加字符串长度制造表面难度,却没有改变所需算法深度。
- 将 toy task 成功外推到开放世界;生成器只检验被显式编码的能力成分。
研究/系统场景连接
金融零售规则具有天然的程序化结构,例如“金额超过阈值且地区风险为高,同时近七日设备数增加”可被表示为可执行规则树。学习中可以使用完全合成字段构造组合 OOD:训练只见单一阈值与单一时间窗口,测试见合取、优先级冲突或政策更换。这里的目标不是建立真实风控模型,而是观察系统是在记忆模板,还是能从规则说明适应新组合。
Agent 场景可以把任务生成器扩展为状态机:给定初始状态、允许动作和终止条件,自动生成可验证轨迹。研究者因此能分开测量计划失败、工具失败与规则理解失败。P4 具身阶段仍可沿用 specification 思想,但现实动力学与传感噪声不再能被一个完美解释器完全覆盖。
自检问题
- 实例 IID、组合 OOD 和规则 OOD 的集合约束有何不同?
- 为什么保存 rule id 与 primitive set 比只保存随机 seed 更有解释力?
- 生成器和 verifier 共用同一实现会产生什么系统性盲点?
- 哪个 nuisance attribute 最可能成为你任务中的捷径?
- 这个 toy generator 能支持什么泛化结论,又明确不能支持什么?
专业课程对齐
- 阅读 On the Measure of Intelligence 中任务、先验与适应效率的关系,把抽象讨论映射到规则生成器的可控变量。
- 阅读 ARC-AGI-2 Technical Report,关注任务设计、难度与人类可解性,而不是把某个榜单结果当作 AGI 判定。
- 参考 Stanford CS336 对数据构造、tokenization 与训练输入的工程讨论,思考一个 task specification 如何稳定转成模型可消费样本。
深入学习提示
先把生成器当成科学仪器:每个开关应对应一个假设,每个 split 应对应一种外推。若一次改变规则、长度、词汇和输出格式,失败将无法归因。可继续研究任务等价类、最短描述长度与 curriculum,但不要为了“更像 AGI benchmark”堆叠不可解释变化。理想的下一步不是更多题,而是让一个反例能清楚揭示 baseline 使用了错误捷径。
学后填写区
- 我选用的规则语言:
- 三种 split 的精确定义:
- 发现或预想到的捷径:
- verifier 的独立检查方式:
- 本生成器不能测量的能力: