大型视觉语言模型:CLIP(Contrastive Language Image Pre-traning)入门级解读

Motivation

在传统的监督学习中,标签被离散化,每个类别都与一个随机初始化的权值向量相关联,该向量被学习以最小化与包含相同类别的图像的距离。这样的学习方法侧重于封闭集的视觉概念,将模型限制在一个预定义的类别列表中,当涉及到在训练过程中看不到的新类别时,它是不可扩展的。

相比之下,对于像CLIP这样的视觉语言模型,分类权值是由一个参数化的文本编码器(例如,transformer)通过文本提示直接生成的。与离散标签相比,视觉语言模型的监督来源来自自然语言,这使得开放集的视觉概念可以被广泛地探索,并已被证明在学习可转移表示方面是有效的。

Method

框架总览

个人理解(可能不标准)

        首先要理解,大模型其实并不会理解一张图片代表着什么,也不会知道一句话是什么意思,它只是一个莫得感情的“数字处理怪”,之所以这样说,是因为它只认数字,但偏偏又对数字的处理能力及其强大。一张图片在它看来,只是一个【3, 224,224】或者其他形状的张量(由数字组成);一句话,也只是被它通过特定“词典”处理为一串数字而已。然后大模型做的事其实是通过大量的数据和标签去学习一个函数,这个函数很复杂,(与中学的线性回归问题异曲同工,只不过学习的函数比线性函数或二次函数复杂得多得多)。理解了这一点,可能你会更快入门。

方法概述

        CLIP的框架图如上。

        与传统的视觉模型不同,CLIP模型引入了自然语言,模型中有两个编码器,一个是图像编码器,可以将一张[3, 224, 334]的图片处理成为一个向量,该向量叫做图像特征;另一个是文本编码器,同样地,它可以将一个自然语言句子处理成为一个向量,该向量叫做文本特征

        CLIP的基本原理就是使用对比学习,所谓对比学习,关键就在于对比,比如说,图像端输入了N个类别图片,而文本端有N个对应类别单词(dog、cat、...、fish),首先将这些单词套入一个句子模版中(“A photo of a { }.”),得到了这些类别对应的提示句子。这样,图像端得到了N个类别的图像特征,而文本端得到了N个文本特征,拿每个图像特征和每个文本特征分别计算余弦相似度(数学中解释为这些特征在一个共同空间中的余弦距离),CLIP训练时所做的事情就是使相同类别(正样本)的图像特征和文本特征的余弦距离尽可能近,而不同类别(负样本)之间的图像特征和文本特征的余弦距离尽可能地远。比如,狗的图片特征与“A photo of a dog.”对应的文本特征相似度要尽可能高,与“A photo a {class}.”(class表示为其余所有不为dog的类别)的文本特征相似度尽可能低。通俗来说就是,各回各家、各找各妈。

        CLIP使用了约4亿个图像-文本对,对模型进行了预训练,使得模型拥有了良好的泛化能力。当遇到一个新的分类任务做zero-shot时(即不再使用任何带标签数据进行额外训练),只需将输入的图片编码为图像特征,然后与待分类类别的文本特征计算相似度,得到相似度最高的文本特征对应的类别就是模型预测的类别。

        附伪代码如下

解释说明

1.测试要将类别单词扩展为句子

(1)因为会有多义词,会有歧义,因此需要上下文等语境。

(2)预训练时训练的是句子,不扩展为句子会存在distribution gap(本人理解为:只将单词输入文本编码器,得到的特征必然会与输入对应的句子得到的文本特征存在一些距离,而这些距离可能会导致分类误差)。

2.编码器使用的模型

(1)图像编码器:ResNet或Vision Transformer。

(2)文本编码器:CBOW或Text Transformer。

关注我,后续我将详细介绍图像文本编码器的工作过程及代码

  • 6
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值