想象你掌管一家跨国婚介所。每天都有海量“会员”涌入:一边是照片——一只趴在草地上的金毛犬、一辆停在雨夜街边的自行车;另一边是文案——“一只金毛犬在草地上休息”“雨夜街边的自行车”。这些照片与文案是来自互联网的真实“情侣组合”。你的任务,是训练一位顶尖月老(这就是 CLIP),让他看到任何一张新照片时,都能立刻判断“这段话配不配得上这张图”。 这位月老的本事来自两套功夫:先把照片和文案各自“浓缩”成一张只有数字的品味卡片(特征向量),再通过一场场“连对游戏”(对比学习)练出火眼金睛——同属一对的照片与文案要在数字空间里靠得极近,不搭边的则被远远拆开。当你把几亿对真实情侣喂给他后,他就不再需要手把手教了:随便给一张新照片,他都能自己写出匹配的文案,或从上千份文案里挑出最配的那份。这就是 CLIP 的“零样本迁移”能力。 本文会带你走进这家婚介所:月老的训练细节、为什么见过的情侣越多眼光越准、两位分析师(视觉编码器与文本编码器)怎么选、如何给文案润色(Prompt 工程),以及这位月老在哪些场合会看走眼、未来如何升级。
对 AI 从业者而言,CLIP 是打通视觉与语言的基石模型。掌握它的对比学习原理与工程技巧,能直接用于跨模态检索、零样本分类与多模态产品落地,是简历上最具含金量的技能之一。
目录
可视化演示
本节配有交互动效(进入视口后自动加载,约 3KB)。
CLIP双塔架构:图文对齐到共享嵌入空间 图像编码器 文本编码器 共享嵌入空间 sim(I,T) = cos(E_img(I), E_txt(T)) = E_img \u00b7 E_txt / (||E_img|| \u00d7 ||E_txt||) 对角线=正样本对,...
1. 训练核心机制:月老的“连对游戏”
婚介所的第一课,是让新来的月老玩“连对游戏”:主管一次性把 8 张照片和 8 段文案打乱摆在桌上,要求他为每张照片选出最配的文案。游戏狠就狠在——他必须先猜,再揭晓答案。选对了真情侣,这个“眼光”就被强化;牵错了线,他被扣分并记住教训。如此反复,月老渐渐明白:金毛犬的照片该配“金毛犬在草地上”,而不是“雨夜的自行车”。多模态对比学习,正是这一场场连对游戏的总称。
在 CLIP 的世界里,照片先被视觉编码器压缩成一个特征向量 $\mathbf{f}^{\text{img}}$,文案先被文本编码器压缩成 $\mathbf{f}^{\text{txt}}$。两者做余弦点乘,得到 0 到 1 之间的“契合度” $s$。训练时,模型拿到一个批次共 $N$ 对图文(例如 32768 对),要保证:每一行每一列里,对角线上的“真情侣”得分最高。光“高”还不够,必须把其他错误组合远远甩开,才能逼出真正的鉴别力。
直观理解:方括号里是一个“软最大”概率——第 $i$ 张照片能在多大比例上从 $N$ 段文案里认出自己的真命天子。损失函数要最大化这个概率,等价于让 $s_{ii}$ 尽量高、让所有 $s_{ij}\ (j\neq i)$ 尽量低。
1. 第一步:计算配对得分矩阵:先用余弦相似度算出所有“照片-文案”组合的契合度,构成一个 $N\times N$ 的得分矩阵,对角线以外的格子都是干扰项。
2. 第二步:温度缩放与软化:除以温度系数 $\tau$ 后取指数,把得分差异放大成“接近 1 或接近 0”的竞争概率;$\tau$ 越小,月老越“笃定”,概率分布越尖锐。
3. 第三步:双向求期望损失:分别站在“图片找文本”和“文本找图片”两个方向计算交叉熵,再取平均,确保两个编码器被对称地训练。
游戏结束,月老把“眼力”沉淀进了编码器的权重里。下一次训练,他会带着旧经验去连新的对子——这正是 CLIP 能从海量互联网杂乱数据中持续进化的原因。
2. 数据规模效应:见过的人越多,眼光越准
婚介所扩张了。月老不再只学 1500 万对“速成案例”,而是把数据一路加到 4 亿对。有趣的是,他的眼光并没有“学到头”:数据量每翻 10 倍,零样本分类精度就稳定地上涨一截,几乎画出一条“对数坐标下的直线”。这就像一位老月老——见过的情侣组合越多,越能覆盖各种刁钻的用户画像,任何新面孔在他眼里都有迹可循。
传统监督学习常说“数据涨到一定程度收益递减”,但 CLIP 在大规模图文对比任务上观察到了近乎 log-linear 的标度率:横轴取对数后,精度近似线性上升。这一现象背后有两点支撑:一是大批次(如 32768)让每个样本与海量负样本同台竞争,信息密度高;二是训练 epoch 数不必多(CLIP 只训练 32 个 epoch),因为每次迭代见到的都是新数据,“多样性”比“重复看同一张图”更重要。
1. 第一步:明确数据量变量:$N$ 是用于训练的图文对总数,$N_0$ 是参考规模(例如 1500 万)。
2. 第二步:对数缩放:取以 2 为底的对数,表示“数据翻一倍,收益是固定的常数,而不是翻倍”。
3. 第三步:斜率与基线:$\alpha$ 是斜率,衡量数据红利的大小;$\beta$ 是基线精度,代表极小数据下的表现。
所以,想提升 CLIP 的下游效果,最朴素的杠杆就是“喂更多、更杂、更真实的对子”。这也解释了为什么 WIT 数据集高达 4 亿对——规模本身就是对比学习最重要的超参数之一。
3. 文本编码器选择:文案分析师为什么选 Transformer
婚介所要招一位文案分析师,把会员的自我介绍浓缩成品味卡片。候选人里有三位:词袋模型只统计关键词频率,看不懂语序;循环网络顺着句子一读到底,容易忘掉开头;Transformer 则让每个词同时“看见”全句,像一眼扫完简历又立刻记住所有细节的面试官。CLIP 毫不犹豫选了 Transformer——因为“草地上有只狗”和“狗上有片草地”用词完全相同,意思却天差地别,只有能建模语序与长程依赖的结构才能胜任。
技术细节上,CLIP 的文本编码器约为 6300 万参数:12 层、隐藏宽度 512、8 头注意力;输入先做小写化与 BPE 分词,词表大小 49152;句子首尾插入特殊符号 [SOS] 与 [EOS],最后取 [EOS] 位置的特征作为整句向量。与 BERT 不同,它没有用“掩码语言建模”做预训练,而是从零开始,完全靠对比学习的目标把语义“逼”出来。
1. 第一步:拼接特殊符号:句首加 [SOS]、句尾加 [EOS],让模型知道文本的边界在哪。
2. 第二步:Transformer 编码:把整串词元送入多层 Transformer $\text{Trm}$,每个词元都融合了全句语境。
3. 第三步:抽取句向量并投影:取下标 $\text{EOS}$ 位置最后一层的输出,再通过线性投影 $\text{Proj}$ 与图像特征对齐到同一维度。
有了这位能“读句子”的文案分析师,月老才真正听懂了“金毛犬趴在草地上”和“草地趴着金毛犬”之间的差别——虽然词一样,画面感完全不同。
4. 视觉编码器对比:照片分析师的两种流派
照片分析师也有门派之争。老派 ResNet 拿着放大镜,在照片上一格一格地挪着看,视野局促但每一步都走得稳,年轻时学得快;新派 ViT 则把照片切成 16×16 像素的拼图块,一次铺开在桌上,用全局目光审视所有块之间的关系,刚入门时笨手笨脚,但见多识广后格局更大。
CLIP 论文系统对比了两派:ResNet 家族(ResNet-50/101 以及宽度放大的 RN50x4/x16/x64)与 ViT 家族(ViT-B/32、ViT-B/16、ViT-L/14)。结论非常清晰:在 4 亿数据与充足算力下,ViT 全面追平并反超 ResNet,其中 ViT-L/14@336px 在 ImageNet 零样本上达到约 76.2% 的 top-1 精度。代价也很现实:大 ViT 推理成本与显存更高,很多工业落地仍会选 ResNet 或小 ViT/B/16 以换取速度。
1. 第一步:图像切块并展平:把 $H\times W$ 的图像切成 $K$ 个 $P\times P$ 的小块,每个小块展平成向量 $x_p^k$。
2. 第二步:线性投影:每个小块向量乘以可学习的投影矩阵 $\mathbf{E}$,映射到 Transformer 的隐藏维度。
3. 第三步:拼接类别标记并加位置编码:在最前面拼一个可学习的类别向量 $x_{\text{cls}}$,再加上位置编码 $\mathbf{E}_{\text{pos}}$,让模型知道每块拼图在照片里的方位。
放大镜派与拼图派各有所长:小数据、低算力场景,ResNet 的稳健让工程更省心;而当你手握大模型和大数据,ViT 的全局视野才是上限更高的答案。
5. Prompt 工程应用:给文案润色的艺术
婚介所发现一个秘密:会员文案写得含糊时,月老匹配率骤降。用户只写一个词“狗”,月老的品味卡片就“摸不准脉”;可一旦改成“一张金毛犬趴在绿色草地上休息的照片”,匹配率立刻飙升。原因很简单——月老受训时看到的全是完整句子,输入越像训练时的文案,他的品味空间越能对齐。于是婚介所总结出一套固定句式,把所有标签都套进去再交给月老。
在 CLIP 中这被称为 Prompt 工程。做零样本分类时,先把每个标签 $y$ 套入 $K$ 个模板("a photo of a {y}"、"a bad photo of a {y}"、“a painting of a {y}“ 等),分别过文本编码器后取平均,得到这个类别的”代表向量“;再用图像特征与所有类代表向量算相似度、做 softmax 得到概率。论文显示,用 80 个模板集成比单个模板在 ImageNet 上高出约 3.5 个百分点,对细粒度类别,加上”a type of bird”这类上下文描述还能再涨。
1. 第一步:生成模板变体:对每个类别 $y$,用 $K$ 个不同句式造出 $K$ 句描述,相当于给同一标签写多份不同风格的自我介绍。
2. 第二步:平均得到类代表向量:$K$ 句描述分别过文本编码器并取平均,得到该类的“平均品味卡片”。
3. 第三步:软最大分类:图像特征与所有类代表向量算契合度并归一化成概率,取最大者作为预测类别。
给文案润色,本质上是在“迁就”月老被训练出来的阅读习惯。一份贴心的自我介绍,比十个标签堆砌更能让月老眼前一亮。
6. 模型局限分析:月老也有看走眼的时候
再厉害的月老也有短板——他只凭“整体眼缘”下判断。你问他“照片里桌上那杯红色咖啡杯旁边有几颗草莓”,他支支吾吾;你说“宇航员骑着马”,他能听懂,但把'马骑宇航员'和'宇航员骑马'放一起,他完全分不清谁在骑谁。他擅长的是“这照片给我的整体感觉”,而不是数数、定位和逻辑组合。
CLIP 的局限可以归纳为三点:第一,细粒度感知弱——计数、属性绑定(“红色的左脚的鞋”)、空间关系(“在…之上/之左”)都容易出错;第二,组合性理解差——两个语义叠加时,它倾向于做“平均”,而不是真正的句法组合;第三,数据偏见——互联网图文对自带社会偏见,某些人群与场景的分类准确率明显偏低,且面对分布外数据时鲁棒性有限。下图展示了“组合性缺失”的近似表现:
1. 第一步:看组合句的得分:左边是图像与组合句“猫和狗”的契合度,CLIP 应该理解这层组合关系。
2. 第二步:拆成两个单句得分的平均:右边把组合句拆成“猫”和“狗”两句,分别求相似度后取平均。
3. 第三步:二者近似相等即问题所在:模型没有产生"1+1>2"的组合语义,而是退化成加权平均。
理解月老的盲区,才能在使用时避开雷区:CLIP 适合“粗分类”与“语义检索”,不适合需要精确定位、计数和深层因果推理的场合。
7. 改进方向展望:婚介所的升级计划
面对月老的短板,婚介所制定了一份升级计划。第一,请来微表情分析师——不再只做“整张照片对整句文案”的粗对齐,而是下沉到图像局部块与文本词元的细粒度对齐,甚至接上开放词汇检测头。第二,让月老写恋爱日记——在连对游戏之外,加练“看图说话”和“掩码填词”,让语义理解更立体。第三,清理会员库——去重、过滤低质图文、均衡各类别采样,从源头减少偏见。
这些方向在学术界已经开花结果:FILIP、SLIP 等方法把对比对齐下沉到 token 级;OWL-ViT 在 CLIP 之上加检测头实现开放词汇检测;CoCa 则同时使用对比损失与生成式字幕损失,让模型既会“选”也会“写”。数据侧,DataComp 等实验表明,同样算力下把数据清洗做到位,收益往往比加大模型更实在。一个通用的多任务目标可以写成:
1. 第一步:保留对比主目标:$\mathcal{L}_{\text{contrast}}$ 是原有连对游戏损失,保证跨模态对齐的主干能力不丢。
2. 第二步:叠加掩码语言建模:$\mathcal{L}_{\text{MLM}}$ 让文本端学会基于上下文补全,用 $\lambda_1$ 控制它的权重。
3. 第三步:叠加生成式目标:$\mathcal{L}_{\text{generation}}$ 让模型从图像生成描述文本,补足“整体眼缘”之外的细节理解。
升级后的月老,既能一眼看穿整体气质,又能俯身观察细节,还会记录观察笔记——这正是多模态模型从“粗对齐”走向“强理解”的未来方向。
AI 应用场景
场景一:跨境电商的商品零样本分类
阶段:模型推理与零样本迁移
解决的问题:传统电商分类需要为每个新类目标注数千张图、训练并部署新模型,类目一扩就伤筋动骨。CLIP 把类目名称变成 Prompt 文本,与图像特征直接比对,新增类目只需改一行配置。
具体案例:某跨境电商平台把 5000 个商品类目套进 “a photo of {商品} in the catalog” 模板,首日上线零样本分类准确率超过 90%;后续类目从 500 扩到 5000,全程没有重新标注和训练,节省了约 3 个月的算法迭代周期。
场景二:图库平台的文本召回
阶段:跨模态检索与特征工程
解决的问题:传统图库搜索依赖人工打标签,长尾语义(“黄昏时分的城市屋顶”)几乎无法覆盖。CLIP 双塔结构将百万图片离线编码成向量,用户输入任意自然语言即可秒级检索。
具体案例:某设计素材平台接入 CLIP 后,用户用“雨夜霓虹灯下的空荡街道”这类长句查询 500 万张图库,平均响应 300 毫秒返回 Top-20 结果;相比原有关键词标签系统,长尾查询的点击率提升了 40%。
场景三:工业质检的少样本适配
阶段:数据标注与模型适配(Prompt 工程)
解决的问题:产线缺陷样本稀少且类型翻新快,传统检测模型动辄需要上万张标注。借助 CLIP 的预训练特征,只需精心设计缺陷描述模板 + 少量样本训练线性头,就能快速上线新缺陷类别。
具体案例:某面板厂收集 200 张划痕、气泡、脏污样例,用 "a {defect} on the screen surface" 模板做 Prompt,再在 CLIP 特征上训练线性分类器,缺陷召回率达到 95%,替代了原本需要 2 万张标注数据的方案,标注成本降为原来的十分之一。
Python 演示
import torchimport torch.nn as nnimport torch.nn.functional as F class CLIPContrastiveLoss(nn.Module): """CLIP 使用的对称对比损失: 同时做图像->文本和文本->图像两个方向。""" def __init__(self, init_tau=0.07): super().__init__() # 温度系数 tau 通过学习获得, 初始值对应 0.07 self.logit_scale = nn.Parameter(torch.log(torch.tensor(1.0 / init_tau))) def forward(self, img_feats, txt_feats): img_feats = F.normalize(img_feats, dim=-1) txt_feats = F.normalize(txt_feats, dim=-1) # 相似度矩阵: 第 i 行第 j 列 = 第 i 张图与第 j 段文本的余弦相似度 logits = self.logit_scale * img_feats @ txt_feats.t() labels = torch.arange(logits.shape[0], device=logits.device) loss_img = F.cross_entropy(logits, labels) loss_txt = F.cross_entropy(logits.t(), labels) return (loss_img + loss_txt) / 2.0 def main(): torch.manual_seed(42) batch, dim = 8, 16 # 模拟 8 对图文: 文本特征 = 图像特征 + 少量噪声, 保证配对信息存在 img_feats = torch.randn(batch, dim) txt_feats = img_feats + 0.2 * torch.randn(batch, dim) loss_fn = CLIPContrastiveLoss() opt = torch.optim.Adam(loss_fn.parameters(), lr=0.05) for epoch in range(100): loss = loss_fn(img_feats, txt_feats) opt.zero_grad() loss.backward() opt.step() if epoch % 20 == 0: print("epoch {} loss {:.4f}".format(epoch, loss.item())) sim = F.normalize(img_feats, dim=-1) @ F.normalize(txt_feats, dim=-1).t() diag = torch.diagonal(sim) off = (sim.sum() - diag.sum()) / (batch * (batch - 1)) print("对角线相似度均值: {:.3f}".format(diag.mean().item())) print("非对角线相似度均值: {:.3f}".format(off.item())) if __name__ == "__main__": main()
self.logit_scale = nn.Parameter(...)把温度系数变成可学习参数,训练时自动调整软硬程度。logits = self.logit_scale * img_feats @ txt_feats.t()一次性算出 N×N 的图文相似度矩阵,矩阵乘法并行高效。labels = torch.arange(logits.shape[0], ...)对角线位置即正确答案:第 i 张图就该匹配第 i 段文本。loss_img = F.cross_entropy(logits, labels)站在图像角度,从 N 段文本中认出自己的那一段。loss_txt = F.cross_entropy(logits.t(), labels)站在文本角度做对称的交叉熵,两个方向一起训练。txt_feats = img_feats + 0.2 * torch.randn(...)用“图像特征加噪声”构造配对数据,保证每一对图文天然相似。
常见误区
误区“CLIP 就是 OpenAI 发布的那个模型,结构写死了,跟 ResNet 和 ViT 没关系。”
正解CLIP 是“双塔编码器 + 对比训练范式”的组合框架。图像端既可以用 ResNet 也可以用 ViT,文本端也有不同配置;模型架构与训练方法相互解耦。研究者完全可以换上更强的骨干网络,只要对比目标不变,仍属于 CLIP 范式。
为何常见:官方发布时直接捆绑了整套权重,使用者只调 API,自然把“一个模型”当成“一个固定的东西”。
误区“训练时只要拼命拉近配对的图和文就行,负样本随便处理一下就好。”
正解拉近与推远是一体两面。对比损失分母中所有负样本的指数之和,决定了正样本在嵌入空间里的相对位置;没有负样本的竞争,模型会把所有输入压成一个点,什么也区分不出来。负样本的质量与数量(大batch)直接影响表征质量。
为何常见:直觉上先注意到“拉近”这个动作,而忽略了 softmax 分母里暗藏的“推远”机制。
误区“CLIP 零样本分类那么强,数一数图里有几只猫、判断'杯子在桌上'肯定也没问题。”
正解CLIP 的对齐发生在“全局句子—全局图像”层面,擅长整体语义分类;但对计数、空间关系、属性绑定(“红色的左脚鞋”)等细粒度信息很差,组合性任务上甚至会把两个概念做平均。它更像“一眼定气质”的月老,而不是“拿尺子量五官”的鉴定师。
为何常见:零样本分类的惊艳表现让初学严重高估了模型的感知颗粒度。
误区“'a photo of a dog' 就是把'狗'翻译成英文而已,换成什么模板都一样。”
正解模板与上下文描述直接影响文本编码器的表征方向。CLIP 训练时看的是完整句子,输入越贴近预训练分布,对齐效果越好;论文里 80 个模板集成比单个模板在 ImageNet 上高出约 3.5 个百分点,可见 Prompt 是零样本性能的重要旋钮。
为何常见:初学者把文本编码器当作“查字典”,没有意识到预训练数据分布对输入形式的敏感度。
面试题
Q1. CLIP 在训练时的核心目标是什么?
- A.使所有图文对的得分趋于相同
- B.使配对图文得分最高并拉开其余← 正确答案
- C.使图像特征与文本特征完全一致
- D.使编码器的输出维度保持一致
答案:B。CLIP 的对比学习目标是让配对图文(正样本)的余弦相似度显著高于同一批次其他组合(负样本),也就是“拉近正对、推远负对”。A 与目标相反,C 是极端化误解(两个模态不会完全一致),D 是工程细节而非训练目标。
Q2. CLIP 的 4 亿训练图文对主要来自哪里?
- A.医院影像与病历报告
- B.实验室手工标注的精致图像
- C.互联网上抓取的图像文本对← 正确答案
- D.政府公开的标准数据集
答案:C。CLIP 使用的 WIT 数据集包含约 4 亿对图文,全部来自互联网自然共现的图像与文本,这正是“月老见多识广”的前提。人工标注数据规模有限,无法支撑对比学习所需的海量负样本。
Q3. CLIP 的文本编码器选择了哪种结构?
- A.基于注意力的 Transformer 栈← 正确答案
- B.基于统计的词袋模型编码
- C.基于循环结构的 LSTM 网络
- D.基于卷积的一维时序网络
答案:A。CLIP 文本端采用 Transformer(约 12 层、512 维),因为它能建模词序与长程依赖,理解“草地上有只狗”与“狗上有片草地”的区别。词袋模型丢失语序,LSTM 与卷积序列模型表达能力不如 Transformer。
Q4. 将对比损失中的温度系数 τ 调小,会带来什么效果?
- A.相似度概率分布变得更加平滑
- B.相似度概率分布变得更加尖锐← 正确答案
- C.模型的训练速度必然变慢
- D.编码器的输出维度随之变小
答案:B。τ 是 softmax 中的温度:τ 越小,$s/\tau$ 差异被放大,概率分布越接近 one-hot,模型越“笃定区”的负样本。τ 过大则分布平滑、梯度稀疏。它不影响训练速度与特征维度。
Q5. CLIP 实验发现零样本精度随数据量大致呈什么规律?
- A.呈平方级速度快速上升
- B.呈指数级速度爆炸上升
- C.与数据量的对数近似线性← 正确答案
- D.到达一定规模后立刻停滞
答案:C。CLIP 论文观察到 log-linear 标度率:数据量翻倍,精度近似线性提升,且没有明显饱和。这说明对比学习对数据规模非常“饥饿”,也解释了为什么 WIT 要用 4 亿对数据。
Q6. Prompt 工程能提升 CLIP 零样本精度的最主要原因是什么?
- A.模板减小了模型的显存占用
- B.模板贴近预训练时的文本分布← 正确答案
- C.模板优化了数据集的标签排序
- D.模板强制图像编码器使用注意力
答案:B。CLIP 预训练时文本端输入的是完整句子,若推理时只给裸标签,文本特征会偏离训练分布。用“a photo of a {label}“等模板把标签改写成句子,让文本编码器回到”舒适区”,相似度计算才可靠。
Q7. 在数据充足时,ViT 相比 ResNet 作为视觉编码器的优势是?
- A.缺少归纳偏置因而精度更差
- B.全局建模带来更强的表征能力← 正确答案
- C.推理速度始终慢一个数量级
- D.完全无法配合对比学习目标
答案:B。归纳偏置在 小数据上帮助 ResNet 快速收敛,但数据充足时 ViT 的全局自注意力能捕获长距离关系,CLIP 论文中 ViT 家族全面超越 ResNet。A 是旧经验,C、D 与事实不符——ViT 在同等算力下效率反而更高。
Q8. CLIP 难以区分“狗骑宇航员”与“宇航员骑狗”,根源在于?
- A.对比损失只做全局图文对齐← 正确答案
- B.文本编码器词表大小远超预期
- C.视觉编码器只看图像的左上角
- D.训练数据中完全没有文本标签
答案:A。CLIP 的对齐发生在“全局图像—全局句子”层面,没有逐块、逐词的细粒度监督,因此对涉及空间关系与组合次序的语义无能为力。词表大小、数据中有无标签都不是根因。
Q9. 以下哪些属于 CLIP 的已知局限?
- A.对图像中的数量信息感知很弱← 正确答案
- B.在开放词汇分类上完全不可用
- C.无法完成任何零样本识别任务
- D.对空间位置关系理解不足← 正确答案
答案:AD。CLIP 擅长整体语义分类,但计数、属性绑定与空间关系是弱项,因此 A、D 正确。B、C 过于绝对——CLIP 的核心卖点恰恰是开放词汇与零样本识别,只是细粒度上不完美。
Q10. 下列哪些做法能有效改进 CLIP 的细粒度能力?
- A.叠加掩码语言建模辅助目标← 正确答案
- B.加入 Token 级对齐与检测头← 正确答案
- C.清洗数据并均衡类别采样← 正确答案
- D.移除所有文本编码器参数
答案:ABC。掩码语言建模增强文本语义(CoCa 思路),Token 级对齐让局部块与词元对应(FILIP 思路),数据清洗可减少偏见并提升分布覆盖,三者都能补强细粒度。D 相当于拆掉婚介所的文案分析师,只会让跨模态对齐失效。