CAPI-DINO:为自监督学习补上全局表征的组合式探索

CAPI的优势与局限:为什么需要全局表征
在自监督学习(SSL)领域,方法的选择往往要在效果、算力和数据规模之间做权衡。自监督学习是一种不依赖人工标注的表征学习范式,模型通过从数据本身构造监督信号来学习有意义的特征。常见的自监督策略包括对比学习(如SimCLR、MoCo)、掩码图像建模(如MAE、BEiT)以及自蒸馏(如DINO、BYOL)。这些方法的核心价值在于:当标注数据稀缺或获取成本高昂时,模型仍然能从海量无标注数据中学到通用且可迁移的视觉表征。
一位研究者在 Reddit 上分享了他的实验:CAPI 已经成为他在算力或标注数据受限场景下的首选自监督方法。原因很直接——CAPI 训练效率高、收敛稳定,即使在相对较小的数据集上也能微调得不错。CAPI 是一种专注于 patch 级别表征学习的自监督方法,其核心思路是在 Vision Transformer 的 patch token 层面构建预训练目标,让模型学会理解和重建图像局部区域之间的关系。与 MAE 等掩码重建方法不同,CAPI 更侧重于 patch 之间的交互式表征学习,而非简单的像素级重建。这种设计使得 CAPI 在训练效率和收敛稳定性上表现突出,因为 patch 级别的目标通常比全局对比目标更容易优化,梯度信号也更加均匀。
但 CAPI 有一个明显的短板:它专注于局部/patch 级别的表征(local / patch-level representations),因此并不能直接产出一个全局图像嵌入(global image embedding)。在 Vision Transformer 架构中,输入图像会被切分为一系列固定大小的 patch(如14×14像素),每个 patch 经过线性投影后成为一个 token。局部/patch 级别的表征指的是这些 token 各自对应的特征向量,它们保留了空间位置信息,适用于密集预测任务如语义分割、目标检测等。全局图像嵌入则是将所有 patch token 汇聚(pooling)成一个单一向量,用于表征整张图像的语义内容,常见的汇聚方式包括使用 [CLS] token 或对所有 patch token 取平均。全局嵌入在图像分类、检索、聚类等任务中不可或缺。对于很多下游任务而言,缺少现成的全局表征意味着开箱即用的便利性大打折扣。

灵感来源:从DINO v3的失败尝试到反向思考
这次 CAPI-DINO 实验的动机来自一个有趣的细节。作者在一档播客中听到 Tim Darcet 提到,在 DINO v3 的研发过程中,团队曾尝试用 CAPI loss 替换 iBOT loss,但最终没有成功。
iBOT(Image BERT Pre-Training with Online Tokenizer)是 DINOv2 中使用的一个关键组件,它结合了掩码图像建模与自蒸馏。具体而言,iBOT 在学生网络的输入中随机掩码一部分 patch token,然后要求学生网络预测被掩码位置的教师网络输出,本质上是一种在线的掩码 token 预测任务,教师网络充当了动态 tokenizer 的角色。在 DINOv2 中,iBOT loss 与 DINO 的全局蒸馏 loss 联合使用,前者负责增强局部表征质量,后者负责全局语义对齐。Tim Darcet 提到的「用 CAPI loss 替换 iBOT loss」的尝试,实际上是在探索是否有更好的局部表征学习目标能替代 iBOT。
这个信息激发了作者反向思考的兴趣:既然直接替换损失函数走不通,那能否换一种组合方式——保留 CAPI 原样,在学生模型的池化表征之上叠加一个 DINO 目标?
要理解这一思路,需要先了解 DINO 的工作机制。DINO(Self-DIstillation with NO labels)是 Meta AI 于2021年提出的自监督学习框架,基于自蒸馏(self-distillation)机制。它使用教师-学生网络架构:学生网络接收局部裁剪的图像视图,教师网络接收全局裁剪视图,两者共享相同的网络结构但参数更新方式不同——教师网络的参数通过学生网络参数的指数移动平均(EMA)更新。训练目标是让学生网络的输出分布匹配教师网络的输出分布,通过交叉熵损失实现。DINO 的一个显著发现是,训练出的 ViT 模型的注意力图能自动分割出图像中的前景物体,展现出强大的语义感知能力。
这个思路的关键在于「加法」而非「替换」。模型仍然使用标准的 CAPI patch 级别目标进行训练,同时额外训练一个 DINO head,作用于池化后的全局表征。这样既保留了 CAPI 的局部建模能力,又试图补上它缺失的全局表征能力。
实验设置与关键结果
作者在 Bio-DINO 数据集上训练了这套 CAPI-DINO 组合,使用的是 ViT-B/14 模型。Bio-DINO 是专门针对生物多样性图像数据训练的 DINO 变体模型,其训练数据来源于自然观察平台(如 iNaturalist)收集的大规模生物物种图像。生物多样性领域的视觉模型面临独特挑战:物种间的视觉差异可能极其微妙(如两种近缘蝴蝶仅翅膀纹路细节不同),同时类内变异又可能很大(如同一物种在不同生长阶段、季节、光照条件下外观差异显著)。这使得高质量的局部特征对于物种识别至关重要,也解释了为什么作者选择在这个领域测试 CAPI。结果用作者自己的话说是「还行,没有期望的那么好,但也并非毫无用处」。
全局表征的线性探测表现
在全局表征方面,ViT-B/14 模型在 iNat21 数据集上取得了 68.7% 的线性探测(linear probing)准确率。线性探测是评估预训练模型表征质量的标准协议之一,具体做法是冻结预训练模型的所有参数,仅在其输出的特征向量之上训练一个线性分类器(即单层全连接层加 softmax)。如果线性探测准确率高,说明预训练模型已经学到了线性可分的高质量特征。iNat21(iNaturalist 2021)是一个大规模细粒度物种分类数据集,包含约270万张图片、覆盖10,000个物种类别,因类别极其细粒度且分布长尾,是自监督学习模型在生物多样性领域的重要评测基准。68.7% 的线性探测准确率在这一高难度数据集上表明模型确实学到了有意义的全局语义表征,说明叠加的 DINO 目标达到了实验的核心目的。
局部特征质量的代价
然而天下没有免费的午餐。作者观察到,局部特征图(local feature maps)相比原版 CAPI 变得更差、更「脏」。这表明局部 CAPI 目标与新增的全局 DINO 目标之间存在真实的权衡(trade-off)——想要全局表征,就得在局部表征质量上付出一定代价。
训练稳定性分析:多目标联合训练的挑战
实验中一个突出的现象是损失函数的行为变化。CAPI 原本拥有非常平滑的训练损失曲线,但在加入 DINO 目标之后,训练过程变得明显更加「跳跃」(choppier)。
这涉及多目标联合训练(multi-objective joint training)中的经典优化困境。当模型同时优化多个损失函数时,不同目标之间可能存在梯度冲突(gradient conflict)——即一个目标的梯度方向与另一个目标的梯度方向相反或正交,导致优化器在两个方向之间摇摆,训练曲线出现震荡。损失权重的设定直接决定了各目标的相对优先级:权重过高的目标会主导梯度更新方向,可能压制其他目标的学习;权重过低则可能使该目标形同虚设。近年来,自适应损失加权方法(如 Uncertainty Weighting、GradNorm、MGDA)试图自动平衡多目标优化,但在自监督学习场景中的应用仍处于早期探索阶段。
作者对训练不稳定现象提出了两种可能的解释:
- DINO 目标对 CAPI 的干扰超出了预期
- DINO 目标在优化过程的某些部分占据了主导地位
他这次使用的 DINO loss 权重为 0.5,并坦言这个值可能偏高。降低这个权重,很可能是下一步优化的首要方向。这也提醒我们,在多目标联合训练中,损失权重的调节往往是决定成败的关键超参数。
训练效率:CAPI的核心魅力得以保留
尽管加入了额外的 DINO 目标,这套方案最令人满意的地方在于依然保持了很高的训练效率。整个 CAPI-DINO 模型的训练仅消耗了训练 Bio-DINO 所用算力的约 16%。
换句话说,即便叠加了新目标,它仍然保留了 CAPI 最初吸引人的核心特质——低算力成本。此外,作者还观察到在极少量标注数据下的微调表现相当有潜力,某些情况下用比预期更少的数据就能获得不错的结果。
总结:CAPI-DINO的得失与未来方向
综合来看,CAPI-DINO 这套自监督学习实验的得失可以概括为:
- 可用的全局表征:补上了 CAPI 缺失的全局嵌入能力
- 依然高效:算力消耗仅为 Bio-DINO 的约 16%
- 良好的低数据微调表现:小样本场景下潜力可观
- 代价一:局部特征质量有所退化
- 代价二:训练稳定性下降,损失曲线不再平滑
作者认为,两个目标之间的平衡仍有改进空间,尤其是通过降低 DINO loss 权重来缓解干扰。这项工作使用作者自己开发的计算机视觉训练库 Birder 完成,模型权重也已在 Hugging Face 上开源。Birder 是一个专注于鸟类及更广泛生物多样性图像识别的训练框架,它封装了领域最佳实践,降低了研究者复现和扩展实验的门槛。模型权重发布在 Hugging Face Hub 上——这已成为模型分享的事实标准平台,支持模型卡片(Model Card)、自动推理 API 等功能,使得其他研究者可以直接加载预训练权重进行验证或微调,极大促进了研究的可复现性和社区协作。
这类「组合式」的自监督探索价值不仅在于结果本身,更在于它揭示了不同预训练目标之间的相互作用机制。局部与全局表征的取舍,是自监督学习领域一个长期且现实的问题,而这样透明分享成败细节的实验,恰恰是社区最需要的养分。
相关推荐

新加坡地铁信息显示系统的设计智慧与工程启示
深度解析新加坡地铁信息显示系统的分层架构、实时数据处理与场景化设计理念,探讨公共交通信息系统如何通过工程智慧实现高效用户体验,为现代信息系统设计提供启示。

前Meta员工爆料:高薪工程师竟在给AI做数据标注
前Meta员工曝光大厂AI化转型真相:百万年薪工程师被安排做RLHF数据标注,组织扁平化后员工只需向AI系统汇报,咨询医疗等行业也在被AI重塑。知识工作者如何应对自我替代的职业困境?

自然语言驱动Blender:用AI编程助手生成3D场景实战
通过ChatGPT Codex等AI编程助手调用Blender Python API,仅用几句自然语言指令即可生成精美3D场景。本文详解从安装到渲染的完整流程,探讨编程助手作为通用执行器的创作新范式。