Chapter 15 · 与 Transformer 的结构边界共处
这一部分要传达的最重要的事是:有些失败模式你修不了——不是你水平不够,是 Transformer 的结构边界。承认这一点,比"勇敢地继续优化 prompt"更有价值——节省下来的时间投入到 A/B 档真正有解的问题上去。
Item 41:接受反转诅咒——双向事实必须显式存两份
"A 的妈妈是 B" 不蕴含 "B 的儿子是 A"——对 LLM 而言。
核心
Reversal Curse(arXiv:2309.12288):单向自回归训练让模型只能学会单向关联。模型见过 "Tom Cruise's mother is Mary Lee Pfeiffer",但反问 "Mary Lee Pfeiffer's son is?" 会失败。规模和 fine-tuning 都不能修。
Things to Remember
- 入库阶段双向写入:
A→relation→B和B→inverse_relation→A各存一份。 - 不要相信"换大模型就好了"——OpenAI o1 也仍受影响。
- 反转关系的查询走显式 KG,不走 LLM 直查。
Item 42:任何 4 步以上的精确组合推理都不能信任
Transformer 是子图匹配器,不是组合推理引擎。
核心
Faith and Fate(arXiv:2305.18654):多位数乘法、深度组合推理的准确率随步数指数衰减。模型在做的不是真组合推理,是"大量训练样本上的子图近似匹配"——这意味着 4 步以上你必须把它转成代码或拆成子任务(回到 Item 8 + Item 19)。
Things to Remember
- ≥ 4 步精确推理一律走 Tool / 任务分解。
- 不要在生产中让模型一次性回答 "把这 50 个数字按规则加权再排序"。
- 用 GSM-IC / GSM-Hard 类基准评估你的真实场景受影响程度。
Item 43:否定盲是必然的——业务上避免依赖否定语义
"X cannot Y" 与 "X can Y" 在 LLM 看来差异微弱。
核心
Negated LAMA(arXiv:1911.03343)揭示:模型对否定词不敏感,肯定句与否定句的概率分布几乎相同。这是因为训练语料中"X is Y"出现频率压倒性高于"X is not Y"——模型学会了"X 关联 Y",没学会"X 否定 Y"。
Things to Remember
- 业务规则里避免"如果 X 不是 Y 就……"这种依赖否定的判断。
- 把否定改写为正向 enum:用
status: ["active","inactive"]替代is_not_active。 - 真要测否定理解 → Negated LAMA 子集。