跳到主要内容

多模态(看得见图的语言模型)— 让语言模型看见和听见

这一章讲三件事: 多模态大语言模型与「画图模型」的区别;把图像/语音接进语言模型的四条架构路线;以及训练环节的真正杠杆(数据剪枝、把词和图对上含义、按人类偏好微调)。 自 GPT-4(2023 年 3 月)首次支持视觉输入起,「能看图的对话模型」成了默认形态——这一章解释它是怎么接上去的。

1. 先分清两个词

多模态大语言模型(MM-LLM)是以大语言模型为底座、扩展出理解多种模态能力的模型;它和生成图像视频的「多模态大模型」(Sora、DALL·E 3 一类)不是一回事——前者重在理解,后者重在生成,当然边界正在融合1

它的实际能力可以很具体:书里的例子是 MiniGPT-4,给一张手绘的网页草稿和一句指令,它生成了可以真实运行的 HTML 代码2

2. 代表模型:一张能力谱系

书里列了一串模型,按「视觉怎么接进语言模型」排成谱系更清楚:

模型关键设计记住一点
GPT-4V / GPT-4o架构未公开,普遍认为是统一 Transformer 把它们映进同一张「意思的坐标图」4o 平均响应 320 毫秒,支持 50 多种语言实时翻译
PaLM-E(5620 亿参数)具身智能——给模型接上身体和环境——把传感器数据组织成「多模态句子」语言输出直接变成机器人动作规划
ImageBind六种模态(文本/图像/音频/深度/热成像/运动)对齐到一个嵌入空间不要求所有模态同时出现在训练数据里
LLaVA视觉编码器 + 线性层连接器 + LLM,一体直训开源映射学习的代表
Qwen-VL / Qwen2-VL视觉侧中间加一个小模块 + 朴素动态分辨率 + M-RoPE首个支持 448 分辨率的开源多模态模型
Janus / Janus-Pro理解和生成用独立编码器,自回归统一处理1B 起家,扩到 7B 验证可扩展性

架构上的共性难题有两个。一是对齐:文本里「一只可爱的小猫」是抽象概念,图像里是具体的毛色姿态神情——把两边的语义(说的意思是同一件事)对上,是核心难点,对不齐就会把小猫认成别的动物3。二是序列长度:图像切成的视觉词元动辄上千,自注意力的平方复杂度被进一步放大,长视频几乎处理不动4

3. 四条融合路线

书里把视觉语言模型的训练范式分成四种,按「从零训练的程度」排列:

路线一:对比学习(从零开始,最贵)。 图像编码器和文本编码器把配对的图文拉近、错配的推远。

理论源头可以追到能量模型;实用化的标准是 CLIP——4 亿图文对训练,用 InfoNCE 损失建立跨模态(横跨图像与文字两种模态)统一表示空间5。它训练贵,但产出的「图文相似度」是后续一切检索和打分的基础。

路线二:掩码预测。 遮住图像的一部分让模型按文字描述恢复,或遮住文字让模型看图补词。代表 FLAVA:图像编码器、文本编码器、再加一个多模态融合组件6

路线三:生成式。 直接以统一 Token 序列做生成。

代表 Chameleon:文本走文本分词(切成小块,即 token 化)器、图像走图像分词器,全部变成离散 Token 拼成一条序列;注意力里对 Query 和 Key 做归一化,防止不同模态的数值尺度互相打架7

路线四:映射学习(站在巨人肩上,最省)。 拿现成的预训练视觉编码器和现成的大语言模型,两边都冻结,只训练中间一个小映射网络。开山之作 Frozen;如今 MiniGPT-4、LLaVA、Qwen-VL 等绝大多数视觉语言模型都走这条路8

主走查:一张图在 MiniGPT-4 里变成一句回答

用户上传一张粉色 logo,问「你觉得这个 logo 怎么样?」。MiniGPT-4 由三个组件构成:冻结的大语言模型 Vicuna、冻结的视觉编码器(视觉 Transformer 加一个图文对齐模块 Q-Former),以及唯一可训练的线性投影层9

① 图像 → 视觉编码器(ViT):切成图块,编码成视觉特征序列
② 视觉特征 → Q-Former:一组可学习的查询向量对图像做交叉注意力,
压缩出固定数量的「图像摘要词元」
③ 摘要词元 → 线性投影层:变换到 Vicuna 的词嵌入空间
——从这里开始,图像在模型眼里和一段「看不见的文字」没有区别
④ 拼接:图像词元 + 文字指令「你觉得这个 logo 怎么样?」
一起喂给 Vicuna
⑤ Vicuna 按普通的下一词元预测生成回答
(「logo 的设计简约,用粉红色……」)

图说:①②③ 是原书的机制描述;
回答文字为示意。注意训练量都花在③那一个线性层上。

它的两阶段训练账本,数字都来自书里:第一阶段纯预训练,Conceptual Caption 等组合数据集约 500 万图文对,只训线性投影层,2 万步、每批 256 对、4 块 A100 跑 10 小时;出来的模型能描述图片但说话磕巴(重复、碎片句)。第二阶段对齐微调:先让模型给 5000 张图生成详细描述,再用 ChatGPT 当质检员修掉错误、只留 3500 对高质量数据,微调 400 步、每批 12 对、单卡 A100 只要 7 分钟10。修完之后涌现出新能力:看食物照片直接写食谱、看海报认出《教父》。

这条走查的机制要点:贵的组件全部复用,训练的只是一座「翻译桥」;而桥修好之后,质量的瓶颈从架构移到了数据(第二阶段那 3500 条精选数据才是流畅度的来源)。

4. 语音:同样的故事再讲一遍

语音语言模型(SLM)的架构逻辑与视觉完全平行,只是输入输出组合更花。三种模式:语音到文本(S2T,即语音识别——把人说的话变成字)、语音加文本到文本(ST2T,目前最广泛采用——文本当指令,语音当内容)、语音加文本到语音加文本(ST2ST,解码端要额外挂一个语音合成模块)11

融合到语言模型有两条路线。

转文本空间:用一个连接器(投射器)把语音的数字化表示投到文本嵌入(词元对应的数表)空间,或者把语音直接映射成文本词元——省事,但转换过程有信息损失。

扩展词表:在原有文本词元之外新增语音词元、扩充嵌入矩阵(那张「每个字块对应一串数」的大表),语音的原始声学细节保留得最完整,代价是词表和嵌入层变大12

多模态统一框架的代表是 AnyGPT:四种模态(文本/语音/图像/音乐)各自经分词器离散化,语言模型在混合序列上做统一的下一词元预测。数字感受一下离散化的粒度:图像分词器 SEED 把 224×224 的图切成 16×16 的块、码本 8192 项;语音分词器把 10 秒音频变成 500×8 的矩阵(500 个语义词元加 500×8 的声学词元);音乐分词器把 5 秒音频变成 250×4 的码元矩阵13

5. 训练杠杆:数据和对齐,不是架构

书里一个清醒的判断:多模态的性能提升,「优化数据处理环节」带来的突破不亚于堆算力——CLIP 用 4 亿张图训练,开源复现 OpenCLIP 需要数百卡跑数天到数周,而数据管道的优化可以避开这种成本14。三个杠杆:

  • 数据剪枝:启发式规则(文本复杂度、语言、分辨率)打底,主力是 CLIPScore 这类「图文嵌入相似度」打分排序,再配多样化采样(MetaCLIP 用 50 万个查询控制每个概念的样本上限,防止单一概念霸占数据集)15;

  • 语义关联:模型常常忽略提示里的空间关系、否定词、数量词。两个补法——边界框标注(X-VLM 用约 1600 万图像学「词指向图中哪块区域」),以及负样本(故意给错误图文对,逼模型学会「不匹配」)16;

  • 多模态对齐微调:指令微调(LLaVA 用 15 万条合成视觉指令)之后,再上事实增强 RLHF——LLaVA-RLHF 在奖励模型里加入图像描述等事实信息来压幻觉(一本正经地编造事实的现象),在幻觉专项基准上比基线提升 60%,通用能力达到 GPT-4 的 94%17

富文本图像(海报、文档扫描)是单独的战场:LLaVAR 往训练里加 42.2 万张文字密集图像,文本类问答准确率提高 20%;Monkey 用滑窗把输入拆成高分辨率图块(支持 1344×896);Lumos 干脆在手机端先做文字检测识别、只把识别结果传云端18

6. 作者的判断与证据

  • 有证据的: 各模型的参数量、响应毫秒数、训练数据量、消融提升幅度(20%、60%、94%)均有文献出处。
  • 作者的判断: 「多模态大语言模型是可以不断扩展的框架」(未来接触觉、脑电等)是作者的展望;当前书内实践只覆盖视觉与语音。
  • 书里的坦白: GPT-4/4V 的架构「技术报告并未披露」,统一 Transformer 之说只是「普遍认为」——作者明确区分了事实与传闻。

7. 边界与局限

  • 训练策略一节的结论多来自 CLIP 时代的图文预训练;对「原生多模态」(从预训练第一天就混模态,如 KOSMOS)的策略讨论较薄。
  • 视频理解、时序对齐只有挑战性描述,没有给出方案。
  • MiniGPT-4 的「第二阶段 7 分钟」建立在第一阶段已经花掉 40 张加速卡各跑 10 小时的基础上——单看微调数字容易低估总成本。
  • 语音一节的重识别、副语言学(语气、情绪)建模只有 Codec 部分顺带提及,深度不足。

8. 可带走的

  1. 多模态的本质是「翻译」:把图像/语音变成语言模型能吃的词元序列,翻译桥两侧的组件都可以直接复用;
  2. 四条融合路线按代价排:对比学习(从零)> 掩码 > 生成式 > 映射学习(冻结两端只训桥,业界主流);
  3. MiniGPT-4 的配方 = 冻结 ViT + 冻结 LLM + 一个线性投影层;预训练 4 卡 10 小时 + 精选 3500 条数据微调 7 分钟;
  4. 流畅度瓶颈在数据不在架构:第一阶段 500 万对教出「磕巴的描述」,3500 条精选数据才教出「能聊天的描述」;
  5. 语音融合二选一:投射到文本空间(省事有损)或扩词表(保真变重);AnyGPT 展示了全模态统一离散化的极端形态;
  6. 训练杠杆排序:数据剪枝(CLIPScore 打分)≥ 把词和图对上含义(边界框/负样本)≥ 按人类偏好微调(RLHF 压幻觉 60%);
  7. 富文本图像是独立战场:分辨率(滑窗)、OCR(从图里认字)前置、文字密集数据增强是三个常规武器;
  8. 评估多模态模型时先问训练数据里有没有这类图——「可爱的小猫」对不上图,多半是数据里缺这类配对,不是模型笨。

9. 原文地图

主题原书章原文位置
MM-LLM 定义与生成向区别7 多模态大语言模型text/07-ch07.txt:224(搜「多模态大语言模型」) · text/07-ch07.txt:249(搜「Sora」)
MiniGPT-4 手绘网页7 多模态大语言模型text/07-ch07.txt:260(搜「HTML」)
GPT-4V/4o7 多模态大语言模型text/07-ch07.txt:280(搜「GPT-4V」) · text/07-ch07.txt:290(搜「320 毫秒」)
PaLM-E7 多模态大语言模型text/07-ch07.txt:294(搜「PaLM-E」)
ImageBind 六模态7 多模态大语言模型text/07-ch07.txt:309(搜「热成像」)
语义对齐难点7 多模态大语言模型text/07-ch07.txt:408(搜「可爱」)
长序列瓶颈7 多模态大语言模型text/07-ch07.txt:399(搜「自注意力机制的计算复杂度」)
对比学习与 CLIP7 多模态大语言模型text/07-ch07.txt:450(搜「正例对」) · text/07-ch07.txt:501(搜「对比语言-图像预训练」)
FLAVA 掩码7 多模态大语言模型text/07-ch07.txt:525(搜「FLAVA」)
Chameleon 统一 Token7 多模态大语言模型text/07-ch07.txt:547(搜「Chameleon」)
映射学习与 Frozen7 多模态大语言模型text/07-ch07.txt:440(搜「映射学习」) · text/07-ch07.txt:580(搜「绝大多数」)
SLM 三模式7 多模态大语言模型text/07-ch07.txt:593(搜「Speech-to-Text」)
融合两路线7 多模态大语言模型text/07-ch07.txt:698(搜「投射器」) · text/07-ch07.txt:767(搜「语音 Token」)
AnyGPT 与分词器数字7 多模态大语言模型text/07-ch07.txt:812(搜「AnyGPT」) · text/07-ch07.txt:845(搜「500 × 8」)
眸思多专家7 多模态大语言模型text/07-ch07.txt:875(搜「眸思」)
数据环节突破7 多模态大语言模型text/07-ch07.txt:926(搜「4 亿张图像」)
剪枝与 CLIPScore7 多模态大语言模型text/07-ch07.txt:975(搜「启发式方法」) · text/07-ch07.txt:984(搜「CLIPScore」)
MetaCLIP 平衡采样7 多模态大语言模型text/07-ch07.txt:1000(搜「平衡采样」)
X-VLM 边界框7 多模态大语言模型text/07-ch07.txt:1013(搜「X-VLM」)
LLaVA 系列7 多模态大语言模型text/07-ch07.txt:1065(搜「15 万条合成视觉指令」)
事实增强 RLHF7 多模态大语言模型text/07-ch07.txt:1076(搜「事实增强」)
LLaVAR/Monkey/Lumos7 多模态大语言模型text/07-ch07.txt:1090(搜「42.2 万」) · text/07-ch07.txt:1102(搜「1344」)
MiniGPT-4 三组件7 多模态大语言模型text/07-ch07.txt:356(搜「线性投影层」)
logo 问答与冻结7 多模态大语言模型text/08-ch08.txt:69(搜「冻结」;此节正文在 08-ch08.txt 文件头部,章界溢出) · text/08-ch08.txt:71(搜「logo 怎么样」)
两阶段训练数字7 多模态大语言模型text/08-ch08.txt:89(搜「10 小时」;此节正文在 08-ch08.txt 文件头部,章界溢出) · text/08-ch08.txt:174(搜「3500」) · text/08-ch08.txt:189(搜「7 分钟」)

Footnotes

  1. 出处:「7 多模态大语言模型」第 224 段(text/07-ch07.txt:224,搜「多模态大语言模型」)与第 249 段(text/07-ch07.txt:249,搜「Sora」)。

  2. 出处:「7 多模态大语言模型」第 260 段(text/07-ch07.txt:260,搜「HTML」)。

  3. 出处:「7 多模态大语言模型」第 408 段(text/07-ch07.txt:408,搜「可爱」)。

  4. 出处:「7 多模态大语言模型」第 399 段(text/07-ch07.txt:399,搜「自注意力机制的计算复杂度」)。

  5. 出处:「7 多模态大语言模型」第 501 段(text/07-ch07.txt:501,搜「对比语言-图像预训练」)。

  6. 出处:「7 多模态大语言模型」第 525 段(text/07-ch07.txt:525,搜「FLAVA」)。

  7. 出处:「7 多模态大语言模型」第 547 段(text/07-ch07.txt:547,搜「Chameleon」)与第 554 段(text/07-ch07.txt:554,搜「归一化」)。

  8. 出处:「7 多模态大语言模型」第 580 段(text/07-ch07.txt:580,搜「绝大多数」)。

  9. 出处:「7 多模态大语言模型」第 356 段(text/07-ch07.txt:356,搜「线性投影层」)与「7 多模态大语言模型」第 44 段(text/08-ch08.txt:44,搜「冻结」;此节正文在 08-ch08.txt 文件头部,章界溢出)。

  10. 出处:「7 多模态大语言模型」第 87-89 段(text/08-ch08.txt:89,搜「10 小时」)、第 161-174 段(text/08-ch08.txt:174,搜「3500」)与第 189 段(text/08-ch08.txt:189,搜「7 分钟」);此节正文在 08-ch08.txt 文件头部(章界溢出)。

  11. 出处:「7 多模态大语言模型」第 593 段(text/07-ch07.txt:593,搜「Speech-to-Text」)与第 646 段(text/07-ch07.txt:646,搜「Vocoder」)。

  12. 出处:「7 多模态大语言模型」第 698 段(text/07-ch07.txt:698,搜「投射器」)与第 767 段(text/07-ch07.txt:767,搜「语音 Token」)。

  13. 出处:「7 多模态大语言模型」第 812 段(text/07-ch07.txt:812,搜「AnyGPT」)、第 835 段(text/07-ch07.txt:835,搜「8192」)与第 845 段(text/07-ch07.txt:845,搜「500 × 8」)。

  14. 出处:「7 多模态大语言模型」第 926 段(text/07-ch07.txt:926,搜「4 亿张图像」)。

  15. 出处:「7 多模态大语言模型」第 984 段(text/07-ch07.txt:984,搜「CLIPScore」)与第 1000 段(text/07-ch07.txt:1000,搜「平衡采样」)。

  16. 出处:「7 多模态大语言模型」第 1013 段(text/07-ch07.txt:1013,搜「X-VLM」)与第 1040 段(text/07-ch07.txt:1040,搜「负样本」)。

  17. 出处:「7 多模态大语言模型」第 1076 段(text/07-ch07.txt:1076,搜「事实增强」)与第 1079 段(text/07-ch07.txt:1079,搜「94%」)。

  18. 出处:「7 多模态大语言模型」第 1090 段(text/07-ch07.txt:1090,搜「42.2 万」)、第 1102 段(text/07-ch07.txt:1102,搜「1344」)与第 1112 段(text/07-ch07.txt:1112,搜「3000」)。