你有没有想过一个问题:文字和图片,到底是不是同一种东西?
听起来挺傻的,一个是一串字符,一个是一张像素网格,当然不是同一种东西。但对于想要同时搞定"看图说话"和"看字画图"的AI模型来说,这个问题却是个绕不开的坎。因为传统做法里,这两种东西必须被强行塞进同一个框架里才能一起训练,而这个"强行"背后,藏着不少妥协。
先说说现在的两条主流路子。第一条叫做离散建模,把图片硬生生切成一个个像文字一样的"词元",这样文字和图像就能用同一套方法来训练了,比如大家熟悉的自回归生成。但问题是,图片一旦被切成有限的几千种"词元",细节就会丢。
**这就像你把一张高清照片压缩成马赛克拼图,拼图块就那么几百种花色,再精细的光影渐变,也只能用最接近的那块马赛克去凑合。如果不切成词元,直接处理原始像素,计算量又爆炸式增长,训练不起来。这就是离散建模躲不开的代价:要么牺牲细节换效率,要么保细节但训不动。**
第二条路子叫混合式。图像还是保留连续的、不切块的状态,用扩散模型或者流匹配的方式生成,文字呢,还是走老路子一个词一个词地往外蹦。这样图像质量保住了,但模型内部其实在同时伺候两套完全不同的"脾气":文字这边要的是分类预测,图像那边要的是连续去噪,两套目标函数、两套采样流程,混在一个模型里,听着就有点拧巴。
这篇来自华中科技大学、北京交通大学和地平线机器人团队的论文,就是冲着这个"拧巴"去的。他们提出了一个叫**Multimodal Flow**(多模态流)的框架,实例化出的模型叫**MF-1**。核心想法很直接:既然图像能用连续的流匹配来生成,那文字是不是也可以?干脆让文字和图像都待在各自的连续嵌入空间里,用同一套流匹配机制去生成,谁也不用迁就谁。
流匹配
流匹配(Flow Matching):一种生成模型训练方法,让模型学会一条从随机噪声逐渐"流动"到真实数据的路径,不需要像扩散模型那样做成百上千步的逐步去噪,可以用更少步数、更直接的方式完成生成。
当语言遇见连续空间:问题到底难在哪
要理解MF-1的巧妙之处,得先弄明白文字和图像这两种东西到底有多不一样。
文字是一条线。一句话里,"我"在"爱"前面,"爱"在"你"前面,顺序错了意思就全乱了。这是一种严格的、线性的、因果的结构。
图像是一张面。一张照片里,左上角的云和右下角的草地没有谁先谁后的关系,它们是同时存在、空间并列的。这是一种二维的、非因果的结构。
**如果你把这两种完全不同的结构硬塞进同一套处理逻辑里,要么逼着图像也装出"先后顺序"的样子,要么逼着文字也装出"空间并列"的样子,两边都会别扭。**
这就好比让一个说书人和一个摄影师合作完成同一个故事:说书人靠的是一句接一句往下讲,前因后果环环相扣;摄影师靠的是一张照片里所有元素同时呈现,观众一眼扫过去全看到了。如果你非要让摄影师也"按顺序"交代照片里的每个角落——先左上角,再右上角,再左下角——这张照片的整体感就被破坏了,摄影师的优势反而成了累赘。反过来让说书人把整个故事压成一张静态海报,叙事的张力也没了。MF-1要做的,就是让这两种"讲故事的方式"在同一个框架里各自保留本色,又能彼此配合。
在MF-1出现之前,像Chameleon、Emu3这样的全离散模型,用统一的分类词表硬连接了两种模态,在GenEval这个评测图像生成构图准确度的基准上,Show-o只能拿到0.53分,LWM更是只有0.47分(满分1分)。而像Transfusion、JanusFlow这样的混合模型,虽然保住了图像的连续细节,但在GenEval上也只能摸到0.63到0.67分的水平。这些数字摆在那里,说明当时领域里公认的"天花板"也就是这个水平——大家默认接受了要么牺牲图像细节,要么牺牲建模一致性的现实。
把文字和图片都切成"块":超块设计
MF-1的解决方案,第一步是发明了一种叫做超块的通用单元。
超块
超块(hyperchunk):论文里对文本块和图像统一的称呼,每个超块都是一段连续的、未经量化的向量表示,文本超块保留词元的先后顺序,图像超块保留像素的空间网格结构。
具体怎么做的?文字这边,模型把一段文字切成每8个词元一组的小块,用一个叫T5-small的文本编码器把每个小块编码成连续向量,这些向量的排列顺序完全对应原文的词序。图像这边,整张图片经过一个叫SigLIP2的视觉编码器后,变成256个图像块,排成16×16的网格,这个网格整体打包成一个超块,空间结构原封不动保留。
**这个设计巧妙的地方在于:它没有强迫文字和图像变成同一种形状,而是让它们各自保持原本最自然的组织方式,只是都统一成了"连续向量"这一种数据类型。**
打个比方,这就像一个翻译官要同时处理书面合同和建筑图纸。合同是一行一行往下读的,图纸是整张铺开来看的。翻译官不会强迫客户把图纸也裁成一行一行的文字稿去读,而是分别保留合同的行文顺序和图纸的空间布局,但统一用一种"标准格式"(比如都扫描成同一种分辨率的电子文档)去传递。如果非要把图纸硬拆成一行一行的文字描述,建筑的整体结构感就丢了,这正是全离散建模在图像上的代价。
文本编码器
文本编码器(T5-small):一个把文字转换成固定维度数值向量的小型预训练模型,论文里用它把每8个词元打包编码成512维的连续表示。
视觉编码器
视觉编码器(SigLIP2):一个把图片转换成语义特征向量的预训练视觉模型,和传统追求"像素级重建"的编码器不同,它学到的是图片的语义内容,更接近"这张图里有什么"而不是"每个像素是多少"。
论文还专门做了个实验来验证这个选择。他们对比了DINOv2、SigLIP2这类语义型编码器和FLUX.2 VAE、SD-VAE这类追求重建保真度的编码器,还试了直接用原始像素。结果发现,语义型表示在生成和理解任务上都明显更好,而那些专注于像素重建的VAE表示反而落后,原始像素的表现更是垫底。这说明一件挺反直觉的事:对于想要同时理解和生成的模型来说,图像里重要的不是每个像素精确到小数点后几位,而是图里到底"有什么内容",这和人类看图的方式其实是一致的,我们记住一张照片,往往不是记住每个像素值,而是记住了"有一只猫坐在窗台上"。
一套骨架,两种性格:联合注意力与分模态前馈网络
超块解决了"用什么单位"的问题,接下来是"怎么处理"的问题。MF-1用了一个共享的流骨架网络来处理所有超块,但这个骨架内部有两套不同的"器官"。
注意力机制那一层,文字超块和图像超块是共享参数的,也就是说模型用同一套规则去判断"这个位置该关注哪些其他位置"。但紧接着的前馈网络层,文字和图像各用各的参数,互不混用。
前馈网络
前馈网络(FFN,Feed-Forward Network):Transformer模型里紧跟在注意力层之后的一层全连接网络,负责对每个位置的信息做进一步的非线性变换,可以理解为注意力层负责"收集信息",前馈网络负责"加工信息"。
这个设计不是拍脑袋决定的,论文做了个对照实验:把注意力投影和前馈网络分别设成共享或独立四种组合,结果发现共享注意力加独立前馈网络的组合综合表现最好,而如果前馈网络也共享,模型在图像描述任务上的CIDEr指标直接从47.91掉到42.02,掉了将近6个点。
**这告诉我们一件事:跨模态信息的"收集"可以共用一套逻辑,但信息的"消化吸收"必须尊重各自的特性,图像和文字的数值分布、统计特征天差地别,如果强行用同一套前馈网络去处理,就像让一个只会做中餐的厨子去同时做中餐和法餐的调味,食材的"收集"流程可以一样(都要洗菜切菜),但下锅后的火候和配料就必须分开对待,否则两道菜都做不好。**
这也解释了为什么论文把这套架构叫"块因果"。
块因果
块因果(chunk-causal):一种注意力掩码机制,规定当前正在生成的超块只能看到它之前已经生成完的超块,不能看到未来的超块,但同一个超块内部的所有位置是可以互相看见、同时处理的。
也就是说,超块与超块之间严格遵守先后顺序,这保留了语言的因果性,但超块内部的所有位置是一次性并行处理的,这保留了图像的空间并列性。两种结构特性,线性的和空间的,在同一个掩码规则里被同时满足了。
训练时并行预测,生成时逐块推理
MF-1的训练和推理方式也挺有意思,一个是"抢答模式",一个是"接龙模式"。
训练阶段,模型会同时给好几个目标超块打上噪声,然后让这些带噪声的超块并行去预测各自的干净状态,每个目标超块各自独立采样一个噪声强度(专业说法叫时间步),互不干扰。这样一次前向传播就能同时训练好几个预测任务,大大提升了训练效率。
时间步
时间步(timestep):在流匹配或扩散模型里,表示当前数据"噪声程度"的一个数值,通常用t表示,t=0代表完全是随机噪声,t=1代表完全是干净的真实数据,模型需要学会在任意t时刻判断"干净数据大概长什么样"。
推理阶段则完全不同,是老老实实一个超块接一个超块地生成,前一个超块生成完、确认下来之后,才轮到下一个超块从纯噪声开始,沿着学到的"流动路径"一步步积分到干净状态。这个过程还用了一个叫KV缓存的加速技巧,已经生成好的超块,它们的键值信息会被缓存起来,后面生成新超块时不用重新计算,只需要算当前这一块就行。
KV缓存
KV缓存(KV caching):Transformer推理加速的常用技巧,把之前算过的键(Key)和值(Value)存起来,避免每生成一个新内容都要把前面所有内容重新算一遍,论文里强调因为块因果掩码保证了"过去不依赖未来",所以这个缓存机制天然适用。
**训练时并行、推理时串行,这个安排其实是在效率和生成质量之间找了个平衡点。如果训练时也完全串行,一个一个超块慢慢教,那训练速度会慢到难以接受;但如果推理时也想并行生成所有超块,那就等于让模型在什么都不知道的情况下同时瞎猜好几块内容,生成质量根本无法保证。**
这就像写一篇连载小说。作者在构思大纲和打磨语言技巧的阶段(相当于训练),可以同时打磨好几个章节的文笔,互不干扰、并行推进;但真正连载发布的时候(相当于推理),必须一章一章按顺序放出来,因为读者读到第十章时需要知道第九章发生了什么,你不能把还没写出来的第十一章提前剧透。如果连载发布也想并行,所有章节同时抛给读者,故事的连贯性就彻底崩了。
从零训练也能打:MF-1的实际表现
说了这么多设计理念,数据才是硬道理。
论文拿出了1.6B参数规模的MF-1,只用150B训练词元(这个数据量在同类模型里不算大,很多对比模型用到了万亿级别的词元),在GenEval上跑出了0.82的综合得分,这比前面提到的Show-o、Emu3-Gen等离散模型的0.53到0.65分区间高出一大截,也超过了JanusFlow、D-DiT等混合模型的0.63到0.65分。
| 模型类型 | 代表模型 | 参数量 | GenEval总分 |
| 纯生成模型 | SDXL | 2.6B | 0.55 |
| 全离散 | Show-o | 1.3B | 0.53 |
| 全离散 | Emu3-Gen | 8B | 0.54 |
| 混合式 | JanusFlow | 1.3B | 0.63 |
| 混合式 | D-DiT | 2B | 0.65 |
| **全连续** | **MF-1** | **1.6B** | **0.82** |
在长文本提示对齐能力的DPG-Bench测试上,MF-1拿到83.44分,同样是表格里最高的。理解类任务上,MF-1在POPE(检测模型是否产生幻觉的基准)上拿到86.1分,超过了同样从零训练、没有借助预训练语言模型的Muddit(52.5分)和D-DiT(79.2分)。
为了让对比更干净,论文还专门设计了一个"控制变量"实验:用完全相同的训练数据、相同的优化策略、相同的参数预算,分别训练一个全连续的Multimodal Flow、一个Transfusion风格的混合模型、一个Chameleon风格的全离散模型。结果Multimodal Flow在GenEval(0.7134)、GQA(55.60)、VQAv2(69.03)、MMBench(46.74)、SEEDBench(51.85)五项指标上全部拿到最高分,而全离散的Chameleon风格模型在GenEval上只有0.3744,几乎是Multimodal Flow的一半。
| 架构类型 | GenEval | GQA | VQAv2 | MMBench | SEEDBench |
| **全连续(Multimodal Flow)** | **0.7134** | **55.60** | **69.03** | **46.74** | **51.85** |
| 混合式(Transfusion风格) | 0.6693 | 52.81 | 68.49 | 33.68 | 31.31 |
| 全离散(Chameleon风格) | 0.3744 | 45.83 | 56.37 | 38.40 | 42.40 |
这个对照实验很重要,因为它排除了"可能只是数据多、训练久"这种解释,三种架构吃的是同一锅饭,但全连续架构明显消化得更好。
另外论文还验证了预训练这件事本身是否有用。他们拿一个随机初始化的1.6B模型和一个经过混合预训练的1.6B模型对比,给随机初始化模型分配更多的下游训练词元,让两者总训练量持平。结果混合预训练后的模型在GenEval从0.527跳到0.821,SEEDBench从31.6跳到62.4,MMBench从36.0跳到67.2。这说明预训练阶段学到的东西,不是简单的"见得多",而是真的学到了可迁移的跨模态表示,这些表示在下游任务上能直接派上用场,哪怕下游任务本身的训练数据不变。
双向的"引导力":CFG在两种模态上都好使
论文里还有个细节挺值得说一说,叫分类器自由引导。
分类器自由引导
分类器自由引导(CFG,Classifier-Free Guidance):一种在生成时增强"条件相关性"的技巧,做法是分别计算"有条件提示时的预测"和"无条件提示时的预测",然后把两者的差值按一定倍数放大,加到无条件预测上,这样生成结果会更紧贴给定的条件(比如文字提示)。
这个技巧原本是图像生成领域的常规操作,但MF-1证明了同一套CFG机制在图像描述(也就是看图说话)任务上同样好使。实验发现,图像描述任务在引导强度为3的时候效果最好,而文字生成图像任务在引导强度为5的时候效果最好,超过这个值之后生成质量反而开始下滑。
这件事本身说明了一个道理:**因为MF-1从底层就把文字和图像统一成了同一种连续流建模方式,所以原本只能用在图像上的技巧,现在可以无缝搬到文字生成上,不需要重新设计一套机制。** 这是"统一建模"带来的一个意外红利,你解决了一个基础架构问题,许多原本分裂的工具箱就自动合并了。
写在后面
读完这篇论文,最让我觉得有意思的一点,其实是那个前馈网络的对照实验。共享前馈网络只是让CIDEr从47.91掉到42.02,看起来不算大的降幅,但这个数字背后藏着一个更大的道理:**跨模态融合不是"越统一越好",而是要分清楚哪些环节该统一、哪些环节该保留个性**。很多做多模态的工作一上来就想着"把所有东西都塞进一个巨大的共享网络",这篇论文用实验数据泼了盆冷水:信息收集可以共用一套规则,但信息消化必须各自为政。
还有一个细节值得拿出来说:论文里提到SigLIP2这种语义编码器在"生成和理解的平衡"上表现更好,而DINOv2在纯生成任务上分数更高。这说明"用什么表示"这件事本身就隐含着一种取舍,越偏语义理解的表示,可能越有利于跨任务迁移;越偏像素细节的表示,可能越有利于单一生成任务的极致表现。这其实和人类认知有点像,一个只会"看细节"的人画画可能很精细,但未必擅长讲这幅画背后的故事。
这篇论文没有解决的问题也挺明显。它目前只处理了文本和图像两种模态,对视频、音频这类具有时间连续性的模态还没有展开。论文结尾也提到,把这套思路扩展到更长的交错序列和视频,是留给未来的工作。一个自然的问题是:视频既有图像的空间结构,又有文字般的时间先后顺序,到时候超块这个概念又该怎么重新定义?这事儿留给后来者去想了。
Q&A
Q1:Multimodal Flow和MF-1是什么关系?
A:Multimodal Flow是一种全连续的多模态建模框架,MF-1是基于这个框架训练出来的具体模型,参数规模从0.6B到1.6B不等,用来验证框架的实际效果。
Q2:MF-1和传统的离散化多模态模型相比有什么优势?
A:MF-1不需要把图像量化成有限的视觉词元,避免了细节丢失的问题,同时文字和图像共用同一套流匹配生成目标,不需要像混合模型那样维护两套不同的训练机制。
Q3:MF-1只用150B训练词元就能有不错表现,这是什么原因?
A:论文认为这得益于混合预训练阶段学到的可迁移跨模态表示,实验显示经过混合预训练的模型在下游任务上的表现明显优于训练词元总量相同但未经混合预训练的随机初始化模型。
热门跟贴