# 在一个子系统里找全部科学：判定流程与“找全”的含义

2026-10-31，同日按用户决定修订一次（§7）。来源逐处标明：

- 【用户】：用户原话或决定；
- 【定义稿】：`SAI_definition.md`；
- 【本文提出】：为这次演示做的操作化，可以推翻。

## 1. 任务

**【用户】** “SAI prototype 也要找一个子系统做非常详细的展示，如何找到所有的 science。”

另一句“持续高并发自由探索下去，拿到尽可能多有意义的结果”落在做法上：搜索分三条路线并行，其中两条交给独立的子任务。

## 2. 子系统

**【本文提出】** 选 ArchitectureIQ 里的优化器比较。

- **条件**：两份训练配置的数据集、模型、损失、批量和预算 T 都相同，只有优化器设置不同。优化器是 PyTorch 默认实现的 SGD、Adam、AdamW、RMSprop、Adagrad，设置包括 lr、动量、权重衰减和 betas。
- **问题**：谁的最终测试损失（10 个种子的平均）更低。
- **目标合同**：v1.5 主榜里同模型的候选对，共 523 对，分布在 187 题里；其中 481 对的胜负超过 2 个标准误。
- **独立数据**：kb_lab 与六个 kb_science_loop 运行的实验记录，共 16,574 行。它们与基准用同一训练管线、同样 10 个种子，数据集与基准不相交（读取时逐行断言）。

选它的理由：

- 边界清楚，只有一类设置在变；
- 实验室里有大量“只差 T”“lr 与 T 都不同”“只差衰减”的实验，可以拿另一种关系检验前提；
- KB 在这里有最多的主张，即位移族。

## 3. S 的判定：七道检验

**【定义稿】** §3：S 的前提要满足三条：

- (a) 显式写出；
- (b) 可以独立于所预测的关系检验，不能把拟合出的关系换个说法当作前提；
- (c) 结论由前提推出，边界就是前提失效的地方。

推导在假设内是否正确（数学问题）与前提在真实系统中是否成立（映射问题）要分开问。降级规则是：声明域内出现反例时先收窄声明域。

**【本文提出】** 把这些写成依次执行的七道检验。不通过就停下，记下判定。

| 步 | 问题 | 怎样执行 | 不通过时的判定 |
|---|---|---|---|
| 0 | 是子系统里的主张吗？ | 有答案规则和声明域，预测的是子系统里的比较 | 不计入 |
| a | 前提写明了吗？ | 列出推出结论所需的每条前提 | K 或 L（按依据是观察还是系统扩展） |
| b | 每条前提都能不经被预测关系检验吗？ | 见 3.1 | L：前提就是结论换了说法 |
| c | 结论能由前提推出吗？ | 见 3.2 | 推导不成立，排除 |
| m | 前提在独立数据上测过吗？ | 实验室数据；每个格子至少 5 个实验 | S，映射未检（不作答） |
| v | 前提在这个格子里成立吗？ | 见 3.3 | S，这一格不作答（声明域收窄） |
| e | 实际误差守住前提许诺的上界了吗？ | 在实验室与基准上比较实际误差和 ε | S，映射失败，声明域收窄 |

通过全部七道，才算“S，已核验”，并且只在前提通过的格子里作答。

### 3.1 (b) 怎样执行：检验关系

**【本文提出】** 每条前提都指定一个“检验关系”，也就是它在哪一类实验对上检验。被预测的关系是“同一个 T 下两份配置谁胜”。判定规则：

- 前提的检验关系必须是另一种关系，例如只差 T、lr 与 T 都不同但时钟相等、只差衰减，或者读代码。
- 被预测关系本身不算；它在其他条件上的结果、它的特殊点（例如平局点）、它的拟合版也都不算。
- 独立性逐对判定。一对配置若本身只差衰减，“衰减可忽略”的检验关系就与这对的预测重合，这对的平局判定只算 L（定律的直接应用）。

两个实际例子：

- 同 T 下动量匹配的对是被预测关系的平局点，所以“动量并入时钟”只能用 T 也不同的匹配对检验。这样的对只有 4 对。
- KB 的 Δ 规则用胜负计数支持“位移大者胜”这座桥，胜负计数就是被预测关系，所以 (b) 不成立。

### 3.2 (c) 怎样执行：推导的两半

**数学的一半【本文提出】。** 推导写成恒等式，时钟公式用合成梯度核对。对同一流类、时钟 τ_大 > τ_小 的一对，把时钟大者训练到它的时钟等于 τ_小 的那一步 s*，则

```
D = L_小(T) − L_大(T) = [L_小(T) − L_大(s*)] + [L_大(s*) − L_大(T)] = δ1 + δ2
```

- 两条前提都成立（δ2 > 0 且 |δ1| < δ2）时，D > 0，时钟大者胜。
- 时钟大者输，就一定有一条前提失效。

时钟公式由 PyTorch 的更新规则推出（见 §5）。核对时把更新规则作用在平稳的合成梯度序列上，不训练任何模型：

- 常数梯度下，模拟结果与公式逐位相同；
- 有噪声时，四种自适应优化器按同一比例变慢，彼此的换算比不变。

**映射的一半。** 这一半交给 m、v、e 三步。

### 3.3 (v) 怎样执行：格子与卷积

**【本文提出】** 前提在实验室里按格子核验。格子由任务族、流类（自适应 / SGD）、时钟量级和 lr 档组成。A1 按 lr 档分格，因为噪声地板随 lr 增大。

作答时，用这一格里 δ1 与 δ2 的实验室分布做卷积，得到 P(时钟大者胜)，达到 1 − ε 才作答。平局判定另要求这一格通过 A1 的等值检验：显著不同的比例不超过 ε。

### 3.4 参数

| 参数 | 取值 | 含义 |
|---|---|---|
| ε | 0.1（另报 0.02–0.4 的前沿） | 前提许诺的误差上界 |
| 最少实验数 | 5 | 格子算“测过”的门槛 |
| 时钟匹配容差 | 15% | A1 检验对和平局判定 |
| 格子 | 任务族 × 流类 × 时钟量级（A2）；× lr 半个数量级（A1） | 前提的分辨率 |

**【用户】** 原则是文本主张变成可执行引理时补上的阈值属于族的参数，要报前沿。这里也一样：S 的可执行版本有这些参数，所以 S 也是一个族，报的是 ε 上的前沿。

## 4. 怎样找：三条路线

**【本文提出】** 同一个子系统里的候选来自三条路线：

| 路线 | 来源 | 做法 |
|---|---|---|
| KB | kb_scratch 下全部 KB（科学循环各运行、qwen kb_evolve 快照、种子 KB） | 去重、筛出子系统内的主张，按 KB 自己记录的依据定层次；写出推导的逐条做 (a)(b)(c) |
| 文献 | 研究库的预训练、RL、可解释性目录与 claims 试点 | 关键词筛选加读后补入；读相关章节，提取子系统内的预测和可用作前提的命题 |
| 理论 | PyTorch 的更新规则 | 对每一种设置差异问：能否被一条可独立检验的前提搬运到同一把时钟上 |

三条路线互不参照：KB 与文献两条由独立的子任务完成，事先只给了子系统和层次的定义。最后把三条路线对齐到机制层面，用来估计还没找到的部分（§6）。

## 5. 理论路线的前提库

**【本文提出】**

时钟，即 τ(配置, T)，是每一步走的距离累加：

| 类型 | 时钟 | 来源 |
|---|---|---|
| Adam / AdamW | η·T | 偏差校正后每步一个单位 |
| RMSprop | η·Σ(1 − 0.99^t)^(−1/2) | v 从 0 起步、不校正，T = 256 时是 ηT 的 1.47 倍 |
| Adagrad | η·Σt^(−1/2) ≈ 2η√T | 累加器线性增长 |
| SGD | η·Σ(1 − m^t)/(1 − m) | 重球动量，单位是梯度流 |

四种自适应优化器在梯度统计平稳时沿同一条归一化流走，时钟可以互相比较；SGD 沿梯度流走，与它们之间没有换算。

| 前提 | 内容 | 检验关系 |
|---|---|---|
| A1 时钟充分 | 同一类型，时钟相等则损失相等 | lr 与 T 都不同、时钟相差 < 15% 的对 |
| A2 沿时钟进展 | 同一配置训练更久，损失更低 | 只差 T 的对 |
| A5 同一归一化流 | 自适应优化器之间按时钟换算 | 通过各型时钟形式间接检验（RMSprop 13 对，Adagrad 3 对） |
| A4 解耦衰减可忽略 | AdamW、SGD 的 λ ≤ 1e-3 不改变胜负 | 只差 λ 的对 |
| A4c 耦合 L2 可忽略 | Adam、RMSprop、Adagrad 的 L2 不改变胜负 | 只差 λ 的对，按类型、按 λ 大小分开 |
| A6 β2 可忽略 | 平稳时 β2 只改变平均窗口 | 只差 β2 的对 |
| A1m 动量并入时钟 | SGD(η, m) ≈ SGD(η/(1−m), 0) | T 也不同的动量匹配对 |
| 恒等 | λ = 0 时 Adam 与 AdamW 是同一个更新规则 | 读代码 |
| B_k 下降速率桥 | SGD(lr) 与归一化优化器(lr·k) 一阶下降一样快，且这一换算在整个训练中成立；k 在初始化处测得 | T 也不同、桥接时钟相差 < 15% 的实验室跨类对 |
| B_r 位移桥 | 位移范数相等则进展相等；SGD 用 lr·r，r 是初始化处测得的逐坐标梯度 RMS | 同上 |

### 5.1 补前提的新实验：初始化处的梯度测量

**【用户】** 同意做“测初始化处的逐坐标梯度 RMS”，只做前向和反向，不训练，在本机跑，目标是给 SGD 对自适应补一条可独立检验的桥（2026-10-31）。

**【本文提出】** 做法（`scripts/sci_grad.py`）：

- 范围：每个含 SGD 对自适应的（数据集、模型、损失、批量）组，实验室 422 组、基准 110 组。
- 与训练一致：种子 0–3（训练用的 10 个种子里的前 4 个），按生成的 train.py 设种子、建模型（执行同一份生成的 model.py 与 loss.py 源码）、用 torch.randint 抽批次。
- 只在第一次更新之前测：一次全批量反向得到平均梯度 μ；训练流的前 32 个小批量得到二阶矩 ν，并取 ν ≥ μ²（二阶矩不会小于均值的平方；不取下限时，没被抽到的坐标会让 k 趋于 0）。
- 两种换算：k = Σμ²/Σ(μ²/√ν)（B_k，事先定为主），r = √(mean ν)（B_r，KB 写作 |g|）。
- 不在 ArchitectureIQ 下写任何文件：导入前关掉字节码写入，生成的源码在内存里执行，数据集只读。

两个桥都是由第一性原理推出的换算，事先写定，都不按“对同 T 关系预测得好不好”来挑。它们的前提检验不用同 T 的对，符合从严的 (b)。

## 6. “找全了”是什么意思

**【本文提出】** “全部科学”只能相对于三样东西说：

- 搜索路线；
- 前提库；
- 推导规则（时钟比较与搬运前提的组合）。

在这个意义上检验四件事：

1. **闭包。** 推导引擎对每一对都给出判定和所用前提，或者给出不作答的原因，没有遗漏。闭包完全，只说明前提库推得出的都推了。
2. **分层覆盖。** 分三层报：
   - 理论可达：存在一条推导；
   - 事后成立：用这一对自己的学习曲线看，两条前提都成立；
   - 事先核验：只用独立数据就能作答。
   每层的损失都给出原因。
3. **残差里有没有规律。** 在没覆盖的对上，看定律（L）能不能预测：
   - 能，就说明那里有可以晋升的东西，缺的是一条可测前提；
   - 不能，就说明到当前精度为止那里没有科学可找。
4. **路线之间的重叠。** 三条路线对齐到机制后，用两两的 Chapman 捕获再捕获估计总数：

   ```
   N ≈ (n1 + 1)(n2 + 1)/(m + 1) − 1
   ```

   三条路线都从同一套优化器常识出发，正相关会让估计偏低。

## 7. 用户已定的口径

**【用户】** 2026-10-31，对四个口径问题的建议，用户原话“按建议定”：

1. **按格子核验前提，算“已核验”。** 逐对核验（用这一对自己的学习曲线，要跑完整训练）的结果另报。在前提成立的对上结论按构造必然成立，所以逐对核验只是一致性检查，不是证据；证据是事先作答的成绩。
2. **(b) 从严，排除被预测关系的平局点。** 放宽后的结果作为敏感性分析另报：放宽时“动量并入时钟”可以用同 T 下动量匹配的对检验。
3. **映射没检验的 S 不计入覆盖率，单列。**
4. **做初始化处逐坐标梯度 RMS 的测量**，只做前向和反向，不训练。见 §5.1。
