论文题目 | Learning Transferable Visual Models From Natural Language Supervision |
---|---|
作者 | Alec Radford * 1 Jong Wook Kim【大规模多模态深度学习和音乐理解。】 Chris Hallacy 、Aditya Ramesh【人工智能文本转视觉工具 Dall-E 的发明者有印度血统】 Gabriel Goh【可解释性、机器学习、数据可视化和凸优化】、Sandhini Agarwal【OpenAI 模型的安全、成功和负责任的部署】、 Girish Sastry【人工智能伦理、政策和战略问题感兴趣】 、 Amanda Askell【辩论和人工智能性能的人类基线研究人工智能安全、哲学博士】、 Pamela Mishkin【如何从技术和政策的角度使语言模型安全和公平,计算机科学和数学学士】、Jack Clark 、 Gretchen Krueger【人工智能伦理】 、 Ilya Sutskever 【曾是控制 OpenAI 的非营利实体的六名董事会成员之一】 |
状态 | 完成 |
会议或者期刊名称 | Proceedings of the 38th International Conference on Machine Learning, PMLR |
被引次数 | 谷歌学术9905次 【10639】 |
所属团队 | OpenAI |
摘要【摘要摘要中的摘要】 | The pre-training task is an efficient and scalable way to learn** SOTA-like** representations from scratch on a dataset (image, text) pairs collected from the internet . Natural language is used to reference learned visual concepts enabling zero-shot transfer of the model to downstream tasks . The model transfers non-trivially to most tasks and is often competitive with a fully supervised baseline . |
直接从原始文本中学习图像是一种很有前途的替代方案,它利用了更广泛的监督来源。通过**4 亿对(图像、文本)从头开始学习SOTA图像表示。**预训练后,使用自然语言来引用学习的视觉概念(或描述新的视觉概念),从而实现模型零样本传输到下游任务。
直接从网络文本中学习的可扩展的预训练方法是否会在计算机视觉领域带来类似的突破?
先前的工作
- 1.基于内容的图像检索:通过训练一个模型来预测文本文档中与图像配对的名词和形容词。
- 2.通过训练分类器的权重空间中的流形学习,可以学习更多数据有效的图像表示,以预测与图像相关的标题中的单词。
- 3.通过在低级图像和文本标签特征之上训练多模态深度玻尔兹曼机来探索深度表征学习。
- 4.经过训练的CNN可以预测图像标题中的单词,从而学习有用的图像表示。
- 5.基于transformer的语言建模,掩码语言建模和对比目标的潜力,以从文本中学习图像表示。
- 6.预测短语ngrams以及单个单词,并证明了他们的系统能够通过基于学习的视觉n-gram字典对目标类进行评分并预测得分最高的类别,从而零射击转移到其他图像分类数据集。
使用自然语言监督进行图像表示学习仍然很少见。这可能是因为在共同基准上的表现远远低于其他方法。
通过互联网上大量的这种形式的公开数据,创建了一个包含 4亿(图像,文本)对 的新数据集,用于对比图像预训练,是一种从自然语言监督中学习的有效方法。我们通过训练一系列跨越几乎2个数量级的计算的8个模型来研究CLIP的可扩展性,并观察到传输性能是计算的平滑可预测函数。
zero-shot CLIP模型比同等精度的监督ImageNet模型更鲁棒,这表明任务不可知模型的zero-shot评估更能代表模型的能力。
方法
1.自然语言监督:
自然语言监督指的是在机器学习任务中,使用自然语言数据作为监督信号或标签的过程。 在许多机器学习问题中,为了训练模型,需要使用有标签的数据,即包含输入和对应输出(标签)的数据。从自然语言中包含的监督中学习感知的想法。这不是一个新的想法,用于描述这一领域工作的术语是多种多样的,甚至似乎是矛盾的,所陈述的动机也是多种多样的。【分为:无监督、自监督、弱监督、监督】
2.创建足够大的数据集
现有工作主要使用的数据集MS-COCO【10万张训练照片】、Visual Genome【它由来自 MSCOCO 的 101,174 张图像组成,有 170 万个 QA 对,平均每张图像有 17 个问题。数据问答数据集10万张训练照片】、YFCC100M【1 亿个媒体对象,其中约 9920 万个照片和 80 万个视频】
我们构建了一个新的数据集,其中包含从互联网上各种公开来源收集的4亿(图像,文本)对。为了尝试覆盖尽可能广泛的视觉概念集,我们搜索(图像,文本)对作为构建过程的一部分,其文本包括500000个查询中的一个。我们通过每个查询包括多达20000个(图像,文本)对来近似地平衡结果。结果数据集的总字数与用于训练GPT-2的WebText数据集相似。
3.选择有效的预训练方法
一开始: 我们最初的方法类似于VirTex,从头开始联合训练图像CNN和文本Transformer来预测图像的标题。
VirTex"VirTex" 指的是 Facebook AI Research (FAIR) 提出的一种视觉-文本交互(Visual-Text Interaction)的模型。VirTex 旨在解决视觉和自然语言处理之间的多模态任务。具体而言,它专注于场景图生成任务。
场景图生成任务旨在从图像中提取有关场景中对象及其相互关系的结构信息,然后将这些信息转换为图形表示。VirTex 通过结合视觉和文本信号,致力于更好地理解图像中的内容。该方法强调视觉和文本之间的相互作用,以提高场景图生成的准确性。
VirTex 使用了一种称为视觉注意力图(Visual Attention Map)的机制,该机制可以帮助模型集中注意力于图像中最相关的区域,从而更好地与文本描述相匹配。 这种关注机制有助于提高模型对视觉和文本信息的理解,从而更好地捕捉图像中的语义结构。
中间: 我们展示了一个6300万参数的Transformer语言模型,它已经使用了其ResNet-50图像编码器的两倍计算,学习识别ImageNet类比预测相同文本的bag-of-words编码的简单得多的基线慢三倍。
后来: 最近在图像的对比表示学习中的工作已经发现,对比目标可以学习比其等效预测目标更好的表示。尽管图像的生成模型可以学习高质量的图像表示,但是它们需要比具有相同性能的对比模型多一个数量级的计算。注意到这些发现,我们探索了训练一个系统来解决潜在的更容易的代理任务,即只预测哪个文本作为一个整体与哪个图像配对,而不是该文本的确切单词。从相同的词袋编码基线开始,我们在图2中将预测目标换成了对比目标,并观察到零样本传输到ImageNet的效率进一步提高了4倍。
给定一批N个(图像,文本)对,CLIP被训练来预测一批中N ×N个可能的(图像,文本)对中的哪一个实际发生。为此,CLIP通过联合训练图像编码器和文本编码器来学习多模态嵌入空间,以最大化批次中N个真实的对的图像和文本嵌入的余弦相似性,同时最小化N2− N个不正确配对的嵌入的余弦相似性。我们优化这些相似性分数的对称交叉熵损失。
ground truth:
- 1.moco【对比学习的方式进行无监督训练的模型。】中ground truth都是0,就是每个训练数据的第一号位置是正样本;
- 2.clip中的ground truth都是在对角线
余弦相似度:
由于clip预训练数据集很大,过度拟合不是主要问题。我们从头开始训练CLIP,而不使用ImageNet权重初始化图像编码器或使用预先训练的权重初始化文本编码器。我们不使用表示和对比嵌入空间之间的非线性投影。相反,我们只使用线性投影来从每个编码器的表示映射到多模态嵌入空间。
self.vision_proj = nn.Linear(vision_width, embed_dim) # 将图像特征做线性映射
self.text_proj = nn.Linear(text_width, embed_dim) # 将文本特征做线性映射
从调整大小的图像中随机裁剪正方形是训练期间使用的唯一数据增强。 最后,控制softmax中logits范围的温度参数τ在训练期间直接优化为对数参数化乘法标量,以避免作为超参数转向。
4.选择和缩放模型
考虑两种不同的架构的图像编码器。
第一种架构,我们使用ResNet-50 作为图像编码器的基础架构,因为其广泛采用和经过验证的性能。我们使用ResNetD改进对原始版本进行了一些修改。我们还将全局平均池化层替换为注意力池化机制。注意力池被实现为一个“transformer风格”的多头QKV注意力的单层,其中查询的条件是图像的全局平均池表示。
对于第二种架构,我们用最近引入的Vision Transformer(ViT)。我们只做了一个很小的修改,在Transformer之前向组合的补丁和位置嵌入添加了一个额外的层规范化,并使用了一个略有不同的初始化方案。
文本编码器是Transformer,并进行了拉德福等人(2019)中描述的架构修改。作为基本尺寸,我们使用63 M参数12层512宽的模型,具有8个注意力头。Transformer对具有49152 vocab大小的文本的小写字节对编码(BPE)。为了计算效率,最大序列长度被限制在76。文本序列用[SOS]和[EOS]标记括起来,并且在[EOS]标记处的Transformer的最高层的激活被视为文本的特征表示,其被层归一化,然后线性投影到多模态嵌入空间中。在文本编码器中使用了掩蔽的自我注意力,以保留使用预训练的语言模型进行初始化或添加语言建模作为辅助目标的能力,尽管对这一点的探索将作为未来的工作。
BPE【数据压缩算法的简单形式,数据中最常见的连续字节对被替换成该数据中不存在的字节。BPE的主要目标就是使用最少的token数目来表示一个corpus】
假如我们有数据 aaabdaaabac 需要 encoded(compressed)字节对aa是最长出现的,因为我们用 Z 来代替,Z=aa现在我们得到数据 ZabdZabac这时候,最常出现的字节对是 ab,我们用 Y=ab 来代替得到 ZYdZYac
现在,最常见的字节对是 ZY, 我们用 X=ZY 来进行代替最后我们得到 XdXac,这不能够再被压缩了,因为没有字节对出现多于一次
调整: 对于ResNet图像编码器,我们使用了一个简单的基线,即平均分配额外的计算,以增加模型的宽度,深度和分辨率。对于文本编码器,我们只缩放模型的宽度,使其与计算出的ResNet宽度的增加成比例,而根本不缩放深度,因为我们发现CLIP的性能对文本编码器的容量不太敏感。
5.训练
我们训练了一系列的5个ResNets和3个Vision Transformers。
对于ResNet,我们训练了一个ResNet-50,一个ResNet-101,然后再训练3个,它们遵循EfficientNet风格的模型缩放,并使用大约4倍,16倍和64倍的ResNet-50计算。它们分别表示为RN 50 x4、RN 50 x16和RN 50 x64。
对于Vision Transformers,我们训练了ViT-B/32,ViT-B/16和ViT-L/14。我们对所有模型进行了32个epoch的训练。我们使用Adam优化器(Kingma & Ba,2014),将解耦的权重衰减正则化(Loshchilov & Hutter,2017)应用于所有不是增益或偏差的权重,并使用余弦时间表(Loshchilov & Hutter,2016)衰减学习率【SGDR】。初始超参数是使用网格搜索、随机搜索和手动调整的组合在基线ResNet 50模型上设置的。然后,由于计算限制,超参数被灵活地适应于更大的模型。可学习的温度参数τ被初始化为0.07的等效值,来自(Wu等人,2018年),并修剪,以防止缩放超过100的logits,我们发现有必要防止训练不稳定。我们使用一个非常大的小批量,大小为32768。混合精度(Micikevicius等人,2017)用于加速训练和保存内存。为了保存额外的内存,梯度检查点(Griewank & Walther,2000; Chen等人,2016)、半精度Adam统计(达里瓦尔等人,2020),并使用半精度随机舍入文本编码器权重。嵌入相似度的计算也被分片,单个GPU只计算其本地批次嵌入所需的成对相似度的子集。最大的ResNet模型RN 50 x64在592个V100 GPU上训练了18天,而最大的Vision Transformer在256个V100 GPU上训练了12天。对于ViT-L/14,我们还以更高的336像素分辨率预训练一个额外的时期,以提高与FixRes类似的性能(Touvron等人,2019年)。我们将该模型表示为ViT-L/14@336px。除非另有说明,本文中报告的所有结果均为“CLIP”,我们发现该模型表现最佳。
实验
1.零样本学习(Zero-Shot Transfer)
零样本学习通常是指在图像分类中推广到看不见的对象类别的研究。相反,我们在更广泛的意义上使用这个术语,并**研究对看不见的数据集的泛化。我们将其作为执行看不见的任务的代理,正如Larochelle et al.(2008)的零数据学习论文中所追求的那样。虽然无监督学习领域的许多研究都集中在机器学习系统的表示学习能力上,但我们鼓励研究零次迁移作为衡量机器学习系统任务学习能力的一种方式。**在此视图中,数据集评估特定分布上任务的性能。许多流行的计算机视觉数据集是由研究界创建的,主要是作为指导通用图像分类方法开发的基准,而不是衡量特定任务的性能。零样本转移更多的是对CLIP对分布移动和领域泛化的鲁棒性的评估,而不是对任务泛化的评估。
2.使用CLIP进行零样本传输
CLIP经过预训练,可以预测图像和文本片段是否在其数据集中配对在一起。使用数据集中所有类的名称作为潜在文本配对的集合,并根据CLIP预测最可能的(图像,文本)对。更详细地说,我们首先通过各自的编码器计算图像的特征嵌入和可能文本集的特征嵌入。然后计算这些嵌入的余弦相似性,通过温度参数τ进行缩放,并通过softmax归一化为概率分布。
CLIP预训练的每一步都可以被视为优化计算机视觉数据集的随机创建的代理的性能,该数据集包含每个类1个示例,并且通过自然语言描述定义了32,768个类。
3.与视觉N-GRAM的初步比较
没有使用ImageNet该数据集可用的128万个人群标记的训练示例。完全zero-shot迁移+推理。
4.提示工程和装配(PROMPT ENGINEERING AND ENSEMBLING)
a.PROMPT ENGINEERING
prompt提示,文本引导作用
绝大多数数据集只使用标签的数字ID来注释图像,并包含一个将这些ID映射回其英文名称的文件。
为什么要做prompt engineering和ensembling?
- 1.ploysemy:多义性
ImageNet:crane 起重机 ||||crane 丹顶鹤
Oxford-IIIT Pet:boxer 狗的品种,拳击手 - 2.distribution gap【自我理解就是单纯的每个单词之间的距离差距很大,但是提示工程后面就将这一差距弥补】
在我们的预训练数据集中,与图像配对的文本只是一个单词的情况相对较少【这样抽取出来的特征不是很好】,文本是一个完整的句子,以某种方式描述图像。为了帮助弥合这一分布差距,我们发现使用提示模板“**A photo of a {label}**的照片”。要成为一个好的默认值,有助于指定文本是关于图像的内容。这通常比仅使用标签文本的基线提高性能。例如,仅仅使用这个提示符就可以将ImageNet的准确率提高1.3%。
提示工程举例:提前知道一些信息很重要
- 1.Oxford-IIIT Pets:宠物数据集 a photo of a {label}, a type of pet.
- 2.做OCR任务:找数字,文字任务 ,在想要找的数字上加一个“4”,模型可能更明白这个意思**
**
b.PROMPT ENSEMBLING
多用几次提示模板,最后把结果综合起来【单个默认提示提高了3.5%的性能。综合考虑,快速工程和集成将ImageNet的准确率提高了近5%。】
提示模板
imagenet_templates = [ 'a bad photo of a {}.',
'a photo of many {}.', 'a sculpture of a {}.','a photo of the hard to see {}.',
'a low resolution photo of the {}.','a rendering of a {}.', 'graffiti of a {}.',
'a bad photo of the {}.','a cropped photo of the {}.','a tattoo of a {}.',
'the embroidered {}.', 'a photo of a hard to see {}.', 'a bright photo of a {}.',
'a photo of a clean {}.', 'a photo of a dirty {}.', 'a dark photo of the {}.',
'a drawing of a {}.', 'a photo of my {}.', 'the plastic {}.', 'a photo of the cool {}.', 'a close-up photo of a {}.', 'a black and white photo of the {}.',
'a painting of the {}.', 'a painting of a {}.', 'a pixelated photo of the {}.',
'a sculpture of the {}.', 'a bright photo of the {}.', 'a cropped photo of a {}.',
'a plastic {}.', 'a photo of the dirty {}.', 'a jpeg corrupted photo of a {}.',
'a blurry photo of the {}.', 'a photo of the {}.', 'a good photo of the {}.',
'a rendering of the {}.', 'a {} in a video game.', 'a photo of one {}.',
'a doodle of a {}.', 'a close-up photo of the {}.', 'a photo of a {}.',
'the origami {}.', 'the {} in a video game.', 'a sketch of a {}.',
'a doodle of the {}.', 'a origami {}.', 'a low resolution photo of a {}.',
'the toy {}.', 'a rendition of the {}.', 'a photo of the clean {}.',
'a photo of a large {}.', 'a rendition of a {}.', 'a photo of a nice {}.',
'a photo of a weird {}.', 'a blurry photo of a {}.', 'a cartoon {}.',
'art of a {}.', 'a sketch of the {}.', 'a embroidered {}.', 'a pixelated photo of a {}.', 'itap of the {}.', 'a jpeg corrupted photo of the {}.', 'a good photo of a {}.', 'a plushie {}.', 'a photo of the nice {}.', 'a photo of the small {}.',
'a photo of the weird {}.', 'the cartoon {}.', 'art of the {}.', 'a drawing of the {}.', 'a photo of the large {}.', 'a black and white photo of a {}.', 'the plushie {}.', 'a dark photo of a {}.', 'itap of a {}.', 'graffiti of the {}.', 'a toy {}.', 'itap of my {}.', 'a photo of a cool {}.', 'a photo of a small {}.',
'a tattoo of the {}.', ]
5.Clip零样本学习的性能分析
大范围的在27个数据集上去衡量了clip做zero-shot的迁移的效果;
Linear Probe: 把一个预训练好的模型冻住【作为baseline】,只从里面去抽取特征,然后只训练最后那一层fc分类头层做有监督的分类任务;做Linear prob的微调。普通物体分类的数据集clip就能很好的去做这种zero shot的迁移;
缺点:对于比较难的任务,比较细致的分类数据就做zero-shot就很难【肿瘤分类】,效果不好,提出了few-shot


其中横坐标 每个类别的训练数目
Bit是google的工作 big transfer 主要为迁移学习做的 【few shot学习里面表现最好的工作】对比clip可以看出自然语言的威力,再次证明了用文本做为引导,这种多模态学习是多么强大,后期对于一些难的数据,有一些训练样本还是有用的
linear prob 冻住预训练好的模型去训练分类头
fine-tuning 微调,把整个网络都放开,直接去做端到端的学习 【为每个数据集量身定做超参数】
局限性和缺点:
1.clip在很多数据集上,平均下来能和大多数达成平手;但是没有到不可一世的地步
2.扩大规模,能弥补,但是代价太大;对openai来说现有硬件条件下也完成不了
3.细粒度分类效果不好 给大家推荐一篇文章,解决细粒度匹配问题的《Fine-grained Image-text Matching by Cross-modal Hard Aligning Network》
4.说在很多很多方面他的这个性能就跟瞎猜一样;就像大模型的幻视一样
5.泛化比较好,比较稳定;但是真实数据和训练数据差的比较远,泛化照样很差;
6.提供训练样本效果变差,不提供反而变好