视觉 tokenizer 的好坏,过去只有一个办法知道:接上一个生成模型,从头训一遍,看分数。这篇论文做的事,是把这个「要烧卡才能得到的答案」变成一个直接可测的数——顺带发现,近一年大家拼命往 tokenizer 里加的语义监督,对齐的对象从一开始就偏了一半。
先把事情说清楚。现在的图像生成模型并不直接在像素上工作。图像先要经过一个叫视觉 tokenizer 的「压缩器」——把一张上百万像素的图,压成几百个数字符号(所谓隐空间里的一小组向量),生成模型的所有学习都发生在这些符号上。压缩器压得好不好,直接决定后面生成模型的上限。
麻烦在于,判断「压得好不好」很贵。两个朴素标准都不可靠:重建清晰(原图能被还原)不代表好生成;隐空间的统计性质好看也不代表好生成。近两年的主流补法是往隐空间里注入语义监督——请一个现成的视觉理解模型来告诉 tokenizer「这次压缩要把语义留住」,理由是语义越整齐、后面的扩散模型越好训。但验证这一点仍然只能接上一个大生成模型从头训一遍,看 gFID(生成图与真实图的统计距离,越低越好)。评估一个 tokenizer 的成本,约等于训练一次生成模型。
AffineTok 的作者从一个细节入手:扩散模型去噪的每一步,输出的其实不是「某一张干净图」,而是「在当前噪声程度下最可能的那张干净图」——一堆可能性的平均值。这就带来一个错位:语义监督对齐的是「干净图的语义」,而扩散模型实际处理的,是「平均之后那张图的语义」。两者不是一回事。就像把两张姿势不同的哈士奇照片平均成一张模糊的脸:对这张模糊脸的描述,并不等于两张照片描述的平均。
于是作者把训练目标改写成他们所说的语义仿射一致性(SAC):从带噪隐变量预测出的语义,应当与「平均后干净隐变量」解码出的语义一致。更关键的一步是把这条性质做成了探针式的度量 M_SAC——不训任何生成模型,在 tokenizer 的隐空间里做相邻插值就能算出来。在 14 个现成 tokenizer(含 Stable Diffusion 3、FLUX 内置的压缩器)上,M_SAC 与之后接 SiT-XL 训出的 gFID 相关性达 0.960,此前常用的另一类代理指标只有 0.89。顺着这个指标修正训练后,ImageNet 256 上的 gFID 从 1.32 降到 1.21——而且是无引导的成绩,完全靠模型自己,不靠任何引导技巧兜底。
对真实工作流的影响可能比分数本身大。其一,底座选型的成本塌缩:相机厂商做端上生成、修图软件训私有模型,第一步都是选压缩器,过去只能靠经验和财力先训再说,现在可以先把候选全部量一遍再决定训谁——「烧一周卡」变成「跑一个脚本」。其二,它给语义监督这条路线第一次立了判据:语义不是加得越多越好,而是要加在「平均后的隐变量」上;所有在隐空间里做语义对齐的后续工作,都绕不开这个对象错位。其三,这条「测而不训」的思路大概率会被搬到视频 tokenizer 上——对世界模型这类一训数月的方向,选型成本的塌缩会更可观。
存疑的地方也要说清。0.960 的相关性是在类别条件生成(固定 1000 类的 ImageNet 加 SiT-XL)上测的,换到开放词表的文生图大模型、更高分辨率,这把尺子是否还这么准,论文没有给出答案;M_SAC 依赖插值探针的设计,探针自身引入的偏置也讨论有限。1.21 的 gFID 是类别条件生成的成绩,与真实文生图产品之间仍有一段路。但方向本身是对的:把「好不好」从训练结果里拆出来,变成可以前置的测量——这在任何影像系统里,都是难得的那类贡献。
