AI-多模态-2022:TCL【triple contrastive learning】【三重对比学习的视觉-语言预训练模型】

news2024/11/28 18:58:11

论文:https://arxiv.org/pdf/2202.10401.pdf

代码:https://github.com/uta-smile/TCL

写在前面:

CPC[1]这篇论文中,作者对互信息的公式进行了分析,得到互信息下界的相反数为InfoNCE loss,即最小化InfoNCE Loss可以最大化互信息的下界,从而使得互信息最大。即对比学习的infoNCE等价于最大互信息。在TCL这篇文章中,作者即说用了对比学习,又说用了最大化互信息,实则二者都是infoNCE loss。

Summary

这篇论文是在ALBEF[2]的基础进行扩充的。ALBEF(Align before Fusion)的idea通过在多模态特征融合前对齐不同模态之间的表示,从而解决了融合编码器难以融合异构,且维度不同的多模态数据。但是ALBEF的对齐是image-text pair之间的全局对齐,没有考虑到模态内部的对齐,以及global-local的细粒度对齐。所以TCL这篇论文把ALBEF中的一种对齐方式扩展到了三种对齐方式。这便是题目的来源:Triple Contrastive Learning.

Method

三个对比学习损失:

CMA(Cross-Modal Alignment):拉近相似的image-text pair ,拉远不相似的image-text pair。图像和文本可以看做相同语义的两个不同视图view,即最大化这两个视图之间的互信息。负样本来自memory bank。

IMC(Intra-Modal Contrastive ):同一数据样本会经过一个编码器和一个动量编码器,得到一个样本的两个视图view,即最大化这两个视图之间的全局互信息。负样本来自memory bank。

LMI(Local MI Maximization):最大化全局表示和局部表示互信息,例如,要最大化图像的全局表示和图像中每个patch的互信息,最大化句子表示和句子中每个token的互信息。负样本来自memory bank。

两个预训练任务:

ITM(Image Text Matching):多模态预训练模型中常见的预训练任务,判断图像和文本是否匹配。

MLM(Masked Language Modeling):类似于BERT中的MLM完形填空,mask的是图像文本对中文本的某些token,让模型预测这些token的ground-truth。

CMA

这里使用编码器[CLS]处的输出,当做图像和文本的全局表示。这个Cross-Modal ALignment就是对齐image-text pair。使用对比学习的InfoNCE 当做损失函数。

I1,I2 表示同一张图I的两个不同视角,是一个图片的全局表示。 T,T+ 表示同一概率下dropout的输出,看做文本的两个视角。 T~ 表示与图像I_1不匹配负例文本,和MOCO一样使用队列存储负例。 I~ 表示与文本 T 不匹配的负例图像。 τ 表示温度超参数。sim表示两个向量之间的相似度。最小化这个损失函数,等价于最大化log的分子,最小化log的分母,即增加正例相似度,减小负例的相似度。

这个方法忽略了模态内的自监督信号,无法保证能学到理想的表示。文本和图像不是完全匹配的,文字捕捉的仅仅是图像中的显著物体。因此简单地将图像-文本表示拉近会导致退化的表示。可以理解为含有丰富信息的图像表示向含有少量信息的文本表示靠近,会导致丰富信息的表示退化为少量信息的表示。因此图像不能之和文本表示对齐,和相似的图像表示对齐,可以缓解这种情况,进而学到更加合理的表示。

举个例子,紫框图片为原始图片I, 两个绿框图片 I1,I2 为原始图片augmentation后的图片,在嵌入空间中分别为蓝色点和绿色点。与图片匹配的文本,也用绿色点表示。如果现在只考虑CMA,那么蓝点应该向文本的绿点(上面的)靠近,这会导致学到的图像表示会是一个退化的表示。如果此时同时考虑ITC,即蓝点也要考虑向图像的绿点(下面的)靠近,此时原来蓝色点就会被拉到蓝色方块的位置。这样会学到一个合理的表示。

IMC

Intra-Modal Contrastive 在同一模态下学习正负样本之间的语义差异。同一个图片/文本不同视角的表示应当是相似的,ITC的这个思想就是经典的单模态对比学习,与SimCLR[3],MOCO[4],SimCSE[5]相似。这里构建图像的不同视角采用的是随机调整图像大小,随机颜色抖动,随机灰度转换,随机高斯模糊,随机水平翻转和RandAugment。构建文本的不同视角采用的是SimCSE中的dropout构建正例,负例不是像SimCSE中的in-batch负例,而是和MOCO一样的采用队列存储,队列长度65536。

I1,I2 表示同一张图I的两个不同视角,是一个图片的全局表示。 T,T+ 表示同一概率下dropout的输出,看做文本的两个视角。

IMC对齐的是[CLS]位置处的global表示,IMC增大不同视图之间的全局互信息。然而全局MI最大化的有两个缺点:(1)忽略细粒度的局部信息。(2)某些不相关的局部区域可能支配互信息,例如,含有噪声的patch具由更多的信息量,这会影响全局的互信息。基于此,引入LMI,估计global-local的互信息。

LMI

LMI可以学到所有local共享的表示,解决了部分local支配互信息。同时使得模型更好地捕捉细粒度的信息。

ITM

ITM预测image-text pair是否匹配,是一个二分类问题。 ϕ(I,T) 是全连接层输出图像-文本匹配的概率, y(I,T) 是标签,匹配的图文y=1,反之y=0。 H(;) 是交叉熵。

MLM

MLM给定图文对,mask掉部分文本token,然后完形填空。 Φ(I,Tmsk) 表示预测被mask掉token的概率。 yTmsk 为ground-truth。

整个模型训练的目标函数为五个部分的累加 L=Lcma+Limc+Llmi+Litm+Lmlm

Backbone

vision encoder: 使用ViT-B/16

text encoder: BERT base前六层

fusion encoder BERT base后六层

Experiments

使用COCO,Visual Genome(VG),Conceptual Captions (CC) , SBU Captions进行预训练。共计400万个图片,510万个图文对。

在跨模态检索数据集上zero-shot的结果

在跨模态检索数据集上finetune的结果

其他多模态任务上finetune的结果

总结

这篇CVPR2022的论文,在多模态预训练中引入三种对比学习,实现了比ALBEF更高的性能。

My thoughts

想法:只mask文本的token。如果mask的是只依靠文本就把mask的预测正确的虚词,模型会不会学到捷径。从而不考虑图像的信息或者很少考虑图像的信息。百度在ERNIE-ViL[6]中引入场景图,确保mask的token都是有语义的实词。感觉这会是个改进点。

疑惑:不知道是不是作者时间不够了,只在4M的预训练数据集上做了实验,并且baseline的选取也都是14M的。感觉时间够的话,完全可以在14M的预训练数据集上跑一下。

收获:1. 把infoNCE一个东西说成,对比学习和互信息最大化,这样写论文就更有故事性。2. 论文中的三个点在需要循序渐进的叙述出来,创新点之间需要进行很好的衔接。这些衔接恰好可以作为论文的motivation。

参考

  1. ^[1] https://arxiv.org/pdf/1807.03748.pdf
  2. ^[2] https://arxiv.org/abs/2107.07651
  3. ^[3] https://arxiv.org/abs/2002.05709
  4. ^[4] https://arxiv.org/abs/1911.05722
  5. ^[5] https://arxiv.org/pdf/2104.08821.pdf
  6. ^[6] https://arxiv.org/abs/2006.16934

CVPR2022-TCL-三重对比学习的视觉语言预训练模型 - 知乎

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

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

相关文章

IPv4地址和子网掩码

目录 1.ip的定义 A.官方定义 B.IP的表现形式 C.IP地址分类 2.网络地址和主机地址 3.子网掩码 4.应用场景 1.ip的定义 A.官方定义 IP地址是一种在Internet上的给主机编址的方式,也称为网际协议地址。IP地址是IP协议提供的一种统一的地址格式,它为…

three.js之组对象

文章目录简介例子查看组对象组对象相关方法addremove层级模型节点命名、查找、遍历模型命名例子遍历查找本地坐标与世界坐标例子本地坐标世界坐标缩放系数专栏目录请点击 简介 层级模型就是一个树的结构,他有一个组的概念,对于组我们可以进行旋转、平移…

操作系统中的进程

目录 什么是进程/任务(Process/Task) PCB的具体信息 1.pid 进程的身份标识 2.内存指针 3.文件描述符表 4.进程状态 5.进程优先级 6.进程上下文 7.进程 记账信息 虚拟地址空间 我的GitHub:Powerveil GitHub 我的Gitee:P…

28年蛰伏,易特驰打响「软件定义汽车」硬战

今年3月,特斯拉给车主推送了新的软件更新版本2022.8.2,更新内容包括:车辆温度预设改进、空调页面显示除雾/除霜提醒、预计充电时间更精准估算、正在进行的通话更新等。 这并不是特斯拉第一次通过升级OTA,增加新功能、完善现有功能…

防火墙的前世今生

防火墙的前世今生 1、第一代防火墙:包过滤防火墙,实现简单的访问控制,也就是我们经常在交换机路由器用到ACL技术 当我们192.168.1.1需要访问192.168.2.1的WEB服务的时候,先要去精确控制能匹配源目地址,端口号&#xf…

限制 SLS告警通知时段的几种常见方法

前言 在对系统进行监控告警的过程中,有时候并非在任何时候都要接收告警通知,例如以下场景: 计划内变更触发的已知告警可以无需通知非工作时间不接收不严重的告警夜里不接收电话告警等等 本文会介绍几种常见的限制告警通知时段的方法&#x…

IDEA技巧汇总:这30个强大的功能,总有一个你能用上!

目录查看代码历史版本调整idea的虚拟内存:idea设置成eclipse的快捷键设置提示词忽略大小写关闭代码检查设置文档注释模板显示方法分隔符设置多行tabtab过多会自动关闭快速匹配方法的大括号位置代码结尾补全模糊搜索方法预览某个类的代码查看方法在哪里被调用代码模板…

一个简单的网页制作期末作业,学生个人html静态网页制作成品代码

🎉精彩专栏推荐 💭文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业: 【📚毕设项目精品实战案例 (10…

12月13日:跟着猫叔写代码,fastadmin中Api相关只是

Api权限管理 api常用返回信息实例 api获取所有方法,都在common目录下cotroller文件夹中Api.php中 /*** 需要登录的接口**/public function test2(){//$this->success(返回成功, [action > test2]);//判断当前用户是否登录//$this->success(返回成功, $t…

1. Python_Django项目之大型电商项目介绍

1.开发项目目的 联系已掌握的知识点发现新的知识点掌握开发技巧掌握项目结构增加项目经验 2.所用技术 语言:Python3(Django4)数据库:MySQLweb服务器:Nginxuwsgi开发环境:VScode、linux 3.功能介绍 商品…

动态规划——背包问题(3)

文章目录求解最佳方案数例题思路代码混合背包问题例题思路代码有依赖的背包问题例题思路代码考察思维的一些背包题目机器分配金明的预算方案货币系统能量石总结求解最佳方案数 例题 有 N 件物品和一个容量是 V 的背包。每件物品只能使用一次。 第 i 件物品的体积是 vi&#…

springboot前后端交互(小白教学)

在上次前后端交互,我们使用的是最基本的HTMLServlet的组合,比较基础,今天我们来讲一讲HtmlSpringboot框架,前后端交互实现更为简便,大大降低了我们开发人员在代码上面所花费的时间,那今天让我们一探究竟吧。…

1998-2014年工企污染数据库

1998-2014年工企污染匹配数据库 1、时间区间为:1998-2014年 2、部分指标: 工业总产值(现价)(万元)、工业用水总量(吨)、煤炭消费总量(吨)、其中:新鲜水量(吨&#xff…

是谁实现了 Pod 的多副本管理?

目录一、前言二、案例分析三、案例总结一、前言 在 K8s 中 Pod 是由 Controller 来管理的,Controller 定义了 Pod 的部署 spec,如 Pod 的副本数、运行的 Node 等。不同的业务场景 Controller 是不同的。K8s 提供了多种 Controller,如常见的 …

POCV/SOCV 、LVF

1.POCV与OCV、AOCV 为了模拟片上PVT的差异带来的影响,最早提出了OCV(On Chip Variation)给每个cell都设置一个固定的derate值,来覆盖最悲观的情况,但是随着工艺发展,设计规模增大,OCV过度的悲观…

Docker之Nacos的持久化和集群部署

目录 一、外网单节点部署 1.docker mysql:5.7的持久化存储及远程连接 1.下拉镜像 2.在宿主机中相关目录,用于挂载容器的相关数据 3.创建mysql5.7容器 4.修改mysql允许Navicat远程连接 5.创建数据库nacos_config,并进行初始化 ​编辑 2. nacos-d…

DNS解析过程以及基本原理

目录 1.什么是 DNS 2.分布式、层次数据库 A.什么是分布式? B.什么是层次? D.什么是根 DNS 服务器 E.顶级域 DNS 服务器 F.权威 DNS 服务器 3.本地 DNS 服务器 4.递归查询、迭代查询 A.图解DNS解析过程 B.解析过程当中的递归解析和迭代解析 5…

STM8开发实例-IAR开发环境搭建

IAR开发环境搭建 IAR Embedded Workbench for STM8 是一个集成开发环境,具有高度优化的 C/C++ 编译器和全面的 C-SPY 调试器。 它为 STM8A、STM8L、STM8S、STM8T、STNRG 和 STLUX 系列中的器件提供全面支持。 1、IAR下载并安装 IAR Embedded Workbench For STM8官方下载地址…

3U 轨道交通车载工业级M12 PoE交换机,防护等级IP66

支持软硬件定制服务的轨道交通工业交换机 支持双电源冗余 支持Bypass 专门为轨道交通应用设计和制造的以太网数据通信设备 根据IEC61375-2-5和IEC61375-2-3协议实现的列车级骨干以太网核心设备 支持中国铁路 产品认证 XM-5145工业交换机是专为轨道交通、船载、车载等恶劣环…

非零基础自学Golang 第2章 安装和运行Go 2.1 GOROOT和GOPATH 2.2 在Windows 下安装Go

非零基础自学Golang 文章目录非零基础自学Golang第2章 安装和运行Go2.1 GOROOT和GOPATH2.2 在Windows 下安装Go第2章 安装和运行Go Go的安装主要分为两种方式:安装包安装和源代码安装: 安装包安装:即已编译好的可直接运行的程序&#xff0c…