【大模型】萌新也能一文弄懂!! -- 连接图像文本的大模型CLIP的前世今生【三】

本文详细介绍了CLIP大模型的训练过程,包括数据来源、训练资源、损失函数,展示了其强大的拟合能力和鲁棒性,并探讨了未来的发展方向,如训练更大模型解决AIGC问题,以及中文版Chinese-CLIP的出现和在其他领域的应用.
摘要由CSDN通过智能技术生成

上文: ​​​​​​【大模型】萌新也能一文弄懂!! -- 连接图像文本的大模型CLIP的前世今生【二】

因工作比较忙,终于有空写完这一篇最后的 CLIP系列分享 博文, 这个坑没有也在春节前填完。 这一CLIP系列 只是单纯的科普,让大家能简明扼要的明白CLIP的原理&前世今生。萌新也能一文弄懂。

更复杂的细节, 以及 后续的研究发展,会以其他博文的形式展示给大家, 大家一同进步学习。

下面是 CLIP [Contrastive Language-Image Pretraining]- 多模态大模型介绍分享的 第二篇博文。

         【1】CLIP (本文)  大模型的综述 &  产生的时代背景。

          【2】CLIP 模型的结构,以及 相关的前置知识 (Transformer & Attention & ViT等)

          【3】CLIP 的效果 & 展望,以及相关的一些衍生和学术工作等。

上篇博文我们已经了解了 CLIP 的 具体结构,了解了 CLIP 是一个双塔模型,由 文本塔的 Bert,和 图片塔的 ViT 构成。 原理都是基于传统的 Transformer 做到。

这篇论文将大概介绍一下CLIP的实际训练方法 & 效果。 以及未来的展望,和部分后续工作,方便大家去了解。

1. CLIP 训练

我们现在已经知道了 CLIP 的结构 还有它的工作原理, 现在来看看 OpenAI 的人员是 怎么进行训练和调参的。

1.1 训练数据

用于CLIP 训练的数据如下: 

数据名称

数据量

介绍

MS-COCO

10万

Microsoft Common Objects in Context, 之前的分享有具体介绍【大模型】萌新也能一文弄懂!! -- 连接图像文本的大模型CLIP的前世今生【一】-CSDN博客

YFCC

1200万

Yahoo Flickr Creative Commons 100 Million,   之前的分享有具体介绍

【大模型】萌新也能一文弄懂!! -- 连接图像文本的大模型CLIP的前世今生【一】-CSDN博客

WIT

4亿

Web Inventory of Text, 论文原创OpenAI从自互联网上收集的大量文本数据,涵盖了各种不同的主题和领域。它是一个广泛的、多样化的文本数据集,对于训练一个能够理解各种类型文本的模型非常重要

[其中YFCC 虽然 有 1亿的数据量, 但是由于图片是来自于 Flickr 图像分享网站,爬取的数据。大量的图文对中 文本是图片的分辨率 以及 图片的拍摄设备。对于实际训练没有任何意义。因此实际清洗完之后只有1200万数据可以用了]  

1.2 训练资源

OpenAI 团队在训练CLIP时也是耗费了很多的资源, 在训练 图片塔为ResNet的时候, 在 592块 V100 上,训练了 18天。而在 图片塔是 ViT-L/14 的时候。训练则在 256块 V100 上跑了 12天。 

OpenAI 在训练 & 耗时上的统计,虽然消耗也是普通公司难以承受的住的,但是相对 GPT 这种大模型来说,已经大为缩短了。

1.3 损失函数

最终 CLIP 利用 交叉熵的形式 来计算损失函数。 在 文本对经过 图像塔 和 文本塔后, 对最终的损失函数进行 加权-平均

官方伪代码,整体CLIP思路 并没有绕开 类似 检索 DSSM & DPAM 等任务的 双塔模型结构,只是因为是多模态空间下 做了一个 空间维度映射 归一化后再计算相似度分数。

# extract feature representations of each modality 
I_f = image_encoder(I) #[n, d_i]     //  原始图片 映射为 图片向量
T_f = text_encoder(T) #[n, d_t]      //  原始文本 映射为 文本向量

# joint multimodal embedding [n, d_e] 
I_e = l2_normalize(np.dot(I_f, W_i), axis=1)  // 论文原创,因是多模态任务,作者认为图片&文本
T_e = l2_normalize(np.dot(T_f, W_t), axis=1)  // 的向量需要映射到共同的多维空间,能更好进行对
                                              // 比更好的 对比学习
# scaled pairwise cosine similarities [n, n] 
logits = np.dot(I_e, T_e.T) * np.exp(t)       //  计算相似度分数,温度系数加入让置信度可控[trick]

# symmetric loss function 
labels = np.arange(n) 
loss_i = cross_entropy_loss(logits, labels, axis=0) 
loss_t = cross_entropy_loss(logits, labels, axis=1) 
loss = (loss_i + loss_t)/2                                // 损失函数计算                                                                                     

2. CLIP 效果

最终的 CLIP 模型 也不负众望, 在各种维度上来带来了 令人吃惊的效果。 

2.1 强大的拟合能力[Linear Probe]

首先在基础的数据集中, OpenAI 在 12个 数据集中对 CLIP的效果进行测试,以达到最 Solid 的结论:

 

 CLIP 在12个标准数据集上,Linear Probe 的效果 [Linear Probe 是指冻结本身模型参数,只在最后图片 & 文本的输出头种 连接一个全连接层 ,去输出 和 数据集对应的类别的值, 以达到 标签分类的效果], 可以看到 不管是 CLIP-ViT 还是 CLIP-ResNet, CLIP 的效果都要大大好于目前 多模态学术界 各种 SOTA 模型.

2.1 强大的鲁棒性,小样本学习[Zero Shot]

其次 CLIP 对于图片识别的 高度泛化性,极强的鲁棒性。 ResNet 以 ImageNet 为例 ,具体证明了这一件事, 且抽象出 CLIP 类似于大模型, 独有的能力: 小样本学习 [Zero Shot] ,  指代 对于一个全新的数据集, CLIP 完全不对这部分数据集进行训练 & 微调, 直接 利用原始 CLIP 在这个数据集中进行预测和推理。   

由于传统模型[ResNet101] 只是学习了 ImageNet 中 标准的 香蕉造型。 对于其他数据集风格不同的香蕉 [手绘&卡通化],准确率大大降低。 然而 CLIP 却有着极强的鲁棒性。在零样本学习中, 即使 香蕉的风格千奇百怪. CLIP 都能很好的 抽象出 其为香蕉的本质。 获得 令人惊叹的鲁棒性。

同时 OpenAI 为了延续于在GPT 大模型思路中经典的 与人比较, 他们还做了一个非常有趣儿的实验,证明了 CLIP 获得了 与人相同的能力: 在识别图片 & 物体的多模态领域的 广域知识 (Meta Knowledge):

 论文还列了经典的用 人类作为对比的实验。 让人类在 零样本 和 小样本学习,去 学习预测 狗狗品种的 实验[拉布拉多 ;吉娃娃...] 结果发现 人类本身 也会在 小样本学习中 明显好于 零样本。 这个与 模型本身性质一样。 实验说明 人类 会基于自己的认知经验,快速领悟到类别的特点,然后服务于 后续的识别中。 CLIP 亦学习到了这种 通识的认知经验, 且与人类做的一样好。

 3. CLIP 展望 & 后续工作:

3.1 训练更大模型, 解决 AIGC 问题

由于之前博客所提到的客观事实一样:  多模态领域由于 [1] 高质量图文数据少,[2] 图片 - 文本的映射难度非常高。  的客观原因。  OpenAI只采用了 对比式学习 这种 折衷权衡的方法,与 GPT, LLAMA 这种 生成式 的大模型相比, 她的 经验性 和 天花板 是远远没有达到。

模型选型

总参数量

文本侧

参数量

图像侧

参数量

CLIP

7700万

RBT3

3900万

ResNet50

3800万

1.88 亿

RoBerta

1.02 亿

ViT-B/16

1.88 亿

4.06 亿

RoBerta

1.02 亿

ViT-L/14

4.06 亿

4.07 亿

RoBerta

1.02 亿

ViT-L/14-336px

4.70 亿

GPT

1.17 亿

GPT - 1

NONE

15 亿

GPT - 2

1750 亿

GPT - 3

18000 亿 [预估]

GPT - 4

官方论文对于 CLIP 的参数量并没有在论文中单独指明,这边以 Chinese-CLIP 提供的数据为例, 上表中之列出来和论文所提及的 相关模型选型。

虽然都称之为 大模型。 但 多模态CLIP这条分支,在参数和训练规模落后生成式大模型 两代。 CLIP 的参数量 之维持在 GPT-1 的规模上,对于目前大流行的 GPT-3, 模型参数量 只有后者约 1/40 . 预估的 GPT-4 模型的 1/400。 训练的数据量也较少。

因此基于 多模态的 AIGC, 生成式学习的工作,仍然是重点的发展工作。[后续也衍生出了例如 BLIP & Stable- Diffusion 等 文转图 & 图转文的工作] ,

BLIP 和 Stable-Diffusion 的实现 & 细节后续会呈现给大家

3.2 因地制宜, 训练适合的中文CLIP模型

由于 OpenAI 的CLIP 数据来源是 英文网页 & Flickr 图像等, 因此其对 英文语料的 拟合能力会更好一些, 虽然说 文本塔 [Bert] 对于 语言的 拟合能力 已经非常强了, 但是对于我们实际使用的语言: 中文, 仍然有很大的空间提升。

因此 阿里达摩院 也因地制宜, 以中文语料为基础, 优化了部分CLIP 的训练逻辑, 发布了 其基于中文的 大模型: Chinese-CLIP。 在中文数据集中获得了令人难以置信的效果, 

他们的工作也开源于 GitHub 中:  https://github.com/OFA-Sys/Chinese-CLIP

Chinese-CLIP 的实际细节 & 实现 后续会呈现给大家

3.3 各种其他领域的发展

除此之外, 由于 CLIP 的 极强泛化性, 因此其进行稍加修改就能在其他领域上带来很不错的效果:

[1] 对于 视频检索领域, 基于 CLIP 的修改模型: CLIP4CLIP。 被提出来,并且在视频检索领域中 带来了令人吃惊的效果。

[2] 对于 刚刚提到的 图片描述领域, 基于CLIP 的原理,将 图片塔稍作修改,从编码器 修改为添置 解码器 Decoder,并且与 文本塔相关。 另一个 效果经验的工作: BLIP 便产生, 将CLIP 的思想 扩展到 图片描绘 领域中。

[3] CLIP 优化上,对于 Zero-Shot 领域, 有大量的基于 CLIP 的 prompt 工程 工作被陆陆续续提出。 其中最引人注目的为 自适应Prompt学习: CoOp & CoCoOp, 只要每一个标签 最多只要 16个数据, 极少量的资源,便可以自适应地 学习到 最好地 Prompt 词。  在指定数据集中 带来比 CLIP 更好地效果。

  • 27
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值