论文笔记:Learning Transferable Visual Models From Natural Language Supervision(CLIP)

1 Intro 

  • 目前最先进的CV模型,大部分是现有一个定义好的类别的集合,然后模型通过预测这些提前定义好的类别,从而完成模型的训练
    • 这些提前定义好的类别会大大简化问题本身

    • 但采用了这种有限制性的监督信号,也大大限制了模型的泛化性(尤其是识别新物体时)

    • ——>直接从自然语言(文本)里面得到一些监督信号,是一个promising的方向

      • 这个监督信号涵盖的范围就很广,只要是语言描述过的物体,就有可能让视觉模型识别这个物体,而不是之前事先定义好的类

  • 直接从原始文本数据去预训练一个模型,已经在NLP领域取得了成功(bert、gpt)

    • 不论是掩码,还是完形填空,都是一种自监督的方式

      • 目标函数和下游任务无关,只通过预训练得到非常泛化的特征

    • 随着计算资源、计算数据的增多、模型的变大,模型的能力在稳健地提升

    • 面对下游任务的时候,不用费尽心思去研究一个输出头,直接zero-shot即可

    • ——>这些结论说明了文本进文本出,利用自监督的信号去训练整个模型的框架下,这种大规模的没有标注的数据,是要比手工标注的、质量更好的数据集好使

  • CLIP的思路是: 
    • 用一个非常简单的预训练任务,就可以非常高效、可扩展地学习图像表征

    • 给定一张图片+给定一些句子,模型判断哪个句子和图片是配对的(训练样本是图片-文字对)

    • 预训练完成后,自然语言被用来去引导视觉模型做物体的分类(prompt) 

    • 分类任务可以扩展到新的类别(可以在下游任务上直接做zero-shot 的推理)

    • 不需要任何数据集专门训练的情况下,和之前完全用有监督方式训练的模型打平手(甚至更高)

 2 CLIP

  • 对比学习预训练
    • CLIP预训练的过程中使用的是图片-文本对
      • 正样本:配对的文本对(特征矩阵对角线上的是正样本,其他的是负样本)
  • zero-shot的推理
    • 直接用单词抽取特征也行,为什么要prompt template呢?
      • 预训练的时候,图片每次看到的都是一个句子,如果推理的时候把文本从句子都变成了单词,那就和训练的时候看到的文本不太一样了,效果就会有下降(一个原因是distribution gap)
    • 怎么从分类的单词变成句子?

      • prompt engineering /prompt esemble 这两种方式进一步提高模型的准确率

    • 推理的时候不论来了什么照片,只要把照片扔给预训练好的图片编码器即可
    • 图片的特征和文本的特征做cos 相似性
      • 和哪个文本特征最相似,文本特征对应的句子挑出来,完成分类任务
    • zeroshot的方式,即使不在imagenet中的图片/类,也可以分类出来
      • 之前严格按照1000类去训练的分类头,模型永远不会判断出之前类没有的类
        • 比如,“三轮车”是没有的类,之前的方法可能智能识别出“车”or“自行车”
    • ——>训练还是推理的时候,都不需要提前定好的标签列表

 2.1 NLP监督

  • 方法核心——利用自然语言的监督信号去训练视觉模型

  • 之前nlp使用ngram和topic model的方式,不是很好学习
    • 随着transformer、自监督训练方式的出现,NLP的模型逐渐变得又大又好、泛化的也越来越好
    • ——>为多模态训练铺平道路

  • 为什么用自然语言的信号去训练视觉模型?
    • 1 不需要标注数据
      • ImageNet 需要先定好1000个类,下载照片,清理数据集,标注。。。
      • 使用图片-文本对的话, 数据规模扩大
        • 监督信号是文本,而不是标签,模型的输入输出自由度大很多
    • 2 训练的时候图片和文字绑定在一起,特征不在仅仅是图片特征了,而是图片+文字特征(多模态特征)
      • 很容易做zero-shot的迁移学习 
      • 如果是只用单模态、视觉的特征学习(比如mae),只能学到视觉得特征,无法和自然语言联系在一起,很难做zero-shot的迁移

2.2 建立数据集

  • 之前标注质量好的数据集——>规模太小
  • 大的数据集——>标注质量差

——> 论文收集了400million 图片-文本对(4亿的样本)

2.3 选定预训练方法

  • 为什么选择对比学习进行预训练?
    • 给定一张图片,如果目标是预测对应的文本
      • 1)需要逐字逐句预测问题,这就太难了。
      • 2)对于一张图片来说,有不同的描述方式——》歧义性
  • 如果把任务变成一个对比学习任务(判断文本和图片是否配对)
    • 任务就简单很多了
    • 约束也就放松很多了
  • 根据论文中的实验,仅仅把预测性的目标函数变成对比性的目标函数,训练效率以下提高了四倍

2.4 CLIP 伪代码

 2.5 Prompt

  • 为什么使用Prompting(用句子而不是单词进行文本embedding)
    • 多义性问题:
      • 一个单词很多含义,如果只用标签的一个单词,就有可能面临这个问题
      • 比如boxer,是拳击手还是狗?
    • 预训练的时候,图片每次看到的都是一个句子,如果推理的时候把文本从句子都变成了单词,那就和训练的时候看到的文本不太一样了,效果就会有下降(一个原因是distribution gap)
  • prompt ensemble
    • 加很多上下文的修饰,将他们做多次推理,将结果 综合起来

    •  

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

UQI-LIUWJ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值