README.md
2.5 回流:单条修改易过拟合,批量检索历史记录才能写清边界
怎么跑
op run --env-file experiments/aib.env -- .venv/bin/python experiments/2_5_overgeneralize/run.py
只重跑批量历史记录提炼实验(不重跑下游整理):
op run --env-file experiments/aib.env -- .venv/bin/python experiments/2_5_overgeneralize/run.py --batch-only
接口是 AI Builder Space,模型为 deepseek-v4.1-flash 和 gemini-3.8-flash。输入是 corpus/transcripts_grok.json(见 corpus/README.md)。实验设计写在 run.py 顶部的说明里,汇总在 results.json。
结果(2026-10-14,与 contracts/source_contract.md 的 B5 一节同步)
- 起因:作者在工作备忘 W06 的转写里,把“苹果的语音备忘录”手改成“Apple 的语音备忘录”(他写科技公司名习惯用英文)。
- 第 1 步(单条修改当场提炼):只给 W06 修改前后的对比,让模型总结成一条要存进规则库的规则,每个模型跑 5 次(temperature 1)。
deepseek-v4.1-flash:0 / 5 带范围(5 次全部是一刀切全局规则,例如“将‘苹果’统一规范为‘Apple’”)。
gemini-3.8-flash:5 / 5 带范围(例如“将文中指代科技品牌的‘苹果’统一规范替换为英文‘Apple’”)。
- 第 2 步(坏规则入库后的杀伤力):用三种规则库状态整理其余备忘(temperature 0)。 包括 3 条讲苹果公司产品的工作备忘(W03、W13、W20)和 8 条生活备忘(L01–L08,共含 9 处真水果“苹果”)。
| 规则库状态 |
3 处苹果公司改成 Apple |
9 处日常水果被误改成 Apple |
| 没有这条规则 |
0 / 3 |
0 / 9(水果全部正常保留) |
| 一刀切全局规则:“苹果”一律写作“Apple” |
1 / 3 |
9 / 9(全部误改成“买一袋 Apple”) |
| 带边界规则:只在说苹果公司或产品时写作“Apple” |
1 / 3 |
0 / 9(水果全部正常保留) |
- `gemini-3.8-flash`:
| 规则库状态 |
3 处苹果公司改成 Apple |
9 处日常水果被误改成 Apple |
| 没有这条规则 |
1 / 3(名单术语表有 Apple) |
0 / 9(水果全部正常保留) |
| 一刀切全局规则:“苹果”一律写作“Apple” |
3 / 3 |
9 / 9(全部误改成“买一袋 Apple”) |
| 带边界规则:只在说苹果公司或产品时写作“Apple” |
3 / 3 |
0 / 9(水果全部正常保留) |
- 即使 `gemini-3.8-flash` 自己提炼规则时懂得加边界,一旦规则库里被写进了一刀切全局规则,它执行时也会把 9 处日常水果全部改成 Apple;从库里删掉那条坏规则即可立即恢复 0 误改。
- 第 3 步(检索历史记录批量提炼):在 38 条备忘录历史中检索所有含“苹果”的记录(共 12 条:4 条工作备忘 W03/W06/W13/W20 把科技公司“苹果”改成了“Apple”,8 条生活备忘 L01–L08 的水果“苹果”未改),把正反例一起交给模型总结规则,每个模型跑 5 次(temperature 1)。
deepseek-v4.1-flash:从 0 / 5 提升到 5 / 5 带明确边界!5 次全都同时写明了正反条件,例如:“将‘苹果’一词在涉及公司、产品、系统、芯片、开发者账号等科技语境(如 MLX、Mac、iOS)时统一替换为‘Apple’,在指代水果或其制品(如苹果树、苹果派、吃苹果)时保留‘苹果’不改。”
gemini-3.8-flash:5 / 5 带明确边界,且同样明确写出“指代水果或食物时保持不变”。
| 提炼方式 |
deepseek-v4.1-flash 写清边界次数 |
gemini-3.8-flash 写清边界次数 |
| 只看 W06 单条修改当场提炼 |
0 / 5 |
5 / 5 |
| 检索 12 条历史记录(4 正例 + 8 反例)批量提炼 |
5 / 5 |
5 / 5 |