⚠️ Alpha内测版本警告:此为早期内部构建版本,尚不完整且可能存在错误,欢迎大家提Issue反馈问题或建议。
Skip to content

扩展:多模态对齐训练 ​

在线 Notebook

对应的交互式版本可在 Google Colab 打开,统一使用方式见 第0章说明。

所属章节: 第 7 章:多模态 LLM


对比学习目标 ​

给定一批匹配的图像表示 vi 与文本表示 ti,先做 L2 归一化,再用余弦相似度和温度构造 logits:

vi←vi∥vi∥2,ti←ti∥ti∥2,ℓij=viTtjτ

图像到文本方向的 InfoNCE 损失为:

LI→T=−1B∑i=1Blog⁡exp⁡(ℓii)∑j=1Bexp⁡(ℓij)

通常还计算文本到图像方向并取平均:Lcontrastive=(LI→T+LT→I)/2。它让匹配对相对于同批其他样本获得更高分数,不意味着所有未匹配样本在语义上都是真负例。统一公式见附录 A.9。

温度 τ 控制 softmax 的尖锐程度。batch size 增加会带来更多批内负例,也会增加计算与通信;重复图像、近义文本和错误配对会形成假负例。

数据管线 ​

图文训练数据需要同时检查两个模态及其对应关系:

text
图像可读取、尺寸与重复
文本语言、长度与敏感信息
图文是否真的匹配
许可证与来源记录
训练集和评测集是否重合

用已有图文模型过滤数据是一种自举过程:过滤器的偏差会进入新数据集。应保留过滤前后抽样、阈值和人工复核结果。

图像增强也要与任务匹配。随机裁剪适合部分自然图像训练,但可能删掉文档文字、图表坐标或目标边界。

视觉表示如何接入语言模型 ​

视觉编码器通常输出 patch 序列:

V∈RNv×dv

投影模块将其变为语言模型维度:

Z=fproj(V)∈RNv′×dmodel

常见投影包括线性层、MLP 和带查询的聚合模块。它们主要在三个方面取舍:

  • 是否保留每个 patch,或把视觉 token 压缩为更短序列;
  • 投影容量和训练数据是否足够;
  • 视觉 token 数对上下文长度、显存和延迟的影响。

MLP 比线性层多了非线性容量,但不保证更好;查询聚合减少 token 数,也可能丢失小文字和细节。

分阶段训练 ​

一种常见策略是:

  1. 冻结视觉编码器和语言模型,只训练投影模块;
  2. 使用图文指令数据训练投影与部分语言模型参数;
  3. 视数据与预算决定是否解冻视觉编码器或更多语言层。

冻结组件可以降低训练状态和破坏预训练表示的风险,但也限制领域适配。医学影像、遥感或文档图像与自然图像差异较大时,视觉编码器可能需要进一步训练。

没有“先冻结必然更快且最终性能相同”的通用结论。比较时要固定数据、更新步数、可训练参数和评价集。

评测拆分 ​

多模态总分会掩盖错误来源。至少分开测量:

  • 感知:OCR、目标、颜色和空间关系;
  • 对齐:图文检索或匹配;
  • 推理:基于正确感知结果的计算与判断;
  • 生成:格式、事实性和指令遵循;
  • 效率:视觉 token 数、延迟和峰值显存。

只有先确认感知是否正确,才能判断错误来自视觉编码、投影对齐还是语言推理。


返回: 第 7 章:多模态 LLM

本教程采用 CC BY-NC-SA 4.0 许可协议