当前位置: 首页 > news >正文

Learning Transferable Visual Models From Natural Language Supervision 精读笔记(全)

一、论文背景为什么需要 CLIP传统计算机视觉模型大多是在固定类别集合上训练的比如 ImageNet 里的 1000 类。这种方式的问题在于类别集合是封闭的模型只能识别训练时见过的类别想识别新概念就必须重新收集数据并重新标注监督信号依赖人工标签成本高且扩展性差。论文提出的核心想法是不要只依赖人工类别标签而是直接利用互联网上大量的图文对让模型从自然语言中学习视觉概念。这带来的好处是标签空间变开放了监督信息更丰富模型可以直接用文本描述去做分类也就是 zero-shot。二、CLIP 的核心思路CLIP 的目标不是训练一个传统分类器而是训练一个图像编码器和一个文本编码器把图像和文本映射到同一个语义空间中。1. 训练目标给定一个 batch 中的图像和文本配对正样本正确配对的图像和文本负样本batch 中其他不匹配的组合。模型要做的是提高正确图文对的相似度降低错误图文对的相似度。2. 训练方式CLIP 使用的是对比学习contrastive learning。它本质上是在 batch 内做一个“分类问题”对每张图像从 batch 中的所有文本里找出正确描述对每段文本从 batch 中的所有图像里找出正确配对。三、对比损失 InfoNCE 的理解CLIP 的损失函数本质上就是 InfoNCE可以看成是交叉熵损失的一个变体。设 batch size 为 (N)图像为 (I_1, I_2, …, I_N)文本为 (T_1, T_2, …, T_N)。经过编码器后得到vif(Ii),tig(Ti) v_i f(I_i), \quad t_i g(T_i)vi​f(Ii​),ti​g(Ti​)然后计算图像和文本之间的相似度sijvi⋅tjτ s_{ij} \frac{v_i \cdot t_j}{\tau}sij​τvi​⋅tj​​其中 (τ\tauτ) 是温度系数。1. 为什么是正样本和负样本对固定一张图像 (I_i) 来说正样本只有 1 个(T_i)负样本有 (N-1) 个batch 里其他文本所以从单个 anchor的角度看就是 1 个正样本 (N-1) 个负样本。但是 CLIP 会对 batch 中每一对都做一次这样的比较一共有 (N) 个图像 anchor每个图像对应 (N-1) 个负样本所以从整个 batch 的角度看负样本总数是 (N(N-1))。2. 损失公式为什么像交叉熵图像到文本方向的损失可以写成Li−log⁡exp⁡(sii)∑j1Nexp⁡(sij) L_i -\log \frac{\exp(s_{ii})}{\sum_{j1}^{N}\exp(s_{ij})}Li​−log∑j1N​exp(sij​)exp(sii​)​这个式子和交叉熵非常像因为它本质上就是用 softmax 把 batch 内所有文本变成一个概率分布正确配对的位置作为监督标签对正确位置的概率取负对数。因此InfoNCE 可以理解成在 batch 内做分类目标是让正确配对的概率最大。3. 为什么要有负号因为训练时优化器通常是最小化损失。我们希望正确配对概率越大越好所以先取 (\log p)再加负号变成最小化问题正确概率越大loss 越小正确概率越小loss 越大。4. log 的作用log 的作用有两个放大错误样本的惩罚把 softmax 的乘法结构转化成更稳定的加法结构。当正确样本概率很低时(−log⁡p-\log p−logp) 会迅速变大这会迫使模型更关注难样本。5. 为什么能自动实现“正样本最大负样本最小”展开损失后可以看到Li−siilog⁡∑j1Nexp⁡(sij) L_i -s_{ii} \log \sum_{j1}^{N}\exp(s_{ij})Li​−sii​logj1∑N​exp(sij​)第一项 (-s_{ii}) 会推动正样本相似度变大第二项 (\log \sum \exp(s_{ij})) 会惩罚所有相似度过高的候选项尤其是负样本。所以这个损失天然就实现了拉近正样本推远负样本。6. 对抗项是什么分母里的∑j1Nexp⁡(sij) \sum_{j1}^{N}\exp(s_{ij})j1∑N​exp(sij​)就是所谓的“对抗项”。因为 batch 中的其他样本都在争夺 softmax 的概率质量它们之间是竞争关系。某个负样本分数越高正样本被分到的概率就越低这就形成了对抗。四、为什么要做归一化CLIP 中会先把图像特征和文本特征归一化到单位长度v^v∣v∣,t^t∣t∣ \hat{v} \frac{v}{|v|}, \quad \hat{t} \frac{t}{|t|}v^∣v∣v​,t^∣t∣t​然后计算点积v^⋅t^ \hat{v} \cdot \hat{t}v^⋅t^这等价于余弦相似度。为什么要归一化如果不归一化模型可能通过简单地把向量的 norm 变大来“作弊”从而让点积变大、loss 下降但实际上并没有学到更好的语义表示。归一化的作用主要是避免向量长度影响相似度防止 embedding 无限变大让模型专注于“方向”而不是“长度”。五、embedding 爆炸是什么所谓 embedding 爆炸就是向量的范数不断变大数值越来越大。如果不做归一化模型可能会不断增大向量长度让点积变得很大softmax 很容易饱和出现梯度变小训练不稳定甚至数值溢出。所以归一化是 CLIP 训练里非常关键的一个稳定化手段。六、温度参数 τ 的作用CLIP 在计算 softmax 之前会对 logits 做缩放sijτ \frac{s_{ij}}{\tau}τsij​​这里的 (\tau) 是温度参数而且是可学习的。作用是什么(τ\tauτ) 小softmax 更尖锐模型更“果断”(τ\tauτ) 大softmax 更平滑分布更平均。这个参数能帮助模型自动找到合适的对比强度。七、CLIP 的模型结构CLIP 采用的是双编码器结构dual encoder图像编码器ResNet 或 ViT文本编码器Transformer。二者分别把图像和文本编码成向量再在同一个语义空间里做相似度计算。1. 图像编码器论文里考虑了两种图像编码器ResNetVision Transformer (ViT)2. 文本编码器文本编码器是一个 Transformer结构上类似 GPT-212 层hidden size 5128 个 attention heads使用 masked self-attention。需要注意的是虽然它长得像 GPT但训练目标不是语言建模而是图文对齐。八、ResNet 的改造CLIP 并没有直接使用原版 ResNet而是做了几个重要改动1. ResNet-D用更合理的 stem 结构替代原始的 7×7 卷积 max pool减少信息损失。2. Anti-aliased blur pooling在下采样之前先做低通滤波减少混叠提高特征稳定性。3. Attention pooling把最后的 global average pooling 替换成 attention pooling。这点非常重要因为平均池化对所有位置一视同仁Attention pooling 可以自动学习哪些位置更重要。这更适合图文对齐任务因为模型需要关注图像中真正和文本相关的语义区域。九、ViT 的使用对于 ViTCLIP 基本沿用了原始结构说明 ViT 本身已经很适合做大规模表征学习。ViT 的基本流程把图像切成 patch每个 patch 映射成 token输入 Transformer取 [CLS] token 或全局表示作为图像 embedding。常见模型命名ViT-B/32ViT-B/16ViT-L/14其中B / L 表示 Base / Large32 / 16 / 14 表示 patch size。patch 越小token 越多细节越丰富但计算也越贵。十、CLIP 的 scaling 思想CLIP 不是只训练一个模型而是训练了多个不同规模的模型研究扩展规律。1. ResNet 系列包括RN50RN101RN50x4RN50x16RN50x64其中 x4、x16、x64 表示网络宽度扩大倍数。2. ViT 系列包括ViT-B/32ViT-B/16ViT-L/143. scaling 的三个维度width宽度depth深度resolution输入分辨率。CLIP 的一个重要结论是在大规模数据下扩大模型规模会显著提升性能。十一、文本编码器与词表CLIP 的文本编码器使用的是 BPEByte Pair Encoding词表。1. BPE 是什么BPE 是一种子词分词方法不是按完整单词切而是按 subword 切分。例如unbelievable可能被切成un / believ / able这样可以兼顾词表大小和泛化能力。2. 词表规模CLIP 使用约 49,152 个 token 的词表这个规模和 GPT-2 是比较接近的。3. 序列长度CLIP 将文本长度截断为 77 tokens并加入[SOS]开始标记[EOS]结束标记。通常会取 [EOS] 的表示作为整句的文本 embedding。十二、CLIP 和 LLM 的关系这是很多人会困惑的地方。1. 为什么说不完全一致CLIP 和 LLM 虽然都可能使用 Transformer、BPE、token embedding但它们的训练目标不同LLM预测下一个 tokenCLIP做图文对齐。因此它们学到的 embedding 空间并不相同。2. 会不会脱节不会脱节但也不会天然完全兼容。更准确地说它们可以通过投影层对接可以通过 bridge 模块连接可以作为不同子系统协同工作。因此 CLIP 更像是一个视觉-语言对齐模块而 LLM 更像是语言生成模块。十三、Zero-shot 推理CLIP 最重要的能力之一是 zero-shot 分类。1. 传统分类方式传统方法需要训练一个线性分类器image→feature→classifier→label image \rightarrow feature \rightarrow classifier \rightarrow labelimage→feature→classifier→label2. CLIP 的方式CLIP 不训练任务专属分类器而是把类别改写成自然语言 prompt计算图像 embedding 和文本 embedding 的相似度选择相似度最高的类别。例如分类 “dog” 时可以写成a photo of a doga picture of a dog3. 为什么这样有效因为 CLIP 训练时本来就是在做 image-text 对齐所以类别只要转成一句自然语言就可以直接拿来和图像比较。十四、Prompt Engineering 的重要性CLIP 论文发现prompt 的写法会显著影响结果。1. 为什么 prompt 会影响性能因为训练数据是“图像 自然语言描述”而不是单独的类别标签。因此模型更容易理解自然语言模板而不是孤立的词。2. 例子“dog”不如“a photo of a dog”这是因为后者更接近训练时的文本分布。3. Prompt Ensemble可以使用多个 prompt 模板然后把它们的文本 embedding 平均起来提高稳定性和鲁棒性。十五、CLIP 的本质总结CLIP 本质上不是一个传统分类器而是一个学习图像与文本对齐的通用多模态表示模型。它做的事情可以概括为用大规模图文对进行预训练学会把图像和文本映射到同一语义空间在测试时可以直接用文本 prompt 完成 zero-shot 分类通过 prompt engineering 可以进一步提升性能。十六、适合记住的几个关键点1. CLIP 为什么强因为它用大规模图文对替代了人工类别标签学到的是更开放、更通用的语义空间。2. InfoNCE 为什么像交叉熵因为它本质上就是在 batch 内做分类。3. 为什么要归一化为了防止向量长度作弊稳定训练。4. 为什么 prompt 重要因为 CLIP 训练的是“句子-图像对齐”而不是单词分类。5. CLIP 和 LLM 的关系它们不是一回事但可以通过 embedding 接口进行连接和融合。十七、这一部分的学习建议读 CLIP 时不要只盯着“模型长什么样”更重要的是抓住三个核心层次1. 问题层传统视觉模型为什么不够通用2. 方法层CLIP 如何用图文对比学习解决这个问题3. 推理层为什么只用 prompt 就能 zero-shot 分类这三个层次串起来CLIP 的逻辑就会非常清楚。
http://www.gsyq.cn/news/1402736.html

相关文章:

  • GEO实战指南:2026年如何让你的内容被AI大模型“选中“?
  • 电商竞品数据采集和竞对分析Agent如何搭建?从多模态感知到策略闭环的技术实战方案
  • MonkeyCode新手入门:从注册到写出第一个完整项目
  • 【收藏 2026 版】程序员转型 AI 开发:Java 老司机转型大模型实战全指南
  • UI 自动化的作用
  • 实战:用MonkeyCode从0到1做一个完整的Web应用
  • 从单车智能到群体协同:自动驾驶V2X通信与协同规划实战解析
  • 全网小说离线下载终极指南:novel-downloader让你的阅读永不中断
  • 别只盯着VS Code!在Visual Studio 2022里用GitHub Copilot写C#/ASP.NET是种什么体验?
  • 融合VAE与稀疏表示的异常检测:原理、实现与多场景应用
  • 2026年5月浙江童装/工装裤定制厂家排行,认准灵素服饰官方认证厂家 - 打我的的
  • 脑电信号导向的上肢假肢在线控制方法【附数据】
  • Hermes Agent 用户配置 Taotoken 作为自定义模型提供方的详细步骤
  • LiveTalking实时数字人解决方案:企业级AI虚拟交互系统实战指南
  • AI服务优雅降级:AWS架构设计与流量洪峰应对策略
  • 稀疏低秩保持投影(SLRPP):融合稀疏、低秩与流形结构的降维新方法
  • LVGL样式进阶:别再只改颜色了!手把手教你自定义lv_btn和lv_switch的动画与过渡效果
  • 对比直接使用厂商 API 体验 Taotoken 在延迟稳定性与接入便捷性方面的优势
  • 现代化企业级前端解决方案:RuoYi-Ant框架的技术架构深度解析与性能优化策略
  • 如何用10分钟拯救你的损坏视频文件?Untrunc深度解析
  • 浏览器FLV播放革命:flv.js技术深度解析与实战应用
  • 论文降重与改写:2026 最新降AIGC工具测评与推荐 - 降AI小能手
  • 从零到一:在Win10与VS2019环境下编译启用GPU加速的PCL 1.12.0
  • 如何用Ultralytics YOLO在5分钟内构建你的第一个AI视觉应用
  • RoboMaster舵轮底盘代码调试避坑指南:从CAN通信到PID调参的实战经验
  • 基于系统攻击面的移动目标防御有效性评估模型构建与仿真
  • 无监督聚类算法在室内毫米波通信信号检测中的优化与应用
  • RISC-V指令集扩展实现后量子密码CROSS算法硬件加速
  • 如何用FanControl实现Windows风扇静音:终极零噪音配置指南
  • 从零上手LC12S:一个无线模块的实战配置与透传应用