当前位置:   article > 正文

CLIP(Learning Transferable Visual Models From Natural Language Supervision)_clip linear probe

clip linear probe

摘要

挑战:

提前定义的标签,将大大简化问题本身。但是因为采用了有限制的标签,将会限制模型本身的泛化性,尤其是对于新的问题类别。

解决方法:从文本获得一些监督信号
好处:

1、监督信号覆盖范围广,只要是文本描述过的物体,就有可能让这个模型识别到这个物体,而不仅仅是那提前定义好的类
2、作者证实用一个简单的预训练任务就可以非常高效且可扩展的学习到最好的图像表征。(预训练任务是配对图片与文本)

结论:

预训练完成之后,自然语言将引导模型进行物体的分类。不仅可以进行已经学到的分类,还可以对新的物体进行分类,也就是可以直接在下游任务进行zero-shot推理。CLIP在不需要任何专门数据集的训练的情况下,可以达到完全用有监督方式训练出来的模型水平,甚至更高。

一、引言

灵感:

从原始文本的数据里预训练一个模型,已经在NLP里取得了革命性的成功,例如bert、GPT等
无论是自回归还是掩码模型,都是自监督的方式,也就是说目标函数与下游任务是无关的,只是通过预训练得到一个非常好的能泛化的特征。
这结果也证实利用自监督信号来训练整个模型的框架下,大规模的无标注的数据是优于那些手工标注的数据的
在这里插入图片描述

相关工作

利用transformer和自监督
VirTex:使用自回归的预测方式来做模型的预训练
ICMLM:使用完型填空的方式来做模型的预训练
ConVIRT:和CLIP类似,但只在医疗图像上做了实验
方法是类似的,关键规模不够大导致效果很差。CLIP在大数据和大模型双重buff的情况下,得到了非常好的效果
money is all your need)

二、方法

2.1自然语言监督

利用自然语言的自监督信号来训练模型

好处:

1、不再需要标注数据,模型的输入输出自由度也大了很多
2、模型学到的将是多模态的特征,有助于获得zero-shot的能力

2.2构建一个足够大的数据集

2.3选择一个有效的预训练方法

在这里插入图片描述
蓝线:基于tansformer去做预测型的任务
黄线:基于bag of words的方式,不用再逐字逐句的预测文本,而是将文本抽象成一些特征,相应的约束被放宽,因此训练效率提高了三倍
绿线:使用对比学习的方式,只需要判断是不是图片文本对,因此训练效率进一步提高了四倍

2.4选择和缩放一个模型

视觉:ResNet或者Vision Transformer
文本:Transformer

2.5训练

三、实验

3.1 zero-shot迁移

3.1.1 动机

之前那些自监督或者无监督的方法,主要研究的是特征学习的能力,目标是学习泛化能力比较好的特征。但是即使学习到了很好的特征,如果想应用到下游任务的时候,还是需要有标签的数据做微调。
如何能够训练一个模型,下游任务不再训练或者不再微调了?这就是作者研究zeroshot迁移的动机

3.1.2用CLIP来做zero-shot迁移

在这里插入图片描述

3.1.3与Visual N-Grams的初始比较
3.1.4提示工程和集成(PROMPT ENGINEERING AND ENSEMBLING)

问题
1、单词具有多义性
2、预训练的时候匹配的文本一般是一个句子,如果在做推理的时候,输入是一个单词,这就可能存在分布差异,导致提取出来的特征不太好
**方法:**使用提示模板prompt template,例如“a photo of a {label}".
好处:这样就可以解决一部分歧义性的问题,也可以解决输入不是句子的问题。简单,所有标签都可以用这样的模板。最后的准确度也提高了。
扩展:可以使用更复杂的模板,比如说对于动物可以使用 “A photo of a {label}, a type of pet.”这样模型可以提前知道一些信息,对zero-shot的推理可以提供一些帮助。还可以多用一些提示模板,做多次推理,最后将结果综合起来,一般都可以得到更好的结果

3.1.5 zero-shot CLIP表现分析

在这里插入图片描述
基于zero-shot,在对物体进行分类的数据集上,CLIP一般表现得很好,但是对于比较难的任务,类似纹理,物体计数的数据集表现得不太好。
在这里插入图片描述

对于更难的数据集,few-shot会比zero-shot衡量更合理

3.2表征学习

使用全部的下游数据进行训练
使用迁移学习的时候,下游任务使用微调一般会比linear probe(将预训练好的模型冻住,只训练一个分类头)的表现要好,特别是当下游数据集比较大的时候。
但在CLIP就是要用linear probe
原因
1、CLIP就是用来研究和数据集无关的预训练方式,如果下游数据集足够大,并且不限制下游模型的训练,很可能就会掩盖预训练模型并不好这种情况,也就无法分辨这个预训练的模型的好坏。
2、linear probe不太用调参
在这里插入图片描述

3.3对自然分布变化的稳健性

在这里插入图片描述

对数据分布变化比较大时,一般的模型掉点非常严重,但是CLIP训练出来的模型表现得非常稳健

四、与人对比

在这里插入图片描述
CLIP的表现依然好的多(不公平!)

五、数据重叠分析

结果这么好是不是因为使用的数据集太大了太好了,把下游数据集都包括了,所以才导致效果这么好。
在这里插入图片描述

CLIP训练出来的模型本身泛化性比较好

六、局限性

1、CLIP虽然很强,和基线模型resnet50达成平手,但是和state of the art差的依然很远。如果加大数据集,扩大模型规模,CLIP模型的性能依然能提高,但是想达到现在最好的水平,作者估计计算量还得在现有的基础上乘以1000,这是难以接受的。
2、在有些数据集上,zero-shot的效果并不好。例如细分类、物体计数
3、CLIP的泛化性能很好,对于自然分布偏移,模型的表现依然很稳健,但是如果数据真的差了很远out-of-distribution,CLIP的泛化照样很差
4、还是从给定的类别里做选择,而不是生成式的
5、CLIP对数据的利用并不高效,依然需要大量的数据。为了减少数据用量,可以用数据增强、自监督、伪标签
6、多次使用测试集来调整超参,已经无形之中带入了偏见,并不是真正的zero-shot
7、因为是从网上爬的数据,所以模型很有可能带了一些社会上的偏见
8、奇怪的现象:给了一定的样本,反而模型的效果没有zero-shot的效果更好

七、广泛的影响

八、相关工作

九、结论

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/450902
推荐阅读
相关标签
  

闽ICP备14008679号