4.5 记忆:一次重要的自我纠正
原结论是"遗忘是重学,不是取回"。核对四组读数后要改成三层:
| 阶段 | 认字 | 整串 | 留出字体 | 无回显 |
|---|---|---|---|---|
| P1(只学任务A) | 100% | 100% | 62.5% | 100% |
| P2(学完任务B) | 61.5% | 2.1% | 1.0% | 0.0% |
| P3(旧头重训) | 100% | 81.2% | 47.9% | 6.2% |
| P4(全新头重训) | 100% | 82.3% | 47.9% | 6.2% |
- 表征层:任务A 的信息还在(随机新头训 200 步就能到 认字 100%)
- 读出层:坏的是输出映射(旧头只有 2.1%)
- 恢复不是取回(
P3 ≈ P4,无储蓄效应)
★ 而我们完全没有情景记忆 —— 只有"工作记忆(状态)+ 语义记忆(权重)"。
#五、我做过的错(主动列出,供评审判断可靠性)
同一个形态的错误犯了六次以上:用一个「点」代替一个「分布 / 一条曲线」。
| # | 现场 | 我的错 | 被什么挡住 |
|---|---|---|---|
| 1 | A4_F30 1 个种子过线 | 宣布"项目第一条过线" | 复现(3 种子 -> 1/4) |
| 2 | A9_N0 1 个种子过线 | "门控多余" | 复现(重跑崩) |
| 3 | I16_v0s0 过线且串更长 | "比门控更好" | 复现(v0s1 停 75%) |
| 4 | 步 301 的 sup=3.19 | "监督损失在涨" | 末值其实是 0.0000 |
| 5 | RL_SCALE=0 | "冻住了策略" | 参数哈希:11/12 步在变 |
其他类:
| 类 | 例 |
|---|---|
| 用一个间接量代替直接量 | arrive_hold 只传给了评估环境,训练里一直是 0 -> 4 个跑次作废 |
| 先猜 API/字段名 | 一个 session 内 5 次(rollout 签名、发明不存在的函数、检查点键 model→policy、curve 键 acc→acc_eval…) |
| 假阳性比漏报更糟 | 我写的检查器第一版报了 13 处死链,全是假阳性 |
| ★ 为了省显存顺手改了另一个变量 | 做容量实验时同时改了 batch(160/80/40)-> 整个实验白做(这是我自己批评过的"一次改两件事",然后又犯了) |
| ★ 选择偏差 | 审计清单里我只重跑了"过的"那个跑次,漏了"崩的"那个 |
| ★ 审计方法缺陷 | argv 重放保证"参数同",但代码语义变了(参数在旧提交上含义不同)—— 1 个跑次因此无效 |
★ 我认为最值得评审的一条:
"我推理两次都错,然后直接把那个量打印出来,一次就看清了。" (这发生了两次:
policy_hash和这次的dL/dh。) 似乎"直接量"在这个项目里比"推理"可靠得多 —— 这是方法层面的教训还是巧合?
#六、我目前的判断(请重点评审这一节)
| # | 判断 | 依据 |
|---|---|---|
| 1 | 瓶颈不在循环核,而在读出结构 + 记忆结构 + 梯度路由 | 4.3 / 4.4 |
| 2 | 不要换核(换 CfC→Liquid-S4 等)—— 它动的是"不是瓶颈"的那一层 | 同上 + Liquid-S4 的卖点是并行/长程,而我们是逐刻在线、horizon=16 |
| 3 | 不要上 3D —— 瓶颈不在视觉(认字已 100%) | 4.4 |
| 4 | 算力完全够(实时余量 200 倍) | 2.1 |
| 5 | "有状态/时序"是必需的(无状态模型在架构上无法满足需求) | 一、1.3 |
| 6 | ⚠️ 但"连续时间"(τ)在我们设置里基本没被利用(tick 是离散等间隔的) | 需要评审 |
| 7 | 该做的三件事:① pi 初始化(路通)② 读出加宽 ③ 显式记忆存储 | 4.3 |
| 8 | ⚠️ "她一直醒着"与"睡眠/离线巩固"在架构上冲突(人类记忆里最有用的一半要求离线阶段) | 需要评审 |