大模型 Dalle2 学习三部曲(一)clip学习

news2024/10/7 18:22:24

clip论文比较长48页,但是clip模型本身又比较简单,效果又奇好,正所谓大道至简,我们来学习一下clip论文中的一些技巧,可以让我们快速加深对clip模型的理解,以及大模型对推荐带来革命性的变化。


clip结构

首选我们来看看clip的结构,如图clip结构比较直观,训练的时候把文本描述和图像分别过一个encoder。生成对应的向量,然后向量两两组对,对角线上的都为正样本,不在对角线上的为负样本。然后用个对比学习loss进行训练。

预测:

预测和训练的不同之处,把每个分类结合promote组成句子,然后和训练一样分别过encode,再求出图像和分类相似度最高的一个。后面我们再介绍一下promote 是如何制作的。

论文摘要,引言 要点

1,利用自然语言作为监督来源,提升了模型的通用性和可用性。

clip认为目前需要额外标记数据的监督形式限制了它们的通用性和可用性,因此直接从关于图像的原始文本中学习是一种有前途的替代方法。clip证明,预测标题与哪个图像相配的简单预训练任务是一种高效且可扩展的方式。

2,该模型在大多数任务上都能进行高效的迁移,clip在预训练之后,用于对下游任务的零样本迁移。clip通过在30多个不同的计算机视觉数据集上进行基准测试来研究对比这种方法的性能,涵盖了OCR、视频中的动作识别、地理定位和许多类型的细粒度对象分类等任务。发现通常无需进行任何特定数据集的训练,就能与完全监督的基准模型竞争

3,强调数据的规模的重要性。

clip指出弱监督模型与最近直接从自然语言中学习图像表示的探索之间的关键区别在于规模。在这项工作中,clip弥合了过去模型数据量不足的差距,通过利用互联网上大量可用的这种形式的数据,创建了一个包含4亿(图像,文本)对的新数据集。从而达到了一个从所未有的效果高度。

4, 发现数据规模和迁移能力成平滑正比

clip还通过训练一系列8个模型来验证CLIP的可扩展性,跨越近2个数量级的计算和观察,发现迁移能力和规模成平滑正比

这点非常重要,从而我们可以根据自己模型的大小大致判断迁移后的效果,而不是在等待模型能力的涌现

clip方法和技巧

2.1. 自然语言监督,zero-shot 带来的能力提升

clip方法的核心理念是从自然语言中获得的监督中学习感知。与其他训练方法相比,从自然语言中学习具有几个潜在优势。与标准的基于众包的图像分类标签相比,扩展自然语言监督要容易得多,因为它不需要将精力放在“机器学习兼容格式”中,如规范的1-of-N多数投票“标签”。相反,可以在互联网上大量存在的文本中被动地学习使用自然语言的方法。从自然语言中学习还具有一个重要的优势,即它不仅可以学习表示,而且还可以将该表示与语言联系起来,从而实现灵活的零样本迁移。

2.2. 创建足够大的数据集

clip认为之前类似模型结构之所以没取得效果,主要是因为数据集的规模,所以clip构建了一个新的大数据集,包括从互联网上各种公开来源收集的4亿个(图像,文本)对。为了尝试尽可能涵盖广泛的视觉概念,在构建过程中搜索包含500,000个查询之一的文本的(图像,文本)对通过每个查询包含多达20,000个(图像,文本)对来平衡结果。生成的数据集与用于训练GPT-2的WebText数据集具有相似的总词数。clip将此数据集称为WIT,代表WebImageText。

2.3. 选择高效的预训练方法

  • clip发现训练效率是成功扩展自然语言监督的关键。 为了解决训练效率,clip做了以下优化
  • clip探索了仅预测哪个文本作为一个整体与哪个图像配对,而不是预测该文本的确切单词。效率提升了三倍
  • chip将预测目标替换为对比目标,并观察到在零样本迁移到ImageNet的速率上进一步提高了4倍的效率

  • clip还删除了文本转换函数tu,该函数从文本中均匀抽取一个句子,因为CLIP的预训练数据集中的许多(图像,文本)对只有一个句子。
  • clip还简化了图像变换函数tv。在训练期间使用的唯一数据增强是从调整大小的图像中随机裁剪一个正方形。
  • 最后,控制softmax中logits范围的温度参数τ,作为对数参数化的乘法标量直接在训练过程中进行优化,以避免将其作为超参数调整。

下图是效率提升对比图(橙色为使用了整体文本,绿色为使用了对比学习loss)

prompt 工程

使用prompt的动机

1,解决问题多义性。

当类别的名称是提供给CLIP文本编码器的唯一信息时,由于缺乏上下文,它无法区分是指哪个词义。在某些情况下,同一个词的多个意义可能被包含在同一个数据集的不同类别中!比如在ImageNet数据集中,其中既包含建筑起重机,也包含飞行的鹤。另一个例子是在Oxford-IIIT Pet数据集的类别中,其中单词"boxer"从上下文来看,明显是指一种狗的品种,但对于缺乏上下文的文本编码器来说,它同样可能指的是一种运动员类型。

2,训练和预测一致性,

训练和预测都是一个完整句子。clip遇到的另一个问题是,在clip的预训练数据集中,图像配对的文本通常不只是一个单词,而是一个描述图像的完整句子。为了弥补这种分布差异,clip发现使用提示模板"A photo of a {label}."作为默认值是一个很好的选择,它有助于指定文本与图像内容相关。这通常比仅使用标签文本的基准性能更好。例如,仅使用这个提示,在ImageNet上的准确率提高了1.3%。

使用prompt的一些技巧

1,指定分类。

clip发现,在几个细粒度图像分类数据集上,指定类别有助于提供上下文。例如,在Oxford-IIIT Pets数据集上,使用"A photo of a {label}, a type of pet."来提供上下文效果很好。同样,在Food101上指定一种食物,在FGVC Aircraft上指定一种飞机也有帮助。

2,添加引号。

对于OCR数据集,clip发现在要识别的文本或数字周围加上引号可以提高性能。最后,clip发现在卫星图像分类数据集上,指定图像的形式有所帮助,clip使用了类似于"a satellite photo of a {label}."的变体。

3,使用多个零样本分类器进行集成的方法来提高性能。

这些分类器使用不同的上下文提示,例如"A photo of a big {label}"和"A photo of a small {label}"。clip在嵌入空间而不是概率空间上构建集成。这样,clip可以缓存一组平均的文本嵌入,使得集成的计算成本与使用单个分类器时相同,当在许多预测上进行摊销时。clip观察到,通过对许多生成的零样本分类器进行集成,可以可靠地提高性能,并且在大多数数据集上使用这种方法。在ImageNet上,clip集成了80个不同的上下文提示,这使性能比上面讨论的单个默认提示额外提高了3.5%。综合考虑提示工程和集成,ImageNet的准确率提高了近5%。

添加prompt如下图示意

效果

接下来论文大幅的篇幅就是效果对比,clip通过在30多个不同的计算机视觉数据集上进行基准测试来研究对比这种方法的性能,涵盖了OCR、视频中的动作识别、地理定位和许多类型的细粒度对象分类等任务。发现通常无需进行任何特定数据集的训练,就能与完全监督的基准模型竞争,这里就不复述了,反正就是很强很牛逼非常牛逼。下步看看能不能复现一下代码和实现。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/956713.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

线上问诊:数仓开发(一)

系列文章目录 线上问诊:业务数据采集 线上问诊:数仓数据同步 线上问诊:数仓开发(一) 文章目录 系列文章目录前言一、Hive on yarn二、数仓开发1.ODS开发2.DIM开发3.DWD开发 总结 前言 上次我们已经将MYSQL的数据传送到了HDFS,但…

【跟小嘉学 Rust 编程】二十三、Cargo 使用指南

系列文章目录 【跟小嘉学 Rust 编程】一、Rust 编程基础 【跟小嘉学 Rust 编程】二、Rust 包管理工具使用 【跟小嘉学 Rust 编程】三、Rust 的基本程序概念 【跟小嘉学 Rust 编程】四、理解 Rust 的所有权概念 【跟小嘉学 Rust 编程】五、使用结构体关联结构化数据 【跟小嘉学…

四款简洁好看 自适应的APP下载单页源码

分享四款简洁好看 自适应的APP下载单页源码,采用了底部自动获取ICP备案号,还有蓝奏云文件直链解析。不光可以做APP下载引导页,也可以随便改下按钮做网站引导页,自由发挥即可! 蓝奏云直链解析的好处:APP放在…

交换机之间用管理vlan互联,并用ACL进行管控的实例

交换机之间用管理vlan互联,用网管机可以对其进行运维, 拓朴描述: 网关起在S2上,管理vlan999,IP:1.1.1.1/30,lookback 0 地址用2.2.2.2/32当做外网接口IP S1上:管理vlan999&#x…

多线程与高并发——并发编程(3)

文章目录 三、锁1 锁的分类1.1 可重入锁、不可重入锁1.2 乐观锁、悲观锁1.3 公平锁、非公平锁1.4 互斥锁、共享锁2 深入synchronized2.1 类锁、对象锁2.2 synchronized的优化2.3 synchronized实现原理2.4 synchronized的锁升级2.5 重量级锁底层 ObjectMonitor3 深入ReentrantLo…

家政保洁行业小程序如何快速搭建

随着互联网的快速发展,家政保洁行业也逐渐向数字化转型。小程序作为一种轻量级应用,越来越成为各行各业进行线上推广的重要工具。那么,如何快速搭建家政保洁行业的小程序呢?本文将为你提供详细的步骤和指导。 一、准备开发环境 在…

合宙Air724UG LuatOS-Air LVGL API控件--容器 (Container)

容器 (Container) 容器是 lvgl 相当重要的一个控件了,可以设置布局,容器的大小也会自动进行调整,利用容器可以创建出自适应成都很高的界面布局。 代码示例 – 创建容器 cont lvgl.cont_create(lvgl.scr_act(), nil) lvgl.obj_set_auto_re…

第 3 章 栈和队列(用递归函数求解迷宫问题(求出所有解))

1. 背景说明: 若迷宫 maze 中存在从入口 start 到出口 end 的通道,则求出所有合理解并求出最优解 迷宫示意图: 输入文本: 10 10181 3 1 7 2 3 2 7 3 5 3 6 4 2 4 3 4 4 5 4 6 2 6 6 7 2 7 3 7 4 7 6 7 7 8 11 18 8 2. 示例代码…

Ae 效果:CC Threads

生成/CC Threads Generate/CC Threads CC Threads(CC 编织条)效果基于当前图层像素生成编织条图案和纹理。可以用在各种设计中,如背景设计、图形设计、文字设计等。 ◆ ◆ ◆ 效果属性说明 Width 宽度 设置编织的宽度。 默认值为 50。值越大…

【计算机组成 课程笔记】3.1 算数运算和逻辑运算

课程链接: 计算机组成_北京大学_中国大学MOOC(慕课) 3 - 1 - 301-算术运算和逻辑运算(13-7--)_哔哩哔哩_bilibili 计算机的核心功能就是运算,运算的基本类型包括算数运算和逻辑运算。想要了解计算机是如何实现运算的,我…

linux免密登录报错 Bad owner or permissions on /etc/ssh/ssh_config.d/05-redhat.conf

问题:权限不对的 解决: 1.检查文件的所有者和权限。 确保文件的所有者是正确的。 运行以下命令来确定文件的所有者和权限: ls -l /etc/ssh/ssh_config.d/05-redhat.conf 通常情况下,SSH配置文件应该属于root用户。如果所有者不是…

HDLBits 练习 Always if2

Always if2 一个常见的错误:如何避免产生锁存器。 当设计一的电路的时候,你首先应该从电路的角度去思考。 我想要一个逻辑门我想要一个有着3和输入和3输出的组合逻辑电路。我想要一个后边跟着一个触发器的组合逻辑电路。 你必须不能先写代码&#xf…

VC++6.0下载安装使用教程

一、前言 微软原版的 VC6.0 已经不容易找到,网上提供的都是经过第三方修改的版本,删除了一些使用不到的功能,增强了兼容性。这里我们使用 VC6.0 完整绿色版,它能够支持一般的 C/C 应用程序开发以及计算机二级考试。 二、VC6.0 下…

设计模式大白话——适配器模式

适配器模式 概述示例适配器的种类小结 概述 ​ 适配器其实非常好理解,放到生活中来,我们身边处处都有这样的例子,最常见的是用的比较多的各种转接线(如:USB 转 Type-C),有了这个“适配器”&…

基于 kube-vip 部署 kubernetes 高可用集群

kube-vip 简介 kube-vip 是一个开源项目,旨在简化为 Kubernetes 集群提供负载均衡服务。 kube-vip 为 Kubernetes 集群提供虚拟 IP 和负载均衡器,用于控制平面(用于构建高可用集群)和 Kubernetes 服务类型,而无需依赖…

智己 LS6 用实力和你卷,最强 800v ?

2023 成都车展期间,智己 LS6 正式公布预售价格,新车预售价为 23-30 万元。新车会在 10 月份进行上市,11 月正式交付。 此前我们对智己 LS6 做过非常详细的静态体验,感兴趣的可点击此链接了解。 造型方面,新车前脸相比…

CNN(六):ResNeXt-50实战

🍨 本文为🔗365天深度学习训练营中的学习记录博客🍖 原作者:K同学啊|接辅导、项目定制 ResNeXt是有何凯明团队在2017年CVPR会议上提出来的新型图像分类网络。它是ResNet的升级版,在ResNet的基础上,引入了ca…

【C++】VS配置OpenCV/Libtorch环境

前言 本文是视频https://www.bilibili.com/video/BV1dp4y177L4的笔记。 OpenCV和Libtorch安装包:https://pan.baidu.com/s/1i3DqTcHFSC1rRDsIgYGCsQ?pwd8888 VS版本:2019 Opencv版本:3.4.1 Libtorch版本:2.0.1cu117 配置Open…

CUBLAS库入门教程(从环境配置讲起)

文章目录 前言一、搭建环境二、简单介绍三、 具体例子四、疑问 前言 CUBLAS库是NVIDIA CUDA用于线性代数计算的库。使用CUBLAS库的原因是我不想去直接写核函数。 (当然,你还是得学习核函数该怎么写。但是人家写好的肯定比我自己写的更准确!&…

利用MarkovJunior方法生成迷宫和图形的MATLAB演示[迷宫生成、贪吃蛇、地图生成、图案生成]

利用MarkovJunior方法生成迷宫和图形的MATLAB演示[迷宫生成、贪吃蛇、地图生成、图案生成] 0 前言1 介绍MarkovJunior2 迷宫生成2.1 深度优先迷宫生成2.2 广度优先迷宫生成 3 其它生成图案3.1 地牢地图3.2 贪吃蛇3.3 植物花 惯例声明:本人没有相关的工程应用经验&am…