首页IT科技critical论文(CLIP论文详解)

critical论文(CLIP论文详解)

时间2025-07-29 02:45:31分类IT科技浏览3822
导读:CLIP论文详解 – 潘登同学的深度学习笔记 前言...

CLIP论文详解 – 潘登同学的深度学习笔记

前言

CLIP算是在跨模态训练无监督中的开创性工作              ,作者在开头梳理了现在vision上的训练方式                   ,从有监督的训练        ,到弱监督训练           ,再到最终的无监督训练             。这样训练的好处在于可以避免的有监督的 categorical label的限制                  ,具有zero-shot性质           ,极大的提升了模型的实用性能                      。

zero-shot:是指零样本学习        ,在别的数据集上学习好了                   ,直接迁移做分类;

这篇文章中作者提到早在2017年之后就陆续有工作提出和本文类似的想法              ,但是他们的数据大小都太小了    ,导致没有很好的结果      。作者单独收集了一份含有4亿份数据的大数据集                    ,才得以得到很好的效果         。这种现象最近好像在机器学习领域越来越突出                 ,力大砖飞,这无疑降低了benchmark的可信性                 ,而且增加了小工作组的压力                      。

此外作者提到prompt engineering and ensembling也是一个值得研究的方向                    ,也就是生成的template如果能够结合对应的dataset的特征    ,相当于给予模型额外的信息;

为什么CLIP要采用对比学习的方法

OpenAI是一家从来不愁计算资源的公司              ,他们喜欢将一切都gpt化(就是做生成式模型); 但是以往的工作表明(ResNeXt101-32x48d, Noisy Student EfficientNet-L2),训练资源往往需要很多                   ,何况这些都只是在ImageNet上的结果        ,只是1000类的分类任务           ,而CLIP要做的是开发世界的视觉识别任务                  ,所以训练的效率对于自监督的模型至关重要; 而如果任务改为给定一张图片去预测一个文本(或者给定一个文本去预测一张图片)           ,那么训练效率将会非常低下(因为一个图片可能对应很多种说法        ,一个文本也对应着很多种场景); 所以与其做默写古诗词                   ,不如做选择题!(只要判断哪一个文本与图片配对即可); 通过从预测任务改为只预测某个单词到只选出配对的答案              ,模型的训练效率一下提升了4倍;

整体架构

作者团队收集的4亿的图片文本对作为训练样本    ,称之为WIT(因为以往有的数据集要么是规模太小, MS-COCO                    ,Visual Genome                 ,要么是数据标注质量太差YFCC100M); 在一个batch中输入32768个图片文本对,

(

I

1

,

T

1

)

(I_1,T_1)

(I1,T1)
,则是第一个图像文本对                 ,模型的目的是使这两个特征尽量相似                    ,而与别的特征尽量远离;

Pre-train

训练阶段

一个图片经过Image_encoder得到特征

I

f

I_f

If
,一个文本经过text_encoder得到特征

T

f

T_f

Tf
; 两个特征分别经过不同的FC层(目的是将单模态的特征转化为多模态    ,因为图片的特征可能本身就与文本的不一致              ,需要转换                   ,但是这里没接激活函数        ,因为作者发现在多模态下接不接都一样); 再做一次L2归一化; 计算余弦相似度           ,得到logits; logits与GT计算交叉熵目标函数; 而这里的GT就是一个单位阵(因为目标是配对样本之间相似性最强为1                  ,而其他为0); 最后将图片的loss与文本的loss加起来求平均即可;

主干模型

在文本方面就是Transformer; 在图像方面选择了5中ResNets(ResNet-50,ResNet-101,3个EfficientNet的变体           ,ResNet-50x4,ResNet-50x16,ResNet-50x64)和三种VIT(分贝是VIT-B/32,VIT-B/16,VIT-L/14)

Zero-shot

CLIP 文章的核心 = Zero-shot Transfer

作者研究迁移学习的动机:

之前自监督or无监督的方法        ,主要研究 frature 学习的能力                   ,model的目标是学习泛化性能好的特征              ,虽然学习到good-feature    ,但down-owrk中                    ,还是需要有标签数据做微调         。作者想仅训练一个model                 ,在down-work中不再微调      。

推理阶段

将要做的分类以填空的形式填进一句话中,以ImageNet为例就是1000句话输入Text Encoder得到输出;

将要识别的图片经过Image Encoder得到图片输出                 ,比较文本的输出与图片的输出                    ,选择最相似的那句话就是图片的类别;

与之前Zero-shot模型的对比

Prompt 方法在什么时候用

Prompt是提示的意思    ,对model进行微调和直接做推理时有效;

为什么要用 prompt engineering and ensembling

由于一个word 具有多义性              ,图片和文字匹配容易出错                   ,所以作者将word放在语境中        ,来提高匹配度; Prompt不仅能做匹配; 一旦加入这个prompt engineering and ensembling           ,准确度上升了1.3%;

最后在CLIP中                  ,总共用了80个prompt template之多;

实验

大范围数据集结果

做了27个数据集的分类任务           ,baseline是ResNet-50        ,ResNet-50是有监督模型在各个数据集上训练好的                   , 然后两个模型在其他数据集上zero-shot;

在大多数分类任务              ,给车             、食物等做分类的问题上CLIP都表现的很好    , 但是在DTD这种纹理进行分类或CLEVRCounts给物体计数的任务                    ,对于CLIP无监督模型来说就很难了;

所以作者认为在这些更难的数据集做few-shot可能比zero-shot更好;

few-shot与zero-shot的对比

few-shot也是将back-blone冻住                 ,训练分类头;

横坐标是指在每个类别中选出了几个训练样本,纵坐标就是模型的准确率了(在20个数据集上的平均结果                 ,因为有7个数据集中有些训练样本不足16个);

因为别的模型不是多模态的                    ,所以只能从1-shot开始; 其中    ,BiT-M是google中bit transfer的一个模型              ,专门为迁移学习量身定做的                   ,而zero-shot的CLIP直接与few-shot的BiT-M打成平手; 而CLIP可以从zero-shot开始; 可以看出当学习样本很少的时候CLIPfew-shot的表现还不如zero-shot;

Representation Learning

为了证明Pre-Train的成功        ,CLIP将预训练好的模型在下游任务中做了Linear probe           ,就是模型主体冻住                  ,只调Linear分类头           ,因为这样不用太多的调参        ,也能证明模型的特征学的好不好;

其中横坐标是一次前向过程的计算量                   ,纵坐标是分类准确度; 可以看出CLIP是在计算量与准确度方面trade-off做的最好的一个模型;

模型的泛化性

当数据有distribution shift的时候              ,模型的表现如何    ,这是CLIP最惊艳的结果:

可以看出CLIP在数据分布的偏移样本上                    ,远远超过ResNet101                 ,而且结果保持地依旧稳健;

与人进行对比

将CLIP与人进行zero-shot,one-shot                 ,two-shot的对比                    ,分类的物体是37种狗和猫的图片;

可以看出人在zero-shot与one-shot的差别是很大的    ,表明人学习的能力是很强的; 但是人的one-shot与two-shot区别不大              ,说明了人在没有先验知识                   ,只是通过样本学习        ,不一定能学的更好;

除此之外           ,作者还将这些类的分类结果列了出来

可以看出在人判断准确率较高的类别上                  ,机器的准确率也高; 在人判断不准的类别上           ,机器判断也不准; 说明人与机器学到的数据分布很接近;

局限性和不足

平均来看        ,CLIIP可以和机械模型(ResNet-50(在ImageNet上训练))持平                   , 若继续增加数据集和model规模              ,CLIP性能可以继续提高    ,但是代价很大(需提高计算和数据的高效性;但与Noisy Student的88还是有很大差距; zreo-shot结果并不好 在细分类数据集上                    ,CLIP效果低于(有监督训练)ResNet-50(baseline网络); CLIP无法处理抽象概念,如数数任务                 ,或者判断一个监控画面是正常还是异常; 在很多领域,CLIP性能和瞎猜差不多; 若数据集中的data 已经 out-of-distribution,那么CLIP-model泛化照样差;(在MNIST数据集上                 ,CLIP准确率仅有88%; 因为作者收集的数据集有4亿个样本                    ,但没有和MINIS长得像的    ,所以MINIS数据集对于CLIP来说就是out-of-distribution数据集); CLIP这个模型没什么大不了的              ,和普通的DL-model差不多                   ,都很脆弱                      。 CLIP不能高效利用数据 训练了epoch = 32        ,每个epoch过4亿个图片           ,跑了128亿张图片                  ,如果一秒一张需要405年; 数据用量多           ,作者希望减少数据用量        ,(三种方案: 数据增强                   ,自监督              ,伪标签) 用所有数据进行训练    ,调整很多次模型结构和超参数                    ,才得出好结果                 ,且每次用ImageNet数据集作为指导             。所以CLIP并非做出真正的zero-shot工作   。(选择偏差) 爬取图片未清洗和审查(有社会偏见,OpenAI不开源经典借口) 语言无法描述太复杂的概念

作者想要:

把一切都GPT(生成式模型)化                 ,因为CLIP还是根据给定的1000个选项去选择到底是那个类比                    ,作者更像直接一张图片    ,然后生成对应的标题                     。但受限于计算资源              ,作者没法做成               ” 自动生成模型 “ 的网络                 。(以后的DALL)
声明:本站所有文章                   ,如无特殊说明或标注        ,均为本站原创发布。任何个人或组织           ,在未征得本站同意时                  ,禁止复制                      、盗用      、采集         、发布本站内容到任何网站                      、书籍等各类媒体平台                 。如若本站内容侵犯了原著者的合法权益           ,可联系我们进行处理                     。

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
百度安国吧(安国最新信息) css3选择器优先级顺序(【H5/CSS】简单了解选择器的优先级)