最近审阅:2026-10
一张车站时刻表,文字说明只有“周末班次有调整”。如果问末班车几点开,光读说明不够;但“找到这张图”和“读对图里的时间”也不是同一个任务。
这一组笔记从图片怎样变成向量开始,接着看图文怎样学会配对、视觉信息怎样进入语言模型(language model, LM),最后再讨论训练和评估。先分清任务,模型结构才不容易混。
先分清三件事
| 要做什么 | 模型交出什么 | 主要看哪条路线 |
|---|---|---|
| 按文字找图片,或按图找文字 | 向量与匹配分数 | ViT → CLIP → 检索(retrieval) |
| 看图描述、读字、回答问题 | 以图文为条件的输出文本 | 视觉编码器(encoder) → 连接模块 → LLM |
| 根据文字生成或修改图片 | 像素或图像 latent | 图像生成、flow matching 与编辑 |
CLIP 把匹配图文拉近,不是一个回答任意问题的聊天模型。视觉问答模型能生成答案,也不意味着它的表示天然适合大规模 ANN 检索。输入都包含图片,输出和训练目标却可能差很多。CLIP 原论文和 LLaVA 的视觉指令微调分别对应前两种任务。
从基础读起
| 顺序 | 去读哪篇 | 这一篇要弄明白什么 |
|---|---|---|
| 1 · 向量基础 | 向量与相似度 | 余弦为什么不是概率,温度改变了什么 |
| 2 · 图片输入 | ViT | Patch、投影、位置和 CLS 各做什么;分辨率怎样影响计算 |
| 3 · 图文配对 | CLIP | 两路向量怎样学会匹配;batch 里的其他配对为什么可能是假负例 |
| 4 · 换一种配对目标 | SigLIP 与 SigLIP 2 | Sigmoid 与 softmax 怎么不同;多语言、局部特征与 NaFlex |
| 5 · 生成回答 | 图片怎样进入 LLM | 视觉特征怎样接入生成过程,输出为什么仍可能只靠文字猜 |
| 6 · 连接模块 | BLIP 与 Q-Former | 压缩视觉信息、训练目标和指令感知分别在做什么 |
| 7 · 动手训练 | VLM 微调 | Processor、答案 mask、冻结范围与独立生成测试 |
遇到训练代码不熟的地方,可以先看一次参数更新;张量和梯度还不顺手,就配合 PyTorch 小实验。
同一张图,三种不同的检查
继续用时刻表。假设图里的末班车时间是 22:40,问题是“末班车几点出发?”这只是本站构造的教学场景,不是模型测评结果。
- 01 / 输入文字没有给出时间正文只说班次调整。图片里的数字和行列关系才是回答依据。
- 02 / 表示缩放后还看得清吗先看 processor 实际送入的图片。原图清晰,不代表处理后的字仍清晰。
- 03 / 输出答案是否跟着证据变只把图中时间改为 23:10,问题不变,再比较生成结果。
如果要检索这张图,先看它能否排在无关候选(candidate)前面;如果要读时间,检查数字、方向和表格行列是否对应;如果要回答问题,还要确认模型没有把首班时间当成末班时间。一个总分很难同时讲清这些问题。
OCR 可以把字转出来,但转写结果不一定保留版式关系;VLM 可以利用视觉上下文,也可能读错小字。并不是每条流程都要先接一个 OCR 服务:先用直接输入图片的基线(baseline),再用相同样本比较是否需要 OCR、裁剪或更高分辨率。
再往下读:结构、预算与新模态
| 遇到的问题 | 阅读入口 | 比较时固定什么 |
|---|---|---|
| 小字看不清,多切几块值不值 | LLaVA 与 DeepSeek-VL | 同一张图、同一问题;记录切块数与输入长度 |
| 图片位置和视频时间怎样编码 | Qwen-VL | 具体版本、网格与视觉序列;不要跨版本套配置 |
| 流式说话为什么仍会卡顿 | Omni | 首包等待、音频帧数、打断与工具状态 |
| 文档转成图片真能省吗 | OCR 与上下文压缩 | 输入和输出成本,以及文字与阅读顺序是否保真 |
| 生成图片与理解图片怎么不同 | Qwen-Image | 生成目标、局部编辑区域与文字保持 |
| 微调(fine-tuning)后变好的是格式还是读图能力 | VLM 微调与评估 | 未见来源、未见版式、无图与改图对照 |
图文对比学习(contrastive learning)、描述生成、指令微调(instruction tuning)和偏好优化提供不同的监督。它们可以组合成多任务训练,但要分别检查任务采样和 loss 权重,不能把“加了更多任务”直接当成更好的表征。
怎么判断新增模态有用
对时刻表,只看回答“22:40”还不够。保留原始样本,再做少量可核对的对照:
| 对照 | 希望观察到什么 | 解释时要小心什么 |
|---|---|---|
| 去掉图片 | 答案不再能被直接确定 | 掉分也可能来自异常输入,不能单独证明模型正确理解了图片 |
| 只改时间,保持版式不变 | 回答跟随新数字 | 这是局部证据使用检查,不是全面视觉推理评估 |
| 遮住时间字段 | 说明读不到,而不是编一个 | 需要数据里确实有不可回答的例子 |
| 文字说 22:40,图里写 23:10 | 指出冲突,并按任务约定处理 | 不应默认图片或文字永远更可信 |
| 换来源或版式 | 仍能找到正确字段 | 随机切分可能把同一模板放进训练和测试两边 |
再回到实际任务:检索要看相关候选有没有增加,问答要看答案和证据是否正确;两者都要看成本和失败样本。按内容类型、清晰度、语言及相关用户群体分开报告,检查收益是不是只集中在某个切片(slice)。评估细节见切片与消融。
对于个性化应用,图片、观看行为和语音也只能提供有限证据。看完不等于喜欢,上传不等于允许永久推断敏感属性;信息怎样保存、修正和删除,要和数据反馈、记忆管理一起考虑。
基础机制用公开、可拆解的版本讲;后续版本在各篇单独说明。报告结果、本站手算、可运行小实验和未执行的训练方案会明确区分。想把表征(representation)接入系统,继续看搜索与检索。
本页术语 10
- 语言模型 language model, LM
- 对文本序列建模,用上下文预测或生成后续内容
- 检索 retrieval
- 从外部语料里找出相关内容
- 编码器 encoder
- 把原始输入压成向量的那一半模型
- 候选 candidate
- 召回阶段捞出来、等待精排挑选的内容
- 基线 baseline
- 用来比较新方法的参考方法或配置
- 微调 fine-tuning
- 在预训练权重上继续训练以适配具体任务
- 对比学习 contrastive learning
- 拉近正样本对、推开负样本对来学习表示
- 指令微调 instruction tuning
- 用指令和回答示范,训练模型按要求完成任务
- 切片 slice
- 按内容或用户属性划分的子群体,用来检查平均值掩盖了什么
- 表征 representation
- 将原始信息转换成模型可以使用的形式,例如向量