打开网易新闻 查看精彩图片

你有没有试过把一段视频倒放给别人看,问他"这个动作是在往前还是往后"?正常人几乎是瞬间反应的。手一松,杯子摔碎,倒放就是碎片飞回去拼成杯子,谁都看得出来。

但如果把这段视频喂给一个号称能"理解视频"的AI大模型,再把同一段视频倒着放一遍喂给它,问它同样的问题,会发生什么?

论文里给了一个真实的例子。问题是"雪花颗粒正在凝固吗",正着放的视频,模型从头到尾都回答"否",答对了。倒着放的视频,按理说答案应该翻转,可模型最终给出的答案还是"否"。

这不是偶然失误。研究团队发现,这种现象在多个主流视频大模型上普遍存在,翻转视频的帧顺序,居然骗不过模型,模型压根没意识到时间轴被倒过来了。

这篇来自韩国科学技术院(KAIST)的论文,标题叫《Before It Fades》,直译是"趁它还没褪色"。听起来有点文艺,但背后藏着一个挺扎实的技术侦探故事:他们没有满足于"AI不会时序推理"这个表面结论,而是一层一层扒开模型内部,想搞清楚问题到底卡在哪个环节。

模型到底"知道"还是"不知道"

先把问题说清楚。

视频大模型*:一种能接收视频帧序列作为输入,并用语言模型的推理能力来回答关于视频内容问题的AI系统,比如你问它"视频里的人在往上跳还是往下跳"。

这类模型的工作方式,简单说就是把视频拆成一张张图片,按时间顺序喂给模型,再加上文字问题,模型读完所有信息后给出一个答案。听起来很合理,模型应该能从帧与帧之间的变化里读出"时间方向"这个信息。

但过去几年的研究反复发现同一个尴尬事实:这些模型在时序推理上普遍很弱。把视频倒放,或者把帧的顺序打乱,模型给出的答案往往纹丝不动,好像完全没注意到发生了什么。

过去解决这个问题的思路,基本分两条路。一条是靠训练,专门设计让模型学会分辨时间方向的训练任务,代价是要花大量计算资源重新训练模型。另一条是在推理时做一些"事后补救",比如对比模型看正常视频和看扭曲视频时输出的概率分布差异,然后用这个差异去修正最终答案。

对比解码*:一种推理时技术,通过比较模型对原始输入和某种"扭曲"输入的输出概率分布之差,来抑制模型可能产生的错误倾向。

这两条路有一个共同的盲点:它们都把"模型不懂时序"当成一个既定事实去绕开,没有人真正打开模型内部,问一句"这个信息到底有没有在模型里面出现过,出现在哪儿,后来又去哪了"。

这篇论文的研究者们换了个角度。他们注意到一个细节:如果只看模型的中间层,而不是最终输出层,用一种叫"logit lens"的技术去窥探中间层的"预判",会发现倒放视频在某个中间层,其实短暂地给出了正确答案。是后面的层把它又翻转回了错误答案。

logit lens*:一种可解释性工具,把模型某一层的中间表示直接投影到词汇表空间,看看"如果现在就输出,模型会倾向说什么",从而窥探模型在不同深度的阶段性判断。

这个发现像是在一个长长的接力赛里,发现中间某一棒选手其实已经跑对了方向,但传到最后一棒的时候,方向又被带偏了。问题不是"没人跑对过",而是"对的方向没能传到终点"。

这就带出了整篇论文的核心问题:时序信息到底在模型的哪一层被捕捉到,又是怎么在后续层里一点点消失的?

给"时序感"画一张体温曲线

要回答这个问题,研究者设计了一个挺巧妙的测量方法。

他们拿一段视频V,再做一个一模一样但帧顺序倒过来的版本,记作V。这两个输入除了时间轴方向不一样,画面内容、提问内容全都一致。然后分别喂给模型,在每一层都记录下模型对最后一个词(也就是即将给出答案的那个位置)的内部表示,记作正向的h_fwd和倒放的h_rev。

这里要解释一下为什么只看"最后一个词"的位置。

因果注意力*:语言模型里常见的一种机制,规定每个词只能"看到"它前面的词,不能看到后面的词。因为这个规则,序列里最后一个词的位置是唯一能同时接收到前面所有视觉信息和文字信息的位置,它的内部表示天然就是整段输入信息的"汇总点"。

研究者把这两个表示的差值叫做时间divergence向量(论文里写作τ_l),再除以正向表示的长度做归一化,得到一个标量,叫归一化时间divergence,写作τ_l。这个数字简单理解就是:在第l层,如果把视频倒过来放,模型内部的"想法"改变了多少。

如果这个数字一直很小,说明模型压根没在意时间方向。如果这个数字很大,说明模型内部的表示确实因为时间方向不同而产生了明显差异。

他们在三个结构完全不同的视频大模型上(Qwen2.5-VL-7B、Qwen3-VL-8B、InternVL2.5-8B)做了这个测量,用的是TempCompass这个专门考察时序理解的基准测试集里的50对正放/倒放视频。

结果出来一个相当一致的曲线形状:在模型的前面几层,这个divergence数值很低,几乎没什么变化,说明模型还在"消化"输入,没对时间方向做出反应。到了中间偏后的层,数值突然蹿升,在中段到偏后的某一层达到峰值。过了这个峰值之后,数值又一路往下掉,到最后几层,几乎回落到起点附近的水平。

三个架构完全不同的模型,用的视觉编码器不同、位置编码方式不同、训练方式也不同,却都呈现出这同一种"先升后降"的曲线形状。这种跨架构的一致性,说明这不是某个模型的个别毛病,而是视频大模型这类架构里普遍存在的一种计算规律。

这就好比给不同品牌、不同配方的发酵面包都测体温曲线,发现它们都是先慢慢升温,到某个阶段突然蹿高,然后又慢慢降下来。配方不同,曲线形状却惊人地相似,这说明背后有一个更底层的共同机制在起作用,而不是某一家做法特殊。

这张"体温曲线"回答了论文标题里"fade(褪色)"这个词的来源:模型确实"学到"过时间信息,只是这个信息像显影液里的照片,刚显出来的时候清清楚楚,但如果不及时定影,过一会儿就慢慢褪色,到最后几乎看不出来了。

这个峰值,到底是不是专门为"时间"准备的

光看到一条曲线还不够。研究者接着做了一个更严谨的验证:这个峰值,到底是因为模型在专门处理"时间方向"这件事,还是随便换个问题,曲线都会这样?

他们固定视频对不变,只换提的问题。设计了三种情况:第一种是时序问题,答案会随着视频倒放而翻转,比如"这个人是在往下移动吗";第二种是空间问题,答案不会因为倒放而改变,比如"这个视频是在室内拍的还是室外";第三种是跟视频内容完全无关的问题,比如"一周有七天吗"。

结果很清楚:只有在时序问题下,那条"先升后降"的曲线才会明显地出现峰值。换成空间问题或者无关问题,整条曲线都被压得很平,峰值基本消失。

同样的视频对,换个问题,曲线形状完全不一样。这说明峰值不是视频内容本身自带的某种"倒放特征残留",而是模型在真正被要求做时序推理的时候,主动把时间信息汇聚到了最后那个决策位置上。

研究者没有就此止步,又做了一步因果验证,想确认这个峰值区域到底是不是模型真正在"用"的信息,而不是一个凑巧出现但没什么实际作用的噪声波动。

他们用了一种叫attention knockout(注意力阻断)的手法。

注意力knockout*:一种干预实验方法,人为地把某一层某个位置对其他位置的"关注"强行屏蔽掉,设置成负无穷,观察屏蔽之后模型的判断会受到多大影响,从而反推这个位置原本依赖了多少信息。

具体做法是,在某一层,把"最后一个词"对前面所有位置的注意力强行切断,相当于在那一层让模型突然"失明失聪",看不到之前的任何信息。然后观察正确答案的概率下降了多少。

结果显示,如果在曲线早期或末期做这个屏蔽,正确答案概率掉得不多。但如果恰好在那个τ_l峰值所在的区域做屏蔽,正确答案概率会出现最大幅度的下跌。

这个结果和前面的峰值位置严丝合缝地对上了。换句话说,这不仅是模型"产生"时序信息最多的地方,也是模型"真正在用"这些信息做判断的地方。这个区域对预测结果是功能性重要的,不是一个无关紧要的中间状态。

这就像医生给病人做手术前的定位检查。先用影像扫描发现肿瘤在某个具体位置信号异常(这是τ_l峰值),然后再做穿刺活检确认这块组织真的是癌变组织、真的在影响身体功能(这是attention knockout)。两步都做完,才能确定"这里就是病灶",不是影像伪影。

如果没有这第二步验证,整个研究的立足点就会松动:万一那个峰值只是模型内部一种无意义的噪声涌动,根本不影响最终答案,那所有后续基于这个峰值设计的干预方法都是对着空气打拳。

趁它还没褪色,把信号补回去

搞清楚了"时序信息在哪里产生、在哪里被真正使用、又在哪里开始衰减",研究团队顺理成章地提出了一个解决方案,起名叫Temporal Activation Injection,缩写TAI。

TAI的核心思路,说白了就是四个字:趁早截留。

具体流程是这样的。给定一个视频V和问题Q,先构造出它的倒放版本V。把倒放版本喂进模型,但只让它跑到τ_l峰值所在的那一层(论文里叫L_src,即source layer),就提前中止,不再往后算了。在这一层,记录下"最后一个词"的内部表示h_rev。

接着把原视频V正常跑完整个模型,在同一层L_src记录下对应的表示h_fwd。两者相减,就得到一个叫τ_steer的向量:

τ_steer = h_fwd(L_src) – h_rev(L_src)

这个向量,直观理解就是"如果时间方向翻转,模型在这一层的内部表示会往哪个方向、挪动多大幅度"。它浓缩了"时间方向"这个概念在模型表示空间里的具体投影。

提取出这个向量之后,TAI做的事情是:在L_src之后的每一层,把这个τ_steer按一定权重,重新"注入"回正向视频的内部表示里。公式是:

h'_l = h_l + β · w_l · τ_steer

这里β是一个全局的缩放系数,w_l是每一层的权重,直接用前面测量出来的τ_l曲线本身来定(具体是τ_l除以峰值层τ_L_src,相当于把曲线归一化成一个衰减比例表)。

这个设计有一个挺讲究的地方:注入的强度不是凭空设定的,而是严格按照观测到的那条"先升后降"曲线的衰减形状来分配。曲线刚过峰值、衰减还不严重的层,注入得多一点;越往后、信号本来就该很弱的层,注入得越少。

为什么要这样设计,而不是每一层都注入一样多的量,或者索性反着来,越往后注入越多?

研究者做了对比实验。如果用"每层一样"的均匀方案,效果提升,但不如按曲线衰减方案好。如果反过来,越往后注入越多(也就是给衰减最严重的层强行塞最多的信号),效果反而更差,比均匀方案还差一点。

这个结果其实挺有意思,它说明τ_steer这个向量本身是"长"在峰值层那个表示空间里的,它天然适配峰值层附近的"语境"。硬塞给一个已经演化了很多层、表示空间已经发生较大变化的深层,就像是给一个已经完全消化吸收了食物的胃,硬塞进一整块没嚼过的肉,身体接不住,反而会出问题。

这就好比往一锅快要炖干的汤里补水。你不会在汤刚下锅、水分充足的时候就一股劲儿猛加水,那样反而冲淡了原本的味道;你也不会等汤彻底糊底了才想起来加水,那时候已经来不及了。最合理的做法是跟着水分蒸发的节奏,边炖边小口补,蒸发快的阶段多补一点,快炖好、蒸发慢了就少补一点。TAI的w_l权重表,干的正是这件事:按照时序信息"蒸发"的实际节奏,分层次地往回补。

还有一个细节值得说一下:τ_steer不是针对所有视频都用同一个固定值,而是每个视频单独计算出来的。如果一段视频本身对时间顺序特别敏感(比如一个方向性很强的动作),τ_steer的幅度会天然偏大,注入力度也随之加大;如果一段视频本身倒放了也看不出区别(比如静止镜头里的风景),τ_steer幅度会接近于零,TAI几乎不会对它做任何改动。

这种"自适应"的特性,意味着TAI不需要事先告诉它哪些问题是时序相关的、哪些不是,它靠的是模型自己在推理时暴露出的差异信号来决定要不要干预、干预多少。

整套方法最打动人的一点,或许是它完全不需要额外训练。L_src这一层的位置,是从模型自身的τ_l曲线里直接读出来的;每层的权重w_l,也是从这条曲线本身算出来的;唯一需要手动调的参数,只剩下一个全局缩放系数β。研究者说,这个β只需要针对每个模型设一次,之后在所有测试集上都保持不变。

效果如何:三个模型,四个基准,都在涨

说了这么多设计思路,终归要看实际效果。

研究团队在三个模型(Qwen2.5-VL-7B、Qwen3-VL-8B、InternVL2.5-8B)上应用TAI,分别在三个时序推理基准(TempCompass、TVBench、AoTBench)和一个综合视频理解基准(MVBench)上做了测试。

在TempCompass上,Qwen2.5-VL-7B的基线准确率是73.4%,加上TAI之后提升到75.6%。Qwen3-VL-8B从77.1%涨到78.0%。InternVL2.5-8B从70.9%涨到73.6%。三个模型全部有提升,而且全程不需要重新训练。

这里有个很值得玩味的对比对象,叫ArrowRL,是一种训练出来的方法,通过强化学习专门设计时序相关的奖励函数来教模型学会分辨时间方向。ArrowRL需要额外的训练过程,在Qwen2.5-VL-7B上把TempCompass准确率提到了75.0%。而TAI完全不训练,拿到75.6%,居然比需要训练的ArrowRL还高了一点点。

更有意思的是,这两种方法并不冲突。研究者把TAI直接套用在已经经过ArrowRL训练的模型上,发现依然有提升。ArrowRL在TempCompass上是75.0%,再加上TAI之后变成76.5%。这说明"训练时改进权重"和"推理时补偿激活"这两条路,解决的是不完全相同的问题,可以叠加使用。

在改善时序推理的同时,研究者也担心一件事:如果TAI太"激进",会不会反而把那些和时间顺序无关的任务搞坏,比如数一数视频里有几个物体,这跟时间方向没什么关系。

为了回答这个问题,他们专门把MVBench的子任务按"答案是否依赖帧顺序"分成三组:时序相关组、时序无关组、混合组。结果显示,TAI在时序相关组上稳定提升,在时序无关组和混合组上只有轻微波动,整体没有下降。这说明TAI确实只对需要时序理解的任务动刀,没有误伤那些跟时间顺序没关系的能力。

研究者还做了一个挺狠的对照实验,叫Anti-TAI,故意把注入方向反过来(把β的符号翻转)。结果是:对于那些答案本来就随倒放翻转的类别(比如"属性变化""顺序"),准确率大幅下滑,属性变化这一项掉了36.3个百分点,顺序类掉了27.4个百分点。而对于那些答案本来就不受倒放影响的类别(比如"动作""速度"),Anti-TAI几乎没有影响,波动都在1个百分点以内。

这个反向实验像是一次"拆弹验证"。如果拔掉一根线,设备该停的地方真的停了、不该停的地方真的没停,才说明这根线确实接在它该接的位置上,不是碰巧拉对了一根毫不相关的电线。τ_steer向量正是如此:反向注入会精准破坏那些答案依赖时间顺序的问题,却不动那些和时间顺序无关的问题,证明这个向量提取出来的,确确实实是"时间方向"这个概念本身,不是别的什么杂质信号。

论文还做了不少细节层面的打磨实验。比如抽取τ_steer的时候,到底该用哪一层,实验显示正好卡在峰值层效果最好,提前或推后都会打折扣。再比如需要多少帧来估算这个曲线,结果发现只需要5对视频就能大致勾勒出曲线形状,20对左右就足够稳定,不需要动用海量数据。再比如这个曲线本身是不是会受视频来源影响,他们换了完全不同的视频来源重新测曲线,发现峰值位置始终落在同一层,说明这条曲线反映的是模型架构本身的一种结构性特征,不是某个数据集带来的偶然现象。

这里要稍微提一下论文里用来检验稳健性的一个细节,他们还测试了TAI在换了采样帧数、换了提问句式之后是否依然有效,用了一种叫McNemar检验的统计方法来验证提升不是偶然。

McNemar检验*:一种统计显著性检验方法,专门用来比较两个分类器在同一批样本上表现差异是否具有统计学意义,常用于配对数据的对比场景。

结果显示,在不同的帧采样方式、不同的问题措辞下,TAI的提升都通过了显著性检验,说明这个提升不是统计噪声碰巧凑出来的。

写在后面

读完这篇论文,最让我停下来想了一会儿的地方,其实是那张"先升后降"的曲线。

我们平时讨论AI模型的"能力缺陷",习惯性地把它当成一个二元判断:模型能做到,或者做不到。这篇论文提醒我一件容易被忽略的事:能力缺陷有时候不是"从来没有过",而是"有过,但没留住"。这是两种完全不同的问题,解决方式也完全不同。前者需要往模型里"加"新东西,后者可能只需要在恰当的位置"接住"已经存在但正在流失的东西。

这个区分,其实超出了视频理解这个具体场景。想一想人类记忆里的"舌尖现象",一个词明明在脑子里转了一圈,话到嘴边却说不出来,这种感觉和论文里描述的"中间层已经给出正确答案,但后面的层把它覆盖掉了"居然有种结构上的相似。信息确实被处理过、提取过,只是没能顺利地传递到最终的输出端口。

另一个让我印象深的细节是,研究者没有满足于"发现了一个现象"就收手,而是执着地做了那个attention knockout的因果验证。很多可解释性研究停在"我们观察到了一个有趣的相关性"这一步,但相关性和因果性之间那道坎,往往才是真正值钱的地方。如果没有那一步验证,整篇论文的说服力会打很大折扣,读者完全有理由怀疑那个峰值只是巧合。

还有一点值得说,这篇论文的方法完全不需要训练,也不需要标注数据,只靠模型自己跑两遍前向传播就能提取出干预信号。这种"向模型借力"而不是"给模型加料"的思路,某种程度上是对"大模型能力提升必须靠更多数据、更大算力"这种默认假设的一次小小反驳。当然它没有解决所有问题,论文自己也承认,这套方法目前只盯着"帧顺序"这一个时间维度,像空间推理、物体交互、音画对应这些同样重要的视频理解能力,还没被纳入这个框架。

一个问题留在那儿没解:如果同样的"中间层有答案、后面层又丢掉"的现象,也出现在别的推理任务里,比如数学推理、逐步逻辑链条,这会不会是更大模型普遍存在的一种结构性"漏斗损耗"?值得继续往下挖。

Q&A

Q1:Temporal Activation Injection是什么?

A:Temporal Activation Injection(TAI)是一种推理时的视频大模型增强方法,通过提取模型在时间divergence峰值层产生的差异向量,按照该层后续的信号衰减曲线重新注入到后续层,从而补偿时序信息的流失,全程无需训练。

Q2:为什么视频倒放后AI模型的答案经常不变?

A:研究发现模型在中间层确实短暂捕捉到了正确的时序信息,但这个信息在传递到输出层的过程中逐渐衰减消失,最终导致正向和倒放视频收敛到相同的错误预测,这种现象被称为时间信息的"渐进褪色"。

Q3:TAI方法会不会影响模型在非时序任务上的表现?

A:实验显示TAI在MVBench基准的时序相关任务上稳定提升,而在时序无关和混合任务组上只有轻微波动,整体没有下降,说明该方法能精准定位到时序推理能力,基本不影响模型的其他能力。