大模型应用开发实战(3)——CLIP:多模态大模型时代的关键前驱
♂️ 个人主页小李同学_LSH的主页✍ 作者简介LLM学习者 希望大家多多支持我们一起进步如果文章对你有帮助的话欢迎评论 点赞 收藏 加关注目录一、为什么 CLIP 这么重要1. 标签成本高2. 类别是封闭的3. 泛化能力有限二、先看核心思想CLIP 本质上在做什么第一步把图片编码成向量第二步把文本编码成向量第三步拉近正确图文拉远错误图文三、CLIP 的模型结构到底长什么样1. 图像编码器2. 文本编码器3. 映射到统一空间四、CLIP 是怎么训练的核心就是对比学习1. 相似度矩阵2. 图像到文本的损失3. 文本到图像的损失4. 总损失五、为什么 CLIP 这么强关键不只是模型而是训练范式1. 它把分类问题变成了匹配问题2. 它让自然语言成为类别描述3. 它天然具备开放世界能力六、CLIP 和传统图像分类模型有什么区别七、CLIP 为什么能成为多模态时代的重要前驱1. 统一语义空间2. 自然语言成为通用接口3. 零样本能力成为现实如果说 Transformer 奠定了大模型时代的底层结构那么在多模态方向CLIP绝对是绕不开的一座里程碑。在 CLIP 之前计算机视觉和自然语言处理大多还是各做各的图像模型负责看图文本模型负责看字二者之间虽然也有结合尝试但整体上还没有形成一套足够通用、足够优雅、又足够有扩展性的统一范式。而 CLIP 的出现做了一件非常关键的事它第一次把“图像”和“文本”映射到同一个语义空间里。这意味着什么意味着模型不再只是“识别一张图里是不是猫”而是开始具备一种跨模态理解能力看到图片能和文本对齐看到文本能去匹配图片不用专门为每个分类任务重新训练一个模型只靠自然语言提示词就能完成大量图像分类任务这也是为什么很多人会把 CLIP 看成多模态大模型时代的重要前驱甚至称它是“技术鼻祖”之一。这篇文章我就带你把 CLIP 拆开来看清楚CLIP 到底解决了什么问题它的模型结构长什么样它为什么能把图像和文本放进同一个向量空间它和今天的多模态大模型到底是什么关系一、为什么 CLIP 这么重要在 CLIP 之前传统图像分类模型的主流思路大多是监督学习给模型大量图片每张图片配一个人工标签训练模型去识别固定类别比如猫狗汽车飞机这种方式当然有效但也有几个明显问题1. 标签成本高人工标注图片很贵而且规模一大就很难做。2. 类别是封闭的训练时定义了多少类别模型基本就只会这几个类别。3. 泛化能力有限你让一个只学过 ImageNet 标签体系的模型去理解更自然、更开放的文本描述它通常做不到。而互联网世界里图像本来就天然和文本共存图片有标题网页有描述帖子有文案图片搜索本质上也是图文匹配CLIP 的思路正是既然互联网上天然有海量图文对那为什么不直接用图文对来训练模型于是它不再执着于“图片属于哪个固定类别”而是改成了一个更通用的问题这张图片和哪段文本更匹配这个转变非常关键。因为从这一刻开始模型学的不再只是一个封闭分类器而是一个跨模态语义对齐器。二、先看核心思想CLIP 本质上在做什么一句话概括CLIP 图像编码器 文本编码器 对比学习也就是说它做了三件事第一步把图片编码成向量输入一张图片经过图像编码器得到一个图像向量。第二步把文本编码成向量输入一句文本经过文本编码器得到一个文本向量。第三步拉近正确图文拉远错误图文如果图片和文本本来就是配对的那它们的向量应该更接近如果不匹配那它们的向量应该更远。所以 CLIP 的目标不是直接输出“这是一只猫”而是学会图片和文本在语义空间里应该如何对齐。左边负责“看图”右边负责“读文本”最后通过相似度和对比学习把两种模态映射到统一语义空间。三、CLIP 的模型结构到底长什么样CLIP 的整体结构其实不复杂它并不是那种“模块堆得很花”的模型。它最核心的设计反而很朴素一个图像编码器一个文本编码器一个共享语义空间一个对比学习目标1. 图像编码器图像编码器的作用是把输入图片变成一个固定维度的向量。在 CLIP 的实现里图像编码器可以使用不同结构比如ResNetVision TransformerViT你可以把它理解成不管输入图片多复杂最后都压缩成一个“图像语义表示向量”。记作2. 文本编码器文本编码器负责把一句自然语言描述映射成向量。比如输入“a photo of a dog”“a red car”“a person riding a bike”经过文本编码器后也会得到一个固定维度的文本向量3. 映射到统一空间CLIP 最关键的点就在这里图像向量和文本向量会被投影到同一个向量空间里。在这个空间中匹配的图文对距离更近不匹配的图文对距离更远为了方便计算相似度通常会对图像和文本向量做归一化这样后面用点积时本质上就是在算余弦相似度。四、CLIP 是怎么训练的核心就是对比学习CLIP 最精华的地方不是模型结构有多复杂而是它的训练目标设计得非常漂亮。设一个 batch 里有 N 对图文数据1. 相似度矩阵对 batch 中每张图片和每段文本计算两两相似度如果加入温度参数 τ则通常写成这样就能得到一个 N×N的相似度矩阵。文本1文本2文本3文本4图片1高低低低图片2低高低低图片3低低高低图片4低低低高正确图文对应该落在对角线上也就是图片1最像文本1图片2最像文本2……CLIP 的训练目标就是让这个相似度矩阵尽可能“对角线高其他位置低”。2. 图像到文本的损失对每一张图片来说它应该在所有文本中最匹配自己的配对文本3. 文本到图像的损失同理对每一段文本来说它也应该在所有图片中最匹配自己的配对图片4. 总损失最后把两部分损失平均这个设计非常漂亮因为它是双向对齐图片找文本文本找图片不是单向而是两个方向一起逼近。五、为什么 CLIP 这么强关键不只是模型而是训练范式CLIP 真正厉害的地方不只是“会看图又会看字”而是它改变了视觉任务的建模方式。1. 它把分类问题变成了匹配问题传统视觉分类是给图片输出固定类别标签而 CLIP 变成了给图片和文本判断谁和谁更匹配这一步看似简单实际上把问题从“封闭分类”升级成了“开放语义理解”。2. 它让自然语言成为类别描述传统分类模型的输出空间通常是固定类别 ID比如0cat1dog2car而 CLIP 可以直接用自然语言描述类别“a photo of a cat”“a photo of a dog”“a photo of a car”于是分类问题就变成了图片和哪段类别文本最相似这就是 CLIP 最经典的“零样本分类”思路不需要针对每个分类任务重新训练模型只需要写出类别描述文本就能直接做分类。3. 它天然具备开放世界能力因为 CLIP 学的是图文对齐而不是死记硬背固定标签所以它天然更接近开放世界理解新类别可以直接用文本描述新任务可以通过 prompt 适配模型不再被训练标签空间死死锁住这也是为什么 CLIP 会对后来的多模态大模型影响这么大。六、CLIP 和传统图像分类模型有什么区别下面这个表最能看出它的范式变化。维度传统视觉分类模型CLIP训练数据图片 固定标签图片 自然语言文本输出形式类别 ID图文相似度类别空间封闭更开放新任务适配往往需要微调可做零样本分类模态关系只处理图像同时建模图像与文本泛化方式依赖任务监督依赖语义对齐能力你会发现CLIP 的价值不只是“性能提升”更重要的是它改变了视觉模型和任务之间的关系。过去是“一个任务训练一个模型”后来开始变成“一个通用图文模型通过 prompt 适配多个任务”。这条路后面几乎贯穿了整个多模态大模型时代。七、CLIP 为什么能成为多模态时代的重要前驱这个问题很关键。因为如果只把 CLIP 看成“图文检索模型”那就低估它了。它真正重要的地方在于它奠定了今天很多多模态系统的几个核心思想。1. 统一语义空间CLIP 让图像和文本第一次以一种非常自然的方式进入统一表示空间。后来很多多模态模型无论结构多复杂底层思想都离不开这一点不同模态最终要能在某种共享语义空间里对齐。2. 自然语言成为通用接口CLIP 证明了一件很重要的事文本不仅是描述工具也可以成为任务接口。这意味着模型不再只能通过“写死标签”与外界交互而可以通过自然语言 prompt 来适配任务。这对后来的多模态对话文生图图像理解视觉问答多模态 Agent都有非常深远的影响。3. 零样本能力成为现实CLIP 让“zero-shot”不再只是一个概念而是真正具有可操作性你不重新训练模型你只写文本描述模型就能直接迁移到新类别这件事对应用开发意义极大因为它意味着模型的可复用性大幅提升。