模式矩阵 /模式白皮书/R4
R4 · Iterative Hypothesis Testing · 迭代假设验证
| 字段 | 值 |
|---|---|
| 双轴坐标 | 推理 Reasoning × 循环 Loop(转) |
| 成本档 | ③(多轮迭代累计成本,需用熔断和预算上限约束) |
| 课程对应 | 04-05 |
| 目录归属 | 全集 33 模式之一 · 推理模块 5 模式之一 |
| 一句话 | Agent 形成假设、用证据验证、根据结果修正,循环到证据收敛或达到迭代上限,把科学方法搬进推理。 |
它解决什么问题
有一类任务一次推理给不出答案:根因不明、证据要逐步收集、第一轮的判断常常是错的。诊断类任务是典型——故障报警时模型先验排序的"最可能原因"可能严重错估,真正的根因排在很后面甚至一开始没被想到。如果只让模型推一次就 commit,它会在错误方向上越走越远;如果只是简单 retry,重试本身并不能解决问题,因为问题不在"结果不稳定"而在"对世界的理解还不对"。
迭代假设验证把单次推理换成"假设 → 验证 → 修正 → 再假设"的循环。它和普通 retry 的根本差别是:retry 假设重试本身能解决问题,迭代假设假设每次循环都要更新对世界的理解。它的设计中心也不是"重试到成功",而是通过证伪收敛到唯一一个没被推翻的假设。它和并行探索(R3)是一对对偶:并行是空间维度同时开 N 条线,迭代是时间维度一条线跑多次。
为什么坐标是「推理 × 循环」
- 纵轴 · 推理:它走的是"假设 → 验证 → 修正 → 假设"的经验科学风格推理,不是单次 deduce。每一轮都在主动修正自己的 belief,而不是等结果稳定。
- 横轴 · 循环:多轮迭代直到证据收敛或达到上限,是天然的循环结构。同列的双模架构(R5)也在循环列,但侧重不同——迭代是单 Agent 跟自己循环验证假设,双模是双 Agent 协同分处理"说"和"想"。
核心机制
成熟的迭代假设验证常用三 Agent 分工,对应一个严格的循环:
- 假设生成(Planner):根据症状和历史 case 列出 N 个候选假设,按先验概率排序。这一步用最贵的模型,因为生成"对的假设清单"决定整个 trajectory 的走向。
- 证据收集(Generator):给定一个假设,跑哪些工具能验证它——查 metric、检索 log、读 sensor。这主要是工具调用,用便宜模型够用。证据必须是 deterministic、可复现的数据源,"模型自己看了觉得 OK"不算证据。
- 判定(Evaluator):综合证据判断假设是被确认、被证伪、还是证据不足。这一步用中档模型,system prompt 要强调证伪而非确认——"你的工作是找出 strong counter-evidence",这个 framing 能显著提升准确率。
循环规则是:证伪就回到生成阶段、确认就退出、证据不足就回去取更多证据。两条容易被忽视但关键的工程姿态:一是遇到全新证据时要 reset 整个假设树而不是在旧树上微调;二是跑到上限还没收敛时触发人在回路(HITL),而不是让 Agent 强行选一个先验最高的硬撞。承认不确定性是科学方法的基本品格,Agent 也该有。
适合的生产场景
- 诊断类任务:工业故障定位、医疗诊断、安全事故根因分析。根因不明、需要逐步收集证据、单链走偏后能 reset 重启。
- 复杂代码 debug:改一处验证一处,失败信息回流形成新假设,反复收敛到真正的 bug。
- 需要严格证据链的判断:每一步结论都要有可复现证据支撑、最终能向监管解释推理路径的场景。
容易出错的地方
- 时间预算太紧还硬上:时间预算小于 30 秒、或错误成本低的场景别用迭代——一次推理就够的任务加迭代是过度工程。
- 3 次后还不收敛硬撑:3 次迭代后还没收敛,通常是任务本身错了(症状描述不准、或根本不是这个系统的问题),该 reset 或升人工,而不是继续烧第 4、第 5 轮。
- Evaluator 找的是支持证据:"找 supporting evidence"会陷入确认偏误,比"找 falsifying evidence"准确率低 30% 以上。
- 新证据来了还在旧树上微调:出现完全新的证据时应该 reset 假设树重新生成,在旧树上打补丁会被错误的先验带偏。
- 没有熔断:任何迭代都要有 max_iterations 硬上限加成本上限,否则成本爆炸、Agent 卡死。
关键指标
- 收敛率 Convergence Rate(健康区 >80%):在达到上限前自动收敛的比例。低于 60% 说明 Agent 经常跑到上限还没结论,要么任务太复杂该拆,要么证据取得不够。这是最综合的指标。
- 平均收敛迭代数(健康区 2-4 次):成功 case 平均跑几轮收敛。低于 2 次说明任务太简单不需要迭代,高于 5 次说明每轮效率低、假设质量差。
- 证伪率 Falsification Rate(健康区 30-60%):每轮被证伪的假设占比。低于 20% 说明 Agent 在确认偏误、不主动证伪;高于 80% 说明生成的假设大多是错的。
- 人工介入率 HITL Trigger Rate(健康区 5-15%):触发人工的比例。低于 2% 说明 Agent 过于自信、不该 commit 也硬 commit;高于 30% 说明 Agent 太弱、什么都要人兜底。
最小骨架
任务进来 → Planner 生成假设清单(按先验概率排序)
循环(上限 max_iterations):
选先验最高的待验假设
Generator 收证据(deterministic 数据源)
Evaluator 判定(强调证伪而非确认):
confirmed → 收敛,退出
falsified → 剪掉,继续下一个假设
若假设全被证伪 → 拿新证据回 Planner 重新生成
遇到全新证据 → reset 整个假设树
循环结束仍未收敛 → 触发 HITL,附完整假设树 + 证据 + 已跑迭代
全程 trace 留档(合规场景需长期保留)
落地四个要点:三个模型按路由姿态分配(贵模型生成假设、便宜模型收证据、中档判定);证据 schema 严格化,杜绝模型脑补证据;HITL 升级要带完整假设树和证据,不是简单通知;trace 长期留档备审。
企业落地一例
某中型化工厂的工业故障诊断 Agent,给一线工程师在报警时辅助定位根因。试点第三周凌晨一条聚乙烯生产线报警——反应釜温度异常上升。Agent 推送 5 个候选假设按可能性排序,工程师逐个验证:冷却泵故障(看流量正常,淘汰)、传感器漂移(对比冗余传感器一致,淘汰)、工艺配方异常(查进料 log 正常,淘汰)。到第四个假设要等实验室分析、生产线已停一小时时,工程师手动喂了一个新事实——PID 控制日志里凌晨有一次远程登录修改。Agent 立即完全重建假设树,下钻发现某个控温参数被改、会导致温度震荡上行、与现状吻合,最终定位是另一班组做参数优化测试忘了回滚。
事后两个观察很关键:第一,那个真正的根因在第一轮先验里只有 2% 概率,模型先验严重错估,靠反复迭代加人工补事实才挖出来;第二,喂新事实后 Agent 是 reset 重建整棵树而非微调。团队据此重写,加了三层结构(生成假设、收证据、判定),并做了六个关键决策:三层假设树支持下钻、HITL 阈值低(3 轮后置信度不足就升人工、涉及重启关键设备必须人工 confirm)、新证据 reset 而非 compaction、证据 schema 严格化、Evaluator 强调证伪、每次 trace 长期留档。改完后收敛率从 50% 升到 82%,平均故障定位时间从 3.2 小时压到 1.1 小时。
与其他模式的关系
- 并行探索(R3):对偶关系。并行是空间维度同时开 N 条线一次选优,迭代是时间维度一条线跑多次逐步收敛。
- 思维链(R1):迭代的每一轮内部就是一条思维链,迭代把多条思维链在时间维度串起来反复修正。
- 复杂度路由(R2):迭代里三个角色用不同档位模型,正是路由思路在循环内部的应用。
- 双模架构(R5):同在循环列。迭代是单 Agent 自我循环验证,双模是双 Agent 协同分工。
一句话记住它
迭代假设验证的退出条件不是"找到一个对的假设",而是"证伪掉所有错的假设"——它把人类几百年的科学方法编码进了概率系统,因为概率系统的可靠性只能靠证伪来建立。
本页属于 ADPS 33 模式白皮书。返回 模式矩阵与白皮书目录, 或查看配套 可运行代码目录。