VLM的视觉词汇表扩充(Vary:扩展大型视觉语言模型的视觉词汇量)
下面从“论文结构 → 算法核心 → 关键公式/机制 → 和现有 VLM 的关系”四个层次,把 Vary(Vision Vocabulary Augmentation) 的算法部分彻底拆解。
一、论文整体结构速览
Vary 这篇论文的逻辑其实非常“干净”,核心只有一件事:
CLIP 的视觉词汇不够 → 我们显式扩充视觉词汇表
典型结构是:
-
Introduction
- 指出 LVLM 在细粒度视觉任务上的瓶颈
- 定位问题为:视觉词汇不足(visual vocabulary bottleneck)
-
Related Work
- CLIP / LVLM
- Visual Tokenization
- OCR / Document Understanding
-
Method(重点)
- Visual Vocabulary Augmentation(Vary)
- 两阶段架构(Vary-tiny / Vary-base)
-
Experiments
- DocVQA / ChartQA / OCRBench
- 消融实验
-
Analysis
- 新视觉词是否真的学到“新东西”
我们现在只拆 Method(算法核心)。
二、Vary 的问题建模(非常关键)
论文中对问题的正式建模,可以总结成一句话:
现有 LVLM 使用的视觉 token 空间是“冻结且封闭的”,导致细粒度视觉概念成为 OOV(out-of-visual-vocabulary)问题。
这里的“词汇”指的不是文字,而是:
- CLIP 视觉 encoder 输出的 embedding 分布
- 这些 embedding ≈ 视觉词表
但问题是:
- CLIP 的视觉空间是为 自然图像 + 语言对齐 优化的
- 对 字符、表格、线条、排版结构 不敏感
👉 所以 Vary 的目标是:
\( \textbf{learn new visual tokens that are complementary to CLIP} \)
三、算法核心一:视觉词汇生成(Vary-tiny)
这是 Vary 最原创、最像 NLP 扩词表的部分。
3.1 关键思想
把“视觉词”当成可以被生成、被学习、被扩展的对象
在 NLP 中:
- token 是离散的
- vocab 可以 grow
Vary 说:
👉 视觉 embedding 也可以 grow
3.2 Vary-tiny:视觉词生成器
架构组成
Vary-tiny 主要包含:
- 视觉 backbone(如 ViTDet)
- 视觉词汇网络(Visual Vocabulary Network)
- 轻量语言模型(如 OPT-125M)
结构直觉是:
Image
↓
Dense Visual Features
↓
Visual Vocabulary Generator
↓
New Visual Tokens
3.3 “生成视觉词”是什么意思?
这里非常重要,很多人第一次会误解。
不是生成文字标签,而是生成 embedding 向量:
\( \mathbf{z}_i \in \mathbb{R}^d \)
这些 \((\mathbf{z}_i)\):
- 不在 CLIP embedding 分布中
- 专门覆盖 CLIP 弱的区域(如字符、边缘、布局)
你可以理解为:
在视觉 embedding 空间里,长出一批“新方向”
3.4 生成机制(核心算法点)
论文使用的是一种 自回归生成 + 对齐约束:
- 将视觉词当成一个“序列”
- 通过语言模型预测下一个视觉词 embedding
- 用视觉-语言任务反向约束这些 embedding 是否有用
直觉类比:
像用 GPT 生成新 subword,但 loss 来自下游理解任务
3.5 这一阶段学到了什么?
Vary-tiny 学到的是:
-
一套新的视觉原子单元
-
它们对:
- 文本边界
- 字符形状
- 表格线条
- 密集结构
更敏感
这一步相当于:
给 VLM 扩了“视觉词表”
四、算法核心二:视觉词汇融合(Vary-base)
有了新词,还不够,关键是怎么用。
4.1 核心设计原则
论文非常明确:
不替换 CLIP,只做增量增强(augmentation)
原因很现实:
- CLIP 的通用视觉能力非常强
- 直接替换 = 灾难
4.2 双视觉词汇并行结构
在 Vary-base 中,图像会走两条路:
Image
├─ CLIP Visual Encoder → CLIP Tokens
└─ Vary Visual Encoder → New Visual Tokens
↓
Token Fusion
↓
LLM
也就是说:
- 原始视觉词汇(通用)
- 新视觉词汇(细粒度)
并行输入 + 融合
4.3 Token 融合方式(关键但克制)
论文在这点上很“保守”,这也是它工程上稳的原因:
-
不做复杂 cross-attention 堆叠
-
不改 LLM 结构
-
只做:
- concat
- linear projection
- position alignment
这样做的好处:
- 不破坏 LLM
- 易迁移
- 易复现
4.4 从 LLM 视角看发生了什么?
LLM 看到的是:
[视觉token_1 ... 视觉token_K] + [文本token]
但这些视觉 token:
- 一部分来自 CLIP(“老词”)
- 一部分来自 Vary(“新词”)
👉 本质效果是:
LLM 的“视觉词表”变大了
五、关键损失函数设计(算法灵魂)
Vary 并不是随便生成 embedding,它用任务来“约束词义”。
典型 loss 包括:
- 视觉-语言对齐 loss
- 下游任务生成 loss(QA / OCR)
- 冗余抑制 / 多样性约束(防止新词塌缩)
核心思想一句话:
只有“能帮助语言模型完成任务的视觉词”,才是好词
六、为什么 Vary 有效?(从算法角度)
你可以从三个层面理解:
1️⃣ 表示能力层
CLIP 视觉空间 ≈ 自然图像 manifold
Vary 扩展了这个 manifold 的维度和覆盖范围
2️⃣ 信息瓶颈层
Q-Former / pooling 解决的是 压缩
Vary 解决的是 “原材料不够”
3️⃣ 训练信号层
Vary 的新词:
- 直接被下游任务监督
- 不靠图文弱对齐
- 更 task-oriented
七、一句“评审级”总结(你可以直接用)
Vary reframes visual tokenization in LVLMs as a vocabulary expansion problem, and introduces a generative mechanism to learn complementary visual tokens beyond CLIP’s embedding space, enabling finer-grained visual perception without sacrificing generalization.
八、完美闭环
你可以把整条技术线连起来:
- CLIP:给了“通用视觉词表”
- Q-Former:学会“挑词、压缩词”
- Vary:直接“扩词表”
一句话闭环:
当你发现 token 不够用时,不一定要压得更狠,也可以把词造得更多。
但真正重要的是:它扩的到底是哪一类“词”?
我先给你一句结论版,再逐层拆。
一句话结论
Vary 扩充的不是“新物体类别”,而是 CLIP 视觉词汇体系中缺失的、对细粒度结构与符号敏感的“低—中层视觉语义词”。
关键词只有三个:
- 不是类别
- 偏结构/符号
- CLIP 的盲区
一、先澄清一个常见误解
❌ 错误理解
Vary 是给 CLIP 加了更多 object label / concept token
✅ 正确理解
Vary 扩的是 “视觉子词(visual sub-lexemes)”
类比 NLP:
| NLP | VLM |
|---|---|
| word | object |
| subword / morpheme | 结构型视觉词 |
| punctuation | 视觉符号词 |
Vary 扩的是 后两类。
二、Vary 扩充的视觉词汇三大类型
论文和实验里,其实已经给了非常清晰的信号。我们按语义层级来分。
1️⃣ 结构型视觉词(Structural Visual Tokens)
这是 Vary 最重要的一类贡献。
典型特征
-
对几何结构高度敏感
-
不对应“物体”,而对应:
- 边界
- 框
- 线
- 对齐关系
具体包括
- 表格的 行 / 列分隔线
- 文档的 段落边界
- 图表的 坐标轴
- 框图中的 连接线
为什么 CLIP 不行?
因为 CLIP 的训练目标是:
“这张图整体像不像这句话”
而不是:
“这张图里某条线和另一条线是什么关系”
👉 所以 CLIP 会把这些结构当噪声。
Vary 则显式把它们变成“词”。
2️⃣ 符号 / 字符级视觉词(Symbolic / Glyph Tokens)
这是 Vary 在 OCR / DocVQA 上起飞的根本原因。
这些“词”长什么样?
- 单个字符的形状特征
- 数字 vs 字母 vs 标点
- 粗体 / 斜体 / 下划线
- 字符间距、对齐方式
注意:
它们不是“字母 A / B”的语义,而是“这个东西是一个字符”的视觉原子
类比 NLP
这相当于:
- NLP 里从 word-level
- 退到 char / byte-level
- 但仍然保留语义可用性
CLIP 的 patch embedding:
- 太大
- 会把多个字符糊在一起
Vary 生成的新词:
- 专门为“字符级感知”服务
3️⃣ 布局关系型视觉词(Layout / Relation Tokens)
这一类非常“隐蔽”,但在问答里作用巨大。
它们表达什么?
不是“是什么”,而是:
- 上 / 下
- 左 / 右
- 对齐 / 包含
- 相邻 / 跨列
例如:
“右侧第二列的数值是多少?”
CLIP 能看到“数值”,但不知道“第二列”。
Vary 的新词,正是用来编码这种空间关系先验的。
三、Vary 明确没有扩充什么(反而很重要)
这点反而能看清它的定位。
❌ Vary 没有重点扩:
- 新的自然物体类别(猫、狗、车)
- 高层抽象概念(危险、拥挤、美丽)
- 情感 / 风格语义
原因很简单:
这些 CLIP 已经非常强了
Vary 是“补短板”,不是“重复造轮子”。
四、从 embedding 空间看:这些新词在哪里?
从表示学习角度,你可以这样理解:
-
CLIP 的 embedding manifold:
- 覆盖自然图像语义
-
Vary 扩充的词:
- 落在 CLIP manifold 的边缘或空洞区域
- 填补 高频但语义弱的区域
你可以想象一个图:
[ Object semantics ]
● ●
● ●
(空洞)
◉ ◉ ◉ ← Vary 新词
这些新词:
- 不一定“漂亮”
- 但极其有用
五、为什么这些词对 LLM 特别重要?
因为 LLM:
- 擅长推理
- 不擅长感知
而这些新视觉词:
-
把“感知问题”提前解决
-
让 LLM 接收到的是:
- 结构化 token
- 而不是像素噪声
一句话总结:
Vary 扩的是“让语言模型能用得上的视觉词”。
六、和你前面讨论过的内容,统一视角
你可以把这几件事串成一条线:
- CLIP 视觉词汇表:通用、偏物体
- Q-Former:从现有词里挑重点
- Vary:当词不够时,直接造新词
而 Vary 造的,正是:
CLIP 不关心,但 LLM 非常需要的视觉语义单元
七、一句“论文答辩级”总结
你可以在答辩或评审里这样说:
Vary primarily augments low- and mid-level visual tokens that encode fine-grained structures, symbols, and layout relations, which are underrepresented in CLIP’s object-centric visual vocabulary but critical for document and diagram understanding tasks.
如果这篇文章帮助到了你,你可以请作者喝一杯咖啡

浙公网安备 33010602011771号