跳到主要内容

三种接法、三种出题法、四类数据 — 后面 16 篇的地图

这一章讲三件事: 把图和字接起来一共有几种做法、训练它们一共有几种出题法、 喂给它们的数据一共有几类。 它在全书链条里的位置是「地图」:第 01 章讲的 CLIP 只是三种接法里的一种, 而后面 16 篇里有一半以上建在它上面、另一半建在别的接法上。 读完这一章,你看到任何一个图文模型都能立刻归位:它属于哪一种、因此能干什么、不能干什么。

1. 顶层全景:两个问题,不是一个

这一章要回答两个容易被混成一个的问题:

问题 A:两个模态在一个模型里怎么融合? → 三种架构(第 2 节)
(从头设计一个新模型时问的)

问题 B:一个已经训好的视觉编码器, → 三种连接器(第 3 节)
怎么接到一个已经训好的语言模型上?
(拿两个现成零件拼装时问的)

问题 C:接好之后,拿什么题去训它? → 三种出题法(第 4 节)

问题 D:题目从哪儿来? → 四类数据(第 6 节)

图说:A 和 B 的答案里都有「交叉注意力」这一项,但它们问的不是同一件事——
**A 是从头设计,B 是拿现成零件对接。** 这两处最容易被读成重复,第 3 节会当场点破。

本章的主走查: 沿用第 01 章那一对(柯基照片,「a photo of a corgi」), 让同一对输入走遍三种架构和三种出题法,每一种都写出它到底吐出什么

2. 三种接法:决定这个模型能干什么

先看现象:同样是「懂图又懂字」,能干的事差很远

你大概用过两类东西:一类是以图搜图、按文字搜图片——你给一句话,它给你一批图; 另一类是对着图问问题——「他在干什么?」它回你一句话。

这两件事看起来都叫「图文模型」,内部结构却根本不同。 书里把差别归到三种架构上1:

接法内部怎么走它能干什么代表
双编码器两个编码器各管一边,各出一串数,在同一个空间里比只能算「像不像」CLIP
交叉注意力图的特征被插进语言模型的层与层之间,让文字在生成过程中反复回头看图能生成句子Flamingo
统一序列图和字都切成 token,拼成一条序列,由同一个模型一起处理能生成,也能做更细的推理UNITER

「交叉注意力」这个名字,和第 02 章那套注意力是同一套机制,只换了一样东西:

第 02 章是块看块:query 来自这一块,key 和 value 也来自图片自己的块——所以叫注意力。 这里是文字看图:query 来自正在生成的那个词,key 和 value 来自图片的块。 打分、摊平、取货这三步一模一样,变的只是「谁的 query,谁的 key」。

为什么这个分类决定了能力

双编码器的两边从头到尾不见面。 它们唯一的交汇点是最后比一次夹角。

这带来一个很实在的好处,也是它今天仍然大量在用的原因: 图片那半边可以预先算好存起来。 一亿张图先过一遍编码器、把那串数存进库里; 用户来一句话,只算文字那半边,然后和库里比——比得飞快。 (第 09 章会用这个性质做文章:文本那半边也可以预先算好,于是适配起来比另一条路快 29 倍。)

代价是:它永远说不出话。 两边只有一个数值接口(一个相似度), 图片里的细节根本没有通道流进语言那一侧。 要它回答「他在干什么」,两个模态必须真的混在一起——那就得用后两种。

走查第 ① 步:同一对输入走三种架构

输入:柯基照片 + 「a photo of a corgi」

① 双编码器
→ 两串数(各 512 个)+ 一个相似度 0.31
它能回答:「这张图和这句话有多配?」

② 交叉注意力
→ 一句话:「一只柯基坐在草地上」
它能回答:「图里发生了什么?」

③ 统一序列
→ 一条序列:[196 个图块] + [8 个文字位子],一起过同一个模型
它能回答:上面两种,外加「左边那只的耳朵是什么颜色」这类要对上位置的问题

图说:**相似度 0.31、196 与 8 这几个数沿用前两章的演示值,不是真实数值。**
同一对输入,三种接法的输出类型完全不同——这就是「架构决定能力」的字面意思。

3. 换个问法:两个已经训好的零件,怎么对接?

这一节解决第 1 节图里的问题 B。它和第 2 节最容易被读成同一件事,所以先把差别写死:

第 2 节问的是「从头设计一个模型时,两个模态在里面怎么融合」; 这一节问的是「视觉那半边已经训好了,语言那半边也已经训好了,中间垫一个什么」。 前者是设计,后者是装配。

为什么会有「装配」这个问题

因为语言那半边太贵、也太好了。业界已经有一批训得非常好的语言模型, 大到几百亿个可调的数、能写出和人写的分不出来的文字—— 这类模型的名字叫大语言模型(常缩写成 LLM)。

没人愿意重训一个。 于是有另一条研究路线: 拿一个现成的视觉编码器 + 一个现成的大语言模型,中间垫一层把它们接起来。

书里说这个结构就像语言那一侧早就在用的「编码器–解码器」: 视觉那边负责把图片变成特征(编码),语言模型负责根据这些特征往下写(解码)2。 (「语言那一侧」指的是专门研究怎么让机器处理文字的那个领域, 它的名字叫自然语言处理,常缩写成 NLP——本书里凡是提到它,说的都是这个。)

三种连接器

书里给了三种,从最简单到最复杂依次是2:

连接器做法特点
一层线性投影把图片那串数乘一张训练好的数表(这种数表叫矩阵,作用是把一串数按固定规则重新组合成另一串),变成语言模型认得的形状,当成几个「词」塞进去最简单,只有一层;第 07 章那篇论文用的就是这种
交叉注意力在语言模型的层与层之间插入「文字去看图」的那套机制就是第 2 节那种,但这里是加装在一个已经训好的模型上
可学查询用一小组可训练的「问题」去图片特征里提取信息,只把提取到的结果交给语言模型能把几百个图块压成固定的几十个,省序列长度

接完之后还要训一轮:让这个组合去做「看图写话」,再针对具体场景(比如对话)微调2

这一节和第 2 节的关系,一句话: 第 2 节的三种是模型内部的融合方式, 这一节的三种是两个现成模型之间的胶水。 同一个词「交叉注意力」在两边都出现,是因为它既能当设计方案,也能当胶水—— 但用它的时机和目的不一样。

4. 三种出题法:决定它会不会说话

先看问题:接好了,拿什么题训它?

书里给了三种,而且明说这三种可以叠加使用3:

出题法题目长什么样它逼模型学会什么
对比一批图和一批句子打乱摆开,认领自己那一条判断「这两个配不配」
掩码建模遮住一部分,让它补回来(字能遮,图块也能遮)根据上下文推断被挡住的东西
自回归给前面的词,预测下一个词一个词一个词地把句子写出来

「掩码建模」和「自回归」这两个名字要留下,后面每一章都在用。

走查第 ② 步:同一对输入,三种题目长什么样

输入还是:柯基照片 + 「a photo of a corgi」

① 对比:把它扔进一批 256 对里
题目:这张图对应第几条句子? 答案:第 17 条
它输出的是一个「认领」动作,不是文字

② 掩码建模:把句子里的 corgi 挖掉
题目:「a photo of a [MASK]」+ 这张图,[MASK] 是什么?
答案:corgi
(图这边也能挖:遮住 196 块里的一部分,让它把那几块补出来)

③ 自回归:只给图,不给句子
题目:第一个词是什么?→ a;第二个呢?→ photo;……
答案:逐词写出「a photo of a corgi」

图说:**批大小 256、第 17 条这两个数是为演示编的。**
三种题目用的是同一对输入,但要模型交出的东西完全不同——
**第 ① 种交的是一个编号,第 ③ 种交的是一串文字。**

为什么这件事决定了后半本的走向

只做过第 ① 种题的模型,永远吐不出一句话。

原因在走查里已经看得见:对比这种题,正确答案是「第几条」,不是任何一段文字。 模型从来没有被要求生成过任何东西,它的输出端根本没有「往外写字」这个通道。

所以后半本要生成,就必须换目标。 第 07 章那篇论文的核心动作正是这个:把「预测下一个词」放宽成「预测下一个元素」, 而元素既可以是一个词、也可以是一张图变成的那串数——它于是同时会看和会画。

5. 一个容易混淆的点:名字相同,层次不同

到这里已经出现了两个「对比」和两个「交叉注意力」,现在一次性归位:

名字在哪一层说的是什么
对比(第 2 节)架构层两个编码器各出一串数,在同一空间里比
对比(第 4 节)目标层「在一批里认领自己那一条」这种出题法
交叉注意力(第 2 节)架构层从头设计时,让文字在生成过程中反复看图
交叉注意力(第 3 节)装配层把现成的视觉模型接到现成的语言模型上的一种胶水

架构和目标是两个独立的选择。 双编码器几乎总是配对比目标(CLIP 就是), 但这是习惯,不是必然;第 06 章那篇论文就在同一个模型上同时用了三种目标

6. 四类数据:题目从哪儿来

书里把训练数据分成四类,其中第一类(图文对)内部还分两种,所以下表有五行4:

类型规模与来历用来练什么
图文对之一:人写的图注几十万条,人一句句写的(如 COCO Captions、Flickr30k)干净、准确,但少
图文对之二:网爬的几十亿条(如 LAION-5B)量大管饱,但噪声大
视觉问答一张图配一个问题和答案逼它做推理,而不只是描述
指令与对话数据「照着这张图,帮我写一段说明」这类把感知变成能对话的助手
视频配文视频 + 字幕或分步标注(如 HowTo100M)加上时间维度

其中「网爬那批噪声大」这一条,是后面好几章的起点。 书里明说:LAION-5B 这类数据集从各种来源聚合图片和文字, 但那些配文可能有噪声、不完整,甚至和图片无关;在这种数据上训练, 风险是把错误和偏见一路传进模型4

这笔账第 05 章会算到小数点后一位: 那篇论文的第一阶段拿了 60.3 亿对网爬数据, 用六个条件筛过之后只留下 49.8 亿(82.6%)——光是「筛数据」这一步就砍掉了 10.5 亿对。

7. 作者的判断与证据

书里给了证据的:

说法证据
三种架构对应不同能力书里给每一种都点了代表模型(CLIP / Flamingo / UNITER),后面 16 篇也分别落在这三类里
三种目标可以叠加原书第 3 章那篇论文(我们的第 06 章)把掩码视频建模、跨模态对比、预测下一个词合成了一套,是活的例子
网爬数据噪声大原书第 2 章那篇论文(我们的第 05 章)用六个过滤条件砍掉 17.4% 的数据,并给出了逐个数据集的保留率

属于综述性归纳、没有对照实验的:

  • 「三种架构」「三种目标」「四类数据」这些分类本身是编者的归纳,不是实验结论。 它是一份地图,不是一份测量报告——别把「书里分了三类」当成「世界上只有三类」。
  • 哪种架构配哪种目标更好,书里没有比较。 这是一个显而易见会被问到的问题, 而全书没有任何一处做过这种对照。照实写在这儿。

8. 边界与局限

① 这一章在原书里只有半节的篇幅。 三种架构、三种目标、四类数据加起来, 原文一共十几段,每一项两三句话。我们这一章的解释、走查、对照表基本都是补的, 书里只提供了分类骨架和代表模型的名字。

② 书里没有说清「统一序列」这一类的现状。 它给的代表模型是 2019 年那一代, 而今天大部分能对话的多模态模型走的是第 3 节那条「装配」路线。 这个时间差要自己心里有数。

③ 「四类数据」那张表里,书里没有给指令数据的规模。 前两类给了(几十万 / 几十亿), 后两类只给了例子名字。我们没有替它编数。

9. 可带走的

  1. 三种接法决定能力:双编码器只能比相似度,交叉注意力和统一序列才能说话;
  2. 双编码器的杀手锏是「图那边可以预先算好」——比得飞快,今天仍然大量在用;
  3. 它的死穴是「两边只有一个数值接口」,图片细节没有通道流进语言那一侧;
  4. 「交叉注意力」和第 02 章的自注意力是同一套机制,只是 query 换成了文字那边的;
  5. 「从头设计怎么融合」和「拿两个现成零件对接」是两个问题;后者只有三种胶水: 一层线性投影、交叉注意力、可学查询;
  6. 三种出题法:在一批里认领自己那条(对比)、遮住一部分让它补(掩码)、逐词往下写(自回归);
  7. 只做过对比的模型永远吐不出一句话——这不是能力不足,是输出端根本没有那个通道;
  8. 所以后半本要生成就必须换目标(第 07 章的核心动作正是这个);
  9. 架构和目标是两个独立的选择,一个模型可以同时用三种目标(第 06 章就是);
  10. 数据分四类,网爬那批量大但噪声大——「筛数据」本身就是一项主要工程(第 05 章)。

10. 原文地图

主题原书章原文位置
三种架构:双编码器 / 交叉注意力 / 统一1. Foundations of VLMstext/07-ch01-1-foundations-of-vision-language-models-concepts.txt:91(搜「Dual-Encoder Architectures」) · text/07-ch01-1-foundations-of-vision-language-models-concepts.txt:93(搜「Cross-Attention Architectures」) · text/07-ch01-1-foundations-of-vision-language-models-concepts.txt:95(搜「Unified Architectures」)
视觉编码器 + 大语言模型、三种连接器1. Foundations of VLMstext/07-ch01-1-foundations-of-vision-language-models-concepts.txt:193(搜「learnable-query transformer」)
三种训练目标1. Foundations of VLMstext/07-ch01-1-foundations-of-vision-language-models-concepts.txt:99(搜「Contrastive Learning」) · text/07-ch01-1-foundations-of-vision-language-models-concepts.txt:101(搜「Masked Modeling」) · text/07-ch01-1-foundations-of-vision-language-models-concepts.txt:103(搜「Autoregressive Learning」)
四类数据、网爬噪声1. Foundations of VLMstext/07-ch01-1-foundations-of-vision-language-models-concepts.txt:107(搜「Image–Text Pair Data」) · text/07-ch01-1-foundations-of-vision-language-models-concepts.txt:175(搜「the captions can be noisy」)
三种目标可以合成一套用1. Foundations of VLMstext/07-ch01-1-foundations-of-vision-language-models-concepts.txt:191(搜「masked video modeling」)

Footnotes

  1. 出处:「1. Foundations of Vision-Language Models: Concepts and Roadmap」第 91、93、95 段(text/07-ch01-1-foundations-of-vision-language-models-concepts.txt:91,搜「Dual-Encoder Architectures」;text/07-ch01-1-foundations-of-vision-language-models-concepts.txt:93,搜「Cross-Attention Architectures」;text/07-ch01-1-foundations-of-vision-language-models-concepts.txt:95,搜「Unified Architectures」)。原文对交叉注意力的说法值得注意:它通常被加在语言 Transformer 的中间那些自注意力层上——也就是说图的信息是从中途插进去的,不是从开头喂进去的。

  2. 出处:「1. Foundations of Vision-Language Models: Concepts and Roadmap」第 193 段(text/07-ch01-1-foundations-of-vision-language-models-concepts.txt:193,搜「learnable-query transformer」)。原文:与从零训练的 CLIP 一类不同,另一条路线是把一个(通常在 ImageNet 上预训练的)视觉编码器与一个预训练好的大语言模型组合起来;结构类似语言处理里的编码器–解码器;常见的对齐办法是用一层线性投影把两者连起来,再一起训练做「看图写话」,然后在具体领域(如对话数据)上微调;更复杂的连接器还有跨模态注意力和可学查询的 Transformer。 2 3

  3. 出处:「1. Foundations of Vision-Language Models: Concepts and Roadmap」第 99、101、103 段(text/07-ch01-1-foundations-of-vision-language-models-concepts.txt:99,搜「Contrastive Learning」;:101,搜「Masked Modeling」;:103,搜「Autoregressive Learning」)。「三种可以叠加」见同章第 191 段(text/07-ch01-1-foundations-of-vision-language-models-concepts.txt:191,搜「masked video modeling」):原文说这些学习目标可以一起用来增强预训练,并点名第 3 章把掩码视频建模、跨模态对比学习、预测下一个词整合成了一套统一范式。

  4. 出处:「1. Foundations of Vision-Language Models: Concepts and Roadmap」第 107 段(text/07-ch01-1-foundations-of-vision-language-models-concepts.txt:107,搜「Image–Text Pair Data」)及紧随其后的第 109、111、113 段。「几十万条人工图注 / 几十亿条网爬」这个对照出自第 107 段原文(COCO Captions 与 Flickr30k 为数十万张图提供人工图注,LAION-5B 提供数十亿条网络采集的对)。「网爬那批噪声大」的说法见同章第 175 段(text/07-ch01-1-foundations-of-vision-language-models-concepts.txt:175,搜「the captions can be noisy」):原文说这些图注「可能有噪声、不完整,或与所配的图片无关」,在这种数据上训练有把错误和偏见传进模型的风险。 2