探秘 DINOv3:从 384 维嵌入解锁图像特征的奥秘! 玩转视觉嵌入2026 年 6 月有这样有趣的图像组合玉米粒加上凯旋门竟得到玉米拱门。从某种意义上说嵌入是神经网络的“母语”神经网络通过它仅用一组数字就能对丰富多样且具有语义意义的表征进行编码。然而这些数字晦涩难懂逐个阅读根本无法理解其含义。在这篇文章中我们将尝试解读一个神经网络的嵌入。模型本文要探讨的模型是 DINOv3 ViT - S [(Siméoni 等人2025)]。DINOv3 十分有意思它只需极少的先验知识就能学会将原始像素映射到一个丰富的特征空间。它不懂语言无法描述所看到的内容但仍能理解图像。我们不会详细介绍 DINOv3 的训练过程但有两点对本文很重要一是它能将任何图像压缩成一个单一的嵌入一组 384 个数字二是经过训练同一图像的不同裁剪和增强版本会具有相似的嵌入。我们的目标是了解这 384 个数字中编码了哪些信息。从嵌入生成图像为了在这个 384 维的空间中进行探索我们需要一种方法将这些数字转换为人类能够理解的内容。最自然的方式就是利用人类和 DINOv3 都能理解的“语言”——图像。具体来说我们希望能够在这个 384 维的空间中选取一个点并生成一张 DINOv3 认为与该点对应的图像。为此我们采用了两个思路。其一DINOv3 是完全可微的——当将图像输入模型时可以调整像素使输出向量更接近某个目标。因此我们可以最大化生成图像的嵌入与某个目标嵌入之间的余弦相似度。人们采用这种方式生成图像已有一段时间例如 DeepDream [(Mordvintsev 等人2015)] 以及 Olah 等人的特征可视化工作 [(Olah 等人2017)]。其二DINOv3 经过训练同一图像的不同裁剪和增强版本会落在相同的嵌入空间中。在构建像素梯度时我们可以模仿这种裁剪和增强策略。这有两个好处一是防止优化器利用高频噪声“作弊”[(Olah 等人2017)]二是根据模型自身对“相同性”的定义进行优化。我们还使用了其他一些技巧来让生成的图像效果更好用未训练的 Transformer 骨干网络生成图像思路与 [Deep Image PriorUlyanov 等人2017] 类似并最小化辅助的总变差损失。一旦这个流程设置好给定 384 维空间中的任意方向我们就能生成一张 DINOv3 认为指向该方向的图像。例如选取一张高山景观照片计算其 DINOv3 嵌入然后用我们的生成技术生成一张指向相同方向的图像。现在生成的图像似乎捕捉到了原始图像的整体氛围清晰地展现出山脉、积雪和湖泊。看看生成图像的分布能更全面地了解生成的内容。你会发现每次生成的图像都有一些差异但也会注意到它们与原始图像有一些常见的差异色彩更饱和、对比度更高并且场景中的一些物体位置有误或出现重复。这很可能是图像生成流程导致的。在后续过程中请记住这些生成图像的明显特征以便在心里进行反向解读。寻找特征在尝试剖析这个 384 维空间之前我们首先要明白DINOv3 在这 384 个数字中编码的视觉概念远不止 384 个。这是如何实现的呢目前的主流假设是所谓的 **叠加** 模型通过将每个特征指向近乎正交的方向学会在嵌入维度数有限的情况下编码比维度数多很多倍的特征 [(Elhage 等人2022)]。为了演示这种现象我们将展示一个小型玩具神经网络如何将 10 个 MNIST 数字类别压缩到 2 维瓶颈中。这里的每一帧都对应优化器的一步操作这样你就能看到模型如何学习表示所有 10 个类别。关键在于神经网络倾向于在其隐藏空间的“方向”上放置特征。上面的 10 个数字簇似乎都从原点指向不同的方向。在 2 维空间中大约能容纳 10 个方向再多就会相互干扰但在 384 维空间中能容纳数千个方向。叠加是一把双刃剑。一方面它使模型能够学习比维度数多很多倍的特征另一方面这意味着 DINOv3 嵌入的任何单个维度都同时包含了多个概念直接理解起来很困难。为了将这些概念分离成独立、可解释的方向我们可以使用的一个工具是训练稀疏自编码器SAE。其基本思路是为模型的表征提供更多的“空间”并促使自编码器减少表征的模糊性。稀疏自编码器最初是为语言模型开发的但同样的思路也适用于视觉 Transformer —— [Fry (2024)] 在 CLIP 上训练了一个稀疏自编码器。这里我们不会详细介绍 SAE 的工作原理或具体的训练细节[1]但训练完成后它会在这个 384 维空间中为我们提供约 12000 个独特的方向每个方向通常对应该空间中一个独特且可解释的特征。然后我们可以将学到的特征输入到图像生成过程中最大化生成图像的嵌入与特征解码器方向之间的余弦相似度。下面展示了一些示例。点击任何图像可放大查看。快速验证一下——这些特征在 ImageNet 验证集中激活程度最高的图像是什么样的呢以下是一些示例。分解SAE 是一个强大的工具。我们能用它做的最简单的事情就是将给定的嵌入分解为一组学到的稀疏特征这实际上为我们提供了一种工具让我们能了解模型在所嵌入的内容中编码了哪些类型的特征。下面我们输入一张红木森林小径的照片获取其 DINOv3 嵌入然后通过 SAE 进行处理。照片下方展示了激活程度最强的特征并按激活强度排序。每个图块下方的蓝色条表示该特征的激活强度。这张照片激活的特征都很明确——树木、绿植、围栏、小径。这是将图像分解为其组成特征。我们对金门大桥的图像也进行同样的操作。有趣的是激活强度最强的特征似乎是专门针对[金门大桥本身]的。组合特征SAE 训练的一个假设是不同的特征可以相加以合理地融合这些特征。下面我们来看看实际效果。我们选择两个特征方向由 SAE 的解码器方向确定将它们相加得到一个新的方向然后用我们的生成技术生成该方向对应的图像。使用箭头选择不同的特征进行相加。可以看到相加后的结果似乎确实同时编码了两个特征。但你也会注意到它们有时以奇怪的方式组合。我特别要强调两个例子它们的生成图像以两种完全不同的方式组合了特征非常有趣。当把玉米粒和凯旋门的特征相加时得到的是两者的融合——一个由玉米粒组成的拱门。但当把玉米粒和螺丝的特征相加时得到的是两个特征并列的图像——螺丝放在玉米粒上。为了更好地理解这些特征为何以这样的方式组合我们可以尝试在特征之间进行插值。每个特征都具有单位范数这意味着 SAE 所暗示的特征空间是一个 384 维的球体因此我们将使用球面线性插值slerp在特征之间缓慢过渡。请注意这些插值的中点方向与直接将两个方向相加的方向完全相同。我们先从玉米和螺丝的特征开始使用滑块进行插值。你会发现特征以非常有趣的方式融合。当玉米粒占 70%、螺丝占 30% 时你会看到带有银色光泽和螺丝螺旋图案的玉米。当玉米粒占 30%、螺丝占 70% 时你会看到普通螺丝旁边放着橙色的类似玉米的螺丝。我们对玉米和拱门的特征也进行同样的操作。随着拱门特征的比例增加你会逐渐看到拱门的形状形成。超过 50% 后你会看到玉米开始消失并融入拱门本身。两颗草莓在研究 SAE 特征时我发现有两个特征似乎都与草莓有关。在这部分我们将深入研究这两个草莓特征具体确定它们各自编码的内容。乍一看第一个特征特征 1511似乎编码的是单个草莓而第二个特征特征 2314编码的是多个草莓。这实际上可能是 SAE 中常见的特征分裂的例子 [(Chanin 等人2024)]。我们可以通过去除它们共有的方向来放大它们的差异以便更好地观察它们的区别。这个过程称为 Gram - Schmidt 正交化结果如下。这有力地证明了特征 1511 确实编码的是单个完整的草莓包括所有的种子和顶部而特征 2314 编码的是多个草莓即使它们是切开的。但特征 1511 是关于单个草莓还是完整的草莓呢特征 2314 是关于多个草莓还是小草莓呢为了弄清楚这些问题我们先将不同大小的草莓图像输入 SAE并记录随着草莓尺寸变化这两个特征的激活强度。使用下面的滑块进行操作。从上面的图表可以清楚地看出草莓越大特征 1511 的激活强度越强草莓越小特征 2314 的激活强度越强直到草莓约为 30×30 像素时激活强度开始下降。现在我们来看看草莓的数量是否也有影响。我们将草莓的大小固定为 125×125 像素这个尺寸在之前的大小实验中处于特征 1511 占主导的范围。由此看来草莓的数量也是区分特征 1511 和 2314 的因素之一与草莓的大小无关。草莓数量越多特征 2314 的激活强度越高特征 1511 的激活强度越低。最后我们再做一个验证看看是否完全理解了这些特征。作为基准我们看看一个大而完整的草莓对特征 1511 和 2314 的激活情况。正如预期的那样特征 1511 的激活程度占主导。那么一个大而切开的草莓会怎样呢特征 1511 的激活强度大幅下降这意味着特征 1511 是专门针对单个、大而完整的草莓的特征而特征 2314 则与多个小草莓有关无论它们是完整的还是切开的。希望这能让你了解每个特征是多么复杂和微妙。我们这里只深入研究了两个特征但我们的 SAE 生成了一万两千个特征。解读所有这些特征极其困难手动分析也不具有可扩展性。特征地图最后我们在一个大型图像语料库ImageNet Val上运行 SAE并记录每张图像激活的特征集。这为我们提供了一个大型的特征共激活矩阵我们可以使用 UMAP [(McInnes 等人2018)] 将这个大型特征空间可视化成 2 维地图同时保留局部邻域信息这样经常一起激活的特征在地图上会靠得很近。这与 [Carter 等人 (2019)] 的激活图谱思路类似。你可以拖动或滑动来平移地图滚动或捏合来缩放查看 SAE 学到的不同特征和簇。这意味着什么我们从一个将图像映射到 384 个数字的小模型开始。通过使用 SAE、特征可视化和一些数学方法我们对这 384 个数字编码的内容以及如何操作它们有了初步了解。但还有很多未知的东西。这些嵌入是如何构建的局部嵌入与全局嵌入有何不同在视觉语言模型中能否进行类似的特征可视化[1] SAE 在 DINOv3 ViT - S/16 全局CLS嵌入上进行训练进行 32 倍扩展从 384 维扩展到 12288 维使用 ReLU 激活函数和 L1 稀疏性惩罚并定期对死亡特征进行重采样 [(Bricken 等人2023)]。推理时每张图像最多只有 32 个特征处于激活状态。