LLM WIKI · 课程精读

LEARNING UNIT · 17

多模态模型的结构可视化

用人类可读的结构图理解 CLIP 与 OCR 模型中的表示、对齐和信息流。

已整理章节
3 节
单元来源
2 条视频
总时长
06:13
状态
已发布
学习位置
17 / 20
01

主题讲解 · 03:19

从图文配对到对称交叉熵:一步步看懂 CLIP

学习目标

  • 能解释一个 batch 内正确图文对为何位于相似度矩阵对角线。
  • 能说明图像、文本编码器输出为何需要投影到共同维度。
  • 能写出归一化向量的余弦相似度与温度缩放 logits。
  • 能写出图像检索文字方向的行 softmax 交叉熵。
  • 能写出文字检索图像方向的列 softmax 交叉熵。
  • 能解释 CLIP 为什么取两个方向损失的平均。

前置与衔接

本单元开始讨论多模态表示与视觉语言系统。

CLIP 的核心不是生成句子,而是把图像与文字映射到同一个嵌入空间,让真实配对相近、批内错误配对相远。

本课从三组图文对出发,把双编码器、相似度矩阵和对称损失串成一个完整计算图。

核心讲解

1. 一个 batch 同时提供正样本与负样本

设 batch 中有 NN 组真实配对:

(I1,T1),(I2,T2),,(IN,TN).(I_1,T_1),(I_2,T_2),\ldots,(I_N,T_N).

把图像和文字按相同配对顺序排列。

于是 IiI_i 的正确文字是 TiT_i,相似度矩阵中的正确位置为 (i,i)(i,i)

图 1

一个 batch 内的图像与文字按真实配对对齐顺序,正确配对落在相似度矩阵对角线。

原视频 · 00:20 ↗

同一个 batch 中,其余 TjT_jjij\ne i)可以作为 IiI_i 的批内负样本。

反方向也一样:其余图像是文字 TjT_j 的负样本。

2. 双编码器先各自理解模态

图像编码器产生表示

fi=fimg(Ii),f_i=f_{\mathrm{img}}(I_i),

文本编码器产生表示

gj=ftext(Tj).g_j=f_{\mathrm{text}}(T_j).

两种编码器的原始输出维度可以不同。

例如:

fiRdimg,gjRdtext.f_i\in\mathbb R^{d_{\mathrm{img}}}, \qquad g_j\in\mathbb R^{d_{\mathrm{text}}}.

分别经过投影:

ai=Pimgfi,bj=Ptextgj,a_i=P_{\mathrm{img}}f_i, \qquad b_j=P_{\mathrm{text}}g_j,

得到共同维度

ai,bjRd.a_i,b_j\in\mathbb R^d.
图 2

图像编码器与文本编码器分别产生表示,再投影到相同嵌入维度以便逐对计算相似度。

原视频 · 00:40 ↗

“等长”是为了能逐元素内积,不是说两个模态必须使用相同编码器。

3. L2 归一化后,内积就是余弦相似度

先归一化:

ui=aiai2,vj=bjbj2.u_i=\frac{a_i}{\|a_i\|_2}, \qquad v_j=\frac{b_j}{\|b_j\|_2}.

于是

sij=uiTvj=aiTbjai2bj2=cosθij.s_{ij}=u_i^Tv_j =\frac{a_i^Tb_j}{\|a_i\|_2\|b_j\|_2} =\cos\theta_{ij}.
图 3

归一化内积给出图文余弦相似度,所有图像与文字两两比较后形成相似度矩阵。

原视频 · 01:20 ↗

对所有 i,ji,j 两两计算,得到

SRN×N.S\in\mathbb R^{N\times N}.

ii 表示图像 IiI_i 对所有文字的相似度;列 jj 表示文字 TjT_j 对所有图像的相似度。

4. 为什么要引入温度

余弦相似度范围为

sij[1,1].s_{ij}\in[-1,1].

直接送入 softmax 时,不同候选之间可能不够分离。

视频用温度 τ>0\tau>0 定义 logits:

zij=sijτ.z_{ij}=\frac{s_{ij}}{\tau}.
图 4

余弦值范围有限,除以温度 τ 后再做 softmax,可控制分类分布的尖锐程度。

原视频 · 02:00 ↗

τ\tau 较小时,相似度差异被放大,softmax 更尖锐;τ\tau 较大时,分布更平滑。

一个常见实现边界是把

α=1τ\alpha=\frac1\tau

参数化为可学习的正 logit scale。

无论写成除以温度还是乘 logit scale,核心都是在 softmax 前调节相似度尺度。

5. 行 softmax:每张图像分类到正确文字

固定图像 IiI_i,沿第 ii 行对所有文字做 softmax:

pijIT=exp(zij)k=1Nexp(zik).p_{ij}^{I\to T} =\frac{\exp(z_{ij})} {\sum_{k=1}^N\exp(z_{ik})}.

正确标签是 j=ij=i

该方向损失为

LIT=1Ni=1NlogpiiIT.\mathcal L_{I\to T} =-\frac1N\sum_{i=1}^N \log p_{ii}^{I\to T}.
图 5

按行 softmax 把每张图像对应的所有文字视为候选,对角线概率给出正确文字的交叉熵。

原视频 · 02:40 ↗

若真实配对概率接近 11,负对数接近 00;若正确文字概率很小,损失很大。

6. 只做行方向为什么还不够

行 softmax 回答的问题是:

但 CLIP 还希望反方向也可检索:

虽然两个方向使用同一个 logits 矩阵,归一化分母不同,因此概率矩阵一般不相同。

7. 列 softmax:每段文字分类到正确图像

固定文字 TjT_j,沿第 jj 列对所有图像做 softmax:

pijTI=exp(zij)k=1Nexp(zkj).p_{ij}^{T\to I} =\frac{\exp(z_{ij})} {\sum_{k=1}^N\exp(z_{kj})}.

该方向损失为

LTI=1Nj=1NlogpjjTI.\mathcal L_{T\to I} =-\frac1N\sum_{j=1}^N \log p_{jj}^{T\to I}.
图 6

再按列 softmax 计算文字检索图像方向的交叉熵,两个方向取平均得到对称 CLIP 损失。

原视频 · 03:00 ↗

最终对称损失为

L=12(LIT+LTI).\boxed{ \mathcal L =\frac12 (\mathcal L_{I\to T}+\mathcal L_{T\to I}) }.

8. 一个三对样本的直观矩阵

理想 logits 的对角线应明显大于同一行、同一列的其他位置:

Z[].Z\approx \begin{bmatrix} \text{大}&\text{小}&\text{小}\\ \text{小}&\text{大}&\text{小}\\ \text{小}&\text{小}&\text{大} \end{bmatrix}.

行 softmax 让每一行的对角位置胜出。

列 softmax 让每一列的对角位置胜出。

两个方向共同训练,嵌入空间才同时支持 image-to-text 与 text-to-image 检索。

9. batch size 会改变负样本集合

在最基础的批内对比视角中,一个 batch 的每个样本有:

  • 一个正配对;
  • N1N-1 个文字负样本;
  • N1N-1 个图像负样本。

batch 越大,候选分类问题通常越难,也提供更多负样本。

但这不意味着越大越好;显存、分布式通信、重复语义和假负样本都要考虑。

视频用小矩阵是为了可视化,不是限定真实训练 batch 只能有三对。

10. 对角线标签依赖配对顺序一致

若图像列表和文本列表使用不同随机排列,而标签仍设为 0,1,,N10,1,\ldots,N-1,对角线就不再代表真实配对。

训练会把错误组合拉近。

所以数据管线必须保证:

  • 图像与对应文字保持同一 pair id;
  • 分布式 gather 后标签偏移正确;
  • 多 caption 或重复样本时,正样本定义与 loss 实现一致。

最后一点是扩展边界:基础视频采用“一图一文、单个对角正样本”的最简单设定。

跟练与练习

原视频练习

编者练习

给定温度缩放后的 logits: Z=[2013].Z= \begin{bmatrix} 2&0\\ 1&3 \end{bmatrix}. 写出图像 I1I_1 在 image-to-text 方向选中正确文字的概率。

查看参考答案

对第一行做 softmax:
p11IT=e2e2+e0=e2e2+1.p_{11}^{I\to T} =\frac{e^2}{e^2+e^0} =\frac{e^2}{e^2+1}.
对应损失项为
logp11IT.-\log p_{11}^{I\to T}.
不能沿第一列归一化,因为当前问题是“给定图像 I1I_1,在所有文字中分类”。

编者练习 2

为什么同一个 ZZ 的行 softmax 与列 softmax 一般不会相同?

查看参考答案

因为归一化候选集合不同。行 softmax 的分母固定一个图像、累加所有文字;列 softmax 固定一段文字、累加所有图像。除非矩阵具有特殊对称和值结构,两组分母不会相同。

常见误区

  • 把“顺序配对”听成其他词:关键是图像与文字列表使用一致 pair 顺序。
  • 认为两个编码器输出必须天然等维:可以先各自编码,再用投影头统一维度。
  • 忘记 L2 归一化:未经归一化的内积还受向量模长影响,不等于纯余弦相似度。
  • 把 softmax 当成相似度计算:余弦产生相似度,温度缩放产生 logits,softmax 才产生条件概率。
  • 只取对角线相似度训练:交叉熵还需要同一行或列的其他候选作为分母中的负样本。
  • 只做一个方向:标准对称目标同时训练图到文和文到图。
  • 认为温度越小永远越好:过度尖锐可能造成优化不稳定;实现通常学习或约束尺度。

本课小结

  • batch 内同序图文对让正确匹配位于相似度矩阵对角线。
  • 双编码器经投影和归一化后,在共同空间计算余弦相似度。
  • 温度将有限范围的余弦值缩放成更可分的 logits。
  • 行 softmax 训练 image-to-text,列 softmax 训练 text-to-image。
  • 两个交叉熵取平均,得到对称 CLIP 对比损失。
  • 下一课沿多模态路径继续追踪 OCR 系统怎样把页面压缩成视觉 token,再由语言解码器生成文字。
02

主题讲解 · 02:54

DeepSeek-OCR V1 如何把页面压缩成可解码的视觉 token

学习目标

  • 能区分文字 PDF 提供的页面图像与监督文本两条数据路径。
  • 能从 1024×10241024\times1024 页面和 16×1616\times16 patch 推出 40964096 个视觉位置。
  • 能解释卷积压缩为何把 64×6464\times64 网格缩到 16×1616\times16、即 256256 个视觉 token。
  • 能说清视觉 token、提示词 token 与 MoE decoder 的连接关系。
  • 能区分训练时的 teacher forcing 与推理时的自回归生成。
  • 能解释编辑距离中的插入、删除、替换,并知道它与归一化错误率的边界。

前置与衔接

上一课用 CLIP 说明图像和文字如何进入共同表示空间。

这一课继续沿多模态路径追踪一个 OCR 示例:一页文档怎样从高分辨率图像变成较短的视觉 token 序列,再由语言模型逐 token 生成文字。

课程严格对应视频板书中的 DeepSeek-OCR V1 Base 示例

视频中出现的输入分辨率、patch 大小、token 数和模块训练状态,都应理解为该示例的配置说明,而不是对 V2、其他分辨率模式或所有 OCR 系统的统一结论。

核心讲解

1. 文字 PDF 同时提供视觉输入和文本监督

训练数据可以从带文字层的 PDF 出发。

同一页文档走两条路径:

  1. 页面被渲染为图像,作为模型的视觉输入;
  2. PDF 中已有的文本被抽取出来,作为目标转写。
图 1

文字 PDF 先渲染成页面图像供 OCR 编码,同时保留 PDF 内文本作为监督标签。

原视频 · 00:20 ↗

可以把一条训练样本写为

(X,P,Y),(X,\,P,\,Y),

其中:

  • XX 是页面图像;
  • PP 是任务提示词;
  • Y=(y1,,yT)Y=(y_1,\ldots,y_T) 是参考文本 token 序列。

这不表示任意 PDF 都天然有可靠标签。

扫描件或只含图片的 PDF 可能没有可抽取文字层;文字层与页面显示也可能错位。此时需要其他 OCR 结果、人工标注或数据清洗,不能直接把空文本当作 ground truth。

2. 从页面分辨率推导初始视觉网格

视频以 1024×10241024\times1024 页面为例,并按 16×1616\times16 的 patch 划分。

每个空间方向的 patch 数为

102416=64.\frac{1024}{16}=64.

因此二维网格为

64×64,64\times64,

总视觉位置数为

64×64=4096.64\times64=4096.
图 2

V1 Base 示例把 1024×1024 页面按 16×16 patch 划分为 64×64 网格,形成 4096 个视觉位置。

原视频 · 01:00 ↗

这里的 40964096 是空间位置数量。

每个位置还带有一个通道维度,所以更完整的特征形状可抽象写为

FR64×64×C.F\in\mathbb R^{64\times64\times C}.

视频没有给出本段所需的精确通道数,因此不应凭空补一个 CC 的具体值。

3. 为什么不能把 4096 个视觉位置原样交给解码器

语言解码器的注意力成本与上下文长度密切相关。

若每页都保留 40964096 个视觉 token,再叠加提示词和输出文本,序列会很长。

这会带来:

  • 更大的 KV Cache;
  • 更多视觉—文本注意力计算;
  • 更少可留给输出文本的上下文预算;
  • 多页文档场景中更明显的吞吐压力。

因此 DeepSeek-OCR 的关键问题不只是“看懂页面”,还包括“用更短的视觉序列保留可解码信息”。

4. SAM 特征经空间重排与卷积压缩

视频板书先用 SAM 路径提取页面的深层视觉表示,再把特征整理为空间网格。

随后通过卷积压缩,把

64×6464\times64

缩为

16×16.16\times16.

最终视觉 token 数为

16×16=256.16\times16=256.
图 3

SAM 视觉特征重排为空间网格后,经卷积压缩到 16×16,共 256 个视觉 token,以降低后续解码成本。

原视频 · 01:20 ↗

空间 token 数的压缩比为

4096256=16.\frac{4096}{256}=16.

也就是说,送往后续模块的位置数缩短到原来的

116.\frac1{16}.

这个“16 倍”说的是 token 数量,不等于文件体积、显存或运行时间都必然精确下降 16 倍。

实际收益还受通道维度、卷积成本、解码长度、实现方式和硬件利用率影响。

5. 压缩不是随意丢掉十五个位置

卷积压缩与简单均匀抽点不同。

卷积在局部感受野中聚合邻近位置,把多个细粒度特征编码进较少的输出位置。

目标是在缩短序列的同时,尽可能保留:

  • 字符笔画与局部纹理;
  • 行、段落和版面结构;
  • 图表、公式与普通文字的空间关系;
  • 对后续生成有用的语义线索。

不过,“尽可能保留”不等于无损压缩。

细小字体、密集公式或复杂版面都可能让压缩更困难,这也是不同分辨率模式存在取舍的原因。

6. 视觉前端与 CLIP 路径的连接边界

按视频对 V1 Base 的讲解:

  • SAM 部分用于提供视觉特征,并在该训练说明中保持冻结;
  • 压缩后的特征进入后续视觉编码路径;
  • CLIP 侧参与训练;
  • 因为输入已经是视觉特征,而不是原始图像 patch,所以板书把 CLIP 原有 patch embedding 画为移除或绕过。

这段描述必须绑定到视频所讲的版本与配置。

不同代码版本可能使用不同模块名称、连接层或冻结策略;不能只凭这张板书推断所有 DeepSeek-OCR 版本都采用完全相同的可训练参数集合。

7. 图像 token 与提示词 token 汇合

设压缩并编码后的视觉 token 为

V=(v1,v2,,v256).V=(v_1,v_2,\ldots,v_{256}).

提示词经过 tokenizer 与 embedding 后形成

Q=(q1,q2,,qm).Q=(q_1,q_2,\ldots,q_m).

两者被组织成解码器的条件上下文:

[V;Q].[V;Q].
图 4

压缩后的图像 token 经视觉编码,与“parse the figure”等提示词 token 拼接后送入 DeepSeek MoE decoder。

原视频 · 01:40 ↗

视频用 “parse the figure” 一类提示词说明任务意图。

“提示词变成 token”应理解为经过 tokenizer 得到 token 序列;一句提示词不保证在真实 tokenizer 中恰好只有一个 token。

8. 语言解码器把 OCR 转成 next-token prediction

DeepSeek MoE decoder 接收视觉上下文与提示词,然后生成目标文字。

训练时,对第 tt 个目标 token 的条件概率可写为

pθ(ytV,Q,y<t).p_\theta (y_t\mid V,Q,y_{<t}).

其中

y<t=(y1,,yt1)y_{<t}=(y_1,\ldots,y_{t-1})

表示真实目标的前缀。

整段目标文本的 teacher-forced 交叉熵为

LCE=t=1Tlogpθ(ytV,Q,y<t).\mathcal L_{\mathrm{CE}} =-\sum_{t=1}^{T} \log p_\theta(y_t\mid V,Q,y_{<t}).
图 5

训练时用教师强制让解码器在图像、提示词和真实前缀条件下预测下一个 token,并计算交叉熵。

原视频 · 02:00 ↗

训练可以并行计算多个位置的 next-token loss,但因果掩码仍保证第 tt 位看不到未来答案 y>ty_{>t}

9. teacher forcing 与推理不是同一条输入链

训练时,第 tt 步使用真实前缀 y<ty_{<t}

推理时没有 ground truth 可喂入,只能使用模型已经生成的前缀:

y^tpθ(V,Q,y^<t).\hat y_t \sim p_\theta (\cdot\mid V,Q,\hat y_{<t}).

因此早期生成错误可能进入后续条件,继续影响后面的 token。

这就是为什么训练损失较低,也不保证长文本自回归结果完全没有累积错误。

10. 编辑距离怎样评估生成文字

预测文本与参考文本可以用编辑距离比较。

Levenshtein 距离允许三种基本操作:

  • 插入一个符号;
  • 删除一个符号;
  • 替换一个符号。

令预测序列为 Y^\hat Y,参考序列为 YY,则距离

D(Y^,Y)D(\hat Y,Y)

是把预测变成参考所需的最少编辑操作数。

图 6

推理时模型自回归生成文本;文字 PDF 提供参考转写,可用编辑距离统计增删改误差。

原视频 · 02:40 ↗

视频讲的是“编辑距离”这一基本量。

若进一步除以参考序列长度,才得到一种归一化错误率:

ER=D(Y^,Y)Y.\mathrm{ER} =\frac{D(\hat Y,Y)}{|Y|}.

这是编者补充的通用定义边界;具体评测究竟按字符、字节、单词还是结构化标记切分,必须查看对应基准与实现,不能仅由本视频确定。

11. 把整条数据流串起来

视频示例可以整理成以下顺序:

  1. 从带文字层的 PDF 取得页面与目标文本;
  2. 把页面渲染成 1024×10241024\times1024 图像;
  3. 形成 64×64=409664\times64=4096 个初始视觉位置;
  4. 用 SAM 路径取得视觉特征;
  5. 经空间重排与卷积压缩为 16×16=25616\times16=256 个 token;
  6. 让后续视觉编码路径处理压缩特征;
  7. 拼接视觉 token 与提示词 token;
  8. 用 DeepSeek MoE decoder 预测目标文本;
  9. 训练时计算 next-token 交叉熵;
  10. 推理后与参考文本计算编辑距离。

其中最值得抓住的主线是:

跟练与练习

原视频练习

编者练习

假设另一种页面配置为 768×768768\times768,patch 大小仍为 16×1616\times16,压缩后网格为 12×1212\times12。 求压缩前后的 token 数与 token 数压缩比。

查看参考答案

压缩前每个方向有
76816=48\frac{768}{16}=48
个位置,因此初始 token 数为
48×48=2304.48\times48=2304.
压缩后 token 数为
12×12=144.12\times12=144.
token 数压缩比为
2304144=16.\frac{2304}{144}=16.
这个结果只描述位置数量,不足以直接推出端到端运行时间也缩短 16 倍。

编者练习 2

为什么不能在推理时继续把 PDF 的真实文字前缀喂给模型,再宣称测得的是 OCR 能力?

查看参考答案

真实文字前缀属于答案信息。
teacher forcing 是训练阶段构造 next-token 监督的方式;真实 OCR 推理只有页面、提示词和模型自己已生成的前缀。
若评测时喂入真实前缀,任务会变成条件补全,并产生标签泄漏,不能代表模型从页面独立转写整段文字的能力。

常见误区

  • 把 V1 Base 示例当成所有版本的固定架构:视频没有覆盖 V2、其他分辨率模式或全部配置。
  • 把 4096 当作通道数:它是 64×6464\times64 空间位置数,每个位置仍有特征维度。
  • 认为 16 倍 token 压缩必然带来 16 倍端到端加速:卷积、通道、文本长度和硬件利用率都会改变实际收益。
  • 认为卷积压缩是无损操作:它学习聚合信息,但密集小字和复杂版面仍可能受损。
  • 把一句 prompt 当成一个 tokenizer token:自然语言提示通常会被切成一个或多个 token。
  • 把 teacher forcing 理解成推理也使用真实答案:真实前缀只用于训练监督,推理依赖模型自己的历史输出。
  • 把交叉熵与编辑距离混为同一指标:前者训练 token 概率,后者比较最终序列差异。
  • 默认所有 PDF 都有可用 ground truth:扫描 PDF 可能没有文字层,已有文字层也需要质量检查。

本课小结

  • 文字 PDF 可以把渲染页面作为视觉输入,把内嵌文本作为监督目标。
  • V1 Base 板书示例从 1024×10241024\times1024 页面得到 64×64=409664\times64=4096 个视觉位置。
  • SAM 路径产生视觉特征,卷积把空间网格压缩为 16×16=25616\times16=256 个视觉 token。
  • 压缩视觉 token 与提示词 token 共同构成 DeepSeek MoE decoder 的条件上下文。
  • 训练使用 teacher-forced next-token 交叉熵,推理使用模型自身前缀自回归生成。
  • 编辑距离衡量最终转写与参考文本的增删改差异,但具体归一化和切分口径需由评测协议确定。
03

单元综合

从跨模态对齐到页面解码:多模态模型的信息流

单元能力目标

完成本单元后,应能沿着 tensor shape 读懂两类常见多模态系统:

  • CLIP 如何把图像与文本编码到共同空间,并在 batch 内做双向对比学习;
  • OCR 视觉语言模型如何把高分辨率页面压缩为视觉 token,再由语言解码器生成文字。

需要掌握的检查能力包括:

  • 判断图文匹配矩阵的行、列和对角线各代表什么;
  • 区分余弦相似度、温度缩放 logits、softmax 与交叉熵;
  • 计算页面分辨率到视觉网格、压缩网格和视觉 token 数量的变化;
  • 区分训练时 teacher forcing 与推理时自回归前缀;
  • 识别“表征对齐”与“条件生成”两种多模态目标的差异。

概念连接

1. 两类系统都把不同模态变成可计算表示

图像像素与文本 token 原本属于不同输入空间。

多模态模型先分别或联合编码,再让表示进入共同的相似度计算或语言建模目标。

CLIP 的核心输出是图像向量与文本向量。

OCR 视觉语言模型的核心中间量是视觉 token 序列,它们与提示词 token 一起作为解码器条件。

共同点是“将视觉信息变成可与文本目标连接的表示”,但最终任务不同。

2. CLIP 是双编码器结构

设 batch 大小为 BB

图像编码器产生

uiRd,u_i\in\mathbb{R}^{d},

文本编码器产生

vjRd.v_j\in\mathbb{R}^{d}.

投影并归一化后,两种表示进入同一个 dd 维空间。

余弦相似度为

cij=uiTvjuivj.c_{ij} = \frac{u_i^Tv_j}{\|u_i\|\|v_j\|}.

若已做单位归一化,则可简写为 cij=uiTvjc_{ij}=u_i^Tv_j

3. 图文相似度矩阵的语义

把所有配对相似度排成

CRB×B.C\in\mathbb{R}^{B\times B}.

ii 行表示第 ii 张图像与 batch 内全部文本的相似度。

jj 列表示第 jj 段文本与全部图像的相似度。

如果数据按同序配对,正确匹配位于矩阵对角线:

(i,i).(i,i).

“对角线是正样本”依赖 batch 内配对顺序,不是任意相似度矩阵的固有属性。

4. 温度把相似度变成可训练 logits

余弦相似度范围有限,直接 softmax 可能区分不够尖锐。

使用温度 τ>0\tau>0

ij=cij/τ.\ell_{ij}=c_{ij}/\tau.

τ\tau 越小,logits 差异被放大,softmax 越尖锐。

不同实现也可能参数化为可学习的 logit scale;判断时应看实际公式与代码。

温度不是在改变哪个样本配对正确,而是在调节相似度进入概率分布时的尺度。

5. 对称交叉熵建立双向检索能力

对每一行做 softmax,得到 image-to-text 分布:

pij=eijk=1Beik.p_{i\to j} = \frac{e^{\ell_{ij}}} {\sum_{k=1}^{B}e^{\ell_{ik}}}.

正确类别是 j=ij=i

对每一列做 softmax,得到 text-to-image 分布。

两种交叉熵取平均:

LCLIP=12(Li2t+Lt2i).L_{CLIP} = \frac12 \left( L_{i2t}+L_{t2i} \right).

只做行方向训练不能自动替代列方向目标;对称损失显式要求两个检索方向都把正确配对排高。

6. OCR 视觉语言模型把页面变成 token 序列

OCR 生成系统不是只输出一个全局页面向量。

它需要保留足够的空间与文字细节,再压缩为有限数量的视觉 token,供语言解码器逐 token 生成转写。

以课程板书中的 V1 Base 示例为界:

1024×10241024\times1024

页面经过视觉编码,形成

64×64=409664\times64=4096

个视觉位置。

再通过卷积压缩到

16×16=25616\times16=256

个视觉 token。

7. 空间压缩的账本

64×6464\times6416×1616\times16,每个空间轴缩小 4 倍。

位置总数缩小为

4096256=16\frac{4096}{256}=16

分之一。

压缩减少了解码器需要处理的视觉序列长度,但也要求每个压缩 token 聚合更大的页面区域。

因此视觉压缩始终在以下目标之间折中:

  • 文字与版面细节;
  • 视觉 token 数;
  • 语言解码器的上下文与计算成本。

板书未指定的通道数、卷积细节和其他版本配置不能从空间网格反推。

8. 视觉 token 与提示 token 共同条件化解码

压缩后的视觉 token 与提示词 token 共同进入语言模型解码器。

可抽象为条件概率:

p(y1,,yTv1:N,x1:M)=t=1Tp(ytv1:N,x1:M,y<t).p(y_1,\ldots,y_T\mid v_{1:N},x_{1:M}) = \prod_{t=1}^{T} p(y_t\mid v_{1:N},x_{1:M},y_{<t}).

其中 vv 是视觉 token,xx 是提示 token,yy 是目标文字 token。

视觉编码器负责从页面提取并压缩视觉证据,语言解码器负责在这些条件下建模输出序列。

9. 训练与推理的前缀不同

训练时常使用 teacher forcing:预测第 tt 个目标 token 时,条件包含真实的 y<ty_{<t}

损失为逐位置 next-token 交叉熵。

推理时没有真实后续文本,模型只能把自己已经生成的 token 作为前缀继续解码。

因此训练时单步预测正确,不代表长序列推理不会发生误差累积。

10. CLIP 与 OCR 的目标差别

CLIP 主要学习跨模态表示对齐:

  • 输入是图像和文本对;
  • 核心量是 batch 内相似度矩阵;
  • 目标是让匹配对相似、非匹配对相对远离。

OCR 生成模型主要学习条件序列生成:

  • 输入是页面视觉 token 与提示;
  • 核心量是每个输出位置的词表分布;
  • 目标是让参考文字 token 的条件概率更高。

二者都可用交叉熵,但“分类轴”和“监督事件”不同。

11. OCR 数据可由文字 PDF 构造

带文字层的 PDF 同时提供:

  • 渲染页面,作为视觉输入;
  • 内嵌文本,作为监督目标。

这种构造能批量获得图文监督,但必须处理:

  • 文字层与渲染页面是否对齐;
  • 阅读顺序、页眉页脚和多栏排版;
  • 扫描 PDF 可能根本没有文字层;
  • 编辑或抽取错误可能污染目标文本。

数据来源便利不等于监督天然无噪声。

12. 评估轴也不同

CLIP 常关注跨模态检索或分类式指标。

OCR 转写可使用编辑距离:

dedit(y,y^),d_{edit}(y,\hat y),

统计把预测变成参考所需的插入、删除与替换次数。

若报告归一化错误率,还必须说明按字符还是 token 切分、分母是什么、如何处理空格与标点。

不能只看到“编辑距离”就默认所有评测口径一致。

对比与决策

1. 何时使用双编码器对齐

当任务重心是:

  • 图文检索;
  • 相似度排序;
  • 零样本分类;
  • 大规模候选的独立预编码;

双编码器把图像和文本分别编码,便于缓存向量并快速比较。

它不直接产生长文本解释或逐字转写。

2. 何时使用视觉 token 加语言解码器

当输出是结构化或长序列文本,且需要依据页面局部证据逐步生成时,视觉 token 条件化解码更直接。

代价是视觉序列与生成序列共同占用解码计算,且需要处理自回归误差累积。

3. 读结构图时的四步检查

  1. 标出每个张量的 shape 与轴语义。
  2. 标出归一化、相似度、softmax 或压缩发生在哪个轴。
  3. 标出监督目标是 batch 配对索引还是输出 token。
  4. 标出训练时真实前缀与推理时模型前缀的差异。

只看模块名称而不追踪这四项,容易把“共同空间”“视觉 token”和“生成概率”混成一种表示。

综合训练

编者练习

一个 CLIP batch 含 8 对同序图文样本,嵌入维度为 512。写出图像嵌入、文本嵌入、相似度矩阵的 shape,并说明行、列 softmax 的监督标签。

查看参考答案

图像嵌入与文本嵌入都为 8×5128\times512,相似度矩阵为 8×88\times8。行 ii 表示图像 ii 对 8 段文本的 logits,正确类别为列 ii;列 jj 表示文本 jj 对 8 张图像的 logits,正确类别为行 jj。对称损失分别沿行和列计算交叉熵后取平均。

编者练习 2

某页面视觉编码器输出 80×8080\times80 网格,随后每个空间轴压缩 5 倍。求压缩后的视觉 token 数,并说明不能由这些数字推出什么。

查看参考答案

压缩后网格为 16×1616\times16,共有 256 个视觉 token;位置数压缩为原来的 1/251/25。仅凭空间 shape 不能推出通道数、具体卷积核、是否丢失文字细节、解码器结构或实际 OCR 准确率,这些需要查看架构与实验配置。

编者练习 3

为什么“CLIP 和 OCR 都用交叉熵”不足以说明它们训练的是同一个任务?

查看参考答案

CLIP 的分类事件是 batch 内图文配对索引,logits 来自跨模态相似度矩阵,并沿图到文、文到图两个方向计算。OCR 的分类事件是每个输出位置的词表 token,logits 来自视觉与文本前缀条件下的语言解码器。损失形式相同不代表输入结构、归一化轴、监督事件和推理方式相同。

进入下一单元前

  • 已能解释 CLIP 相似度矩阵的行、列与对角线。
  • 已能区分余弦相似度、温度 logits、softmax 与对称交叉熵。
  • 已能从页面分辨率计算视觉网格和压缩 token 数。
  • 已能说明视觉 token 与提示 token 如何条件化语言解码。
  • 已能区分 teacher forcing 与自回归推理前缀。
  • 若仍会把双编码器对齐当成长文本生成,回看 P79 与 P80 的目标轴。
  • 若仍无法从结构图追踪信息瓶颈,先写出每一步空间 shape 与 token 数再继续。