你有没有想过,婴儿是怎么学会认东西的?
没有人给他们贴标签,没有人告诉他们"这是猫"、"那是狗"。他们就是睁着眼睛,看着这个世界一帧一帧地流过。今天看到的客厅和昨天看到的差不太多,窗外的树慢慢变换着光影,妈妈的脸反复出现在不同角度。这是一种连续的、没有剪辑的视觉经验。
现在问题来了:现在那些号称"像婴儿一样学习"的AI模型,它们真的是这样学的吗?
答案可能会让你意外。目前最主流的自监督学习方法,训练时用的图片都是从一个巨大的数据库里随机抽出来的,每一张图跟前一张几乎毫无关系,而且整个数据集会被反复打乱、反复看上好几十遍。这跟婴儿的经验完全是两回事。婴儿看到的世界是连续的、有先后顺序的,而且每样东西通常只经历一次,不会被"回放"几十遍。
自监督学习
一种不需要人工标注答案,让模型自己从数据中找规律来学习的训练方式,近年来是AI视觉领域的核心技术路线之一
这篇来自萨格勒布大学和纽伦堡科技大学的研究,做了一件听起来简单但几乎没人认真做过的事:让AI模型像婴儿一样,看一段连续的视频流,按时间顺序一帧一帧地学,不能打乱顺序,不能反复看多遍,也不能存一个"回忆库"随时调取旧画面。结果他们发现,这件事远比想象中难。
这件事到底难在哪
先说说现在AI视觉模型是怎么训练的。
拿两个最有代表性的方法来说。一种叫对比学习,代表方法是MoCo,它的核心思路是"比较":给模型看同一张图片的两个不同变形版本,告诉它这两个是"同类",再随机找几张完全不相关的图片,告诉模型这些是"不同类"。模型通过不断拉近同类、推远异类来学习。
MoCo v3
一种基于对比学习的自监督方法,核心思想是让同一张图片的不同增强版本在特征空间中靠近,不同图片的版本则互相远离
另一种叫自蒸馏,代表方法是DINO,它用一个"学生"网络和一个"老师"网络相互学习,老师网络是学生网络参数的缓慢滑动平均,两者需要对同一张图片的不同视角给出一致的理解。
DINO
一种自蒸馏式自监督学习方法,通过让学生网络和教师网络对同一图像的不同视角产生一致的表示来学习,教师网络由学生网络的参数缓慢更新得到
还有一种叫掩码自编码器,代表方法是MAE。它的玩法完全不同:把一张图片挖掉75%的区域,只留下25%,让模型根据这一点点信息去猜测、重建被挖掉的部分。
MAE
掩码自编码器,一种自监督学习方法,通过遮盖图像的大部分区域并训练模型重建被遮盖内容来学习视觉表示
这三种方法在标准的、打乱顺序的图片数据集上都表现很好。但当研究者把它们搬到连续视频流上,不打乱顺序,不重复训练时,情况完全变了。
对比学习的MoCo v3直接崩了,效果比随机初始化的模型还差。这是为什么?因为连续视频里相邻的帧几乎长得一模一样,而对比学习需要把"不相关的图片"当作反例去推远。可问题是,如果一个批次里的画面全都是同一条街的连续镜头,模型找不到真正不同的东西去对比,甚至会把本该相似的画面错误地推远,学习信号彻底乱套。
DINO情况好一点,但也明显落后。
反而是看起来最朴素的MAE,扛住了这种冲击,成为三者中最稳的那个。研究者认为原因在于,MAE的学习方式是"各自为战":它只需要单独看一张图去重建,不需要跟别的图片比较,也不需要把一堆图片聚类成某种概念。这种"不跟别人攀比"的特性,恰好躲开了视频流里"大家都长得差不多"这个麻烦。
这就好比你让一群人各自写自己的日记,跟你让一群长得很像的人互相辨认谁是谁。如果这群人本来就是同一个人每天换件衣服拍的照片,辨认任务会让人彻底懵掉,但写日记这件事完全不受影响,因为每个人只管自己的那一页。
但即便MAE是三者里最稳的,它依然比不上标准打乱训练的MAE。这个差距在模型变大之后更明显,在一个叫Cityscapes的街景分割任务上,差了将近10个百分点。研究者没有放过这个差距,而是决定深挖下去,找到真正的病根。
病根排查:到底是谁在拖后腿
研究者提出了一个关键区分:连续视频流训练有两个可能的"罪魁祸首"。
第一个叫批次间相似性,指的是因为用滑动窗口的方式消费视频,相邻的两个训练批次会有大量重叠的画面,导致连续几步的梯度更新高度相关。
第二个叫批次内相似性,指的是同一个批次里的画面,因为都来自视频里很短的一段时间,内容几乎是近似重复的。
批次间相似性与批次内相似性
批次间相似性指连续训练批次之间因滑动窗口采样导致的内容重叠程度;批次内相似性指同一个训练批次内部样本彼此相似的程度
要分辨到底是谁在搞破坏,研究者设计了一个很巧妙的对照实验。他们把ImageNet-1K这个图片数据集先彻底打乱一次,然后把打乱后的结果当作一条"伪视频流",用同样的滑动窗口方式去喂给模型。
这样做的效果是:因为滑动窗口机制没变,批次间相似性依然很高,跟真实视频流差不多;但因为底层图片本身已经被打乱过,批次内的画面其实彼此毫不相关,批次内相似性很低。
实验结果非常干脆。这个"打乱后再按流消费"的ImageNet,训练出来的MAE,各项下游任务表现跟标准打乱训练几乎一模一样。这说明批次间相似性本身并不是罪魁祸首,只要批次内的内容足够多样,滑动窗口带来的重叠并不会拖累模型。
真正的问题,是批次内相似性。当一个批次里塞满了近乎重复的画面时,模型学到的东西会严重失衡。
这就像让你在一周里,每天花八个小时反复描摹同一张照片的局部细节,跟让你每天描摹一张完全不同的新照片。前者你会对这张照片的某几个细节无比熟悉,但这种熟悉没法迁移到任何别的场景上;后者哪怕每张只看一次,积累起来的泛化能力反而更强。视频流的问题正是如此:同一个批次里全是同一条街的连续帧,模型在短时间内被迫反复"描摹"同一个场景的细枝末节。
研究者还做了一步更深的验证,他们去看模型训练过程中,连续两个批次产生的梯度到底有多"像"。用一种叫Orthogonal-AdamW的方法处理过的流式MAE,梯度相似度明显偏高;普通流式MAE的梯度相似度反而轻微为负;而标准打乱训练的MAE,梯度相似度稳定在接近零的水平。研究发现,一个方法的梯度行为跟标准MAE越接近,它在下游任务上的表现就越好。这给了他们一个明确的设计方向:想办法让流式训练时的梯度行为,尽量靠近打乱训练时的样子。
StreamMAE是怎么造出来的
搞清楚了病根,解决方案的思路也就清晰了:既然问题出在批次内画面太雷同,那就想办法让模型在面对雷同画面时,别那么容易"偷懒"或"过拟合"到局部细节上。
研究者提出的StreamMAE,保留了MAE最核心的重建目标没动,但对整个训练流程做了几处调整。
第一招是加强正则化,具体包含三个小动作。一是颜色抖动,随机扰动图片的色彩、亮度、对比度,让模型不能单纯依赖稳定不变的颜色线索去"偷懒"重建。二是提高随机深度的丢弃率,这是一种让网络在训练时随机"跳过"某些层的正则化手段,目的是防止模型对batch里反复出现的局部模式过拟合。
随机深度
一种正则化技术,训练时随机让网络的某些层"失效"不参与计算,从而改变网络的有效深度,防止过拟合
三是叫做DataDrop的操作:对于每个滑动窗口批次,随机选择一部分样本直接丢弃不参与计算,只用剩下的一小部分来算损失和更新梯度。默认设定是丢掉75%,也就是说原本2048帧的窗口,最终真正参与反向传播的只有512帧。
这个操作初听起来有点浪费,辛苦收集来的数据干脆扔掉四分之三?但仔细想想,如果一个窗口里塞满了几乎相同的画面,全部都拿来算梯度,等于是在对同一个场景的梯度方向反复"加码",模型会被这种重复信号带偏。扔掉大部分、只留一小撮有代表性的样本,反而让每一步更新更干净。
这就像开会讨论一个方案时,如果房间里有十个人,其中八个说的都是同一件事的不同措辞,剩下两个人有新想法。如果你把十个人的发言都原样记进会议纪要,结论会被那八个重复的声音严重带偏;但如果你只挑两三条有代表性的意见记下来,反而能更准确反映全场真正的分歧和共识。
第二招是裁剪策略的调整,叫两阶段裁剪。标准MAE是直接在整张图上随机裁一块区域出来训练。但在连续视频里,相邻帧整体画面都很像,就算各自独立随机裁剪,裁出来的区域大概率还是长得差不多。两阶段裁剪先在整张图里选定一个较大的局部区域作为"第一阶段",再在这个区域内部按标准MAE的方式做随机裁剪。这相当于把"裁哪个区域"和"怎么裁"这两个决策拆开处理。
第三招,也是整套方案里最有巧思的一步,叫运动偏向裁剪选择。
研究者的思路是:如果相邻帧整体很像,那模型最该关注的,其实是画面里变化的那部分。于是他们设计了一个很轻量的办法,直接计算当前帧和前一帧每个像素位置的差值,取绝对值求和,得到一张"运动强度图"。再把这张图按照模型处理图片的网格粒度(也就是ViT的patch)聚合一下,得到每个区域的运动分数。
ViT的patch
ViT是一种把图像切成若干个小方块再逐个处理的神经网络架构,每个小方块被称为一个patch,是模型处理图像的最小单位
接着,系统会随机生成几个候选的第一阶段裁剪区域,计算每个候选区域内的平均运动分数,挑出运动最明显的那个区域来裁剪。这整个过程不需要用到复杂的光流算法,只靠简单的像素差值就能大致定位画面里正在变化的地方。
这就像你在一本不断翻页的相册里找线索,如果每一页跟上一页几乎没差别,你肯定不会盯着那些一模一样的背景墙去研究,而是会本能地去找哪里跟上一页不一样,哪里出现了新东西、动了起来。运动偏向裁剪选择做的正是这件事,它让模型的注意力主动投向画面里"正在发生变化"的那一小部分,而不是浪费在大片静止不变的重复背景上。
不过研究者也留了个心眼,这个运动偏向选择只以50%的概率启用,另外50%时间还是走普通随机裁剪。这是为了避免模型一直死盯着同一类高运动区域,比如视频里一辆反复出现的车、一片反复摇晃的树叶,导致学到的东西又变得片面。
效果到底怎么样
研究者专门造了一个新的训练素材库,叫WT++,是在原有WalkingTours数据集基础上扩展出来的,收集了58段城市徒步拍摄的视频,总时长达到95小时。这些视频是一个人背着摄像机在不同城市街头连续行走拍下来的,包含各种光线、视角、场景切换,是研究连续视频流学习的理想素材。
在这个数据集上,StreamMAE相比普通流式MAE,在ImageNet-1K分类准确率上提升了0.4个百分点,在Cityscapes街景分割上提升了2.5个百分点,在ADE20K场景分割上提升了0.2个百分点,深度估计的误差也明显降低。更重要的是,StreamMAE的表现已经非常接近用同样视频数据做标准打乱训练的MAE,有些指标上甚至反超。
当研究者把模型从ViT-S换成更大的ViT-B,把流式MAE跟StreamMAE放在一起对比,差距被拉得更大。在Cityscapes上,普通流式MAE只有58.2,StreamMAE达到69.0,标准打乱训练的MAE是67.8。也就是说在这个指标上,StreamMAE不仅大幅超过了同规模的流式基线,甚至反超了用同样数据打乱训练的对照组。
当研究者把训练视频从12小时逐步扩展到25小时、50小时、95小时时,StreamMAE的表现持续提升,没有出现饱和或者反而变差的情况。这说明这套方法不是只在小数据量下管用的权宜之计,而是能随着数据规模扩大持续获益的。
研究者还做了个有意思的额外实验,检验这个提升到底是因为模型"看到了更多新画面",还是单纯因为"训练步数更多"。他们发现,单纯提高视频的帧率来增加有效训练步数,并不会带来更好的效果,甚至会让密集预测任务的表现变差。而让模型反复看同一段12小时视频多遍,确实能带来一些提升,但远远不如直接喂给它新的、从没见过的视频片段。这说明StreamMAE真正受益的是新鲜的视觉内容,而不只是更多次的参数更新。
为了验证这套方法不是只在徒步视频这种特定场景下管用的巧合,研究者还把StreamMAE搬到三个风格迥异的视频数据集上测试:一个是室内厨房场景的第一视角视频HD-EPIC,一个是城市行车记录仪视频CROWD,一个是记录日常生活长达70小时的第一视角视频KrishnaCAM。结果StreamMAE在几乎所有任务上都稳定超过了普通流式MAE,在HD-EPIC和CROWD两个数据集上,甚至全面匹配或超过了标准打乱训练的MAE。
写在后面
读完这篇论文,最让我意外的一点,不是StreamMAE本身的设计有多精巧,而是那个对照实验揭示的结论:批次间的重叠本身根本不是问题。
这跟我原本的直觉完全相反。我一开始以为,连续视频流训练的难点,就应该是相邻批次太像导致梯度更新反复踩同一个方向,这感觉是最直观、最该被解决的那个麻烦。但研究者用一个打乱后再按流消费的ImageNet实验,干净地推翻了这个直觉。真正的病根藏在批次内部,藏在"同一个窗口里塞满了几乎一样的画面"这件事上。这提醒我,有时候一个问题看起来最显眼的那个特征,未必是真正致命的那个。
另一个值得单独说一说的细节,是DataDrop这个操作在小规模时有用,但在模型变大、视频变长之后,它的作用居然变得可以忽略不计。研究者没有回避这个结果,反而老老实实地把这个"失效"的过程写进了论文。这种对自己方法局限性的坦然,比吹嘘效果本身更让人信服。
这篇论文还留了一个没彻底解决的口子:StreamMAE除了那个运动偏向裁剪之外,其实并没有真正去建模视频里的时间动态关系,它更多是在"规避"连续视频带来的麻烦,而不是主动利用时间本身蕴含的信息。如果未来有方法能把时间顺序本身变成一种学习信号,而不只是一个需要绕开的障碍,那会是完全不同的故事。
一个背着摄像机走在陌生城市街头的人,和一个坐在屏幕前打乱了几十万张图片训练模型的研究者,到底谁更接近"学习"这件事的本质?这个问题,这篇论文没有给出答案,但它第一次让我们看清楚,这两条路之间到底隔着什么。
Q&A
Q1:StreamMAE是什么?
A:StreamMAE是一种专门为连续视频流设计的自监督学习方法,它保留了MAE的掩码重建目标,但加入了颜色抖动、提高随机深度丢弃率、DataDrop、两阶段裁剪和运动偏向裁剪选择等机制,用来应对连续视频中批次内画面高度相似带来的训练困难。
Q2:为什么对比学习方法MoCo v3在连续视频流训练上会失败?
A:因为连续视频里相邻帧几乎长得一样,对比学习需要靠"推远不相关样本"来学习,但在这种场景下很难找到真正不相关的反例,甚至会把本该相似的画面错误地当成反例推远,导致学习信号彻底混乱,实验中MoCo v3的表现甚至比随机初始化的模型还差。
Q3:WT++数据集是什么?
A:WT++是研究者扩展出来的一个95小时的城市徒步视频数据集,包含58段真实拍摄的行走视频,涵盖多个城市、各种光线和场景变化,专门用来研究自监督学习模型在连续视频流上的训练效果。







