ArchitectureIQ 项目全面 Review

日期:2026-07-18 · 快照:30 environments / 3 families / 10,000 rows / 5 seeds · SHA256:2b172e0c…40b38ba

目录造题流程 显著性检验 评测协议 实验结果 推论 未解决问题

1. 造题流程(spec → code → run → GT → question)

1.1 三阶段流水线

Stage 1: create-dataset     → dataset_spec.json + synthesize.py → 执行 synthesize() → 材料化数据
Stage 2: generate-candidates → candidate_spec.json → model.py/loss.py/optimizer.py/train.py → 执行 train_and_eval() → results/summary.json
Stage 3: generate-question   → 从候选池找显著子集 → question.json + prompt.txt

1.2 核心不变量

Ground truth 必须来自执行生成的代码,不能从并行逻辑重算。 prompt 展示的代码必须与执行的代码完全一致。_sync_candidate_files() 在 GT 运行前和 prompt 提取前重新渲染 .py 文件。

1.3 数据集族

FamilySelection MetricLosses模型类型
univariate_regressiontest_msemse, mse_l2, mse_l1mlp
multivariate_regressiontest_msemse, mse_l2, mse_l1mlp
bigram_lmtest_cecross_entropy, ce_l2, ce_l1mlp, transformer_lm

1.4 候选配置空间

可选值
OptimizerSGD, Adam, AdamW, RMSprop, Adagrad
Learning rategrid 采样
Model depth/widthgrid 采样(mlp: depth 1-6, width 16-256; transformer: d_model 16-64, layers 1-5)
Budgettraining_steps × batch_size = total_samples_seen
Seeds每个候选训练 5 个 seed,取 mean + std

1.5 题目生成逻辑

  1. 从候选池(candidate set)加载所有候选的 summary.json
  2. 穷举 C(pool, 3) 或随机采样,对每个三元组调用 validate_significance
  3. 通过的三元组成为"题",winner = argmin(mean_metric)
  4. shuffle 选项顺序,记录 correct_letter
  5. 渲染 prompt.txt:包含 dataset 描述 + 候选代码片段(不含 GT)

2. 显著性检验规范

定义在 src/architecture_iq/significance/validator.py,三个 profile 默认值相同:

条件默认值语义来源
gap_min0.05best 与 second 候选的 mean_{metric} 绝对差profile.significance.gap_min
win_rate_min0.75 seed 里 winner 一致率(≥4/5)profile.significance.win_rate_min
use_non_overlapTruewinner+std < runner_up−std(1 个 std,非 2 sigma)profile.significance.use_non_overlap
三个条件全部通过才算一题有效。在 152,592 个穷举三元组中,只有 87,837 个(57.6%)通过。其余 42.4% 是 GT 跨 seed 分不开的噪声题。

3. 评测协议

3.1 三选一 accuracy

对每个 environment 内的全部行穷举 C(n,3) 三元组。对每个三元组,模型预测 3 个候选的 loss,选 argmin 作为预测 winner,与真实 winner 比较。

n_rowsC(n,3)
335,456
345,984
6747,905

3.2 三层指标体系

指标含义使用场景
all 三元组全部 C(n,3),含噪声题旧 metric(不准确)
gap≥0.05best-vs-second raw loss 差≥0.05中间过滤,缺 win_rate 和 non_overlap
完整显著通过gap + win_rate + non_overlap 全过正确主指标

3.3 专家模型(Expert)setting(本次实验)

协议dataset_pooled_id(每 dataset 一个模型)
模型数15
每模型 train rows600(部分 300)
每模型 locked validation66–67
目标log(mean_loss),mean 跨 5 seed
随机基线33.33%

4. 实验结果总表

最优 meta-model
82.11%
共享 ExtraTrees(9k rows, 1 model)
专家模型(Expert) 最优
78.33%
per-dataset XGBoost

4.1 回归方法(预测 log loss → argmin)

模型专家模型 Expert (15模型)Shared (1模型)train sigval siggap
Compact Ridge45.16%43.55%−1.6
Full Ridge53.99%55.27%+1.355.65%54.68%1.0pp
Full OLS55.15%
Compact Poly Ridge60.63%
MLP52.44%60.31%+7.972.12%61.01%11.1pp
Random Forest75.35%78.60%+3.385.64%78.16%7.5pp
ExtraTrees77.78%82.11%+4.393.75%82.80%11.0pp
XGBoost78.33%70.80%−7.574.49%70.77%3.7pp

gap = train_sig − val_sig(过拟合程度)。XGBoost 几乎不过拟合但欠拟合(depth=3);ExtraTrees 过拟合 11pp 但 val 仍最高。

4.2 直接预测 winner(pairwise 分类 + 投票)

分类器per-datasetglobal shared
Logistic68.22%62.98%
GradientBoosting Clf74.85%64.92%
MLP Clf71.07%72.31%
ExtraTrees Clf77.85%61.59%
RandomForest Clf77.00%56.62%

per-dataset ExtraTrees Clf 77.85%,接近回归 ExtraTrees 77.78%,但未超过共享回归 82.11%。

4.3 在原 60 题上的性能

方法60题正确率说明
共享 ExtraTrees(本次)43/60 = 71.7%30 环境宽协议,60 题来自 3 个环境
GPT-5.6-SOL blind25/60 = 41.7%纯 agent,无 meta-model
随机20/60 = 33.3%

4.4 模型参数量对比

模型结构有效参数量训练样本特征维度
ExtraTrees300 棵 depth-16713,068 nodes9,000122
Random Forest300 棵 depth-12275,808 nodes9,000122
XGBoost400 棵 depth-3~9,600 leaves9,000122
MLP122→128→64→124,065 weights9,000122
Full Ridge线性122 coeff9,000122

5. 推论

推论 1:旧 63.50% 是错误的 metric + 不够好的 setting 的组合。
推论 2:setting→loss 映射是高度非线性的。 线性模型(OLS/Ridge)只有 45–61%,远低于树模型 75–82%。Compact Polynomial Ridge(60.63%)是线性族里最好的,但仍远不够。
推论 3:共享样本有帮助,但取决于模型族。 ExtraTrees +4.3pp,RF +3.3pp,MLP +7.9pp,但 XGBoost −7.5pp。浅树 XGBoost 的固定配置在 122 维特征上不如 per-dataset grid 搜索。
推论 4:直接预测 winner 不一定优于回归。 per-dataset ExtraTrees Clf 77.85% ≈ 回归 ExtraTrees 77.78%,但不如共享回归 82.11%。MLP 分类器(72.31%)明显优于 MLP 回归器(60.31%),说明直接预测 winner 对 MLP 更合适。但 pairwise 差值特征破坏了树模型在 global setting 下的原生判别能力(56–62%)。
推论 5:Phase-A 90% 不能直接与 Full-30 82% 比较。 cv_champion 90% 是在 3 环境、每环境 900 train / 100 val 的窄协议上训练,60 题恰好来自这 3 个环境(in-distribution)。Full-30 的 82.11% 是在 30 环境的 locked validation 上,其中包含 27 个更难的环境。共享 ExtraTrees 在这 60 题上只有 71.7%,因为它在更宽的配置空间上训练。
推论 6:ExtraTrees 有过拟合但 val 仍最高。 train 93.75% → val 82.80%,gap 11pp。XGBoost 几乎不过拟合(gap 3.7pp)但 train 只有 74.49%(欠拟合)。最佳平衡点可能在两者之间——更深的 XGBoost 或更正则化的 ExtraTrees。
推论 7:82.11% 不是数学上限。 Oracle = 100%,随机 = 33.33%。82.11% 是"当前已测模型集合 + 当前特征表示 + 当前显著性筛选"的经验结果。未来改进方向:更好的特征工程、更合理的超参搜索、ensemble。

6. 未解决问题与下一步

问题 1:Phase-A vs Full-30 的 gap 不可解释。 从 90%(Phase-A 3 环境)到 82%(Full-30 30 环境)的下降涉及多个同时变化的因素(环境数、采样宽度、loss 轴、GT seeds)。没有逐项消融,不能归因给单一因素。
问题 2:60 题是选择过的外部集。 54/60(cv_champion)和 82.11%(Full-30 validation)不可直接横比。前者是 in-distribution 选择过的题,后者是全宽随机穷举三元组。
问题 3:MLP 的默认配置不理想。 MLP train 72.12% 且 val 61.01%,gap 11.1pp。可能的改进:(a) 用 learned embedding 替代 one-hot;(b) 更大网络 +更强正则;(c) 直接预测 winner 的 MLP 分类器(72.31%,已好于回归 60.31%)。
问题 4:per-dataset 模型没有做显著性筛选后的 train-val 对比。 目前 train-val gap 只对 shared 模型做了。per-dataset 模型可能过拟合更严重(每模型只有 600 行)。
问题 5:特征工程是否充分? 当前特征是 setting 的 one-hot + 数值。没有交互特征(如 lr×depth、budget×model_type)、没有 dataset 的统计特征(如 input_dim、domain_size)。Compact Polynomial Ridge 60.63% 说明二阶交互有帮助但不够。

建议的下一步实验

  1. 调 XGBoost 深度:depth 3→5/6,看是否从欠拟合进入最优点
  2. ExtraTrees 正则化:减 max_features 到 0.5 或加 max_depth 限制,降低过拟合
  3. 交互特征:在 feature encoder 里加 lr×optimizer_type、depth×width、budget×model_type 交互项
  4. Ensemble:ExtraTrees + XGBoost 的预测平均或 stacking
  5. per-dataset 显著性 train-val:确认 per-dataset 模型的过拟合程度
  6. 在 60 题上评测 per-dataset 模型:看 Phase-A 3 环境的 per-dataset 模型在 60 题上是否接近 90%

7. 产物索引

产物路径
最终结果 JSONartifacts/wide_v2_full30_meta_model_final_summary.json
专家模型 Expert 回归 + 显著性筛选artifacts/wide_v2_full30_significant_recheck_dataset_pooled.json
共享回归 + 显著性筛选artifacts/wide_v2_full30_significant_recheck_global.json
OLS + 显著性筛选artifacts/wide_v2_full30_significant_recheck_ols.json
Winner 分类 per-dataset(fast)data/meta_model_studies/wide_v2_full30_winner_clf_fast/
Winner 分类 per-dataset(trees)data/meta_model_studies/wide_v2_full30_winner_clf_trees/
Winner 分类 global(fast)data/meta_model_studies/wide_v2_full30_winner_clf_global/
Winner 分类 global(trees)data/meta_model_studies/wide_v2_full30_winner_clf_global_trees/
显著性筛选脚本tools/meta_model_study/significant_recheck.py
Winner 分类脚本tools/meta_model_study/winner_classification.py
Train-val 对比报告docs/0718_train_val_comparison.html
本报告docs/0718_project_review.html

冻结快照 SHA256: 2b172e0c…40b38ba · 30 environments / 10,000 rows / 5 seeds · 所有 GT 来自执行候选代码,未重算。