Ch10 多模态学习 · 闪卡 (Anki 导出格式)¶
使用方式: 复制到 Anki -> 字段 1 = front, 字段 2 = back, 字段 3 (notes) = 自定义注释。 大约 100 张卡,涵盖 5 节核心概念、关键术语、公式、典型代码片段。 推荐创建 Deck:
Ch10 多模态学习
Section A: 基础概念卡¶
Card 1¶
Front: 什么是多模态学习 (Multimodal Learning)? Back: 把不同模态 (vision, language, audio, video, structured data) 的数据组合起来,学到比单模态更丰富、更鲁棒的表征。例如 CLIP 把图像和文本投影到共享 256 维空间,实现图文检索和零样本分类。 Notes: Ch10 §01 核心定义
Card 2¶
Front: 模态 (Modality) 在机器学习中指什么? Back: 一种独立的信息通道。最常见: 图像 (像素网格)、文本 (token 序列)、音频 (波形/频谱)、视频 (帧序列)、结构化数据 (表格/图)。 Notes: 多模态 ≠ 多任务;模态侧重数据形式
Card 3¶
Front: 早期融合 (Early Fusion) vs 晚期融合 (Late Fusion)?
Back:
- 早期: 不同模态原始/低层特征直接拼接 $x_{\text{fused}} = [x_{\text{img}}; x_{\text{txt}}]$,优点细粒度交互,缺点维度大、需学对齐
- 晚期: 各模态独立编码 → 末期分数融合 $\hat y = \alpha\hat y_1 + (1-\alpha)\hat y_2$,优点可复用单模态预训练,缺点学不到低层交互
- 中层 (主流): Q-Former / cross-attention 在中层交互
Notes: Tradeoff: 表达力 vs 训练成本
Card 4¶
Front: 跨模态注意力 (Cross-modal Attention) 的 Q/K/V 各来自哪个模态? Back: 取决于任务: - 图生文 (captioning): Q=文本(解码器), K/V=图像 - 文生图 (diffusion): Q=latent, K=文本, V=文本 - VQA: Q=文本, K/V=视觉;或 Q=视觉, K/V=文本 - 一般: Q 来自目标模态 (要生成的), K/V 来自条件模态 Notes: Transformer cross-attn 的本质
Card 5¶
Front: 列出 3 种主流多模态融合时间点策略的缺点各 1 条。 Back: 1. Early: 输入维度爆炸,VLM 中拼接到 LLM 上下文长度超限 2. Late: 学不到低层跨模态信号;下游任务剪枝有损 3. Middle (Q-Former): 引入了 lossy compression,可能丢失细节 Notes: 实际工程中混合策略
Section B: CLIP & 对比学习¶
Card 6¶
Front: CLIP 是如何训练的? Back: 在大规模 batch (N=32768) 的图文对: 1. 图像经 ViT-L 编码 → 256 维 (投影后) 2. 文本经 Transformer 编码 → 256 维 3. 在 N×N 相似度矩阵上,对角线为正例,其他为负例 4. 对称 InfoNCE 损失 (双向),Adam, lr=5e-4, 32 epoch 数据集 WIT-400M (WebImageText, 4 亿图文对)。 Notes: OpenAI, Radford et al., ICML 2021
Card 7¶
Front: InfoNCE 损失公式? Back: $\(L_i = -\log \frac{\exp(s(z_i, z_i^+)/\tau)}{\sum_{j=1}^N \exp(s(z_i, z_j)/\tau)}\)$ 其中 \(s\) 是余弦相似度,\(\tau\) 是温度参数 (CLIP 默认 0.07)。 Notes: 双向 = 文本侧同样计算
Card 8¶
Front: τ (温度参数) 在 InfoNCE 中的作用? Back: - τ 越小 → 分布越尖 → 训练越难但学到的表征越细粒度 - τ 越大 → 越均匀 → 训练稳但表征粗糙 - CLIP τ=0.07 偏小;ALIGN (Google) 用 τ=1/100 ≈ 0.01 Notes: 超敏感超参;SigLIP 用 sigmoid 损失消除 τ
Card 9¶
Front: CLIP 零样本分类怎么做? Back: 给定类别集 {猫, 狗, 鸟...}: 1. 构造 prompt: "a photo of a {class}" 模板 (如"一只{class}") 2. 文本编码器得每个类的嵌入 \(T_y\) 3. 图像编码器得图片嵌入 \(z_v\) 4. \(\hat y = \arg\max_y \cos(z_v, T_y)\) ImageNet 76.2% 准确率(ResNet-50 baseline 是 76.0% 监督训练)。 Notes: prompt 工程可提升到 80%+
Card 10¶
Front: SigLIP 是怎么改进 CLIP 的? Back: 用 sigmoid 损失取代 softmax: - 不需要 N² 关系矩阵 - 每对图文独立打分 - 允许小 batch(几千) 也能稳定 - 性能与 CLIP 相当,效率高 10x Notes: Google 2023, Zhai et al.
Card 11¶
Front: 图文检索 (Image-Text Retrieval) 的 Recall@k 指标? Back: 给定图片,模型在 N 张文本中选最匹配;前 k 个有正确答案的比例。 - MS-COCO 5K 测试集 R@1: CLIP ≈ 65%, SigLIP ≈ 70%, Florence-2 ≈ 78% - R@5 / R@10 更高 Notes: Recall 越高表示检索越准
Card 12¶
Front: 负样本 (Negative Samples) 数量如何影响 InfoNCE? Back: 负样本越多,模型学到的"区分"越细粒度。 - N=128 → ImageNet ≈ 60% - N=8192 → ≈ 75% - N=32768 → ≈ 76.2% 边际收益递减,所以 SigLIP 用 sigmoid 损失在小 batch 即可模拟。 Notes: CLIP 训练一次需要数百块 GPU
Section C: VLM 视觉语言模型¶
Card 13¶
Front: VLM (Vision-Language Model) 与 CLIP 的核心区别? Back: - CLIP: 双编码器,只学对齐,不生成 - VLM: 把视觉信息融合进 LLM,可对话、可生成、可推理 Notes: VLM = CLIP + 生成能力
Card 14¶
Front: LLaVA 如何把视觉信息接入 LLM? Back: 1. ViT 编码图像 → patch embeddings (e.g., 256 tokens × 1024 维) 2. 线性投影 \(W \in \mathbb{R}^{1024 \times d_{\text{LLM}}}\) 把每 patch 降到 LLM 维度 3. 作为 "image token" 拼到 prompt 中 4. LLM 正常处理,生成文字回应 Notes: 简单粗暴但有效
Card 15¶
Front: Q-Former (BLIP-2 关键组件) 的工作原理? Back: - 32 个 learnable query tokens (Q) - Cross-attention Q 与 ViT 输出 (K, V) - 三任务训练:ITC (对比) + ITM (匹配) + ITG (生成) - 输出 32×768 压缩表达到 LLM Notes: Salesforce 2023
Card 16¶
Front: 视觉指令微调 (Visual Instruction Tuning) 的工作流? Back: 1. 用 GPT-4V 当 oracle,基于图像生成 (Q, A) 对 (e.g., 158K 样本) 2. 这些 instruction-following 数据微调 LLaVA (Vicuna) 3. 学到 "看图回答问题" 能力 Notes: Liu et al., NeurIPS 2023
Card 17¶
Front: Qwen-VL 多阶段训练的三阶段? Back: 1. 阶段 1: 视觉编码器 + Q-Former + LLM 解冻,数据集图文对 1.4B, 训对齐 2. 阶段 2: LLM 解冻,Q-Former 冻结,多任务微调 3. 阶段 3: 解冻所有,指令微调 + RLHF Notes: 阿里达摩院 2023
Card 18¶
Front: VQA (Visual Question Answering) 任务的准确率? Back: - VQAv2 test-dev 标准: 闭集 4 选项,人类 ≈ 95%,LLaVA-1.5 ≈ 80% - OK-VQA 开放问答: GPT-4V ≈ 60%,LLaVA-1.5 ≈ 50% Notes: VQA 准确率随模型 scale 提升
Section D: VQ-VAE 视觉分词¶
Card 19¶
Front: VQ-VAE 的三大组件及作用? Back: 1. 编码器 \(E\): 图像 \(x\) → 连续特征 \(z_e \in \mathbb{R}^{h \times w \times d}\) 2. 量化器: 把 \(z_e\) 在 codebook \(\mathcal{C}\) 中找最近邻 → 离散 \(z_q\) 3. 解码器 \(D\): 把 \(z_q\) 重建成 \(\hat x\) Notes: 关键创新: 用离散 token 当下游任务输入
Card 20¶
Front: VQ 量化的数学表达? Back: $\(z_q = z_k, \quad k = \arg\min_{j \in [1..K]} \|z_e - z_j\|_2\)$ codebook \(\mathcal{C} = \{z_1, ..., z_K\}\),通常 \(K=8192\),每个 \(z_k \in \mathbb{R}^d\)。 Notes: 最近邻查找,代码 index 而非连续向量
Card 21¶
Front: Codebook Collapse 是什么?怎么防? Back: - 症状: 部分 codebook entry 永远不被选中(利用率低) - 原因: 训练初期对某 entry 偏好,Adam 把它和编码器一起"训死" - 缓解: 1. EMA 更新 codebook(不让梯度直接动) 2. Code 重启:长期不用的 entry 重置为当前 batch 的 \(z_e\) 3. Gumbel-Softmax:加 noise 增加随机性 Notes: 是 VQ 训练最常见坑
Card 22¶
Front: 直通估计 (Straight-Through Estimator, STE) 在 VQ 中怎么用? Back: - 量化操作 \(\arg\min\) 不可微,反向梯度被截断 - STE hack: 前向用 \(z_q\),反向时把梯度原样代理给 \(z_e\) $\(\frac{\partial L}{\partial z_e} \approx \frac{\partial L}{\partial z_q}\)$ Notes: 简单粗暴但有效
Card 23¶
Front: VQ-GAN 损失的组成部分? Back: $\(L = \underbrace{\|x - \hat x\|_1}_{\text{重建}} + \lambda_1 \underbrace{\|F(x) - F(\hat x)\|_1}_{\text{感知}} + \lambda_2 \underbrace{\|z_e - \text{sg}[z_q]\|_2^2}_{\text{commit}} + \underbrace{L_{\text{GAN}}}_{\text{对抗}}\)$ 分别保证像素相似、感知相似、codebook 用上、视觉真实。 Notes: VQ-VAE + PatchGAN 判别器
Card 24¶
Front: DALL-E dVAE 把 256×256 图变成多少 token? Back: - 256×256×3 → 经 dVAE 编码 → 32×32=1024 个 latent - 量化到 8192 个 codebook entry - 最终 1024 个 token 进入 transformer 训练 Notes: 把图像像文字一样喂给 GPT
Card 25¶
Front: VAR (Visual AutoRegressive) 与扩散模型相比的差异? Back: - 传统扩散: 在 latent 加噪 → 学去噪 - VAR: next-scale prediction,从低分辨率到高分辨率逐级自回归 - VAR 更像 LLM 自回归 (类比文字 token) - ImageNet 256 FID: VAR ≈ 1.0,SD 2.1 ≈ 8 Notes: 字节跳动 + 北大, NeurIPS 2024
Section E: 跨模态生成 (Stable Diffusion)¶
Card 26¶
Front: Stable Diffusion 为什么叫 "Stable"?相比 DDPM 改进? Back: - DDPM: 像素空间扩散 (256×256×3),千步迭代慢 - LD (Latent Diffusion): 加 VAE 把图像压到 latent 4×64×64,扩散在 latent 跑 - 速度提升 ~50x Notes: Stability AI + LMU Munich, CVPR 2022
Card 27¶
Front: 扩散前向公式? Back: $\(x_t = \sqrt{\bar\alpha_t} x_0 + \sqrt{1 - \bar\alpha_t} \epsilon, \quad \bar\alpha_t = \prod_{s=1}^t \alpha_s\)$ 其中 \(\epsilon \sim \mathcal{N}(0, I)\),\(\alpha_t\) 是超参 schedule,通常 1000 步。 Notes: 方差递增地加噪
Card 28¶
Front: 扩散训练损失是什么? Back: $\(L_{\text{simple}} = \mathbb{E}_{t, x_0, \epsilon, c} \left[\|\epsilon - \epsilon_\theta(x_t, t, c)\|^2\right]\)$ 预测噪声 \(\epsilon\),c 是条件(文本嵌入)。L1 也用但 L2 更稳。 Notes: 训练时随机采 t
Card 29¶
Front: CFG (Classifier-Free Guidance) 公式? Back: $\(\hat\epsilon = (1 + w) \epsilon_\theta(x_t, t, c) - w \epsilon_\theta(x_t, t, \emptyset)\)$ - \(c\)=条件嵌入 - \(\emptyset\)=无条件 (空文本或 null token) - w=7.5 对齐最强,多样性下降 - w=1 退化为普通条件生成 Notes: 没有 classifier, 所以叫 classifier-free
Card 30¶
Front: Stable Diffusion UNet 中 文本如何注入? Back: - 文本经 CLIP ViT-L/14 → 77×768 嵌入 - UNet 每个 spatial block 加 cross-attention 层: - Q: latent feature (256×256×4 flatten) - K, V: 文本嵌入 - 文本经多层 cross-attn 注入到所有分辨率层 Notes: cross-attn 是文生图的核心机制
Card 31¶
Front: Stable Diffusion 推理从噪声到图像的步骤? Back: 1. \(x_T \sim \mathcal{N}(0, I)\) 采纯噪声 2. 循环 \(t = T, T-1, ..., 1\): - 用 \(\epsilon_\theta(x_t, t, c)\) 预测噪声 - CFG: \(\hat\epsilon = (1+w)\epsilon_c - w\epsilon_\emptyset\) - 用 DDPM/DDIM scheduler 更新 \(x_{t-1}\) 3. VAE 解码 \(x_0 \to\) 像素图像 Notes: 50 步 DDIM 即可生成
Card 32¶
Front: DALL-E 3 vs Stable Diffusion 关键差异? Back: - SD: open-source,生图直接用 CLIP 文本嵌入 - DALL-E 3: 用 GPT-4V 重写用户的简短 prompt 成详细描述 (e.g., 用户说"猫",GPT 重写"一只在阳光下的橙色虎斑猫,坐姿警觉...") - 然后用 T5-XXL 编码后给扩散模型 Notes: GPT-4V 重写提升对齐,但 prompt engineering 不灵活
Card 33¶
Front: ControlNet 工作原理? Back: 1. 复制 SD UNet 的可训练副本 (zero convolutions 初始权重) 2. 给定空间条件(Canny 边缘、深度图、姿态点) 单独编码 3. 加到 UNet 各层 zero convolutions 输出 → 类似残差 4. 训练时 SD UNet 冻结,副本 + zero conv 训练 Notes: 张吕敏, Lvmin Zhang, 2023
Card 34¶
Front: FID (Fréchet Inception Distance) 怎么算? Back: $\(\text{FID} = \|\mu_r - \mu_g\|^2 + \text{Tr}\left(\Sigma_r + \Sigma_g - 2 (\Sigma_r \Sigma_g)^{1/2}\right)\)$ - 用 Inception-v3 提取 2048 维特征 - 真实图和生成图分别算 \(\mu, \Sigma\) - FID 越低越好 Notes: ImageNet 256 ImageNet FID 排行: VAR ≈ 1.0, SD3 ≈ 8, DALL-E 3 ≈ 5.6
Section F: 统一多模态架构¶
Card 35¶
Front: GPT-4o 相对 GPT-4V 的核心改进? Back: - 架构: 单一 transformer 处理所有模态 (而非 GPT-4V 的多模块) - 延迟: 平均响应时间 320 ms (人类对话节奏 200-500 ms) - 能力: 实时打断、情绪识别、唱歌、混合语种 Notes: OpenAI, 2024-05
Card 36¶
Front: 统一多模态架构的三大挑战? Back: 1. 实时性: 音频 16 kHz 长序列,需要 streaming 2. 跨模态 KV cache 共享: 别模态 token 共享 KV 提升效率 3. 统一 token 化: 是否所有模态都离散化 token 化? Notes: GPT-4o 用单一 transformer 但内部仍不同 tokenizer
Card 37¶
Front: Gemini 1.5 关键特性? Back: - 上下文 1M token - 多模态交错 (text + image + audio + video 在同一上下文) - 多语种 - 1.5 Pro / 1.5 Flash 多档平衡性能/速度 Notes: Google DeepMind, 2024
Card 38¶
Front: Show-o 如何统一自回归和扩散? Back: - 单一 transformer - 离散 token 部分用自回归 (类比 LLM) - 连续 token 部分用扩散 (类比 diffusion) - 一遍 forward 完成所有任务 Notes: 字节跳动 + 浙大, NeurIPS 2024
Card 39¶
Front: Janus / JanusFlow 解耦视觉编码的原理? Back: - 之前 VLM 用同一个 ViT 给理解 (CLIP) 和生成 (VAE) - Janus 用 解耦编码器: 理解的 SigLIP + 生成的 (变分或扩散编码器) - 各自专精,胜过单一编码 Notes: DeepSeek, 2024
Card 40¶
Front: 多模态幻觉的三大类型? Back: 1. 对象幻觉: 模型说图里有不存在的物体 2. 属性幻觉: 物体属性错误(颜色/形状) 3. 关系幻觉: 物体之间空间/数量关系错误 Notes: MMHal-Bench 评测,GPT-4o 幻觉率约 7%
Section G: 评测基准¶
Card 41¶
Front: VQAv2 数据集怎么评测? Back: - 200K 图文,每图 10 题,4 选项 - test-dev / test-std 两个测试集 - 人类准确率 ≈ 95%,LLaVA-1.5-13B ≈ 80%,GPT-4o ≈ 85% Notes: 闭集 VQA 标杆
Card 42¶
Front: MMMU 评测什么? Back: - 30 个学科,大学级图文问答 - 11.5K 题,跨艺术/理工/医学/法律 - 人类: 88% (专业)+ 82% (非专业) - GPT-4o ≈ 69% Notes: 当前最难综合多模态基准
Card 43¶
Front: MMHal-Bench 评测什么? Back: - 多模态幻觉,96 张图 + 8 类问题 - 评估 GPT-4V 是否对图里有/没东西胡言 - GPT-4o (with mitigation) ≈ 7%,无缓解约 14% Notes: 安全关键
Card 44¶
Front: ChartQA vs DocVQA? Back: - ChartQA: 图表(柱状/折线/饼图)问答 - DocVQA: 文档(发票/收据/表单)问答 - 工业界关注高 Notes: 多模态 RAG 重要基础
Section H: 关键代码片段¶
Card 45¶
Front: PyTorch CLIP 加载 (transformers) Back:
from transformers import CLIPModel, CLIPProcessor
model = CLIPModel.from_pretrained("openai/clip-vit-large-patch14")
processor = CLIPProcessor.from_pretrained("openai/clip-vit-large-patch14")
img = Image.open("cat.jpg")
texts = ["a cat", "a dog"]
inputs = processor(text=texts, images=img, return_tensors="pt", padding=True)
with torch.no_grad():
out = model(**inputs)
logits_per_image = out.logits_per_image # (1, 2)
probs = logits_per_image.softmax(dim=1)
Card 46¶
Front: Stable Diffusion 单图推理 Back:
from diffusers import StableDiffusionPipeline
pipe = StableDiffusionPipeline.from_pretrained("runwayml/stable-diffusion-v1-5")
pipe = pipe.to("cuda")
img = pipe("a photo of an astronaut riding a horse", guidance_scale=7.5).images[0]
img.save("out.png")
Card 47¶
Front: VQ-VAE 量化代码 Back:
import torch
import torch.nn.functional as F
class VectorQuantizer(torch.nn.Module):
def __init__(self, num_embeddings=8192, embedding_dim=256):
super().__init__()
self.codebook = torch.nn.Embedding(num_embeddings, embedding_dim)
def forward(self, z_e):
# z_e: (B, C, H, W) -> (B*H*W, C)
z_flat = z_e.permute(0, 2, 3, 1).reshape(-1, z_e.shape[1])
# 距离矩阵
d = (z_flat.pow(2).sum(-1, keepdim=True)
- 2 * z_flat @ self.codebook.weight.t()
+ self.codebook.weight.pow(2).sum(-1))
# 最近邻索引
idx = d.argmin(-1)
z_q = self.codebook(idx).view(z_e.shape)
# 直通估计
z_q = z_e + (z_q - z_e).detach()
return z_q, idx
Section I: 历史里程碑¶
Card 48¶
Front: 2017 / 2018 / 2021 多模态里程碑? Back: - 2017: VQ-VAE (van den Oord) - 2021: CLIP (Radford), ALIGN (Google), DALL-E (初代, autoregressive) - 2022: Stable Diffusion, BLIP, Flamingo - 2023: BLIP-2, LLaVA, Qwen-VL, GPT-4V, DALL-E 3, InternVL - 2024: GPT-4o, Gemini 1.5, Show-o, Janus, Sora Notes: 7 年从理论到实时多模态
Card 49¶
Front: CLIP 训练数据多大? Back: 4 亿图文对 (WebImageText, WIT) 来自互联网爬取。后续: - ALIGN: 18 亿 (更噪,更大) - SigLIP: 4 亿 + 更细标签 - Florence: 9 亿 + 视频 Notes: 数据规模和多样性决定上限
Card 50¶
Front: DALL-E 1 vs 2 vs 3 的关键差异? Back: - DALL-E 1 (2021): dVAE + autoregressive transformer (类似 GPT 但预测图像 token) - DALL-E 2 (2022): CLIP 文本嵌入 + GLIDE 扩散 (latent + diffusion) - DALL-E 3 (2023): GPT-4V 重写 prompt + SDXL 改进 + CLIP reranker Notes**: 3 代从 AR 到 Diffusion 到 prompt 精炼
Section J: 速算 / 反向技巧¶
Card 51¶
Front: CLIP 256 维向量怎么选自维度? Back: - 原始 ViT 768 维、文本 512 维 - 各加一个 \(W \in \mathbb{R}^{d \to 256}\) 线性投影 - L2 normalize 后做余弦相似度 - 维度越低 → 速度越快但表征能力下降 - 主流 256-512 维 Notes: CLIP 论文 256 维测过不同维度
Card 52¶
Front: SDXL 1.0 几个关键参数? Back: - UNet: 2.6B 参数 - 两个文本编码器:CLIP ViT-L + OpenCLIP ViT-bigG - 分辨率 1024×1024 - 训练数据数亿图文对 Notes: 与 SD 1.5 相比,文字渲染能力大幅提升
Card 53¶
Front: 如何判断 VLM 是否真正理解而非记忆? Back: - 测试未见过的类别/场景 (out-of-distribution) - 反事实问答: "如果图里的 A 换 B,会发生什么" - CoT (chain-of-thought) 推理评测 Notes: MMMU 重点测推理,不是记忆
Card 54¶
Front: 多模态模型压缩的常见方法? Back: 1. 量化: INT8/INT4 权重和激活 2. 蒸馏: VLM→小 VLM,参数量减少 4-10x 3. 剪枝: 去除冗余 attention head 4. Token 压缩: 视觉 256 → 64 token Notes: 部署到手机和边缘设备
Card 55¶
Front: 多模态训练算力大概需求? Back: - CLIP 训练: 256 GPU * 1 周 (小规模) - BLIP-2 / LLaVA: 8-16 GPU * 几天 (基于预训练) - GPT-4V/GPT-4o: 万卡级, 数月 (估算) - 个人研究: 1-4 卡 A100/H100 可训小模型 Notes: 多模态算力门槛低于 LLM (因为数据更丰富)
Section K: 跨章链接¶
Card 56¶
Front: CLIP 的 ViT 与 Ch06 §03 视觉 Transformer 关系? Back: 同源代码! CLIP 用 ViT-L/14(14×14 patch, 24 层, 1024 维);区别在于 训练目标(对比学习 vs 图像分类)。 Notes: ViT 是 backbone,CLIP 是 pretext task
Card 57¶
Front: VQ-VAE 与 Ch05 §05 信息论的连接? Back: codebook 设计借鉴 率失真理论 (Rate-Distortion): 给定失真预算,找最小 bitrate 的压缩;VQ 把图像压到有限 codebook 是离散率失真。 Notes: 信息论是多模态编码的理论基础
Card 58¶
Front: Q-Former 与 Ch07 §04 自注意力的关系? Back: Q-Former 本质是 cross-attention transformer,与自注意力机制同架构,差异在于 K/V 来源不同(Q 用 learnable query,K/V 来自视觉)。 Notes: 跨模态 = 跨输入的注意力
Card 59¶
Front: Stable Diffusion 与 Ch03 §05 梯度下降的关系? Back: DDPM 训练就是用梯度下降优化 L_simple; 推理是采样过程用 Langevin dynamics 思想。 Notes: 扩散优化就是梯度下降
Card 60¶
Front: 多模态检索评估 与 Ch04 §04 假设检验关系? Back: R@1 = 在 N 个样本中召回正确答案 1 个,与 top-1 accuracy 等价;本质是多项假设检验中的最优检验。 Notes: 统计视角
Section L: 实战案例¶
Card 61¶
Front: 设计一个 VQA 系统应该包含哪些模块? Back: 1. 视觉编码器 (ViT/SigLIP) 2. 投影层 (LLaVA 线性 / Q-Former) 3. LLM (Qwen2 / Llama3) 4. 指令微调 (LLaVA-Instruct 158K) 5. 推理循环: token 化图像 → 拼 prompt → LLM 生成 Notes: LLaVA 是典型参考实现
Card 62¶
Front: 微调 Stable Diffusion 到特定人物的常见做法? Back: 1. LoRA: 收集 10-20 张该人物图,训 LoRA 适配器 (\(1 训练) 2. **DreamBooth**: 微调整个 UNet + text encoder (\)20+ 训练) 3. Textual Inversion: 训一个特殊 token 嵌入 ($5 训练) Notes: 工业训练成本 \(1-\)50 不等
Card 63¶
Front: VQ-VAE 训不好的常见调试步骤? Back: 1. 检查 codebook perplexity (>90% 表示利用充分) 2. 监控 reconstruction loss (PSNR 应 > 18) 3. 检查 discriminator 是否压倒重建 (perceptual loss 权重调整) 4. 增大 commit loss 系数 5. 减小学习率(尤其是 codebook) Notes: 实践经验
Card 64¶
Front: 生产部署 GPT-4V 的延迟优化方法? Back: 1. 视觉 token 压缩 (256 → 64) 2. 推理时 KV cache 共享 3. 推测性 decoding (predict-then-verify) 4. 模型量化 (FP16/INT8) 5. 异步并行 vision encoder + LLM Notes: 工业关心实时性
Card 65¶
Front: 多模态推理延迟主要瓶颈在哪? Back: - 视觉编码 (~50-100ms) - ViT 注意力 (\(O(n^2 \cdot d)\), patch 数影响) - LLM decoding (token-by-token, 50-200ms) - KV cache 大小 Notes: 优化空间最大的是视觉编码
Section M: 公式速查¶
Card 66¶
Front: 默写 跨模态注意力公式。 Back: $\(\text{Attn}(Q, K, V) = \text{softmax}\left(\frac{Q K^\top}{\sqrt{d_k}}\right) V\)$ Q 来自目标模态,K/V 来自条件模态。\(d_k\) 为 K 维度,用于缩放。 Notes: 这是 VLM 投影/SD cross-attn/GPT-4o 跨模态的统一公式
Card 67¶
Front: 默写 VQ 量化公式。 Back: $\(z_q = z_k, \quad k = \arg\min_j \|z_e - z_j\|_2\)$ codebook \(\mathcal{C}=\{z_1,...,z_K\}\)。 Notes: VQ-GAN/VQ-VAE/dVAE/DALL-E 都用
Card 68¶
Front: 默写 InfoNCE 损失。 Back: $\(L_i = -\log\frac{\exp(s(z_i,z_i^+)/\tau)}{\sum_{j=1}^N \exp(s(z_i,z_j)/\tau)}\)$ Notes: CLIP/ALIGN/MOCO/SimCLR 都用
Card 69¶
Front: 默写 扩散前向与 CFG。 Back: - 前向: \(x_t = \sqrt{\bar\alpha_t} x_0 + \sqrt{1-\bar\alpha_t} \epsilon\) - CFG: \(\hat\epsilon = (1+w)\epsilon_\theta(x_t,t,c) - w\epsilon_\theta(x_t,t,\emptyset)\) Notes: 这两行是 SD/Imagen/Sora/DALL-E 3 的核心
Card 70¶
Front: 默写 VQ-GAN 损失四项。 Back: \(L = L_{\text{recon}} + \lambda_1 L_{\text{percept}} + \lambda_2 L_{\text{commit}} + L_{\text{GAN}}\) Notes: 4 项分别保证像素/感知/codebook 用上/视觉真实
Section N: 反向提问卡 (你问我答)¶
Card 71¶
Front: 如果让你重新设计 CLIP,你会做什么改进? Back: - 借鉴 SigLIP 的 sigmoid 损失(免大 batch) - 借鉴 CoCa 加 caption head (同时学对齐和生成) - 引入负 hard mining (难负样本权重) - 损失 + 多分辨率 Notes: 开放题,考察综合理解
Card 72¶
Front: VQ-VAE 是否会被扩散取代? Back: 各擅胜场: - 离散 token + LLM 路线 (DALL-E, Paella) - 连续 latent + diffusion 路线 (SD, Sora) - 未来统一多模态可能融合二者 Notes: 辩论式题目
Card 73¶
Front: 多模态模型最大风险是什么? Back: 1. 幻觉 (false generation) 2. 偏见 (gender/racial 偏差) 3. 安全 (jailbreak via image) 4. 隐私 (从图像泄露 PII) 5. 环境影响 (训练能耗) Notes: 工业部署关键考虑
Card 74¶
Front: 下一前沿: 多模态 + 推理 + 工具 Back: - VLM + 工具使用: GPT-4V 调用 browser/python - VLA (Vision-Language-Action): Ch11 §03 RT-2/SayCan - 多模态 + RLHF: 用 human feedback 调优 - 世界模型 + 多模态: 用 LLM 当环境模型 Notes: 前沿指向 Ch11
Card 75¶
Front: 你应该会画的 3 张图? Back: 1. CLIP 训练 pipeline (batch 内 N×N 关系矩阵) 2. VQ-VAE 三组件架构图 3. Stable Diffusion U-Net + cross-attn 文本注入 Notes: 面试常考画图
Section O: 工程实战¶
Card 76¶
Front: 多模态系统的 prompt 模板通常包含什么? Back:
- 使用 LLaVA 格式 -<image> 是图像占位符
- 多轮对话支持 <image>\n[Prev Q+A]
Notes: LLaVA 训练时定义
Card 77¶
Front: 多模态评测常用工具?
Back:
- lm-evaluation-harness: EleutherAI, 文本基准
- LMMs-Eval: 多模态评测统一框架
- OpenCompass: 上海 AI Lab, 中文多模态
- VLMEvalKit: 视觉语言模型
Notes: 选其一即可
Card 78¶
Front: CLIP 应用案例有哪些? Back: - Stable Diffusion 文生图 - DALL-E 文本嵌入提供 - 图像检索(Unsplash) - 内容审核 (HuggingFace NSFW) - 零样本 image classification Notes: CLIP 是 foundation model
Card 79¶
Front: 多模态模型的硬伤? Back: 1. 组合泛化弱: 新概念组合难(animal+color 比训练难) 2. 推理能力弱: MMMU 69% vs 人类 88% 3. 幻觉: 7-15% 关键错误 4. 计算成本: 比单模态高几倍 Notes: 当前局限
Card 80¶
Front: 如何快速评估一个多模态新模型? Back: 1. 零样本分类: ImageNet zero-shot accuracy 2. 图文检索: MS-COCO R@1 3. VQA: VQAv2 test-dev accuracy 4. 生成: FID on COCO 5. 推理: MMMU benchmark 6. 幻觉: MMHal-Bench Notes: 6 项是平均黄金标准
Section P: 概念辨析¶
Card 81¶
Front: CLIP 文本侧 vs BERT? Back: - BERT: 双塔 encoder,只学 masked language modeling - CLIP 文本侧: 类似 GPT 的 decoder-only 但只取 Encoder 输出 - 训练目标不同 (CLIP 对比 vs BERT MLM) Notes: 都是 Transformer 但目标完全不同
Card 82¶
Front: ViT vs ResNet 作为视觉骨干? Back: - ViT: 全注意力,大规模数据下更强 - ResNet: 卷积,小数据更稳 - 主流: ViT-L/14 in CLIP, 但 ConvNeXt 也竞争 Notes: CLIP 用 ViT
Card 83¶
Front: VQ codebook size vs 视觉保真度? Back: - K=512: codebook 小,FID 差 (PSNR ~18) - K=8192: 标准,PSNR 22-25 - K=32768: 太大容易 collapse,需要精细训练 Notes: K=8192 是 sweet spot
Card 84¶
Front: Stable Diffusion vs Imagen? Back: - SD: CLIP 文本 + UNet on 64×64 latent (LDM) - Imagen: T5-XXL 文本 + UNet on 64×64 latent + 级联超分 - Imagen 在 T2I 比赛胜出,但 SD 更早开源 Notes: 两种实现都基于扩散
Card 85¶
Front: 多模态融合 vs 多任务学习? Back: - 多模态: 多种 输入 类型 - 多任务: 多种 输出 任务 - 一个 VLM 可以同时是多模态+多任务 Notes: 概念正交
Section Q: 历史人物与机构¶
Card 86¶
Front: CLIP 论文作者? Back: Alec Radford, Jong Wook Kim, Chris Hallacy, Aditya Ramesh, Gabriel Goh, Sandhini Agarwal, Girish Sastry, Amanda Askell, Pamela Mishkin, Jack Clark, Gretchen Krueger, Ilya Sutskever。OpenAI, 2021。 Notes: 21 个作者,OpenAI 团队
Card 87¶
Front: Stable Diffusion 团队? Back: Robin Rombach, Andreas Blattmann, Dominik Lorenz, Patrick Esser, Björn Ommer (LMU Munich + Runway + Stability AI)。CVPR 2022。 Notes: 学术+公司合作典型
Card 88¶
Front: LLaVA 作者团队? Back: Haotian Liu, Chunyuan Li, Qingyang Wu, Yong Jae Lee. University of Wisconsin-Madison + Microsoft Research. NeurIPS 2023。 Notes: 中国学者主导
Card 89¶
Front: VQ-VAE 起源? Back: Aaron van den Oord, Oriol Vinyals, Koray Kavukcuoglu. DeepMind, NeurIPS 2017。 Notes: DeepMind 离散表征经典
Card 90¶
Front: BLIP-2 / Q-Former 团队? Back: Junnan Li, Dongxu Li, Silvio Savarese, Steven Hoi. Salesforce Research, ICML 2023。 Notes: Salesforce AI
Section R: 实验与作业¶
Card 91¶
Front: 第一次作业: 跑通 CLIP zero-shot。 Back:
# 用 OpenAI CLIP 库
import clip
model, preprocess = clip.load("ViT-B/32", device="cuda")
text = clip.tokenize(["a cat", "a dog"]).to("cuda")
image = preprocess(Image.open("cat.jpg")).unsqueeze(0).to("cuda")
with torch.no_grad():
logits_per_image, _ = model(image, text)
probs = logits_per_image.softmax(dim=-1)
Card 92¶
Front: 第二次作业: 训一个 mini VQ-VAE。 Back: 在 CIFAR-10 上: - 编码器: 4 个 conv stride-2 - codebook: 256 entries - 解码器: 镜像编码器 - 损失: \(L_1\) + commit loss - 训练 50 epoch, batch 128 - 报告 PSNR Notes: 1-2 GPU 日
Card 93¶
Front: 第三次作业: 文生图 SD 调参。 Back: 用 SD v1.5 + 不同 CFG: - w=0 (无条件): 一致但无关 - w=1: 正常条件 - w=7.5: 标准 SD - w=15: 强烈对齐,可能颜色过度饱和 - 报告 FID 和人类偏好 Notes: 演示 CFG 影响
Card 94¶
Front: 第四次作业: LLaVA-style 视觉问答。 Back: 1. 加载 LLaVA-1.5-7B 2. 喂一张图 + 中文问题 3. 收集 50 个 VQA 对,人工评测准确率 Notes: 中文问题需用 Qwen-VL 而非 LLaVA
Card 95¶
Front: 第五次作业: 多模态幻觉评测。 Back: 1. 找 20 张图 2. 让 GPT-4V 描述 3. 检查: - 描述里是否有图里没有的元素 - 计数是否准确 - 颜色/方向是否正确 - 报告幻觉类型比例 Notes: 警示意识
Section S: 开放题¶
Card 96¶
Front: 设计题: 给你 1000 张猫/狗图片和 1000 句 "a photo of a cat/dog",你怎么训一个零样本分类器? Back: 1. 用 CLIP 预训练编码器,冻结 2. 用图文对训一个投影层到 256 维共享空间 (LinearProjection) 3. 推理时算 \(\cos(z_v, z_t)\) 4. 或者: fine-tune CLIP (更慢但更好) Notes: 经典监督学习 vs 对比学习 tradeoff
Card 97¶
Front: 反驳题: "VQ-VAE 早就过时了,扩散才是未来" Back: - 答 1 (反驳): VAR 等显示离散自回归也很有力,ChatGPT 风格路线不一定输给扩散 - 答 2 (反驳理由): 离散 token 化是 LLM-friendly 的 - 答 3 (反驳理由): GPT-4o/Gemini 中两者都存在 Notes: 商业部署考虑
Card 98¶
Front: 辩论题: 多模态是不是 LLM 的终结? Back: - 反方: LLM 会演化为多模态 (GPT-4o 已经如此) - 正方: 多模态有自己的独立架构和挑战 (实时性、视觉分词等) - 现实: 两者汇流,统一架构可能胜出 Notes: 前沿思考
Card 99¶
Front: 预测题: 2025 年多模态主要突破会是? Back: - 候选 1: 实时多模态在普通硬件跑 (e.g., 手机) - 候选 2: 视频生成长度 (Sora/可灵到 60s+) - 候选 3: 多模态世界模型 - 候选 4: 零样本具身智能 Notes: 开放题
Card 100¶
Front: 终极题: 一句话总结 Ch10。 Back: 多模态 = 把不同模态投影到共享语义空间,通过对比学习/注意力机制/分词等手段实现跨模态理解和生成。本章从 CLIP 对比学习 (对齐), 到 VLM (理解), 到视觉分词 (生成), 到统一架构 (任意模态), 是当前 AI 最前沿的交汇点。 Notes: Ch10 = 跨模态基础架构
导入 Anki 的方法¶
- 下载 Anki (ankiweb.net), 创建 Deck
Ch10 多模态学习 - 选 "Add" -> "Plain text / Markdown"
- 复制每张卡内容,Front 与 Back 之间空一行
- 字段: Front, Back, Notes (可选)
或: 把这个 markdown 文件导入到 Obsidian + RemNote 都可。
每日背诵: 20 张,5 天完成一轮,1 个月后做总复习覆盖 100+ 张。