# VideoMend: Mending Temporal Continuity in Video Reasoning ## 核心 Idea 整理(对照论文 + 代码) > **论文**:VideoMend: Mending Temporal Continuity in Video Reasoning > **投稿**:NeurIPS 2026 > **核心范式转变**:`sample-then-understand` → `sample-then-reconstruct-then-understand` --- ## 目录 1. [问题定义](#1-问题定义) 2. [核心洞见与范式转变](#2-核心洞见与范式转变) 3. [方法一:Ref-Delta Chain-of-Thought](#3-方法一ref-delta-chain-of-thought) 4. [方法二:数据构建(Data Construction)](#4-方法二数据构建data-construction) 5. [方法三:Delta-Mask GRPO(DM-GRPO)](#5-方法三delta-mask-grpodm-grpo) 6. [奖励函数完整设计](#6-奖励函数完整设计) 7. [训练全流程](#7-训练全流程) 8. [对比方法](#8-对比方法) 9. [评测结果](#9-评测结果) 10. [附录:核心符号速查](#10-附录核心符号速查) --- ## 1. 问题定义 ### 1.1 根本矛盾 > **video understanding semantically relies on temporal continuity, yet computational constraints mandate discrete sampling at the input.**(论文 §1) 由于计算开销,现有 Video LLM 一律采用**帧采样**(frame sampling):从连续视频 $\mathcal{V} = \{v(t)\}_{t=0}^T$ 中提取稀疏的 $N$ 帧作为输入: $$F = \{f_1, f_2, \ldots, f_N\}, \quad f_i = v(t_i), \quad 0 \leq t_1 < t_2 < \cdots < t_N \leq T$$ 这一设计在**输入层面**天然丢弃了帧间时序动态 $\delta_i$(即从 $v(t_i)$ 到 $v(t_{i+1})$ 的视觉变化),导致模型的推理空间仅覆盖 $N$ 个离散时间点的视觉内容,而 $\delta_i$ 在推理链 $z$ 中没有任何显式表示(论文 §3.1)。 ### 1.2 两类 Shortcut 行为 | Shortcut | 描述 | 典型例子 | |----------|------|---------| | **单帧偏差**(Single-frame Bias) | 从单帧显著物体推断答案 | 看到门 → 预测"开门",实际动作是"关门" | | **背景偏差**(Background Bias) | 推理锚定在静态场景背景上 | 看到厨房 → 预测"做饭",实际是"洗碗" | **三类帧间信息的丢失**(论文 §1): - 动作**方向性**(directionality):opening vs. closing - 运动**动态变化**(motion dynamics):accelerating vs. decelerating - 渐进式**状态转变**(gradual state transitions) --- ## 2. 核心洞见与范式转变 ### 2.1 关键问题 > **Can the reasoning structure itself reconstruct inter-frame temporal information, activating the model's ability to re-link discrete frames into a continuous temporal stream?**(论文 §1) 关键帧选取方法从**输入侧**优化,但无论如何选帧,模型收到的仍是离散快照,帧间变化在推理层仍是隐式的。 大规模视频-文本预训练已经赋予模型丰富的时序先验,**问题不在于模型不具备这种能力,而在于当前的推理范式没有激活它**。 ### 2.2 解决思路 不把采样帧当作独立快照处理,而是让模型在推理链中**主动选取关键时刻作为静态锚点(Reference),并对锚点之间的时间区间显式描述视觉变化(Delta)**,在推理层面弥补帧采样引入的信息缺口。Reference 和 Delta 的选定是灵活的,模型根据内容自主决定在哪些时刻落锚、哪些区间值得描述变化,而非机械地对每个采样帧逐一处理: ``` 旧范式:sample-then-understand ↓ 新范式:sample-then-reconstruct-then-understand ``` ### 2.3 三大贡献(论文 §1) 1. **Ref-Delta Chain-of-Thought**:在推理结构层面显式建模帧间时序变化,实现范式转变 2. **时序流数据构建**:用语义反义对(方向感知)+ 对称速度构造(动态感知)提供定向训练信号 3. **DM-GRPO**:通过帧掩码反事实验证 Delta 的视觉真实性,确保帧间变化建模来自视觉观察而非语言先验 --- ## 3. 方法一:Ref-Delta Chain-of-Thought ### 3.1 设计动机 在当前范式下,$\delta_i$(采样帧间的时序动态)在推理链 $z$ 中没有任何显式表示。Ref-Delta CoT 的核心目标是:**将推理链结构本身改造为时序重建的载体**,使模型能在推理层面对帧间时序动态进行显式建模。 ### 3.2 推理结构 Ref-Delta CoT 将推理链 $z$ 组织为三类组件的交替结构(论文 §4.1): | 组件 | 内容 | 关键特性 | |------|------|---------| | **Reference** | 对某个时刻视觉内容的完整静态描述(主体位置/姿态/空间关系) | **灵活选取**:模型自主决定在哪些时刻落锚,无需覆盖每个采样帧 | | **Delta** | 对某段时间区间内视觉变化的显式描述(动作方向/运动速度/状态转换) | **灵活跨度**:时间区间可横跨多个采样帧,模型自主决定哪段区间值得描述 | | **Reasoning Summary** | 整合所有 Reference-Delta 对,推导最终答案 | 完整变化链的时序闭合 | **灵活性是关键**:Reference 的锚定时刻和 Delta 的时间区间由模型根据视频内容自主决定,而非强制映射到每个采样帧。这使模型能将注意力集中在语义变化显著的区间,对变化平缓的区段可以跳过或用 "Negligible change" 标注。 ### 3.3 格式规范(代码:`SFT/sft_video.py`) ``` Reference frame at : [该帧完整静态描述,主体/姿态/空间关系] From HH:MM:SS.m - HH:MM:SS.m, [帧间视觉变化:动作方向/运动速度/状态转换,可标注 "Negligible change"] Reference frame at : [下一关键帧描述] From HH:MM:SS.m - HH:MM:SS.m, [...] ...(交替重复)... Reasoning Summary: [整合完整变化链,推导最终答案] X ``` ### 3.4 论文完整示例(论文 Figure 1) **问题**:What happens to the door during the video? **Ground Truth**:The door is first closed, then opened again, and finally closed for a second time. ``` VideoMend: Reference frame at : A person stands inside a dimly lit entryway, silhouetted against the bright exterior visible through an open doorway. The door itself is swung wide open to the right, and the person is holding a long-handled tool near the threshold. From 00:00:00.5 - 00:00:12.9, the person sweeps the floor area immediately inside the open doorway, moving the tool back and forth while the door remains in the fully open position. Reference frame at : The person has finished sweeping near the threshold, stands upright, and begins to reach for the door handle with their left hand. The door is still wide open. From 00:00:12.9 - 00:00:15.9, the person pulls the door inward, causing it to swing from the fully open position to a fully closed position, blocking the view of the outside street and car. ... Reasoning Summary: The video starts with the door open. The person closes it, sweeps, opens it again, sweeps, and finally closes a second time before leaving the area. The sequence is Open → Closed → Open → Closed. During the video, the door is first closed, then opened again, and finally closed for a second time. ``` ### 3.5 核心价值 - **无 Delta 时**:模型只能感知每帧门的静态状态,无法捕捉多次开关门的完整时序过程 - **有 Delta 时**:完整状态链 Open→Closed→Open→Closed 从 Delta 中显式构建出来 推理链 $z$ 从"仅含离散帧描述的序列"扩展为"显式包含帧间时序动态 $\delta_i$ 的结构化推理链"。 --- ## 4. 方法二:数据构建(Data Construction) ### 4.1 设计原则(论文 §4.2) Ref-Delta CoT 提供了时序流重建的推理结构,而这个流承载着**变化的方向(direction)**、**变化的节奏(dynamics/pace)**以及**渐进式状态转变**。忠实重建 $\delta_i$ 要求模型能准确感知方向和动态。 大规模视频-文本预训练已赋予模型丰富的时序先验,SFT 的关键作用是通过**定向信号激活这些潜在能力**。 **数据组成**: - 基础训练数据:~10k 条真实视频 QA(Ref-Delta 格式标注)——足以教会推理结构,但缺乏方向/动态的定向信号 - 定向合成数据:~2k 条(约占 SFT 总数据的 **~17%**)——沿方向感知和动态感知两个维度构造 ### 4.2 方向感知数据(Direction Perception) **目标**:训练模型感知 $\delta_i$ 的变化方向,涵盖空间运动方向、状态转变方向、事件时序顺序(论文 §4.2.1)。 #### A. 语义反义对(Antonymous Semantic Pairs) **来源**:Chirality-in-Action 数据集(SSv2 / EPIC-Kitchens / Charades) **构造方式**: - 找到同一场景中方向相反的动作对(手性对),如: - `opening door` ↔ `closing door` - `picking up` ↔ `putting down` - `moving left` ↔ `moving right` - `filling` ↔ `emptying` - 两段视频**时间拼接**(temporal concatenation)或**空间拼接**(spatial concatenation),位置随机 **设计关键**:两段视频共享**完全相同的静态场景语义**,迫使模型依靠 Delta 中的方向信息而非 Reference 中的场景线索(论文 §4.2.1)。 **贡献**:~880 条 QA(代码:`data_preparation/make_chiral_pairs.py`) #### B. 正反向播放 QA(Forward/Reverse Playback) - 同一视频生成正向/反向播放对,1:1 平衡 - 覆盖**时序顺序**维度 - 直接考察模型对事件发展顺序的感知 ### 4.3 动态感知数据(Dynamics Perception) **目标**:训练模型感知 $\delta_i$ 的**变化节奏**(pace of change)(论文 §4.2.2)。 **核心设计:对称速度构造(Symmetric Speed Constructions)** | 视频类型 | 语义特征 | 速度变化 | 视频来源 | |---------|---------|---------|---------| | 短视频(简单语义) | 时长 3~15s,单一动作 | + **1/3× 减速** | STAR / Charades / perception_test | | 长视频(复杂语义) | 时长 10~60s,多步骤 | + **3× 加速** | ActivityNet / YouTube / YouCook / NextQA | **为什么要"对称构造"**(论文 §4.2.2): > 刻意打破**语义复杂度与速度之间的虚假相关性**,防止模型学到"复杂 = 慢,简单 = 快"的 shortcut。 - 简单动作减速:强制使相邻帧高度相似,直接对抗**特征平滑陷阱** - 复杂动作加速:强制使相邻帧跳跃较大,训练模型不依赖逐帧平滑推断 **拼接方式**:原速视频 + 速度变化视频,位置随机,要求模型判断哪个是原速。辅以单视频速度判断 QA 作为补充。 **贡献**:~800 条 QA(代码:`data_preparation/make_speed_pairs.py`) ### 4.4 时间戳叠加 所有视频均叠加 `HH:MM:SS` 格式时间戳,与 Ref-Delta CoT 中的时序标注精度对齐(论文 §4.2.2)。 ### 4.5 GRPO 合并数据集 | 数据源 | 条数 | 来源 | |--------|------|------| | Video-R2 GRPO 全集 | ~4804 | Video-R2 GRPO dataset | | 手性动作对(方向感知) | ~880 | Chirality-in-Action | | 速度对比(动态感知) | ~800 | 自构建 | | SSv2 velocity_pair | ~1430 | Video-R1-260k 中提取 | | **合计** | **~7914** | `build_grpo_dataset.py` | --- ## 5. 方法三:Delta-Mask GRPO(DM-GRPO) ### 5.1 SFT 的根本局限(论文 §4.3) SFT 训练后,模型学会了输出 Ref-Delta 格式的推理链。然而: > SFT only teaches the model "how to write" through imitation, without guaranteeing that Deltas are grounded in visual observation. The model may exploit language priors, fabricating plausible-looking Deltas solely from the static scene descriptions in References. **"幻觉 Delta"的危险性**: - 格式正确(符合 Ref-Delta 规范) - 答案可能仍然正确(语言先验足够强) - **既无法被格式检查发现,也无法被标准 GRPO 的准确率奖励发现** ### 5.2 反事实帧掩码(Counterfactual Frame Masking) **核心思想**(论文 §4.3): > If a Delta genuinely reflects visual observation of $\delta_i$, then removing its corresponding frames should affect $\pi_\theta$'s reasoning performance. **具体操作**(论文 §4.3,代码:`RL/trainer/grpo_trainer.py`): 对每个训练样本 $(F, q)$,随机选取推理链 $z$ 中的**一个 Delta**,定位其时间区间 $[s_d, e_d]$ 内的采样帧索引: $$\mathcal{I}_d = \{k : \lfloor t_k \rfloor \in [\lfloor s_d \rfloor, \lfloor e_d \rfloor]\}$$ 对 $\{f_k\}_{k \in \mathcal{I}_d}$ **像素全部置零**,但**保留时间位置**,构造掩码视频 $\tilde{F}$。 **时间位置保留的重要性**:确保 $\pi_\theta$ 感知到"这里有一帧,但内容不可见",而非"这里没有帧"。 ```python # 代码实现(grpo_trainer.py) if self.delta_mask and inputs[0].get('mask_patterns'): pattern = random.choice(inputs[0]['mask_patterns']) masked_video = video_inputs[0].clone() for idx in pattern['zero_frame_indices']: if idx < masked_video.size(0): masked_video[idx] = 0 # 像素置零,保留时间位置 shuffled_video_inputs = [masked_video] ``` 将原始视频 $(F, q)$ 和掩码视频 $(\tilde{F}, q)$ 同时送入 $\pi_\theta$,采样两组回答: - **原始组**(origin group):$\{o_i\}_{i=1}^G$ - **掩码组**(delta-masked group):$\{\tilde{o}_i\}_{i=1}^{\tilde{G}}$ 通过比较两组推理性能,验证 Delta 的视觉真实性。 ### 5.3 关键 Delta 判定与 Oracle 预标注 **关键问题**:反事实对比并不总能产生有效信号(论文 §4.3): - 若被掩帧**不关键**:性能差距反映 $\pi_\theta$ 对这些帧的真实依赖程度 → **反事实检验有效** - 若被掩帧**关键**(对正确回答不可缺少):性能下降是信息缺失的必然结果,而非视觉依赖的证据 → **反事实检验无效** **解决方案:离线 Oracle 预标注流水线** 使用**显著强于** $\pi_\theta$ 的 Oracle 模型(如 Qwen2.5-VL-72B)对每条数据**预先标注**: ```json { "mask_patterns": [ { "zero_frame_indices": [3, 4, 5], "time_range": "0.3 - 0.6", "oracle_correct": true // Oracle 在掩码视频上仍能答对 → 非关键帧, c=1 }, { "zero_frame_indices": [8, 9], "time_range": "0.8 - 1.0", "oracle_correct": false // Oracle 也答错 → 关键帧, c=0 } ] } ``` | `oracle_correct` | 含义 | 帧的性质 | 检验有效性 | 标记 | |-----------------|------|---------|----------|------| | `True` | Oracle 在 $\tilde{F}$ 上仍答对 | **非关键帧**,答案可从其余帧推出 | **有效** | $c=1$ | | `False` | Oracle 在 $\tilde{F}$ 上也答错 | **关键帧**,这些帧对答案至关重要 | **无效** | $c=0$ | ### 5.4 奖励设计(论文 §4.3 公式(1)(2)) 设 $\tilde{p}$ 为掩码组中回答正确的比例,Delta-Mask 奖励 $r_{\text{dm}}$ 定义为: $$r_{\text{dm}} = \begin{cases} \alpha, & c=1 \text{ 且 } \tilde{p} \geq \tau \\ \alpha + \gamma, & c=1 \text{ 且 } \tilde{p} < \tau \\ 0, & c=0 \end{cases} \tag{1}$$ **$r_{\text{dm}}$ 仅施加于原始组中回答正确的回答**,每个 $o_i$ 的最终奖励为: $$R_i = \begin{cases} r_i + r_{\text{dm}}, & o_i \text{ 答对} \\ r_i, & \text{否则} \end{cases} \tag{2}$$ 基础奖励:$r_i = r_{\text{acc}} + \lambda \cdot r_{\text{ts}}$ **参数设置**(论文 §4.3):$\alpha = 0.3,\ \gamma = -0.2,\ \tau = 0.5,\ \lambda = 0.2$ **奖励直觉解释**: | 情况 | $r_{\text{dm}}$ | 直觉 | |------|----------------|------| | $c=1$,$\tilde{p} \geq \tau$(掩码后多数仍答对) | $+0.3$ | Delta 视觉真实,模型不过度依赖被掩帧,行为合理 | | $c=1$,$\tilde{p} < \tau$(掩码后多数答错) | $+0.1$($0.3-0.2$) | 仍有小奖励,但模型过度依赖了那些其实不必要的帧 | | $c=0$(被掩帧关键) | $0$ | 无法区分好坏,中性处理 | ### 5.5 优势计算与策略优化 优势在**原始组内部**计算(论文 §4.3): $$A_i = \frac{R_i - \text{mean}(\{R_j\}_{j=1}^G)}{\text{std}(\{R_j\}_{j=1}^G)}$$ 策略优化遵循标准 GRPO,参考策略为 $\pi_{\text{ref}}$。 --- ## 6. 奖励函数完整设计 ### 6.1 总奖励组成 $$r_i = r_{\text{acc}} + \lambda \cdot r_{\text{ts}}, \quad \lambda = 0.2$$ | 组成 | 范围 | 说明 | |------|------|------| | $r_{\text{acc}}$ | $\{0, 1\}$ | 答案准确率(主奖励):多选题/数值/自由问答等 | | $r_{\text{ts}}$ | $[0, 1]$ | 时间戳物理合理性(门控项) | | $r_{\text{dm}}$ | $\{0, \alpha, \alpha+\gamma\}$ | Delta-Mask 奖励(核心创新,仅对答对回答施加) | ### 6.2 时间戳奖励 $r_{\text{ts}}$(代码:`RL/grpo.py`) 三项物理约束检查: - **可解析性**(parseability):时间戳格式正确、可解析 - **单调递增**(monotonic increase):后续时间戳不早于前面 - **时长约束**(duration bounds):不超过视频总时长 ### 6.3 格式奖励(`sf_format_reward`,代码:`RL/grpo.py`) Ref-Delta 结构完整性,五项子奖励: | 子项 | 检查内容 | 权重 | |------|---------|------| | F1 | `...` 结构存在 | 0.15 | | F2 | `...` 非空 | 0.15 | | F3 | 至少 1 个参考帧 `