视觉 Token 是什么?

图片是怎么被大模型"看"懂的?
我第一次用 GPT-4V 发了一张猫的照片,问它"这只猫在干嘛",它居然答对了——它说猫在窗台上晒太阳,尾巴垂下来晃来晃去。
说实话,当时挺震撼的。大模型这东西,天生是处理文字的,怎么就"看"得懂图片了?
上篇我们聊了 CLIP——那个能让图像和文字"对上暗号"的技术。CLIP 学会了"猫图"和"cat"是一回事。
但问题来了:对上了暗号,然后呢?图片是怎么真正送进大模型脑子里的?
这就是今天要聊的:视觉 Token,图片和大模型之间的翻译官。
大模型天生"近视",它根本看不见像素
先泼盆冷水。
大模型看起来什么都能聊,但其实它的世界里只有一种东西:Token。
Token 是什么?你可以理解成文字的最小单位。中文可能是"你好"这两个字,英文可能是"hello"或者更细的"hel"+"lo"。
大模型干的活,就是预测下一个 token 是什么,然后把 Token A 变成 Token B。它从来没见过像素长什么样。
但图片是什么?
图片是一堆密密麻麻的数字——每个像素的颜色值,RGB 三通道,排列成一个巨大的矩阵。
拿我自己的笔记本跑过测试:一张 512×512 的图片,就是 512×512×3 = 78万个数字。
对这 78 万个数字,大模型是什么感觉?
就像你面对一张写满密码的报纸——每个字你都认识(数字嘛),但连起来是什么意思?完全不知道。
所以,图片想进大模型的门,必须先"翻译"一下。
把像素世界,翻译成 Token 世界。
这个翻译工作,就是视觉 Token要干的事。
图片 Token 化四步走
翻译图片这件事,不是直接一股脑塞进去的。
它有一套流水线,分四步走。
第一步:分割
把图片切成小块。
就像你收到一个大快递,不会直接塞进柜子,而是先拆成小包裹。
视觉模型的做法是:把图片切成 16×16 像素的小方块。这些小方块有个专门的名字,叫 Patch。
一张 224×224 的图片,能切成 (224÷16)×(224÷16) = 14×14 = 196 个 Patch。
第二步:编码
每个 Patch 送进一个叫 Vision Encoder 的家伙里。
这东西是专门训练来看图的,它能理解每个 Patch 里有什么——是猫耳朵,还是背景的草地。
编码之后,每个 Patch 变成了一个向量。这个向量,就是这个 Patch 的"特征"。
第三步:投影
但问题来了:Vision Encoder 输出的特征,是它自己学出来的"视觉语言"。而大模型只认"文本语言"。
这就像两个国家的人,一个说粤语,一个说普通话,表面上都是中文,但听不懂。
怎么办?需要一个翻译。
这个翻译就是 Projector,一个专门把视觉特征映射到文本空间的层。
第四步:拼接
到了这步,图片已经变成了"图片 Token"。
把它们和你的文字指令拼在一起:
[图片Token][图片Token]...[图片Token] + [你]的[文字][指令]然后,一起送进大模型。
大模型一看:哦,这是图片 Token 和文字 Token 混在一起,它就懂了。
Vision Encoder:视觉领域的翻译员
说到编码器,这里有两个明星:ViT 和 CLIP。
ViT 是先来的那个。
ViT 全称 Vision Transformer,就是把 Transformer 架构直接用到图像上。
怎么用?它把每个 Patch 当成一个"词"。
原来的 Transformer 处理的是文字序列:"今天"-"天气"-"不错"。ViT 处理的是 Patch 序列:Patch1-Patch2-Patch3。
输入一张图,输出一个向量序列,表示图片里有什么。
ViT 很能打,但它有个问题:它是"单向"的,只懂图,不懂文字。
CLIP 就是来解决这个问题的。
上篇我们说过,CLIP 通过对比学习,让图像和文字在同一个空间里对齐。
CLIP 有两个编码器:图像编码器和文字编码器。狗图经过图像编码器,输出一个向量;"dog"经过文字编码器,输出另一个向量。相似度很高,说明它们在这个空间里是"邻居"。
所以 CLIP 其实已经是半个翻译官了——它既懂图,也懂文字,而且知道它们之间的关系。
这就是为什么现在很多多模态模型,用的都是 CLIP 作为 Vision Encoder。
用一个已经"双语精通"的编码器,总比从头教一个"只会看图"的编码器说要强。
Projector:跨模态语义鸿沟的桥梁
但 CLIP 编码器输出的向量,和大模型里的文本向量,还是有点不一样。
这就像两个人都说中文,但一个在北京长大,一个在上海长大——用词习惯、口音还是有差异。
Projector 就是那个消除差异的东西。
它的任务很明确:把视觉特征,翻译成大模型能理解的"语言"。
怎么实现?
最常见的做法是:MLP,多层感知机。就是几层神经网络,一层一层地把特征向量做变换,直到它"看起来像"文本向量。
这个 MLP 不是预训练好的,而是在训练多模态模型的时候一起学的。
训练的时候,给它看很多图文对:图片经过 CLIP 编码器,得到视觉特征;文字经过 LLM 的 embedding 层,得到文本特征。Projector 的任务,就是让这两者尽可能接近。
学完之后,Projector 就成了一个固定的翻译器——以后图片进来,它就知道怎么翻译了。
用生活类比来理解:
不同国家的插座形状不一样,你带电器出国,得用一个转换插头。Projector 就是那个万能转换插头,让视觉特征能"插进"大模型的接口。
从 LLaVA 到未来:视觉 Token 的进化史
视觉 Token 这套技术,不是凭空出现的。
它的演进,大致分三个阶段。
第一阶段:LLaVA 开山
2023 年,LLaVA 论文发布,提出了一个简单有效的范式:
用 CLIP ViT 作为 Vision Encoder,用一个 MLP 作为 Projector,连接到 LLaMA 大模型。
架构简单,但效果惊艳。它证明了:只要把图片"翻译"成 Token,大模型就能看图说话了。
LLaVA 是第一个真正意义上的开源多模态对话模型,影响深远。
第二阶段:Token 数量之争
LLaVA 用的是固定数量的图片 Token(比如 256 个)。
但 researchers 们开始想:Token 数量是越多越好吗?
FlexTok 提出了一个极端观点:1 个 Token 就能表示一整张图。
1 个 Token?那图片信息岂不是丢失了?
结果让人意外:压缩到极致之后,模型依然能理解图片的主要语义。细节可能会丢,但"图里有什么"这种大问题,答得出来。
这说明:Token 数量不是关键,特征质量才是。
第三阶段:全模态融合
最近的趋势,是让模型不只能看图,还能听、能说、能写。
Ola、Emu3 这些新模型,开始走向统一的 Token 空间——不管输入是图片、语音还是文字,都先转成 Token,再交给同一个大模型处理。
ViT vs VLM:一张图看明白关键差异
| ViT(纯视觉) | VLM(多模态) | |
|---|---|---|
| 输入 | 图片 Patch 序列 | 图片 Token + 文字 Token |
| 核心架构 | Transformer | Vision Encoder + LLM + Projector |
| 输出 | 图像特征向量 | 文本回答 |
| 投影层 | Patch → Embedding(位置编码) | 视觉特征 → 文本空间(Projector) |
| 训练目标 | 图像分类/对比学习 | 图文对齐 + 语言建模 |
ViT 是"单打独斗"的视觉模型,VLM 是"图文融合"的多模态模型。
中间那个 Projector,就是把 ViT 的输出,变成 VLM 能用的输入的关键桥梁。
下篇预告
今天聊了图片是怎么送进大模型的,核心就是两个字:翻译。
大模型只认 Token,图片是像素,这中间需要视觉 Token 来做翻译。
翻译分四步:分割图片成 Patch,用 Vision Encoder 提取特征,用 Projector 映射到文本空间,最后拼在一起送进 LLM。
Vision Encoder 负责"看懂图",Projector 负责"翻好译"。
那图片送进去之后,大模型是怎么"思考"这张图的?它又是怎么组织语言回答你的?
下篇我们接着聊——多模态大模型怎么工作?从图像理解到视觉问答。
