对比语言-图像预训练(CLIP)模型通过最大化文本和视觉模态之间的互信息来学习表示。然而,当代图像-文本数据集中的组合多样性不足限制了CLIP的组合推理能力。作者展示了通过上下文学习生成“硬”负图描述,并利用文本到图像生成器合成相应的负图像以解决问题的方法。作者提出了一种新颖的对比预训练策略,该策略交替利用这些硬负图描述和图像来训练CLIP。
研究表明,当将该方法应用于现有数据集CC3M和CC12M时,可以提高CLIP的组合能力,在相同计算预算下,Sugarcane Crepe基准测试的绝对改进超过9%,并且在零样本图像分类和图像检索方面也有所提升。
1 简介
大规模的多模态模型,如CLIP,通过对比学习从配对数据集中获取共享的语义表示,显著推动了多模态学习的发展。这种方法不仅提高了视觉-语言任务的表现,还在零样本图像分类和分割方面取得了进展。除了视觉-语言任务之外,这些模型的各个组件,如视觉编码器和语言编码器,也是多种多模态架构和生成模型的关键组成部分,例如跨模态大语言模型(MLLMs)和文本到图像(T2I)扩散模型。然而,组合推理仍然是一个挑战,多模态模型往往表现出简单的“词袋”行为,经常无法区分诸如“草中的灯泡”和“灯泡中的草”这样的表达。解决这一挑战对于提升多模态模型及其下游应用至关重要。
对比学习中表示的学习受益于“难负样本”(即,那些难以与 Anchor 点区分的点)。然而,在训练CLIP的每次优化步骤中,图像-文本对是从训练数据集中随机采样的——这种随机采样很少会将模型暴露给高度相似的负样本对。作者假设CLIP的理解能力有限可能正是由于优化目标和从训练数据集中采样带来的这些问题。一个简单的方法是迭代地在每次训练迭代中识别难负样本对。然而,由于现有数据集中的噪声描述和这类样本的稀缺性,先前的工作采用了基于规则的策略生成难负样本描述作为增强手段。例如,对于 Token 为“棕色马”的图像-文本对,可以引入一个额外的负描述“蓝色马”。然而,在先前的工作中,图像数据在训练过程中并没有受到类似的难负样本语义增强;主要是因为相比于句子扰动,在像素 Level 进行语义扰动更为困难。
虽然只有文本的增强策略在一定程度上提高了模型的组合理解能力,但仍引发了有趣的问题:是否可以通过同时为文本和图像模态引入难负样本增强进一步提升视觉语言模型的组合推理能力?
基于此,本文介绍了一种新颖、简单且高效的策略,用于整合难以否定的图像和文本,以增强视觉语言模型的组合理解能力。近年来,文本到图像扩散模型的发展为在图像中执行语义扰动提供了可能性。现有研究已经评估了为文本到图像生成模型创建合成数据的影响。然而,这些生成模型如何能够受益于CLIP-like模型仍较少被探索。
为应对这一挑战,TripletCLIP利用大语言模型的上下文学习能力生成真实的、语义准确的负标题。然后,利用预训练的文本到图像扩散模型创建与这些标题对应的图像,从而丰富任何给定的图像-文本数据集,并促进更有效的推理。最终得到的三元组数据集包括1300万张图像-文本对,用以补充CC3M和CC12M数据集。
作者开发了TripletCLIP,通过有效利用难负例的图文对来优化一个新颖的三元对比损失函数。在CC3M和CC12M数据集以及各类下游任务上进行的广泛实验表明,TripletCLIP 显著提升了组合推理能力。值得注意的是,与LaCLIP和NegCLIP相比,TripletCLIP 在SugarCrepe基准测试中的绝对改进分别超过9%和6%。
TripletCLIP 还在具有相似训练时间概念多样性的场景中提高了零样本分类和图文检索性能。通过对增加训练时间概念多样性的效果进行探讨发现, Baseline 模型在组合任务中的表现尽管随集成知识的增加而提升,但总体而言仍表现不佳,而TripletCLIP 则表现出显著的进步。
总之,作者的主要贡献如下:
-
作者提出了一种新颖的CLIP预训练策略,该策略结合了hard negative文本和图像以及三元对比学习,以增强组合性。
-
TripletCLIP 在下游任务中表现持续提升,证明了合成难负样本图像-文本配对的有效性。·作者在损失函数选择、模态特定预训练、概念多样性的增加以及筛选高质量Triplet数据方面的广泛消融实验,为作者提供了关于难负样本图像-文本配对在CLIP预训练中应用的深刻见解。
-
最终,作者提出了一条令人期待的研究途径,即合成对比数据集显著提升了推理能力,并由此创建并发布了Triplet数据集——一个包含1300万组对比图像文本的数据集。
2 Method
本节首先概述了CLIP和NegCLIP所使用的对比学习算法。随后,作者描述了使用大语言模型和文本到图像(T2I)模型生成硬负样本的合成数据生成Pipeline,并介绍了 triplet 对比学习,这是 TripletCLIP 的基础。图1提供了与早期工作的高层比较。
2.1 Preliminaries
自监督对比学习的目标是在处理单一模态的输入时,使用特征提取器对输入及其增强进行编码,并最小化两个编码之间的InfoNCE损失。CLIP设计用于多模态设置(例如,视觉和语言输入),这意味着需要使用两个编码器(每个模态一个)。
令和分别表示两种模态,并且训练数据集,其中 且 。目标是通过最小化两支模态特定编码器 和 提取的归一化特征之间的 InfoNCE 损失来训练这两个编码器。
其中, 表示余弦相似性, 是可训练的温度参数。为了简化,作者在 InfoNCE 损失中没有显示特征规范化。类似地,可以定义 训练损失。CLIP 的综合训练目标给定为:。通过最小化该训练损失,两个编码器能够学习最大化两种模态之间的互信息的表示。
NegCLIP 引入了合成增强方法,通过执行语义反向扰动来生成“难”负样本描述词 ,这些描述词是以参考描述词 为基础的。因此,基于单一模态特定难负样本增强的训练损失可以表示为:
NegCLIP在图像模态和文本模态中的总损失由如下公式给出:
在式2中,负样本仅针对语言模态生成,因为可以在语义层面进行扰动。现有方法尚未探索在图像模态中通过扰动实现语义层面的改变来创建困难负样本。在本研究中,作者展示了如何通过利用文本到图像扩散模型的语义语言对接和照片写实性,在图像模态中生成困难负样本。作者的新颖困难负样本生成Pipeline和改进的训练目标旨在弥合文献中识别的重要差距。
2.2 Triplet Data: 图文Hard Negative样本数据增强
为了生成高质量的困难负例图像-文本对,作者采用两步程序。第一步是从 GT 正样本文本生成困难负例文本描述;第二步则是根据这些困难负例文本描述生成相应的图像作为负例图像。现有的网络抓取数据集中的AltText文本描述非常嘈杂,导致困难负例的生成质量不高且不可靠。因此,作者在此基础上构建了LaCLIP工作,首先使用大语言模型从现有数据中重新编写文本描述,使其在语义上更为准确。图2展示了正样本及其相应困难负例图像-文本对的一些示例。
生成难以置信的负句描述。现有的研究通过随机交换、替换和添加动作来在名词、属性和关系之间操作正句描述中的内容。这种方法产生的结果往往是无意义且语法错误的,例如“一个人骑在四个斜坡上”,这阻碍了负面图像的生成,最终导致在更难的基准测试上的性能下降。因此,作者利用大语言模型的上下文学习能力来生成负句描述。选择大语言模型是一个简单的任务,只要它们能够提供难以置信的负句描述即可。
作者发现 Mistral-7B-Instruct v0.2 在作者的目标上表现得较为出色,并且其输出易于解析。作者分批次生成负句描述以加快生成过程。生成 13 百万条负句描述仅需 3 天时间,在 8 块 RTX A6000 显卡上运行。与传统的 NegCLIP 样式的句描述生成方法相比(见表4 的 degCLIP++ 结果),作者发现单个高质量的难以置信的负句描述就足以提高性能。作者在附录中提供了各种类型的负句描述示例。
具体来说,作者将以下 Prompt 提供给大语言模型:
输入:一只鸟在树上。
输出:一条鱼在水中。
生成负样本图像。通常,图像中的语义扰动需要使用图像编辑工具,这耗时且无法大规模扩展。作者希望为此类负描述词提供更多 GT 参考。因此,作者 Proposal 利用上一阶段生成的负描述词直接生成相应的参考图像用于预训练。由于上一阶段生成的负描述词在语义上是正确的,图像生成模型能够更精确地合成相应的图像。作者采用预训练的文本到图像扩散模型来生成这些相应的图像。具体来说,作者选择了SDXL-turbo,因为它的生成速度相对较快。经过各种推理时间优化后,作者可以在2天内使用30块v100 GPU生成1300万张负样本图像。
分析Triplet数据的难点。假设作者有来自Triplet数据的正负图像-文本配对,分别为和。如果数据确实是难以区分的负样本,现有的预训练模型应该难以找到正确的图像-文本配对(即,)。借鉴winoground的方法,作者测量文本得分、图像得分和组得分来评估流行的预训练CLIP模型。
表1显示,即使是在数十亿数据上训练的CLIP模型,在Triplet数据上的性能也远低于人类水平,而Triplet数据比winoground更加容易处理。重要的是,生成难以区分的负样本的目标并不是在训练过程中增加新的独特概念的多样性,而是增加语义层面的多样性。因此,作者测量了CC3M与Triplet数据中特有的wordnet同义词集。
从表2可以看出,Triplet数据并没有引入新的概念,而是利用现有概念来提供语义上不同的负样本。总之,Triplet数据包含了当前模型难以区分的较为困难的图像-文本配对。
2.3 TripletCLIP
先前的研究已经证明了使用硬负样本描述词对CLIP模型的组合能力具有价值,通过作为关键训练目标(公式2)。然而,单独使用负图像能否带来提升仍然是个未知数。作者进行了模态特定的消融实验,并在表3中报告了在多种基准测试上的平均性能(作者在第4节中提供了更多关于实验的细节)。
作者的研究发现,单独的“硬”负样本描述词和图像都能够在对比LaCLIP时提升性能。然而,初步的经验表明,仅通过最小化来训练CLIP模型上的硬负图像并不能显著提高组合能力(参见表3)。作者认为负图像包含低级信息,使得使用它们作为负样本难以训练模型。
为了与作者的初始动机相一致并利用这一重要见解,作者提出利用负图像来正则化负描述词的效果并稳定预训练过程。因此,为了更有效地利用这些前一阶段的硬负图像-文本三元组,作者建议重点关注两个三元组和,从而最终的三元组对比学习训练目标定义如下:
直观地讲,第二项引入了一种额外的监督形式,即负样本图像与对应的负描述词之间的距离比正描述词更近。这使得系统能够理解,如果正样本图像不表示“蓝色马”这一负描述词所对应的内容,那么这个描述词究竟在表达什么?
通过在三元组CLIP中交替使用这些困难的负样本图像-文本对,作者改进了组成能力和图像-文本理解能力(见表3)。作者在附录中提供了伪代码,并在补充材料中提供了代码。这种简单而有效的策略提升了CLIP的训练效果,提供了一个可扩展的框架以提高整体性能。
3 实验与结果
3.1 实验设置
预训练数据集。作者使用了CC3M和CC12M数据集,分别包含260万和860万张图像-文本对。借鉴LaCLIP的方法,作者用大语言模型重写的描述替换原始的噪声较多的描述。对于NegCLIP,作者为每张正面的图像-文本对引入四个负描述,集中在语义反转扰动的四大类别:属性、关系、目标和动作。这分别生成了约1040万和3440万条纯文本增强数据。
为了训练三元组CLIP,作者为两个数据集生成了增强数据(三元组数据),以有效集成硬负样本。作者为每张图像-文本对生成一个增强数据,分别为CC3M和CC12M增加了260万和860万条图像-文本增强配对数据。最后,作者在CC3M数据集上进行了所有消融实验。
Baseline 模型。作者从零开始训练LaCLIP、带有真实负样的LaCLIP(LaCLIP+HN)以及Neg CLIP,以确保比较的一致性和公平性。由于NegCLIP的基于规则的数据增强方式与一些组合基准测试非常相似,因此作者引入了degCLIP++作为改进的 Baseline 。degCLIP++结合了使用大语言模型从三元组数据生成的负样描述词,这相比标准NegCLIP增强了语言理解能力。
实施细节。作者的实验采用ViT-B/32模型架构。为了确保公平比较,作者使用相同的超参数重新训练所有 Baseline 模型。由于NegCLIP和Triplet Data的整体训练数据量超过了 Baseline 数据集的量,作者通过调整所有模型的迭代次数来使训练过程中看到的图像-文本对数量相等,类似于DataComp策略中的做法。批量大小固定为1024,使用AdamW优化器,并设定最大学习率为0.005,采用余弦退化方法。
CC3M的数据训练持续约10万次迭代,而CC12M的数据训练持续约20万次迭代。所有模型均在单个A100(80GB)GPU上使用bfloat16精度进行训练。最终的训练相关实验和消融实验预计耗时大约1200个A100 GPU小时。作者将增加数据和模型规模的实验留作未来的工作,因为在学术预算范围内进一步扩展变得不可行。
下游数据集。本研究的主要目标是提高CLIP模型的组合能力。作者主要使用具有挑战性的SugarCrepe组合基准评估TripletCLIP和 Baseline 模型,在附录中还提供了对更早基准的额外性能评估。此外,模型还在Flickr30k和MSCOCO数据集上进行了图像-文本检索任务的测试以实现更广泛的评估。零样本分类性能在约18个不同的数据集上进行了评估。评估遵从CLIP-Benchmark或官方基准实现所规定的方法学。
3.2 成分推理
作者在SugarCrepe基准上全面分析了模型的组合理解能力,详情见表4。值得注意的是,在CC12M/CC3M训练数据集的所有子类别中,TripletCLIP始终优于所有 Baseline 模型。
具体而言,在CC12M数据集上,TripletCLIP分别超越LaCLIP和NegCLIP达10.91%/9.4%和6.45%/6.31%;在CC3M数据集上则分别超越两者达10.91%/9.4%和6.31%/6.31%。作者改进后的 Baseline 模型也显示出相对于标准NegCLIP的改进,突显了大语言模型生成负例的优势。不过,TripletCLIP进一步提升了性能,强调了难以匹配的图像-文本配对在理解中的关键作用,而不仅仅是文本。
附录中对较老的组合基准(Valse、Cola 和 Winoground)进行的额外比较显示,TripletCLIP的表现依然稳健。表4还对比了使用DataComp方法训练的模型,这种方法涉及更多的参数和训练数据,展示了TripletCLIP能够达到与在10亿图像-文本对上训练的ViT-B/16模型相当的性能。
3.3 Zero-shot 评价
图像-文本检索。在表5中,作者总结了各类模型在MSCOCO和Flickr30k数据集上的文本到图像(T2I)和图像到文本(I2T)检索任务的表现,其中作者报告了
排名。值得注意的是,TripletCLIP 在 CC3M 和 CC12M 数据集上的 I2T 和 T2I 任务中分别显著优于 Baseline 模型 8%/10% 和 8%/12.5%。有趣的是,虽然 LaCLIP+HN 的表现优于 NegCLIP,但 TripletCLIP 却表现得更好。
零样本分类。表5还展示了在包括ImageNetlk在内的18个标准数据集上的平均零样本分类性能。TripletCLIP相较于LaCLIP在Top-1精度上平均提高了3%,在Top-5精度上平均提高了5.7%。如同检索性能一样,LaCLIP+HN超过了NegCLIP,但TripletCLIP仍然保持最高的性能。具体的数据集结果详见附录。
3.4 Finetuning 性能
在本文中,作者专注于基于预训练的实验,因为这种方式能够提供更大的灵活性以学习更好的表示。为了补充这一点,作者还进行了额外的微调实验,使用与 Baseline (未使用LoRA)类似的超参数,并将其与各种公开可用的 Baseline 进行了比较。
根据表7中的报告,TripletCLIP 在组合性和性能上均优于几乎所有 Baseline 。
此外,检索和零样本分类性能下降(表16)的现象被归因于视觉编码器的局限性,这突显了现有预训练视觉编码器在捕捉语义表示方面的挑战。这一现象在表8中得到了进一步的验证。
3.5 Ablations
高质量筛选数据集能否提升性能?鉴于Triplet数据中的负图像使用SDXL-turbo生成,这些图像可能并不总是精确的。受DataComp启发,作者采用预训练的CLIP-L/14过滤图像-文本对,选择每种配对(正样本和负样本)中平均相似度最高的个体(即,)。从Triplet数据中选择了排名前1.4M的正图像-文本对及其对应的负样本。
表6详细比较了TripletCLIP与DataComp预训练模型的表现。令人惊讶的是,即使在没有筛选数据的情况下,TripletCLIP已经超过了 Baseline ;而使用筛选过的数据集,尽管训练的数据集规模仅为原来的一半,TripletCLIP++仍然显示出进一步的性能提升。这突显了精心选择的Triplet数据对提升性能的重要作用。
哪种特定模态的编码器在提高组合性上起着关键作用?为了回答这个问题,作者设计了一项类似于LiT的研究,即将预训练的CLIP视觉编码器或文本编码器冻结,而从头开始训练另一个模态的特定编码器。作者在CC3M数据集上观察了LaCLIP和TripletCLIP的表现,结果见表8。冻结视觉模型对TripletCLIP在SugarCrepe上的性能没有任何提升。然而,当视觉编码器被积极训练时,性能得到了显著提高,这表明视觉模态可能是组合性中的 Bottleneck 。值得注意的是,在所有设置下,TripletCLIP的性能都优于LaCLIP,进一步证明了它对不同预训练方法的鲁棒性。
概念覆盖分析。提高零样本迁移学习任务(如检索)的性能涉及两个关键因素:在训练中增加更多的概念多样性和增强图像-文本对齐/组合性。作者基于独特的WordNet同义词集合,创建了CC12M数据的不同子集,以逐步增加概念多样性。
具体来说,LaCLIP的训练使用了3M、4M、5M和6M的数据子集,而TripletCLIP的训练仅使用这些数据的一半作为正样本对,其余部分则作为相应的增强数据。在SugarCrepe、检索任务以及ImageNet1k(参见图3)上的评估结果显示,TripletCLIP不仅在较低的概念覆盖率下仍能提升SugarCrepe的性能,而且在检索任务中的表现也显著优于类似的概念覆盖率水平,甚至在完全没有需要组合性的零样本分类任务中也能达到与LaCLIP相当的表现。这进一步支持了作者的观点,即从两个模态中引入硬负例显著提升了CLIP的组合理解能力,而 Baseline 即使在增加更多概念多样性的情况下也难以做到这一点。
如果使用三元组数据进行大规模组合评估会怎样?作者采用Winoground风格的方法在CC3M数据集的50,000个随机子集上评估了预训练的CC12M模型。
如表9所示,TripletCLIP相比 Baseline 模型显著提高了性能。然而,作者部分归因于这种改进来自于从数据中学习到的一些虚假相关性。同时,作者也注意到模型还未完全收敛,这表明模型对这些虚假相关性的过拟合风险较低。
如何学习大模型 AI ?
由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。
但是具体到个人,只能说是:
“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
第一阶段(10天):初阶应用
该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。
- 大模型 AI 能干什么?
- 大模型是怎样获得「智能」的?
- 用好 AI 的核心心法
- 大模型应用业务架构
- 大模型应用技术架构
- 代码示例:向 GPT-3.5 灌入新知识
- 提示工程的意义和核心思想
- Prompt 典型构成
- 指令调优方法论
- 思维链和思维树
- Prompt 攻击和防范
- …
第二阶段(30天):高阶应用
该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。
- 为什么要做 RAG
- 搭建一个简单的 ChatPDF
- 检索的基础概念
- 什么是向量表示(Embeddings)
- 向量数据库与向量检索
- 基于向量检索的 RAG
- 搭建 RAG 系统的扩展知识
- 混合检索与 RAG-Fusion 简介
- 向量模型本地部署
- …
第三阶段(30天):模型训练
恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。
到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?
- 为什么要做 RAG
- 什么是模型
- 什么是模型训练
- 求解器 & 损失函数简介
- 小实验2:手写一个简单的神经网络并训练它
- 什么是训练/预训练/微调/轻量化微调
- Transformer结构简介
- 轻量化微调
- 实验数据集的构建
- …
第四阶段(20天):商业闭环
对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。
- 硬件选型
- 带你了解全球大模型
- 使用国产大模型服务
- 搭建 OpenAI 代理
- 热身:基于阿里云 PAI 部署 Stable Diffusion
- 在本地计算机运行大模型
- 大模型的私有化部署
- 基于 vLLM 部署大模型
- 案例:如何优雅地在阿里云私有部署开源大模型
- 部署一套开源 LLM 项目
- 内容安全
- 互联网信息服务算法备案
- …
学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。
如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。