LEARNING UNIT · 17
多模态模型的结构可视化
用人类可读的结构图理解 CLIP 与 OCR 模型中的表示、对齐和信息流。
- 已整理章节
- 3 节
- 单元来源
- 2 条视频
- 总时长
- 06:13
- 状态
- 已发布
- 学习位置
- 17 / 20
主题讲解 · 03:19
从图文配对到对称交叉熵:一步步看懂 CLIP
学习目标
- 能解释一个 batch 内正确图文对为何位于相似度矩阵对角线。
- 能说明图像、文本编码器输出为何需要投影到共同维度。
- 能写出归一化向量的余弦相似度与温度缩放 logits。
- 能写出图像检索文字方向的行 softmax 交叉熵。
- 能写出文字检索图像方向的列 softmax 交叉熵。
- 能解释 CLIP 为什么取两个方向损失的平均。
前置与衔接
本单元开始讨论多模态表示与视觉语言系统。
CLIP 的核心不是生成句子,而是把图像与文字映射到同一个嵌入空间,让真实配对相近、批内错误配对相远。
本课从三组图文对出发,把双编码器、相似度矩阵和对称损失串成一个完整计算图。
核心讲解
1. 一个 batch 同时提供正样本与负样本
设 batch 中有 组真实配对:
把图像和文字按相同配对顺序排列。
于是 的正确文字是 ,相似度矩阵中的正确位置为 。
一个 batch 内的图像与文字按真实配对对齐顺序,正确配对落在相似度矩阵对角线。
原视频 · 00:20 ↗同一个 batch 中,其余 ()可以作为 的批内负样本。
反方向也一样:其余图像是文字 的负样本。
2. 双编码器先各自理解模态
图像编码器产生表示
文本编码器产生表示
两种编码器的原始输出维度可以不同。
例如:
分别经过投影:
得到共同维度
图像编码器与文本编码器分别产生表示,再投影到相同嵌入维度以便逐对计算相似度。
原视频 · 00:40 ↗“等长”是为了能逐元素内积,不是说两个模态必须使用相同编码器。
3. L2 归一化后,内积就是余弦相似度
先归一化:
于是
归一化内积给出图文余弦相似度,所有图像与文字两两比较后形成相似度矩阵。
原视频 · 01:20 ↗对所有 两两计算,得到
行 表示图像 对所有文字的相似度;列 表示文字 对所有图像的相似度。
4. 为什么要引入温度
余弦相似度范围为
直接送入 softmax 时,不同候选之间可能不够分离。
视频用温度 定义 logits:
余弦值范围有限,除以温度 τ 后再做 softmax,可控制分类分布的尖锐程度。
原视频 · 02:00 ↗当 较小时,相似度差异被放大,softmax 更尖锐; 较大时,分布更平滑。
一个常见实现边界是把
参数化为可学习的正 logit scale。
无论写成除以温度还是乘 logit scale,核心都是在 softmax 前调节相似度尺度。
5. 行 softmax:每张图像分类到正确文字
固定图像 ,沿第 行对所有文字做 softmax:
正确标签是 。
该方向损失为
按行 softmax 把每张图像对应的所有文字视为候选,对角线概率给出正确文字的交叉熵。
原视频 · 02:40 ↗若真实配对概率接近 ,负对数接近 ;若正确文字概率很小,损失很大。
6. 只做行方向为什么还不够
行 softmax 回答的问题是:
但 CLIP 还希望反方向也可检索:
虽然两个方向使用同一个 logits 矩阵,归一化分母不同,因此概率矩阵一般不相同。
7. 列 softmax:每段文字分类到正确图像
固定文字 ,沿第 列对所有图像做 softmax:
该方向损失为
再按列 softmax 计算文字检索图像方向的交叉熵,两个方向取平均得到对称 CLIP 损失。
原视频 · 03:00 ↗最终对称损失为
8. 一个三对样本的直观矩阵
理想 logits 的对角线应明显大于同一行、同一列的其他位置:
行 softmax 让每一行的对角位置胜出。
列 softmax 让每一列的对角位置胜出。
两个方向共同训练,嵌入空间才同时支持 image-to-text 与 text-to-image 检索。
9. batch size 会改变负样本集合
在最基础的批内对比视角中,一个 batch 的每个样本有:
- 一个正配对;
- 个文字负样本;
- 个图像负样本。
batch 越大,候选分类问题通常越难,也提供更多负样本。
但这不意味着越大越好;显存、分布式通信、重复语义和假负样本都要考虑。
视频用小矩阵是为了可视化,不是限定真实训练 batch 只能有三对。
10. 对角线标签依赖配对顺序一致
若图像列表和文本列表使用不同随机排列,而标签仍设为 ,对角线就不再代表真实配对。
训练会把错误组合拉近。
所以数据管线必须保证:
- 图像与对应文字保持同一 pair id;
- 分布式 gather 后标签偏移正确;
- 多 caption 或重复样本时,正样本定义与 loss 实现一致。
最后一点是扩展边界:基础视频采用“一图一文、单个对角正样本”的最简单设定。
跟练与练习
原视频练习
编者练习
给定温度缩放后的 logits: 写出图像 在 image-to-text 方向选中正确文字的概率。
查看参考答案
对第一行做 softmax:
对应损失项为
不能沿第一列归一化,因为当前问题是“给定图像 ,在所有文字中分类”。
编者练习 2
为什么同一个 的行 softmax 与列 softmax 一般不会相同?
查看参考答案
因为归一化候选集合不同。行 softmax 的分母固定一个图像、累加所有文字;列 softmax 固定一段文字、累加所有图像。除非矩阵具有特殊对称和值结构,两组分母不会相同。
常见误区
- 把“顺序配对”听成其他词:关键是图像与文字列表使用一致 pair 顺序。
- 认为两个编码器输出必须天然等维:可以先各自编码,再用投影头统一维度。
- 忘记 L2 归一化:未经归一化的内积还受向量模长影响,不等于纯余弦相似度。
- 把 softmax 当成相似度计算:余弦产生相似度,温度缩放产生 logits,softmax 才产生条件概率。
- 只取对角线相似度训练:交叉熵还需要同一行或列的其他候选作为分母中的负样本。
- 只做一个方向:标准对称目标同时训练图到文和文到图。
- 认为温度越小永远越好:过度尖锐可能造成优化不稳定;实现通常学习或约束尺度。
本课小结
- batch 内同序图文对让正确匹配位于相似度矩阵对角线。
- 双编码器经投影和归一化后,在共同空间计算余弦相似度。
- 温度将有限范围的余弦值缩放成更可分的 logits。
- 行 softmax 训练 image-to-text,列 softmax 训练 text-to-image。
- 两个交叉熵取平均,得到对称 CLIP 对比损失。
- 下一课沿多模态路径继续追踪 OCR 系统怎样把页面压缩成视觉 token,再由语言解码器生成文字。
主题讲解 · 02:54
DeepSeek-OCR V1 如何把页面压缩成可解码的视觉 token
学习目标
- 能区分文字 PDF 提供的页面图像与监督文本两条数据路径。
- 能从 页面和 patch 推出 个视觉位置。
- 能解释卷积压缩为何把 网格缩到 、即 个视觉 token。
- 能说清视觉 token、提示词 token 与 MoE decoder 的连接关系。
- 能区分训练时的 teacher forcing 与推理时的自回归生成。
- 能解释编辑距离中的插入、删除、替换,并知道它与归一化错误率的边界。
前置与衔接
上一课用 CLIP 说明图像和文字如何进入共同表示空间。
这一课继续沿多模态路径追踪一个 OCR 示例:一页文档怎样从高分辨率图像变成较短的视觉 token 序列,再由语言模型逐 token 生成文字。
课程严格对应视频板书中的 DeepSeek-OCR V1 Base 示例。
视频中出现的输入分辨率、patch 大小、token 数和模块训练状态,都应理解为该示例的配置说明,而不是对 V2、其他分辨率模式或所有 OCR 系统的统一结论。
核心讲解
1. 文字 PDF 同时提供视觉输入和文本监督
训练数据可以从带文字层的 PDF 出发。
同一页文档走两条路径:
- 页面被渲染为图像,作为模型的视觉输入;
- PDF 中已有的文本被抽取出来,作为目标转写。
文字 PDF 先渲染成页面图像供 OCR 编码,同时保留 PDF 内文本作为监督标签。
原视频 · 00:20 ↗可以把一条训练样本写为
其中:
- 是页面图像;
- 是任务提示词;
- 是参考文本 token 序列。
这不表示任意 PDF 都天然有可靠标签。
扫描件或只含图片的 PDF 可能没有可抽取文字层;文字层与页面显示也可能错位。此时需要其他 OCR 结果、人工标注或数据清洗,不能直接把空文本当作 ground truth。
2. 从页面分辨率推导初始视觉网格
视频以 页面为例,并按 的 patch 划分。
每个空间方向的 patch 数为
因此二维网格为
总视觉位置数为
V1 Base 示例把 1024×1024 页面按 16×16 patch 划分为 64×64 网格,形成 4096 个视觉位置。
原视频 · 01:00 ↗这里的 是空间位置数量。
每个位置还带有一个通道维度,所以更完整的特征形状可抽象写为
视频没有给出本段所需的精确通道数,因此不应凭空补一个 的具体值。
3. 为什么不能把 4096 个视觉位置原样交给解码器
语言解码器的注意力成本与上下文长度密切相关。
若每页都保留 个视觉 token,再叠加提示词和输出文本,序列会很长。
这会带来:
- 更大的 KV Cache;
- 更多视觉—文本注意力计算;
- 更少可留给输出文本的上下文预算;
- 多页文档场景中更明显的吞吐压力。
因此 DeepSeek-OCR 的关键问题不只是“看懂页面”,还包括“用更短的视觉序列保留可解码信息”。
4. SAM 特征经空间重排与卷积压缩
视频板书先用 SAM 路径提取页面的深层视觉表示,再把特征整理为空间网格。
随后通过卷积压缩,把
缩为
最终视觉 token 数为
SAM 视觉特征重排为空间网格后,经卷积压缩到 16×16,共 256 个视觉 token,以降低后续解码成本。
原视频 · 01:20 ↗空间 token 数的压缩比为
也就是说,送往后续模块的位置数缩短到原来的
这个“16 倍”说的是 token 数量,不等于文件体积、显存或运行时间都必然精确下降 16 倍。
实际收益还受通道维度、卷积成本、解码长度、实现方式和硬件利用率影响。
5. 压缩不是随意丢掉十五个位置
卷积压缩与简单均匀抽点不同。
卷积在局部感受野中聚合邻近位置,把多个细粒度特征编码进较少的输出位置。
目标是在缩短序列的同时,尽可能保留:
- 字符笔画与局部纹理;
- 行、段落和版面结构;
- 图表、公式与普通文字的空间关系;
- 对后续生成有用的语义线索。
不过,“尽可能保留”不等于无损压缩。
细小字体、密集公式或复杂版面都可能让压缩更困难,这也是不同分辨率模式存在取舍的原因。
6. 视觉前端与 CLIP 路径的连接边界
按视频对 V1 Base 的讲解:
- SAM 部分用于提供视觉特征,并在该训练说明中保持冻结;
- 压缩后的特征进入后续视觉编码路径;
- CLIP 侧参与训练;
- 因为输入已经是视觉特征,而不是原始图像 patch,所以板书把 CLIP 原有 patch embedding 画为移除或绕过。
这段描述必须绑定到视频所讲的版本与配置。
不同代码版本可能使用不同模块名称、连接层或冻结策略;不能只凭这张板书推断所有 DeepSeek-OCR 版本都采用完全相同的可训练参数集合。
7. 图像 token 与提示词 token 汇合
设压缩并编码后的视觉 token 为
提示词经过 tokenizer 与 embedding 后形成
两者被组织成解码器的条件上下文:
压缩后的图像 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 接收视觉上下文与提示词,然后生成目标文字。
训练时,对第 个目标 token 的条件概率可写为
其中
表示真实目标的前缀。
整段目标文本的 teacher-forced 交叉熵为
训练时用教师强制让解码器在图像、提示词和真实前缀条件下预测下一个 token,并计算交叉熵。
原视频 · 02:00 ↗训练可以并行计算多个位置的 next-token loss,但因果掩码仍保证第 位看不到未来答案 。
9. teacher forcing 与推理不是同一条输入链
训练时,第 步使用真实前缀 。
推理时没有 ground truth 可喂入,只能使用模型已经生成的前缀:
因此早期生成错误可能进入后续条件,继续影响后面的 token。
这就是为什么训练损失较低,也不保证长文本自回归结果完全没有累积错误。
10. 编辑距离怎样评估生成文字
预测文本与参考文本可以用编辑距离比较。
Levenshtein 距离允许三种基本操作:
- 插入一个符号;
- 删除一个符号;
- 替换一个符号。
令预测序列为 ,参考序列为 ,则距离
是把预测变成参考所需的最少编辑操作数。
推理时模型自回归生成文本;文字 PDF 提供参考转写,可用编辑距离统计增删改误差。
原视频 · 02:40 ↗视频讲的是“编辑距离”这一基本量。
若进一步除以参考序列长度,才得到一种归一化错误率:
这是编者补充的通用定义边界;具体评测究竟按字符、字节、单词还是结构化标记切分,必须查看对应基准与实现,不能仅由本视频确定。
11. 把整条数据流串起来
视频示例可以整理成以下顺序:
- 从带文字层的 PDF 取得页面与目标文本;
- 把页面渲染成 图像;
- 形成 个初始视觉位置;
- 用 SAM 路径取得视觉特征;
- 经空间重排与卷积压缩为 个 token;
- 让后续视觉编码路径处理压缩特征;
- 拼接视觉 token 与提示词 token;
- 用 DeepSeek MoE decoder 预测目标文本;
- 训练时计算 next-token 交叉熵;
- 推理后与参考文本计算编辑距离。
其中最值得抓住的主线是:
跟练与练习
原视频练习
编者练习
假设另一种页面配置为 ,patch 大小仍为 ,压缩后网格为 。 求压缩前后的 token 数与 token 数压缩比。
查看参考答案
压缩前每个方向有
个位置,因此初始 token 数为
压缩后 token 数为
token 数压缩比为
这个结果只描述位置数量,不足以直接推出端到端运行时间也缩短 16 倍。
编者练习 2
为什么不能在推理时继续把 PDF 的真实文字前缀喂给模型,再宣称测得的是 OCR 能力?
查看参考答案
真实文字前缀属于答案信息。
teacher forcing 是训练阶段构造 next-token 监督的方式;真实 OCR 推理只有页面、提示词和模型自己已生成的前缀。
若评测时喂入真实前缀,任务会变成条件补全,并产生标签泄漏,不能代表模型从页面独立转写整段文字的能力。
常见误区
- 把 V1 Base 示例当成所有版本的固定架构:视频没有覆盖 V2、其他分辨率模式或全部配置。
- 把 4096 当作通道数:它是 空间位置数,每个位置仍有特征维度。
- 认为 16 倍 token 压缩必然带来 16 倍端到端加速:卷积、通道、文本长度和硬件利用率都会改变实际收益。
- 认为卷积压缩是无损操作:它学习聚合信息,但密集小字和复杂版面仍可能受损。
- 把一句 prompt 当成一个 tokenizer token:自然语言提示通常会被切成一个或多个 token。
- 把 teacher forcing 理解成推理也使用真实答案:真实前缀只用于训练监督,推理依赖模型自己的历史输出。
- 把交叉熵与编辑距离混为同一指标:前者训练 token 概率,后者比较最终序列差异。
- 默认所有 PDF 都有可用 ground truth:扫描 PDF 可能没有文字层,已有文字层也需要质量检查。
本课小结
- 文字 PDF 可以把渲染页面作为视觉输入,把内嵌文本作为监督目标。
- V1 Base 板书示例从 页面得到 个视觉位置。
- SAM 路径产生视觉特征,卷积把空间网格压缩为 个视觉 token。
- 压缩视觉 token 与提示词 token 共同构成 DeepSeek MoE decoder 的条件上下文。
- 训练使用 teacher-forced next-token 交叉熵,推理使用模型自身前缀自回归生成。
- 编辑距离衡量最终转写与参考文本的增删改差异,但具体归一化和切分口径需由评测协议确定。
单元综合
从跨模态对齐到页面解码:多模态模型的信息流
单元能力目标
完成本单元后,应能沿着 tensor shape 读懂两类常见多模态系统:
- CLIP 如何把图像与文本编码到共同空间,并在 batch 内做双向对比学习;
- OCR 视觉语言模型如何把高分辨率页面压缩为视觉 token,再由语言解码器生成文字。
需要掌握的检查能力包括:
- 判断图文匹配矩阵的行、列和对角线各代表什么;
- 区分余弦相似度、温度缩放 logits、softmax 与交叉熵;
- 计算页面分辨率到视觉网格、压缩网格和视觉 token 数量的变化;
- 区分训练时 teacher forcing 与推理时自回归前缀;
- 识别“表征对齐”与“条件生成”两种多模态目标的差异。
概念连接
1. 两类系统都把不同模态变成可计算表示
图像像素与文本 token 原本属于不同输入空间。
多模态模型先分别或联合编码,再让表示进入共同的相似度计算或语言建模目标。
CLIP 的核心输出是图像向量与文本向量。
OCR 视觉语言模型的核心中间量是视觉 token 序列,它们与提示词 token 一起作为解码器条件。
共同点是“将视觉信息变成可与文本目标连接的表示”,但最终任务不同。
2. CLIP 是双编码器结构
设 batch 大小为 。
图像编码器产生
文本编码器产生
投影并归一化后,两种表示进入同一个 维空间。
余弦相似度为
若已做单位归一化,则可简写为 。
3. 图文相似度矩阵的语义
把所有配对相似度排成
第 行表示第 张图像与 batch 内全部文本的相似度。
第 列表示第 段文本与全部图像的相似度。
如果数据按同序配对,正确匹配位于矩阵对角线:
“对角线是正样本”依赖 batch 内配对顺序,不是任意相似度矩阵的固有属性。
4. 温度把相似度变成可训练 logits
余弦相似度范围有限,直接 softmax 可能区分不够尖锐。
使用温度 :
越小,logits 差异被放大,softmax 越尖锐。
不同实现也可能参数化为可学习的 logit scale;判断时应看实际公式与代码。
温度不是在改变哪个样本配对正确,而是在调节相似度进入概率分布时的尺度。
5. 对称交叉熵建立双向检索能力
对每一行做 softmax,得到 image-to-text 分布:
正确类别是 。
对每一列做 softmax,得到 text-to-image 分布。
两种交叉熵取平均:
只做行方向训练不能自动替代列方向目标;对称损失显式要求两个检索方向都把正确配对排高。
6. OCR 视觉语言模型把页面变成 token 序列
OCR 生成系统不是只输出一个全局页面向量。
它需要保留足够的空间与文字细节,再压缩为有限数量的视觉 token,供语言解码器逐 token 生成转写。
以课程板书中的 V1 Base 示例为界:
页面经过视觉编码,形成
个视觉位置。
再通过卷积压缩到
个视觉 token。
7. 空间压缩的账本
从 到 ,每个空间轴缩小 4 倍。
位置总数缩小为
分之一。
压缩减少了解码器需要处理的视觉序列长度,但也要求每个压缩 token 聚合更大的页面区域。
因此视觉压缩始终在以下目标之间折中:
- 文字与版面细节;
- 视觉 token 数;
- 语言解码器的上下文与计算成本。
板书未指定的通道数、卷积细节和其他版本配置不能从空间网格反推。
8. 视觉 token 与提示 token 共同条件化解码
压缩后的视觉 token 与提示词 token 共同进入语言模型解码器。
可抽象为条件概率:
其中 是视觉 token, 是提示 token, 是目标文字 token。
视觉编码器负责从页面提取并压缩视觉证据,语言解码器负责在这些条件下建模输出序列。
9. 训练与推理的前缀不同
训练时常使用 teacher forcing:预测第 个目标 token 时,条件包含真实的 。
损失为逐位置 next-token 交叉熵。
推理时没有真实后续文本,模型只能把自己已经生成的 token 作为前缀继续解码。
因此训练时单步预测正确,不代表长序列推理不会发生误差累积。
10. CLIP 与 OCR 的目标差别
CLIP 主要学习跨模态表示对齐:
- 输入是图像和文本对;
- 核心量是 batch 内相似度矩阵;
- 目标是让匹配对相似、非匹配对相对远离。
OCR 生成模型主要学习条件序列生成:
- 输入是页面视觉 token 与提示;
- 核心量是每个输出位置的词表分布;
- 目标是让参考文字 token 的条件概率更高。
二者都可用交叉熵,但“分类轴”和“监督事件”不同。
11. OCR 数据可由文字 PDF 构造
带文字层的 PDF 同时提供:
- 渲染页面,作为视觉输入;
- 内嵌文本,作为监督目标。
这种构造能批量获得图文监督,但必须处理:
- 文字层与渲染页面是否对齐;
- 阅读顺序、页眉页脚和多栏排版;
- 扫描 PDF 可能根本没有文字层;
- 编辑或抽取错误可能污染目标文本。
数据来源便利不等于监督天然无噪声。
12. 评估轴也不同
CLIP 常关注跨模态检索或分类式指标。
OCR 转写可使用编辑距离:
统计把预测变成参考所需的插入、删除与替换次数。
若报告归一化错误率,还必须说明按字符还是 token 切分、分母是什么、如何处理空格与标点。
不能只看到“编辑距离”就默认所有评测口径一致。
对比与决策
1. 何时使用双编码器对齐
当任务重心是:
- 图文检索;
- 相似度排序;
- 零样本分类;
- 大规模候选的独立预编码;
双编码器把图像和文本分别编码,便于缓存向量并快速比较。
它不直接产生长文本解释或逐字转写。
2. 何时使用视觉 token 加语言解码器
当输出是结构化或长序列文本,且需要依据页面局部证据逐步生成时,视觉 token 条件化解码更直接。
代价是视觉序列与生成序列共同占用解码计算,且需要处理自回归误差累积。
3. 读结构图时的四步检查
- 标出每个张量的 shape 与轴语义。
- 标出归一化、相似度、softmax 或压缩发生在哪个轴。
- 标出监督目标是 batch 配对索引还是输出 token。
- 标出训练时真实前缀与推理时模型前缀的差异。
只看模块名称而不追踪这四项,容易把“共同空间”“视觉 token”和“生成概率”混成一种表示。
综合训练
编者练习
一个 CLIP batch 含 8 对同序图文样本,嵌入维度为 512。写出图像嵌入、文本嵌入、相似度矩阵的 shape,并说明行、列 softmax 的监督标签。
查看参考答案
图像嵌入与文本嵌入都为 ,相似度矩阵为 。行 表示图像 对 8 段文本的 logits,正确类别为列 ;列 表示文本 对 8 张图像的 logits,正确类别为行 。对称损失分别沿行和列计算交叉熵后取平均。
编者练习 2
某页面视觉编码器输出 网格,随后每个空间轴压缩 5 倍。求压缩后的视觉 token 数,并说明不能由这些数字推出什么。
查看参考答案
压缩后网格为 ,共有 256 个视觉 token;位置数压缩为原来的 。仅凭空间 shape 不能推出通道数、具体卷积核、是否丢失文字细节、解码器结构或实际 OCR 准确率,这些需要查看架构与实验配置。
编者练习 3
为什么“CLIP 和 OCR 都用交叉熵”不足以说明它们训练的是同一个任务?
查看参考答案
CLIP 的分类事件是 batch 内图文配对索引,logits 来自跨模态相似度矩阵,并沿图到文、文到图两个方向计算。OCR 的分类事件是每个输出位置的词表 token,logits 来自视觉与文本前缀条件下的语言解码器。损失形式相同不代表输入结构、归一化轴、监督事件和推理方式相同。
进入下一单元前
- 已能解释 CLIP 相似度矩阵的行、列与对角线。
- 已能区分余弦相似度、温度 logits、softmax 与对称交叉熵。
- 已能从页面分辨率计算视觉网格和压缩 token 数。
- 已能说明视觉 token 与提示 token 如何条件化语言解码。
- 已能区分 teacher forcing 与自回归推理前缀。
- 若仍会把双编码器对齐当成长文本生成,回看 P79 与 P80 的目标轴。
- 若仍无法从结构图追踪信息瓶颈,先写出每一步空间 shape 与 token 数再继续。