Skip to main content

DeepSeek 多模态视觉源语是什么?

· 8 min read

多模态模型的真正瓶颈不是 "看不清",而是 "指不准"

  1. Reference Gap(指代断裂):模型看到了目标对象,但在推理链中无法稳定引用"到底是哪一个"。"左边那个""他旁边的"这类自然语言描述在视觉空间里不是精确地址——场景越复杂、相似物体越多,语言变量就越容易在几步推理后漂移到另一个实体上。

  2. 解法:把边界框和坐标点变成推理链的中间变量。 每写下一个框 = 在草稿纸上钉一颗钉子,后续推理围绕这些坐标展开,不再依赖模糊的自然语言指代。论文将框和点定义为"视觉原语(Visual Primitive)"——本质上就是把人类"用手指点着数"的动作形式化到了 token 序列里。

  3. 工程压缩比 7056×:2916 patch tokens → 3×3 空间压缩 → 324 → CSA 注意力缓存压缩 → 81。语言模型 DeepSeek V4 Flash(284B/13B MoE)+ 从头训练 DeepSeek ViT,视觉 token 限制在 81–384,不靠无限堆 token。

  4. 数据说话:~90 个视觉缓存条目跑出 77.2 分,Gemini 3 Flash 用 1100 个拿 76.5 分。视觉 token 不是越多越好,关键是模型有没有办法把"这个对象"稳定地绑定到图像坐标上。


多模态模型真正的瓶颈:不是没看见,是指不准

聊多模态模型瓶颈的时候,大多数人的第一反应是"分辨率不够"——小目标看不清、文字模糊、遮挡细节丢失。这是真实存在的问题,论文把它叫 Perception Gap(感知缺口)。过去几年多模态模型的改进路线也确实都围着这个方向转:提高输入分辨率、动态切图、多尺度局部裁剪,让模型拿到更多视觉 token。

yKdUCg

但 DeepSeek 这篇论文指出了一个更底层、也更被忽视的问题。

很多时候模型其实已经看到了目标对象,但在推理链里,它没法稳定地说清楚自己到底在引用哪一个。这就是 Reference Gap(指代断裂)

举个例子。图里有 20 个人,模型第一步说"左边那个穿红衣服的人",第二步说"他旁边的人",第三步开始数人数。每一步听起来都没毛病,但在模型内部,"他"指代的那个实体很可能已经漂移了——前面说的是 A,后面判断的变成了 B。

rec3Sn

同样的困境出在数熊任务里:模型先找到一只在树上的熊,然后说"剩下的熊在地上"。如果推理链很长,后面讨论的那只熊和前面定位过的熊是不是同一个视觉实体,模型自己保证不了。

yq7z3a

这不是感知能力的问题,是指代能力的问题。

为什么自然语言在视觉空间里会失效

根本原因很简单:自然语言里的空间描述不是精确地址。

"左边那个""中间那个""第二排那个"——这些短语在纯文本推理中能正常工作,因为文本空间是离散的、符号化的。但到了连续视觉空间,同样的描述就成了歧义源。场景越复杂、相似物体越多、遮挡越严重,语言的指向性就越弱。

换句话说,语言思维链在纯文本任务里可以承担"推理变量"的角色,但到了图像任务里,这些变量经常没有唯一地址

这就是论文的核心洞察:视觉推理的瓶颈,不是"感知带宽"不够,而是**"指代带宽"不够**——模型能以多高的精度把语言里的对象绑定到图像坐标上。

如何解决:把框和点变成推理链的变量

论文的方案可以用一句话概括:让边界框和坐标点进入推理的中间过程,而不只是最终输出。

info

核心想法:把点和框这类视觉源语,变成推理链里的最小思维单元

传统做法是:模型先在内部完成推理,得出答案,最后画个框说"我看的就是这块"。这更像是先有答案再补证据。

这篇论文的做法反过来:模型在推理过程中每写下一个框,就相当于在草稿纸上钉了一颗钉子,后续推理围绕这些钉子的坐标展开。

对比一下两种模式:

0VxAoF
  • 传统模式:"我看到三只熊,其中两只在地上"——依赖语言变量,指代模糊。
  • 本文模式:先在推理中写出每只熊对应的边界框坐标,再根据这些框的位置和属性判断哪只在树上、哪两只在地上——坐标变量,可追踪。

报告定义了两类视觉原语(Visual Primitive)

  1. 点(Point):归一化坐标,适合路径曲线、运动轨迹这种没有标准名字的抽象结构
  2. 边界框(Box):左上和右下两个坐标,归一化到 0–999 的离散整数网格,适合对象定位、计数、属性过滤、拓扑连通性
I4I6Na

框和点要解决的不是"看得更细",而是把视觉空间变成一种可写入的地址空间。模型不再只是在内部隐约关注某个区域,而是把那个区域用坐标明确写出来,后续推理可以直接引用。

ogyEIF

两类视觉原语的坐标格式

juzid5

说白了,这很像是把人类"用手指点着数"的动作机制形式化到了多模态模型的 token 序列里。人类数东西的时候经常会用手指点过去,不是眼睛看不清,而是点这个动作可以降低工作记忆的负担。这篇论文做的事情,本质上就是把这种"指一下"的行为变成了模型推理链的一部分。

5x1CEi

人类“指一下”的机制,形式化进 token 序列

架构与压缩:7056× 怎么来的

从系统层面看,模型走的是类 LLaVA 路线:图像 → 视觉编码器 → 视觉 token + 文本 token → 语言模型。

ROi4PT

视觉 token 与文本 token 拼接后一同进入语言模型

语言模型用的是 DeepSeek V4 Flash,284B 总参数、推理时激活 13B 的 MoE(混合专家)架构。视觉编码器是从头训练的 DeepSeek ViT,支持任意分辨率输入。

有个容易被忽略的工程细节:所谓"任意分辨率"并不等于任意数量的视觉 token 都塞进语言模型。论文把进入 LLM 的视觉 token 数量限制在 81–384 之间,超出范围的图像会在保持长宽比的前提下缩放。

压缩分两层:

第一层:3×3 空间压缩。 视觉编码器端把相邻的 9 个图像小块合并成一个紧凑表示。

第二层:CSA(Cross-modal Sparse Attention)缓存压缩。 在语言模型端,把进入 LLM 的视觉 token 在注意力缓存里再压缩 4 倍。

具体数字:一张 756×756 的图像,按 14×14 的 patch 切分,得到 2916 个 patch token → 3×3 空间压缩后变成 324 个 → CSA 缓存压缩后只剩 81 个视觉缓存条目。

uNFDPV

从原始像素总数到最终 81 个缓存条目,工程口径压缩比是 7056 倍。这不是信息论意义上的无损压缩,而是像素数量与缓存条目数量的比例。但关键不在这里。

90 个缓存条目就够了

论文图 1 的对照数据很说明问题。在 800×800 的图像上:

模型视觉缓存条目评分
本文模型~9077.2
Gemini 3 Flash~110076.5
Claude Sonnet 4.6~870

用不到十分之一的视觉预算,跑出了同一水平线的分数。

当然,这只是论文聚焦的那组评测,不能直接推断整体能力。但这个对照说清楚了一件事:在需要稳定引用的视觉推理任务上,视觉 token 不是越多越好。 关键在模型有没有机制把对象"指准"。

这其实也解释了为什么论文的标题叫"用视觉原语来思考"——视觉原语不是让输出更花哨,而是把"指代"从模糊的语言变量升级为精确的坐标变量。模型说"这个对象"时,留下的不是一个容易漂移的自然语言短语,而是一个可以被后续推理反复引用的坐标。


Reference