From eaab865d84f0f6e26fada8006129c3f41cfc1d86 Mon Sep 17 00:00:00 2001 From: iomgaa Date: Tue, 14 Jul 2026 14:41:53 -0400 Subject: [PATCH] docs: register Phase A plan in research wiki --- research-wiki/designs/maintenance-pool.md | 9 ++ .../2026-07-14-ar30-too-easy-analysis.md | 127 ++++++++++++++++++ .../2026-07-14-hard-distractor-literature.md | 82 +++++++++++ research-wiki/graph/edges.json | 12 ++ research-wiki/index.md | 14 +- research-wiki/log.md | 4 + .../plans/action-recognition-strategy.md | 9 ++ .../plans/grounded-question-gen-phaseA.md | 9 ++ research-wiki/plans/maintenance-pool.md | 9 ++ 9 files changed, 271 insertions(+), 4 deletions(-) create mode 100644 research-wiki/designs/maintenance-pool.md create mode 100644 research-wiki/findings/2026-07-14-ar30-too-easy-analysis.md create mode 100644 research-wiki/findings/2026-07-14-hard-distractor-literature.md create mode 100644 research-wiki/plans/action-recognition-strategy.md create mode 100644 research-wiki/plans/grounded-question-gen-phaseA.md create mode 100644 research-wiki/plans/maintenance-pool.md diff --git a/research-wiki/designs/maintenance-pool.md b/research-wiki/designs/maintenance-pool.md new file mode 100644 index 0000000..469061d --- /dev/null +++ b/research-wiki/designs/maintenance-pool.md @@ -0,0 +1,9 @@ +--- +type: design +node_id: design:maintenance-pool +title: "训练池 Maintenance 正确题自动补入机制" +date: 2026-07-14 +--- + +# 训练池 Maintenance 正确题自动补入机制 + diff --git a/research-wiki/findings/2026-07-14-ar30-too-easy-analysis.md b/research-wiki/findings/2026-07-14-ar30-too-easy-analysis.md new file mode 100644 index 0000000..87871fd --- /dev/null +++ b/research-wiki/findings/2026-07-14-ar30-too-easy-analysis.md @@ -0,0 +1,127 @@ +# AR30 靶向题"太简单"根因分析(baseline 29/30 = 96.7%) + +- **日期**: 2026-07-14 +- **目的**: 30 道用 `ActionRecognitionStrategy` 6 个 SubPattern 靶向生成的 Action Recognition 题,本意复现 Agent 在 Video-MME AR 上的 6 种失败子模式(原生 AR 正确率约 65%),但 baseline 正确率 96.7%。逐题核实为何失败模式未被触发。 +- **数据**: `scratchpad/ar30_baseline_analysis.json`(30 题 × question/options/reasoning)+ `store/questions/generated-ar30/accepted_questions.json`(source_nodes/difficulty) +- **对照**: [2026-07-11-benchmark-failure-taxonomy.md](M1–M5 失败机理) +- **代码**: `app/question_gen/strategy_action_recognition.py`(6 SubPattern)、`store/prompts/question_gen/action_recognition.md`(出题 prompt)、`store/prompts/question_gen/gate_multi_true.md`(去歧义门) + +## 一、结论摘要 + +**单一系统性根因:干扰项是"负空间"(视频中根本不存在的事件),而非"易混正例"(真实发生过、需辨析的近似动作)。** Agent 的工具箱(`search_similar`×3 → 判定不存在)恰好擅长确认"不存在",于是每道题坍缩成一次**检索存在性核对**——"哪个选项能搜到证据,其余三个搜不到就排除"——而非动作理解。这与靶向的失败模式(M1 负证据幻觉、M3 多实例锚定、M4 视觉粒度)**正好相反**:靶向想让 Agent 的坏启发式(搜不到就断言不存在)害它出错,但因为干扰项真的不存在,这个坏启发式反而变成了对的。 + +| 量化证据 | 数值 | +|---------|------| +| reasoning 通过"干扰项无证据/未出现"排除法定位答案 | **24 / 30(80%)** | +| 时序题直接读取树内显式时间戳排序(无需时序推理) | **9 / 30** | +| source_nodes = 6(单个小 L2 子树即含全部答案) | **13 / 30** | +| 唯一答错题 [29] 的失败原因 | 树内**缺**证据(T1),非靶向失败模式 | +| SubPattern 归属是否持久化到 accepted_questions | **否**(诊断盲区,见 §五) | + +## 二、根因一:干扰项质量——"负空间"干扰项使排除法万能 + +出题 prompt 的 `distractor_rules` 与全局约束共同把干扰项推向"视频中不存在的动作"。典型 reasoning 结构是"正解有证据 + 其余三项全网搜不到": + +| 题 | 正解证据 | 干扰项性质 | reasoning 片段 | +|----|---------|-----------|---------------| +| [2] 0kRsiSdDFYg | 举起/黑盒/PS5 三帧确认 | 跨域捏造 | "B: 全视频搜索无任何 bicycle kick 或 goalkeeper hug 场景,排除" | +| [22] 068rdc75mHM (John Bell) | 三重确认 | 完全无关物件 | "B: coffee cup/city skyline/satellite dishes 完全未出现…C: dice/cups with lights 无任何节点提及" | +| [0] 0ncLRRLvdfk (金融) | 3 个 L1 一致 | 异域动作(写代码/电视直播) | "D: 全视频无任何软件编码或自动交易算法相关内容" | +| [9] 5WIdIs3A9Ok (美洲豹) | 凯门鳄/牛尸独立证据 | 未发生的捕食 | "B:无任何伏击鹿或牧场睡觉的证据。D:未发现跟踪水豚或猎杀活牛的证据" | +| [23] 4IenX7OHumk | 鸟起飞/雄狮穿行两帧 | 未发生 | "C: 鸟类俯冲向水坑和狮子爬树在整个视频中均无任何证据" | + +干扰项区分度过大:Agent 无需理解"发生了什么动作",只需确认正解选项能被检索命中、其余三项检索空返回。**Video-MME 原生题之所以难,是错误选项都是"可能发生/部分发生"的近似物**,逼真辨析;而这里错误选项是可证伪的缺席,`search_similar` 三次空返回即高置信排除。 + +### 门控是"负空间干扰项"的制度性推手(smoking gun) + +`gate_multi_true.md`:**"≥2 个选项 plausibly correct → verdict fail"**。任何把干扰项做成"真实近似正例"的题,天然会让≥2 选项都合理,被此门直接毙掉。出题 prompt(`action_recognition.md`)末条同样写死 **"Do NOT write questions where multiple options could reasonably be correct"**。二者联合导致:**只有"1 个清晰正解 + 3 个明显缺席"的安全题能通过门控**,恰好把复现 M2/M3/M4 所需的易混题全部过滤掉。去歧义门在为"合法"服务时,杀死了"有用"。 + +## 三、根因二:证据集中度——答案在树摘要里,不需要跨段/多帧推理 + +- **时序题的正确顺序被写成树内时间戳,排序退化为数值比大小。** [15] "指地图(437s)→锤木板(478s)→行军(519s)→骑兵(539s),时间戳完全匹配";[18] "sandwich(2504s)→chocolate(2667s)→soda(2691s)→eat(2761s)";[25] "1576s→1747s→1897s→2046s 升序"。设计意图是"打乱时序即答错",但正确时序在 L2/L3 摘要里以时间戳明写,Agent 读出来排序即可,**时序推理环节被树旁路**。9/30 属此类。 +- **跨段题的合并已由 L1 摘要代劳。** `cross_segment_entity_tracking` 采样在 L1(`sampling_level_override=1`),而 L1 摘要本身就是跨段聚合后的高层描述。[0] "三个 L1 节点一致支持"、5 步作答——树替 Agent 完成了跨段合并,`cross_segment` 的"漏读某段"失败无从发生。 +- **13/30 题 source_nodes=6**(单个带帧的小 L2 子树),正解在头 1–2 次 `view_node` 即到手。步数中位数≈11 的高步数([26]=20、[28]=18、[23]=15)几乎全花在**反复检索确认干扰项缺席**这种冗余动作上,而非构建正解——空转仍稳落正确。 + +## 四、6 个 SubPattern 逐一复现失败分析 + +| SubPattern | 靶向失败 | 为何未触发(题例) | +|-----------|---------|-------------------| +| premature_evidence_anchoring | 找到首个证据就停搜 | 干扰项是缺席事件而非"前段的强局部匹配"。[8] 赛果题正解=官方成绩表,"首段诱饵"根本不存在,无从过早锚定 | +| temporal_reasoning_failure | 排错序/数错第 N 次 | 正确顺序=树内时间戳,读数即排序([15][16][18][24][25]);干扰项是时序全反的排列,一眼可判 | +| semantic_rigidity | 要求字面匹配拒同义词 | 同义改写太浅、且干扰项仍是缺席动作。[5] 吸管"缠绕"直接命中字幕,[4] 释义题靠排除异域项即中 | +| fine_grained_visual_action | 分不清"怎么做" | 干扰项换成了缺席的执行方式而非"同动词的另一种真实做法"。[19] 墨镜"摘下 vs 推头顶/放鼻梁"——后两者视频无证据,非真实近似;[21][28] 同理 | +| cross_segment_entity_tracking | 无法跨段合并实体 | L1 摘要已聚合(§三);干扰项混入的是"未发生动作"而非"另一实体的真实动作",[3][14][22] 排除法即中 | +| evidence_gap_confabulation | 缺证据时编造因果 | 反被利用:正解是"仅旁白暗示/描述未展示"的诚实项,干扰项是缺席因果链,Agent 排除缺席项即选中诚实项。[20][12] 均一次命中 | + +**共性**:每个 `distractor_rules` 名义上要求"近似/合理但错",但都留了"未出现/缺乏证据支持"的口子(如 fine_grained 的"确保都是合理执行方式"未被 VLM 落实),VLM 一律取"捏造缺席动作"这条最省力且最不会触发 multi_true 门的路径。 + +## 五、VLM + 门控的系统性偏差 + +VLM 面对采样素材被要求写 3 个错项,**最省力且最安全的路径是编造素材里没有的动作**:保证"错"、gate_key_verify 不会误判正解、且绝不触发 multi_true 门。反之,"错但有部分真实证据支撑"的近似干扰项需要 VLM 在素材里挖真实近似事件(更难),还有被 multi_true 门判歧义毙掉的风险。于是**出题目标函数(过门率最大化)与靶向目标(复现失败模式)直接冲突**:门控奖励"唯一清晰答案"=奖励"容易"。 + +附带缺陷:`build_prompt_context` 记录了 `sub_pattern`,但 `accepted_questions.json` 未持久化该字段(§一表);不过 `run_store` 的 DB(`logs/question_gen_ar30.db`)落了 `sub_pattern` 列,可据此做真实归属核对(见 §5.5)——**产物 JSON 未落盘 sub_pattern 仍是可观测性盲区,需从 DB 补齐到 JSON**。 + +## 5.5 归属核对:题目内容 vs 声称的 SubPattern(用 DB 真实归属) + +前节靠题面反推有偏差。改用 `logs/question_gen_ar30.db` 的 `sub_pattern` 列(真实归属)逐题核对接受题(30 道),发现**近一半题目内容与其声称的失败结构脱节**。 + +| SubPattern | 接受/生成 | 过门率 | 靶向意图 | 题目实际内容 | 名副其实? | +|-----------|----------|--------|---------|-------------|----------| +| temporal_reasoning_failure | 5/44 | 11% | 排错序/定位第 N 次 | 5 道全是明确 "correct chronological order" 排序题 | ✅ 是(但顺序在时间戳里明写,故太简单) | +| cross_segment_entity_tracking | 7/26 | 27% | 无法跨段合并实体 | 6/7 确跨段追踪同一实体(替补球员、white skirt、jaguar 跨段对比) | ✅ 基本是(但 L1 摘要已聚合) | +| fine_grained_visual_action | 4/8 | 50% | 分不清"怎么做" | 3/4 是 how/manner 细粒度(handle sunglasses、manipulate straws、cat's manner) | ✅ 匹配最好 | +| evidence_gap_confabulation | 3/31 | 10% | 缺证据时编造因果 | 仅 1/3 真涉证据缺口(predation evidence),另 2 道泛序列题 | ⚠️ 部分跑偏 | +| premature_evidence_anchoring | 5/34 | 15% | 首个证据即停搜 | 几无一体现"前段诱饵→过早锚定"结构,全是普通结局/序列题 | ❌ 基本跑偏 | +| semantic_rigidity | 6/24 | 25% | 字面匹配拒同义词 | 几无一是真正"同义改写 vs 字面原文"辨析,退化成通用 "which sequence/description accurate" | ❌ 基本跑偏 | + +**结论**:DB 忠实记录了每题"打算"针对哪个子模式,但 11 道(semantic_rigidity 6 + premature_anchoring 5)严重跑偏,另 2 道(evidence_gap)部分跑偏。 + +**跑偏机制**:`instruction` 注入到 prompt 的 `## Special Focus:` 段后,VLM 未贯彻特异的失败结构,**回退到最省力的"哪个序列/描述准确"通用模板**。尤其 semantic_rigidity(需"正解同义改写 + 干扰项字面原文语义错"这种精巧结构)被直接忽略。 + +**佐证**:过门率越是靠"易混"取胜的模式越低——temporal 11%、evidence_gap 10%、premature 15%,说明真正尝试做易混的题大量被 multi_true 门杀掉,能通过的都是退化后的安全题。这与 §二"负空间干扰项"是同一病的两面:过门率压力下,VLM 既把干扰项做成缺席事件,也把题型拉平成通用序列题,两头都丢特异性。 + +## 六、Action Items + +### A. 改 SubPattern(`app/question_gen/strategy_action_recognition.py`) +1. **全部 `distractor_rules` 增加硬约束**:"每个干扰项必须对应视频中真实发生过的动作/实体,仅在时点、主体、执行方式或对象上与正解不同;严禁使用视频中不存在的动作作为干扰项。" 落实"负空间干扰项"禁令。 +2. **temporal**:`distractor_rules` 增加"正确顺序不得可由单一时间戳字段线性读出;采用同一 L2 段内、时间戳接近(<Δ 秒)的多个真实事件,迫使逐帧核对而非读数排序"。 +3. **fine_grained**:强制"4 选项为同一动词的 4 种真实执行方式(如顺/逆时针、单手/双手),其中≥2 种在视频不同片段真实出现过"。 +4. **cross_segment**:`sampling_level_override` 由 1 改回 **2(L2)**,避免 L1 摘要预聚合;`distractor_rules` 要求"强干扰项=只包含部分片段真实动作的合法子序列"。 +5. **premature_anchoring**:强制"前段必须存在一个与某干扰项字面吻合的真实局部匹配"(诱饵必须真实存在,当前是缺席)。 +6. **持久化 `sub_pattern`**:在候选落盘时写入 accepted_questions(补 `metadata.sub_pattern`),供后续诊断按模式分层统计(DB 已有,需同步到产物 JSON)。 +6b. **修复归属跑偏(semantic_rigidity / premature_anchoring)**:这两类 instruction 太抽象,VLM 回退成通用序列题(见 §5.5)。改法:instruction 内嵌 1-2 个"必须长这样"的具体题型模板 + few-shot 正例,并加一个"结构符合度"额外 gate(extra_gates),校验题目是否含该模式的必要成分(如 semantic_rigidity 必须有一个字面复用素材原文的干扰项),不符则退回重生成。 + +### B. 改出题管线 / 门控 +7. **`gate_multi_true` 松绑为分级**:区分"两个选项都完全正确"(应毙)与"两个选项都部分沾边、需辨析"(应留)。当前二元门是易混题的主要杀手,需改为"仅当≥2 选项完全满足题干时 fail"。 +8. **`action_recognition.md` 删除/改写** "Do NOT write questions where multiple options could reasonably be correct" —— 改为"错误选项应是视频中真实发生、但在时点/主体/方式/对象上与正解不同的近似动作(near-miss),而非视频中不存在的动作"。 +9. **新增"负空间干扰项"检出门**:对每个干扰项做一次 `search_similar`/树核实,若某题≥2 个干扰项在树中零命中 → 判定为"负空间安全题",退回重生成(把"能被排除法秒杀"变成显式失败信号)。 +10. **新增难度基线门(观测性)**:出题后用当前 baseline agent 试答,正确率>85% 的批次触发告警——把"太简单"从事后发现变成管线内的可观测指标。 + +## 七、独立审查修正(Codex,只读核实原始数据/代码/门控) + +Codex 独立重数了 reasoning、查了 DB 拒绝原因、读了门控与管线代码,**证实主病但修正三处夸大、补三处遗漏根因**。整体可信度:诊断 7/10、action items 7/10。 + +### 被修正的原结论(本报告更新为以下) +| 原结论 | 修正 | +|--------|------| +| §一"80% 靠负证据排除"(24/30) | 排除式 reasoning 约 23/30 成立;但**纯"负空间"事件**严格计只 18–21/30——原数把"错序/错主体/表格反证"也混入了负空间 | +| §二 multi_true 是完整 smoking gun | multi_true 确是首因拒绝最多的门(137 拒中约 63 次首因),**但大量 multi_true='fail' 的实际原因是 "No source material provided",源于下方 gate 树错配 bug,而非"两真实近似选项都合理"**——smoking gun 被此 bug 污染,不能全算门控之过 | +| §5.5 evidence_gap "仅 1/3 贴合" | 实为 **2/3 贴合**(#12 描述未展示、#20 展示 vs 旁白暗示均属 evidence gap),仅 #10 跑偏 | + +### 遗漏的根因(新增,均已核实) +1. **gate 树错配 bug(真代码 bug,最高优先级)**:`pipeline_v2.py` retry 换视频后用 `current_tree` 采样/生成(370/391 行),但 `run_gates(tree=tree,...)` 仍传**原始 tree**(471 行)。换视频重试的题门控用错树验证→大量"无 source material"假拒绝,**污染了 DB 拒绝原因统计**。需先修此 bug 再重估门控归因。 +2. **gate_key_verify 过宽**:只要"文本或帧任一支持正解"即 pass,不校验错误选项是否 near-miss,故放行"1 正解+3 缺席动作"。 +3. **OCR/静态文本泄漏未挡**:#1 gym visible_text、#8 最终成绩表、#26 board/Spanish labels 本质是读屏字非动作识别。 + +### Action items 评估修正 +- **纯改 `distractor_rules` 文案不够**(A1/A3 等):当前失败正是 VLM 不落实抽象规则,必须配"真实动作候选池"或结构 gate。 +- **松绑 multi_true 有风险**:需把 rubric 精确为"错误选项可有局部证据,但在题干限定的主体/时点/方式/对象下必须为假",否则放进真歧义坏题。 +- **A9 负空间检出门用 search_similar 成本高、误判多**(同义/视觉细节/字幕缺漏会误判):更优是**先从素材抽真实动作库存,再由库存组合 near-miss 干扰项**(从源头杜绝负空间,而非事后检出)。 +- **新增更优改法**:①先修 tree bug;②建"真实动作候选池"(实体/动作/时点/对象/方式)供 near-miss 构造;③per-pattern 结构验证器(semantic 必含"同义正解+字面陷阱"、premature 必含"前段真实诱饵");④AR 加 OCR/静态文本惩罚门;⑤"树可见性"难度评估——用完整树/去时间戳树/L2-only/frame-only 分别测,定位到底是视频理解难还是摘要泄漏。 + +## 相关文件 +- 6 SubPattern 定义:`app/question_gen/strategy_action_recognition.py:26-212` +- 出题 prompt:`store/prompts/question_gen/action_recognition.md` +- 去歧义门(根因制度推手):`store/prompts/question_gen/gate_multi_true.md` +- 数据:`store/questions/generated-ar30/accepted_questions.json`、`scratchpad/ar30_baseline_analysis.json` +- SubPattern 真实归属(DB):`logs/question_gen_ar30.db` 表 `question_gen_items` 列 `sub_pattern`(§5.5 核对依据) diff --git a/research-wiki/findings/2026-07-14-hard-distractor-literature.md b/research-wiki/findings/2026-07-14-hard-distractor-literature.md new file mode 100644 index 0000000..b60a284 --- /dev/null +++ b/research-wiki/findings/2026-07-14-hard-distractor-literature.md @@ -0,0 +1,82 @@ +# 困难干扰项生成文献调研:我们的病是 Easy-Options Bias,解法有成熟范式 + +- **日期**: 2026-07-14 +- **触发**: [2026-07-14-ar30-too-easy-analysis.md] 的 action items 被评估为"治标、不够彻底",遂调研学界/开源如何生成真正困难、能靶向失败模式的多选题干扰项。 +- **方法**: deep-research(5 角度并行搜索 + 对抗验证,108 agents),6 篇核心论文已下载到 `reference/papers-distractor-gen/`,GroundAttack 已精读。 + +## 一、核心结论:我们的病有学名,且解法与我们的"小修小补"根本不同 + +**我们"负空间干扰项 → 排除法秒杀"的病,学术名是 Easy-Options Bias(EOB)/ vision-option shortcut**:正确答案在特征空间比干扰项更贴近视觉内容,VLM 仅靠"vision+options 相似度匹配"就能选对、无需读题。GroundAttack 实测 NExT-QA(84.9%)、STAR(85.2%)、Video-MME 等 **80%+ 题有 EOB**——这不是我们独有的 bug,是整个多选 VQA 领域的系统病。 + +**关键差距**:我们原 action items 停留在"改 distractor prompt 文案 + 松绑门控"(要求 VLM 主观地"写得像")。学界的彻底解法是**用机制强制 grounded**,三条主线: + +| 范式 | 一句话机制 | 代表 + 开源 | 消灭的捷径 | +|------|-----------|------------|-----------| +| **A. Grounded hard-negative mining** | 生成大量候选负选项 → 用 CLIP **视觉相似度**选出"与正解同样 groundable"的干扰项 | GroundAttack (2508.13428) | 排除法/单帧(vision-option 匹配) | +| **B. 对比最小对 / 单维反事实** | 正解与干扰项共享全部内容,只改**一个维度**(时序方向/顺序/速度/主体/方式/对象),是真实事件的 near-miss | TempCompass, VITATECS, Vinoground, DMC3 | 单帧可解 + 语言先验 | +| **C. 对抗过滤 + 配对翻转指标** | 门控从"唯一明显正确=过门"改为"能被 shortcut 秒杀=剔除";用配对翻转一致性(模型必须在正/反例间翻转)打分 | AFLite (2002.04108), QuadAcc, BVC, AdVQA | 一切 shortcut(模态无关) | + +## 二、GroundAttack(已精读,最直接对口) + +三个冻结模型协作,只替换负选项、保留原 V/Q/A: + +| 模块 | 职责 | 我们的对应 | +|------|------|-----------| +| Captioner π_c | VLM 把视觉转详细文本描述 T | **已有**——树的 L2/L3 描述即是 | +| Distractor π_d | 给定 T+Q+A,LLM 生成 **128 个** "confusing yet incorrect" 候选 | 我们只生成 3 个就落盘,无候选池 | +| Selector π_s | **Clustering+CLIP**:K-means 聚类候选文本 → 每组用 CLIP 选与视觉最相似的 → 得 hard negatives | **完全缺失**——这是消灭 EOB 的关键 | + +**实测效果**:EOB-free 标注后,VLM 在 (V+O) 设定掉到接近随机(20-30%,5选1随机=20%),(V+Q+O) 掉到未饱和。**成本 8.75 美元**(DeepSeek API 1.3e7 tokens)。核心洞察:**用 CLIP 视觉相似度选干扰项**,让干扰项和正解在视觉空间同样 groundable,排除法("搜不到就排除")从机制上失效——这正是我们最缺的一环。 + +## 三、落到我们 SubPattern + 门控架构的升级路径 + +### 3.1 出题层(替代"改 distractor_rules 文案") + +用 **GroundAttack 式候选池 + 视觉相似度选择** 替代当前"VLM 直接写 3 个干扰项": + +``` +现状: VLM 一次生成 3 个干扰项 → 落盘(VLM 走最省力路径 = 负空间) +升级: 1. VLM 生成 N=32~128 个候选干扰项(都要求 grounded near-miss) + 2. 用现有 embedding(bge/CLIP)算每个候选 vs 采样帧的视觉相似度 + 3. 选出与正解视觉相似度最接近的 3 个 → 保证同样 groundable + 4. EOB 自检:若正解的 vision-option 相似度显著 > 所有干扰项 → 退回重生成 +``` + +**对比最小对(范式 B)作为 SubPattern 的结构约束**——每个 SubPattern 绑定一个"只改一维"的反事实模板: +- temporal_reasoning_failure → 只打乱事件**顺序**(同一组真实事件的错序排列,非缺席事件) +- fine_grained_visual_action → 只改**执行方式**(同动词的另一种真实做法) +- cross_segment_entity_tracking → 只改**主体**(另一实体在该段的真实动作) + +### 3.2 门控层(替代"松绑 multi_true") + +| 新增/改造门 | 机制 | 来源 | +|------------|------|------| +| **EOB 检测门** | 用 embedding 算 vision-option 相似度;正解不得显著比干扰项更贴近视觉,否则判"排除法可解"退回 | GroundAttack | +| **对抗过滤门(AFLite 式)** | 出题后用弱/中 agent 在 **(V+O) 不看问题** 设定试答;能秒杀=有 shortcut=剔除 | AFLite | +| **配对翻转一致性** 替代 multi_true 二元逻辑 | 同 SubPattern 造对比对(正例+反事实),模型必须翻转答案;不翻转=被 shortcut 攻破 | QuadAcc/BVC | +| **难度基线告警门** | 出题批次用当前 baseline agent 试答,正确率 >85% 触发告警 | 通用 | + +## 四、已下载论文(`reference/papers-distractor-gen/`) + +| 文件 | 用途 | 状态 | +|------|------|------| +| GroundAttack_2508.13428.pdf | EOB 定义 + CLIP hard-negative mining(最对口) | ✅ 已精读 | +| TempCompass_2403.00476.pdf | 时序对比最小对三种构造法(反向/变速拼接/换序)+ 开源 | 待精读 | +| VITATECS_2311.17404.pdf | 六维度单维反事实描述 + 半自动 LLM+人工在环 + 开源 | 待精读 | +| AFLite_2002.04108.pdf | 对抗过滤剔除 shortcut-solvable(SNLI 92→62%) | 待精读 | +| Vinoground_2410.02763.pdf | 同词不同序时序反事实字幕对 | 待精读 | +| AdVQA_2106.00245.pdf | Dynabench 人机在环对抗采集 | 待精读 | + +开源代码:`github.com/llyx97/TempCompass`、`github.com/lscpku/VITATECS`、GroundAttack(代码待放出)。 + +## 五、待解问题(调研未完全覆盖) + +1. **通用长视频上如何低成本自动生成单维反事实**:TempCompass 的反向/拼接技巧依赖"可反向播放/可拼接"的视频属性;主体/方式/对象维度的 grounded 扰动缺现成方法,需自研。 +2. **区分"题真难"vs"题不可判定/歧义"**:把 agent 自身作为对抗器时,如何自动近似 VITATECS 的人类在环校验,保证 hard-but-answerable。 +3. **单视频(非天然成对)语料如何构造配对翻转对**:QuadAcc/BVC 依赖成对视频,我们是单视频,需为每个 SubPattern 生成配对反事实时间窗。 +4. **IRT/难度校准反馈进出题器**:本次未找到强一级来源,需补充调研。 + +## 相关文件 +- 前序诊断:[2026-07-14-ar30-too-easy-analysis.md](含 gate 树错配 bug、EOB 病灶量化) +- 论文:`reference/papers-distractor-gen/` +- 调研原始输出:workflow wf_110dfc64-98c diff --git a/research-wiki/graph/edges.json b/research-wiki/graph/edges.json index a4dabe9..87acad1 100644 --- a/research-wiki/graph/edges.json +++ b/research-wiki/graph/edges.json @@ -180,6 +180,11 @@ "id": "plan:maintenance-pool", "label": "Maintenance Pool 自动补入实现计划", "type": "plan" + }, + { + "id": "plan:grounded-question-gen-phaseA", + "label": "Grounded Question-Gen Phase A", + "type": "plan" } ], "links": [ @@ -336,6 +341,13 @@ "relation": "implements", "evidence": "Implements maintenance pool auto-supplement in PerCategoryPoolStrategy", "added": "2026-07-14T14:22:44.443012+00:00" + }, + { + "source": "plan:grounded-question-gen-phaseA", + "target": "design:grounded-question-gen-phaseA", + "relation": "implements", + "evidence": "Phase A 实现计划", + "added": "2026-07-14T18:41:35.899803+00:00" } ] } \ No newline at end of file diff --git a/research-wiki/index.md b/research-wiki/index.md index 1615e8b..35a351c 100644 --- a/research-wiki/index.md +++ b/research-wiki/index.md @@ -1,8 +1,8 @@ # Research Wiki 索引 -> 自动生成,更新时间:2026-07-14 14:22 UTC +> 自动生成,更新时间:2026-07-14 18:41 UTC -## design (27) +## design (29) - [2026-07-06-core-agent-adapters-llm-design](designs/2026-07-06-core-agent-adapters-llm-design.md) `design:2026-07-06-core-agent-adapters-llm-design` - [2026-07-07-app-harness-design](designs/2026-07-07-app-harness-design.md) `design:2026-07-07-app-harness-design` - [2026-07-07-core-evolution-design](designs/2026-07-07-core-evolution-design.md) `design:2026-07-07-core-evolution-design` @@ -21,6 +21,8 @@ - [Spec-3 出题管线 v2(失败机理靶向+逐题质量门)](designs/question-gen-v2.md) `design:question-gen-v2` - [出题模块迁移设计(question_gen)](designs/2026-07-07-question-gen-design.md) `design:2026-07-07-question-gen-design` - [出题管线 TaskTypeStrategy 拆分设计(Clean Architecture)](designs/2026-07-14-task-type-strategy-design.md) `design:2026-07-14-task-type-strategy-design` +- [出题质量提升 Phase A — Grounded 单题质量(候选池 + VLM 视觉打分 selector + 单维反事实)](designs/2026-07-14-grounded-question-gen-phaseA-design.md) `design:2026-07-14-grounded-question-gen-phaseA-design` +- [出题质量提升 Phase B — Agent 对抗过滤(独立后置过滤层)](designs/2026-07-14-adversarial-question-gen-phaseB-design.md) `design:2026-07-14-adversarial-question-gen-phaseB-design` - [建树修复管线:熔断根因修复 + 断点续跑 + 并发改造](designs/tree-repair-resilience.md) `design:tree-repair-resilience` - [建树模块竖切设计:数据结构 + 建树 + 修复 + 迁移](designs/2026-07-07-tree-module-design.md) `design:2026-07-07-tree-module-design` - [建树模块竖切设计:数据结构 + 建树 + 修复 + 迁移](designs/tree-module-vertical-slice.md) `design:tree-module-vertical-slice` @@ -31,14 +33,16 @@ - [赛题生成工具设计](designs/question-gen-synth.md) `design:question-gen-synth` - [赛题生成工具设计(Question Generation Synthesis)](designs/2026-07-09-question-gen-synth-design.md) `design:2026-07-09-question-gen-synth-design` -## finding (5) +## finding (7) - [2026-07-11-benchmark-failure-taxonomy](findings/2026-07-11-benchmark-failure-taxonomy.md) `finding:2026-07-11-benchmark-failure-taxonomy` - [2026-07-11-question-gen-calibration-analysis](findings/2026-07-11-question-gen-calibration-analysis.md) `finding:2026-07-11-question-gen-calibration-analysis` +- [2026-07-14-ar30-too-easy-analysis](findings/2026-07-14-ar30-too-easy-analysis.md) `finding:2026-07-14-ar30-too-easy-analysis` +- [2026-07-14-hard-distractor-literature](findings/2026-07-14-hard-distractor-literature.md) `finding:2026-07-14-hard-distractor-literature` - [2026-07-14-question-quality-gap-analysis](findings/2026-07-14-question-quality-gap-analysis.md) `finding:2026-07-14-question-quality-gap-analysis` - [Harness 评估: Spec-1 修复验证 (infer_spec1check)](findings/eval-spec1check.md) `finding:eval-spec1check` - [Harness 评估: Spec-2 批量并行建树](findings/eval-spec2-batch-tree-build.md) `finding:eval-spec2-batch-tree-build` -## plan (32) +## plan (34) - [2026-07-06-core-agent-adapters-llm](plans/2026-07-06-core-agent-adapters-llm.md) `plan:2026-07-06-core-agent-adapters-llm` - [2026-07-07-app-harness](plans/2026-07-07-app-harness.md) `plan:2026-07-07-app-harness` - [2026-07-07-core-evolution](plans/2026-07-07-core-evolution.md) `plan:2026-07-07-core-evolution` @@ -52,6 +56,7 @@ - [2026-07-12-per-category-pool-strategy](plans/2026-07-12-per-category-pool-strategy.md) `plan:2026-07-12-per-category-pool-strategy` - [2026-07-14-action-recognition-strategy](plans/2026-07-14-action-recognition-strategy.md) `plan:2026-07-14-action-recognition-strategy` - [2026-07-14-action-recognition-training](plans/2026-07-14-action-recognition-training.md) `plan:2026-07-14-action-recognition-training` +- [2026-07-14-grounded-question-gen-phaseA-plan](plans/2026-07-14-grounded-question-gen-phaseA-plan.md) `plan:2026-07-14-grounded-question-gen-phaseA-plan` - [2026-07-14-maintenance-pool](plans/2026-07-14-maintenance-pool.md) `plan:2026-07-14-maintenance-pool` - [2026-07-14-task-type-strategy-framework](plans/2026-07-14-task-type-strategy-framework.md) `plan:2026-07-14-task-type-strategy-framework` - [Action Recognition 单题型首次训练实验计划](plans/action-recognition-training.md) `plan:action-recognition-training` @@ -59,6 +64,7 @@ - [app/harness/ 训练循环编排层实现计划](plans/app-harness.md) `plan:app-harness` - [app/search/ 搜索 Agent 装配层实现计划](plans/2026-07-07-search-module.md) `plan:2026-07-07-search-module` - [core/agent/ + adapters/llm 基础设施实现计划](plans/core-agent-adapters-llm.md) `plan:core-agent-adapters-llm` +- [Grounded Question-Gen Phase A](plans/grounded-question-gen-phaseA.md) `plan:grounded-question-gen-phaseA` - [main.py 推理入口 + 初始 Prompt 集实现计划](plans/main-inference-entry.md) `plan:main-inference-entry` - [Maintenance Pool 自动补入实现计划](plans/maintenance-pool.md) `plan:maintenance-pool` - [Per-Category Pool Strategy 实现计划](plans/per-category-pool-strategy.md) `plan:per-category-pool-strategy` diff --git a/research-wiki/log.md b/research-wiki/log.md index e7d1ae0..59854e5 100644 --- a/research-wiki/log.md +++ b/research-wiki/log.md @@ -85,3 +85,7 @@ - [2026-07-14 14:22 UTC] 新增 plan: Maintenance Pool 自动补入实现计划 (plan:maintenance-pool) - [2026-07-14 14:22 UTC] 新增边: plan:maintenance-pool --implements--> design:maintenance-pool - [2026-07-14 14:22 UTC] 重建索引: 70 篇页面 +- [2026-07-14 18:41 UTC] 新增 plan: Grounded Question-Gen Phase A (plan:grounded-question-gen-phaseA) +- [2026-07-14 18:41 UTC] 新增边: plan:grounded-question-gen-phaseA --implements--> design:grounded-question-gen-phaseA +- [2026-07-14 18:41 UTC] 重建索引: 76 篇页面 +- [2026-07-14 18:41 UTC] 重建索引: 76 篇页面 diff --git a/research-wiki/plans/action-recognition-strategy.md b/research-wiki/plans/action-recognition-strategy.md new file mode 100644 index 0000000..1c95895 --- /dev/null +++ b/research-wiki/plans/action-recognition-strategy.md @@ -0,0 +1,9 @@ +--- +type: plan +node_id: plan:action-recognition-strategy +title: "ActionRecognitionStrategy 特化实现计划 (Plan B)" +date: 2026-07-14 +--- + +# ActionRecognitionStrategy 特化实现计划 (Plan B) + diff --git a/research-wiki/plans/grounded-question-gen-phaseA.md b/research-wiki/plans/grounded-question-gen-phaseA.md new file mode 100644 index 0000000..d6cb131 --- /dev/null +++ b/research-wiki/plans/grounded-question-gen-phaseA.md @@ -0,0 +1,9 @@ +--- +type: plan +node_id: plan:grounded-question-gen-phaseA +title: "Grounded Question-Gen Phase A" +date: 2026-07-14 +--- + +# Grounded Question-Gen Phase A + diff --git a/research-wiki/plans/maintenance-pool.md b/research-wiki/plans/maintenance-pool.md new file mode 100644 index 0000000..1544564 --- /dev/null +++ b/research-wiki/plans/maintenance-pool.md @@ -0,0 +1,9 @@ +--- +type: plan +node_id: plan:maintenance-pool +title: "Maintenance Pool 自动补入实现计划" +date: 2026-07-14 +--- + +# Maintenance Pool 自动补入实现计划 +