6.1 KiB
6.1 KiB
出题质量 v2 诊断与重构策略:Phase A 为何不够、四层病灶、锁定方向
- 日期: 2026-07-15
- 触发: Phase A(grounded selector)落地并生成 30 道 AR 题后,Claude 三 agent + Codex 独立质量抽检均判"未真正过关";遂精读已下载 6 篇论文,定位根因并锁定 v2 重构方向。
- 前序: [2026-07-14-ar30-too-easy-analysis.md](96.7% 太简单诊断)、[2026-07-14-hard-distractor-literature.md](首轮文献调研)、[2026-07-14-grounded-question-gen-phaseA-design.md](Phase A 设计)。
一、质量抽检结论:Phase A 部分奏效,但没解决真问题
对 Phase A 生成的 12 道新题 + 8 道旧 baseline 做了两次独立抽检:
| Claude 三 agent | Codex(独立) | |
|---|---|---|
| 负空间干扰项 | 基本消灭(12 道仅 1 处) | 减少但 grounding 不可审计 |
| 仍可 shortcut | 4/12 | 8/12 |
| 严格 grounded | 多数 | 仅 1/12 |
| 双正解高风险 | 3 处 | 4/12 |
机制层证据:干扰项视觉分落 [0.05,0.35] 甜区 90%——但这是 selector 用自己的 VLM 给自己打分(循环自证),Codex 一针见血:"视觉可信分包装过的、不可审计的近似答案"。
二、四层病灶(根因)
| 层 | 病 | 证据 |
|---|---|---|
| ① grounding 来源 | 用同一个 VLM 生成+打分,且是"生成式 judge 打分"而非跨模态度量 → 循环自证、不可审计 | 抽检;GroundAttack 对照 |
| ② 题型结构 | 1-vs-3 单共识 + 自由编辑天然可被:逐槽多数投票、最模糊/子串项获胜(A⊃B)、最长项获胜 | 抽检逐题 |
| ③ 歧义控制 | Phase A 松绑了 multi_true——方向反了,放进更多近双正解 | 抽检 4 道双正解 |
| ④ 对抗信号位置 | 只做后置过滤(Phase B);过滤天生分不清"难"和"歧义",且产量靠反复补生成 | AFLite 自认局限 |
三、文献回挖(6 篇,对症三缺口)
GroundAttack(grounding 的正解 + 关键纠偏)
- 三个独立冻结模型:Qwen2.5VL 描述 / DeepSeek-V3(纯文本 LLM)生成候选 / SigLIP(CLIP) 打分。生成候选的模型看不到视频,结构上无法自评。
- 打分是跨模态 embedding 相似度(候选文本嵌入 vs 真实帧视觉嵌入的 cos),不是 VLM 生成一个分。Clustering+CLIP:K-means 聚类 → 每簇取与真实帧 argmax。
- 纠偏:只把自评 VLM 换成第二个 VLM(MiniMax-M3)只解决"同模型循环",仍不是 GroundAttack 机制(那是 embedding 度量)。且 bge 是纯文本、算不了跨模态,跨模态必须 CLIP/SigLIP。
- GroundAttack 独立验证了"grounded",没独立验证"wrong"——这是它的短板,正好留给 MiniMax-M3 补。
TempCompass / VITATECS / Vinoground(题型 + 歧义)
- 放弃 1-vs-3,改对称 1-vs-1 对比对:VITATECS 五条约束(禁蕴含=杀子串、等信息量=杀最长项、只改单维);Vinoground 正负选项同词不同序(bag-of-words 相同 → 长度/具体度线索结构上不存在)+ 双向 AND 评分(问 A 问 B 都对才算,杜绝蒙)。
- text-only 盲答过滤:Vinoground 0 帧探针 / VITATECS NLI 蕴含过滤——去视频只喂选项,高于随机就剔。
- 歧义靠收紧不靠松绑:全用"人在环 + 一致性 κ + 高精度过滤器(宁杀错勿放歧义)"。VITATECS 原话"更在乎 precision 而非 recall"。
- 警钟:随机换词/名词替换干扰项极易被解(74.5–90.3%),动作反事实必须落在动词/事件结构 + 等信息量 + 禁蕴含。
AFLite / AdVQA(对抗信号位置)
- AFLite 作者自认:模型化过滤分不清"题难"和"题烂/歧义"(过滤后人类正确率反降)。我们的作弊者门是其单模型无集成弱化版,必然继承并放大盲点。
- AFLite 不解决产量,靠超大池剔剩 1/3 糊弄;无补生成。
- AdVQA 正解:对抗前移到生成端(出题当下让活模型试答)+ 独立于求解器的多裁判答案一致性门(10 人,<6 confident 或无共识→剔)。自动对抗(无一致性校验)会制造歧义/标签漂移——同我们盲点。
四、两个把方案串起来的洞察
- Phase B 翻转门 = Vinoground 双向对比:机制对,但用错层——应把"对称 before/after 对"做成生成格式,而非先生成 1-vs-3 再事后翻转检验。
- MiniMax-M3 定位不是 grounding scorer,是独立"错误性/歧义核验器":补 GroundAttack 缺的"wrong"验证 + 堵"歧义当难度"盲点。
五、锁定的 v2 重构方向(用户已拍板:三个都选治本重构)
| 岔路 | 决定 |
|---|---|
| 题型 | 全面转对称 1-vs-1 对比对(改 4 选项契约,评测/训练侧跟着动) |
| grounding | 引入独立 CLIP/SigLIP 依赖(跨模态 embedding 相似度,最贴 GroundAttack 原意) |
| 对抗位置 | 对抗信号前移到生成端(作弊者门降为第二道网;主信号生成时产生) |
目标架构(待 brainstorming 细化):
生成: 出"正解 + 单维反事实"对称对(等信息量/禁蕴含/尽量同词不同序)
grounding: 独立 CLIP/SigLIP 对真实帧算相似度选负项(不是 VLM 自评)
歧义门: MiniMax-M3 独立核验"确实错、非双正解" + NLI 禁蕴含 + text-only 盲答过滤(收紧)
对抗: 主信号前移生成端; 作弊者门 = 第二道网; 双向 AND 评分
下一步:brainstorming 定 question-gen v2 设计(重点解决:对比对如何进 inference/eval/training 的 4 选项契约、CLIP 适配器如何装配、生成端对抗的反馈环怎么设计、Phase A/B 既有代码如何取舍)→ Codex 审 → writing-plans → 实现。
相关
- 论文:
reference/papers-distractor-gen/(GroundAttack/TempCompass/VITATECS/Vinoground/AFLite/AdVQA) - 现有实现:
app/question_gen/distractor_selector.py(VLM 自评,待换 CLIP)、adversarial_filter.py(Phase B 翻转门,待前移为生成格式) - 独立 VLM:
.env的M3_VL_LLM_*(MiniMax-M3,异于生成用的 qwen3.6-plus)