Download idea/README.md from ZWJ666/VideoMend: direct link, hf CLI and curl.
- Browser
- Download file 29.4 kB
-
https://huggingface.co/ZWJ666/VideoMend/resolve/main/idea/README.md
- Command line
-
hf download hf://ZWJ666/VideoMend/idea/README.md
-
curl -L -o README.md https://huggingface.co/ZWJ666/VideoMend/resolve/main/idea/README.md
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
ç®åœ
- é®é¢å®ä¹
- æ žå¿æŽè§äžèåŒèœ¬å
- æ¹æ³äžïŒRef-Delta Chain-of-Thought
- æ¹æ³äºïŒæ°æ®æå»ºïŒData ConstructionïŒ
- æ¹æ³äžïŒDelta-Mask GRPOïŒDM-GRPOïŒ
- å¥å±åœæ°å®æŽè®Ÿè®¡
- è®ç»å šæµçš
- å¯¹æ¯æ¹æ³
- è¯æµç»æ
- éåœïŒæ žå¿ç¬Šå·éæ¥
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$ åž§äœäžºèŸå ¥ïŒ
è¿äžè®Ÿè®¡åšèŸå ¥å±é¢å€©ç¶äž¢åŒäºåž§éŽæ¶åºåšæ $\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ïŒ
- Ref-Delta Chain-of-ThoughtïŒåšæšçç»æå±é¢æŸåŒå»ºæš¡åž§éŽæ¶åºååïŒå®ç°èåŒèœ¬å
- æ¶åºæµæ°æ®æå»ºïŒçšè¯ä¹åä¹å¯¹ïŒæ¹åæç¥ïŒ+ 对称é床æé ïŒåšææç¥ïŒæäŸå®åè®ç»ä¿¡å·
- 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ïŒ
<think>
Reference frame at <time>HH:MM:SS.m</time>: [è¯¥åž§å®æŽéææè¿°ïŒäž»äœ/å§¿æ/空éŽå
³ç³»]
From <time_range>HH:MM:SS.m - HH:MM:SS.m</time_range>,
<delta>[åž§éŽè§è§ååïŒåšäœæ¹å/è¿åšé床/ç¶æèœ¬æ¢ïŒå¯æ 泚 "Negligible change"]</delta>
Reference frame at <time>HH:MM:SS.m</time>: [äžäžå
³é®åž§æè¿°]
From <time_range>HH:MM:SS.m - HH:MM:SS.m</time_range>,
<delta>[...]</delta>
...ïŒäº€æ¿éå€ïŒ...
Reasoning Summary: [æŽå宿ŽååéŸïŒæšå¯Œæç»çæ¡]
</think>
<answer>X</answer>
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: <think>
Reference frame at <time>00:00:00.5</time>: 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 <time_range>00:00:00.5 - 00:00:12.9</time_range>, <delta>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</delta>.
Reference frame at <time>00:00:12.9</time>: 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 <time_range>00:00:12.9 - 00:00:15.9</time_range>, <delta>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</delta>.
...
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.
</think>
<answer>During the video, the door is first closed, then opened again, and
finally closed for a second time.</answer>
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 doorpicking upâputting downmoving leftâmoving rightfillingâ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]$ å çéæ ·åž§çŽ¢åŒïŒ
对 ${f_k}_{k \in \mathcal{I}_d}$ åçŽ å šéšçœ®é¶ïŒäœä¿çæ¶éŽäœçœ®ïŒæé æ©ç è§é¢ $\tilde{F}$ã
æ¶éŽäœçœ®ä¿ççéèŠæ§ïŒç¡®ä¿ $\pi_\theta$ æç¥å°"è¿éæäžåž§ïŒäœå 容äžå¯è§"ïŒèé"è¿é没æåž§"ã
# 代ç å®ç°ïŒ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ïŒå¯¹æ¯æ¡æ°æ®é¢å æ æ³šïŒ
{
"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}}$ ä» æœå äºåå§ç»äžåçæ£ç¡®çåçïŒæ¯äžª $o_i$ çæç»å¥å±äžºïŒ
åºç¡å¥å±ïŒ$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ïŒïŒ
çç¥äŒåéµåŸªæ å GRPOïŒåèçç¥äžº $\pi_{\text{ref}}$ã
6. å¥å±åœæ°å®æŽè®Ÿè®¡
6.1 æ»å¥å±ç»æ
| ç»æ | èåŽ | 诎æ |
|---|---|---|
| $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 | <think>...</think> ç»æååš |
0.15 |
| F2 | <answer>...</answer> é空 |
0.15 |
| F3 | è³å° 1 䞪åèåž§ <time> æ çŸ |
0.25 |
| F4 | è³å° 1 䞪 <time_range>+<delta> é
对 |
0.25 |
| F5 | æ«å°Ÿæšçæ»ç»æ®µååš | 0.20 |
éšæ§é»èŸïŒæ ŒåŒå¥å± < 0.4 æ¶ïŒ$r_{\text{ts}}$ å $r_{\text{dm}}$ èªåšæž é¶ïŒé²æ¢æ ŒåŒæ··ä¹±æ¶çå¥å±åªå£°ã
7. è®ç»å šæµçš
ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
â æ°æ®æå»ºé¶æ®µ â
ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ€
â åºç¡çå®è§é¢ QAïŒRef-Delta æ ŒåŒæ æ³šïŒ ~10k æ¡ â
â ââ æ¹åæç¥ïŒææ§åä¹å¯¹ + æ£ååææŸ ~880 æ¡ â
â â ââ make_chiral_pairs.py â
â ââ åšææç¥ïŒå¯¹ç§°é床æé ïŒ1/3Ãåé/3Ãå éïŒ ~800 æ¡ â
â ââ make_speed_pairs.py â
â å计 SFT æ°æ®ïŒ~12kïŒåææ°æ®å æ¯ ~17% â
â â
â GRPO æ°æ®ïŒVideo-R2(4804) + ææ§(880) + é床(800) + SSv2(1430) â
â ââ build_grpo_dataset.py â grpo_combined_dataset.json â
ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
â
ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
â SFT é¶æ®µ â
ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ€
â åºç¡æš¡åïŒQwen2.5-VL-7B-Instruct â
â çæ¬ AïŒv9ïŒïŒSFT/sft_video.pyïŒæ¶éŽæ³ç²ŸåºŠ 0.1sïŒHH:MM:SS.mïŒ â
â çæ¬ BïŒv5eïŒïŒSFT/sft_video_v5e.pyïŒæ¶éŽæ³æŽç§ç²ŸåºŠ â
â â
â åŠä¹ ç®æ ïŒèŸåºç¬Šå Ref-Delta CoT è§èçæšçéŸ â
â ââ ReferenceïŒéæéç¹æè¿° â
â ââ DeltaïŒåž§éŽåšæååæè¿° â
â ââ Reasoning SummaryïŒæšçæ»ç» â
â â
â èŸåºïŒSFT-v5e-32f æ SFT-v9-32f â
ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
â
ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
â Oracle 颿 æ³šé¶æ®µ â
ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ€
â Oracle æš¡åïŒQwen2.5-VL-72BïŒçŠ»çº¿æ æ³šæ¯æ¡ GRPO æ°æ®ïŒ â
â ââ 仿šçéŸäžéæºéå DeltaïŒæåæ¶éŽåºéŽ [s_d, e_d] â
â ââ å®äœåž§çŽ¢åŒ I_dïŒåçŽ çœ®é¶ïŒæé æ©ç è§é¢ FÌ â
â ââ Oracle åš FÌ äžåçé®é¢ â
â ââ è®°åœ oracle_correctïŒTrue(c=1ïŒéå
³é®) / False(c=0ïŒå
³é®) â
ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
â
ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
â DM-GRPO é¶æ®µ â
ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ€
â åå§åïŒSFT æš¡åïŒÏΞïŒ+ åèçç¥ïŒÏrefïŒ â
â èæ¬ïŒRL/grpo.pyïŒdelta_mask=TrueïŒ â
â RL/trainer/grpo_trainer.py â
â â
â æ¯äžªè®ç»æ¥ïŒ â
â 1. åå§è§é¢ (F,q) â ÏΞ éæ · G 䞪åç {oi} â
â 2. éæºé mask_patternïŒåž§çœ®é¶ â æ©ç è§é¢ FÌ â
â 3. æ©ç è§é¢ (FÌ,q) â ÏΞ éæ · GÌ äžªåç {õi} â
â 4. è®¡ç® raccïŒåå§ç»åç¡®çïŒãrtsïŒæ¶éŽæ³åçæ§ïŒ â
â 5. æ ¹æ® oracle_correct å pÌ è®¡ç® rdm â
â 6. Ri = racc + 0.2*rts + rdmïŒä»
对 oi ç对çåçæœå rdmïŒ â
â 7. Ai = (Ri - mean) / stdïŒæ å GRPO æŽæ° â
â â
â å
³é®åæ°ïŒÎ±=0.3, γ=-0.2, Ï=0.5, λ=0.2 â
â èŸåºïŒDeltaMask-GRPO-v5e æš¡å â
ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
â
ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
â è¯æµé¶æ®µ â
ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ€
â èæ¬ïŒEval/eval.py â
â åºåïŒTempCompass + MVBench â
ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
8. å¯¹æ¯æ¹æ³
8.1 T-GRPOïŒVideo-R1ïŒNeurIPS 2025ïŒ
- æ¶åºæ°åšïŒéæºæä¹±åž§åºïŒRandom Temporal ShufflingïŒ
- å¥å±ïŒæä¹±è§é¢äžç对é¢å€ $+0.3$ïŒçé $0$
- å±éïŒéæºæä¹±åªæ¯"ç Žåæ¶åº"ïŒäžèœé对æ§å€ç°åéè§é¢çç¹åŸå¹³æ»æåºïŒäžæ æ ŒåŒçºŠæå Delta ç宿§éªè¯
8.2 SF-GRPOïŒåèå GRPOïŒæ¬é¡¹ç®æ©ææ¢çŽ¢ïŒ
- æ¶åºæ°åšïŒ$\alpha$-blending åž§æ··å $$\tilde{f}i = \alpha \cdot f_i + (1-\alpha) \cdot \tilde{f}{i-1}, \quad \alpha = 0.5$$
- å¥å±ïŒäžçº§äžèŽæ§å¥å±ïŒorig对+smooth对: +0.3ïŒorig对+smoothé: +0.1ïŒorigé: 0ïŒ
- äŒäº T-GRPOïŒèœç²Ÿåå€ç°åéè§é¢çç¹åŸå¹³æ»ææ
- å±éïŒæ··åæäœæ¹åè§é¢è¯ä¹ïŒåæ ·æ Delta ç宿§éªè¯æºå¶
8.3 DM-GRPO çè¿æ¥
| 绎床 | T-GRPO | SF-GRPO | DM-GRPO |
|---|---|---|---|
| æ¶åºæ°åšæ¹åŒ | éæºåž§æä¹± | åž§å ææ··å | ç®æ 垧眮é¶ïŒåäºå®ïŒ |
| æšçæ ŒåŒçºŠæ | æ | æ | Ref-Delta CoT |
| Delta ç宿§éªè¯ | æ | æ | Oracle åäºå®æ£éª |
| æ¶éŽæ³å¥å± | æ | æ | æïŒ$r_{\text{ts}}$ïŒ |
| ä¿¡å·æ¥æºå¯è§£éæ§ | äœ | äž | é«ïŒå¯è¿œæº¯å°å ·äœ DeltaïŒ |
代ç å®ç°å¯¹æ¯ïŒRL/trainer/grpo_trainer.pyïŒïŒ
if self.delta_mask and inputs[0].get('mask_patterns'):
# DM-GRPOïŒOracle颿 泚垧ïŒåçŽ çœ®é¶ïŒåäºå®éªè¯
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]
elif self.sf_temporal:
# SF-GRPOïŒÎ±-blendingåž§æ··å
video_tensor = video_inputs[0].clone()
alpha = self.smoothing_alpha
for i in range(1, video_tensor.size(0)):
video_tensor[i] = alpha * video_tensor[i] + (1-alpha) * video_tensor[i-1]
video_tensor = video_tensor.round()
shuffled_video_inputs = [video_tensor]
else:
# T-GRPOïŒéæºåž§æä¹±
indices = torch.randperm(video_inputs[0].size(0))
shuffled_video_inputs = [video_inputs[0][indices]]
9. è¯æµç»æ
9.1 TempCompassïŒmean_accïŒ
| æš¡å | rep=1.0 | rep=1.1 | 倿³š |
|---|---|---|---|
| Qwen2.5-VL-7B-InstructïŒåºç¡ïŒ | 0.7565 | 0.7566 | baseline |
| SFT-v5e-32fïŒRef-Delta SFTïŒ | 0.7255 | 0.7194 | SFT 蜻埮äžé |
| SFT-v5e-clean-32f | 0.7154 | 0.7103 | â |
| SFT-v5e-format-fixed-32f | 0.7129 | 0.7134 | â |
| DM-GRPO-v5eïŒRLïŒæŽç§ïŒ | 0.6554 | 0.7203 | rep=1.0 æ ŒåŒå Œå®¹é®é¢ |
| DM-GRPO-v5ïŒSFT-v9ïŒ16åž§ïŒ | â | 0.7290 | â |
| DM-GRPO-v4ïŒSFT-v9ïŒ32åž§ïŒ | â | 0.7349 | åœåæå¥œ RL çæ¬ |
9.2 å ³é®è§å¯
- SFT å蜻埮äžéïŒåŒå ¥ Ref-Delta æ ŒåŒå TempCompass 纊é 3ppïŒ~75.6% â ~72.5%ïŒïŒå¯èœå äžºæ ŒåŒçºŠæéå¶äºæš¡åçèªç±æšç
- DM-GRPO ææéšåæ¢å€ïŒRL è®ç»å v4 ååè³ 73.49%ïŒè¯Žæåäºå®å¥å±ä¿¡å·ææ£åäœçš
- åž§æ°åœ±åææŸïŒ32åž§ïŒv4: 73.49%ïŒ> 16åž§ïŒv5: 72.90%ïŒ
- rep åæ°æææ§ïŒDM-GRPO-v5e åš rep=1.0 æ¶éª€éè³ 65.5%ïŒrep=1.1 ååå° 72.0%ïŒåæ æ ŒåŒå Œå®¹æ§é®é¢åŸ è§£å³
9.3 åŸ è§£å³é®é¢
- SFT é¶æ®µ TempCompass äžé 3pp çæ ¹å åæïŒæ ŒåŒçºŠæ vs æ°æ®ååžïŒ
- DM-GRPO åš MVBench çå ¶ä»åºåäžç衚ç°
- rep åæ°å¯¹æ ŒåŒå Œå®¹æ§çç³»ç»æ§æµè¯
- Oracle 颿 泚莚éè¯äŒ°ïŒåç¡®ç/èŠççïŒ
- DM-GRPO äž Figure 1 æç€ºå®æŽæšçéŸç莚éåæ
10. éåœïŒæ žå¿ç¬Šå·éæ¥
| ç¬Šå· | å®ä¹ |
|---|---|
| $\mathcal{V} = {v(t)}_{t=0}^T$ | è¿ç»è§é¢ |
| $F = {f_1, \ldots, f_N}$ | éæ ·åž§éå |
| $\delta_i$ | åž§éŽæ¶åºåšæïŒ$v(t_i) \to v(t_{i+1})$ çè§è§ååïŒ |
| $z$ | æšçéŸïŒchain of reasoningïŒ |
| $\pi_\theta$ | è®ç»æš¡å |
| $\pi_{\text{ref}}$ | åèçç¥ïŒGRPO åºåïŒ |
| $\tilde{F}$ | æ©ç è§é¢ïŒè¢«æ©åž§åçŽ çœ®é¶ïŒæ¶éŽäœçœ®ä¿çïŒ |
| $\mathcal{I}_d$ | Delta æ¶éŽåºéŽ $[s_d, e_d]$ å çéæ ·åž§çŽ¢åŒéå |
| $c$ | Oracle æ æ³šïŒ1=éå ³é®åž§ïŒ0=å ³é®åž§ïŒ |
| $\tilde{p}$ | æ©ç ç»äžåçæ£ç¡®çæ¯äŸ |
| $r_{\text{acc}}$ | çæ¡åç¡®çå¥å± $\in {0,1}$ |
| $r_{\text{ts}}$ | æ¶éŽæ³ç©çåçæ§å¥å± $\in [0,1]$ |
| $r_{\text{dm}}$ | Delta-Mask å¥å± $\in {0, \alpha, \alpha+\gamma}$ |
| $\alpha=0.3,\ \gamma=-0.2,\ \tau=0.5,\ \lambda=0.2$ | DM-GRPO è¶ åæ° |