[datawhale202211]跨模态神经搜索实践:跨模态模型

news2025/7/21 20:41:01

结论速递

本次任务首先了解了CLIP模型及其原理,CLIP模型将图像标签替换为图像的文本描述信息,来监督视觉任务的训练,引入了语义匹配实现下游任务的zero-shot。

多模态和跨模态可能是未来模型的发展方向,多模态尝试结合不同信息表达方式的优势,而跨模态进一步探索新的信息表达方式。简单了解了diffusion模型。

目录

    • 结论速递
  • 1 CLIP模型
    • 1.1 CLIP简介
    • 1.2 CLIP的动机
    • 1.3 CLIP的原理
    • 1.4 CLIP的应用
  • 2 多模态与跨模态
    • 2.1 动机
    • 2.2 概念
    • 2.3 其他多模态模型
  • 参考阅读

1 CLIP模型

1.1 CLIP简介

CLIP是2021年对计算机视觉领域影响比较大的工作,由OpenAI发布,详见CLIP: Connecting Text and Images (openai.com)。

2021年见证了vision transformer的大爆发,随着谷歌提出ViT之后,一大批的vision transformer的工作席卷计算机视觉任务。除了vision transformer,另外一个对计算机视觉影响比较大的工作就是Open AI在2021年1月份发布的DALL-E和CLIP,这两个都属于结合图像和文本的多模态模型,其中DALL-E是基于文本来生成模型的模型,而CLIP是用文本作为监督信号来训练可迁移的视觉模型,这两个工作也像ViT一样带动了一波新的研究高潮。
——神器CLIP:连接文本和图像,打造可迁移的视觉模型 - 知乎 (zhihu.com)

CLIP模型同样是个有监督的模型,若以图像分类为例,其特点是:将图像标签替换为图像的文本描述信息,来监督视觉任务的训练(把图像分类问题转化为图文匹配问题)。

1.2 CLIP的动机

近些年,迁移学习在各个领域,包括计算机视觉领域有很多的应用。在CLIP提出之前,预训练+下游任务微调是计算机视觉领域的主流方式,但由于预训练是有监督的,需要数据标注,成本较高。近几年有一些自监督预训练的方法,但到了下游任务仍然需要有监督的微调。

但是在自然语言处理领域,有很多可以降低工作量的数据标注方式,而且实现了zero-shot到下游任务。CLIP的一个初衷,就是想在计算机视觉领域引入自然语言处理领域的这种优势。

近年来,出现了一些基于自监督的方法,这包括基于对比学习的方法如MoCo和SimCLR,和基于图像掩码的方法如MAE和BeiT,自监督方法的好处是不再需要标注。但是无论是有监督还是自监督方法,它们在迁移到下游任务时,还是需要进行有监督微调,而无法实现zero-shot。
对于有监督模型,由于它们在预训练数据集上采用固定类别数的分类器,所以在新的数据集上需要定义新的分类器来重新训练。对于自监督模型,代理任务往往是辅助来进行表征学习,在迁移到其它数据集时也需要加上新的分类器来进行有监督训练。
但是NLP领域,基于自回归或者语言掩码的预训练方法已经取得相对成熟,而且预训练模型很容易直接zero-shot迁移到下游任务,比如OpenAI的GPT-3。这种差异一方面是由于文本和图像属于两个完全不同的模态,另外一个原因就是NLP模型可以采用从互联网上收集的大量文本。那么问题来了:能不能基于互联网上的大量文本来预训练视觉模型?
——神器CLIP:连接文本和图像,打造可迁移的视觉模型 - 知乎 (zhihu.com)

之前其实已经有一些工作研究用文本来作为监督信号来训练视觉模型,但都没有达到zero-shot的效果。

OpenAI认为CLIP和先前一些工作的主要区别在于规模的不同,他们先后尝试了几种训练方式,最后敲定对比学习的方式来进行训练,效率更高,准确率也更好。

请添加图片描述

OpenAI首先尝试了VirTex模型,即联合训练一个CNN和文本transformer来预测图像的文本(image caption),但是发现这种方法的训练效率(用ImageNet数据集上的zero-shot性能来评估)还不如直接预测bag of words,如下图所示,两者的训练效率能相差3倍。如果进一步采用ConVIRT,即基于对比学习的方法,训练效率可以进一步提升4倍。之所出现这个差异,这不难理解,训练数据所包含的文本-图像对是从互联网收集来的,它们存在一定的噪音,就是说文本和图像可能并不完全匹配,这个时候适当的降低训练目标,反而能取得更好的收敛。而从任务难度来看:Transformer Language Model > Bag of Words Prediction > Bag of Words Contrastive (CLIP)。由于训练数据量和模型计算量较大,训练效率成为一个至关重要的因素。这就是作者最终选择对比学习的方法来训练的原因。
——神器CLIP:连接文本和图像,打造可迁移的视觉模型 - 知乎 (zhihu.com)

1.3 CLIP的原理

下游任务以图像分类为例的实现中。

在预训练阶段,模型的数据来源为从互联网上搜集的4亿个(图像,文本)对。假设batch中有N个(图像,文本)对,那么我们便可以得到N个文本向量,记为:t1,t2,...,tn,以及N个图像向量,记为img1,img2,...,imgn。需要做的就是让t(i)img(i)之间的语义距离尽可能接近,而与其他的img之间的距离尽可能拉远。

请添加图片描述

则可以将这个相似性的度量视为一个矩阵,其中横轴方向为文本,纵轴方向为图像,且文本、图像的标号均按照次序排列,那么就可以得到一个N * N的方阵,方阵的每个元素(i,j)的位置为t(i)img(j)之间的语义相似度,相似度可通过余弦或点积的方式获得。我们的优化目标就是让对角线上的元素的值尽可能的大,而其余部分的值尽可能地小。

请添加图片描述

在下游任务中,需要先基于图像标签集合,构造text prompt并将其通过CLIP的text encoder获得文本编码向量,同时,将图片通过image encoder获得图像编码向量。

对于每张图片,我们需要计算它与所有text prompt之间的距离(通过计算图像编码向量与文本编码向量之间的余弦相似度或点积得到),选择距离最近的text prompt所对应的标签作为该张图片的分类标签。

根据上下文语义建立prompt模板,并将标签集合映射到该模板中,得到prompt text模板。比方说,现在我们需要做对(大象,冰箱,蚂蚁)的三分类任务,prompt模板为 “这是一张有关{类别}的照片”,将分类标签映射到prompt模板后可以得到集合:{“这是一张有关大象的照片”“这是一张有关冰箱的照片”“这是一张有关蚂蚁的照片”}。对集合中的文本,通过clip的text encoder之后,便可以得到三个类别对应的文本特征向量,之后,对于每一张需要分类的图片,我们只需要比较该图片的特征向量与三个类别对应的文本特征向量之间的语义距离,并选择最近的那一条文本所对应的标签作为图像的分类结果。

这样的转换使得模型在zero-shot场景下可以获得与监督学习比肩的效果。

1.4 CLIP的应用

CLIP模型可广泛应用到其他领域。

  • 图像检索
  • 视频理解
  • 图像编辑
  • 图像生成

2 多模态与跨模态

2.1 动机

信息有非常多的表达方式:口语,文字,图像等等,这些表达方式各有优劣,也各有侧重点。我们想把这些优势结合起来,这就是多模态和跨模态应用的契机。

从CLIP的动机还可以看出来,不同领域下技术的发展可以相互借鉴和融合,这也是推动多模态和跨模态应用的原因一。

2.2 概念

  • 多模态应用:通过利用每种方式的优势来结合不同的模态。
    例如,我们可以在对话中同时使用口语和书面语言,以确保我们相互理解。我们还可以使用图片或视频等作为视觉辅助工具,来帮助解释仅用文字难以描述的事物。
  • 跨模态应用:针对的是来自不同模态(如视觉和听觉)的输入和输出。它通过使用一种感官的信息来增强另一种感官,使用户体验比传统应用更上一层楼。
    比如说,我们可以通过触摸的方式来帮助我们理解在触觉地图或盲文文本中看到的内容。我们还可以使用声音来帮助我们定位环境中的事物,一般通过声纳或雷达来完成。

多模态感觉像是利用原有信息传递方式的特点,实现信息传递的互补,而跨模态则更像是在探索新的信息传递方式。

2.3 其他多模态模型

扩散模型(diffusion model)是当前非常火的多模态模型。

先假设这样一个场景,在咖啡拉花的时候,比如我们现在做了一个图案,假设我们将其放在那里静置,一段时间后图案就会慢慢扩散,最后变得一团糟。如果在扩散过程中,我们一直观察这这杯咖啡,就会发现:在静置的前几分钟,虽然图案已经有了一点点变化,但是我们还是可以很轻松的在大脑中从现有较为模糊的图案中恢复出最开始的图案。随着时间一点点的推移,图案变得越来越模糊,从中恢复出最开始的图案变得越来越困难,最后图案和咖啡混合在一起。

反过来想这个问题,我们能不能从最后的“图案和咖啡混合在一起”的状态,推出最初的图案呢?我们可以将拉花扩散的过程看成是“加噪”的过程,而将反向的恢复过程看成是“去噪”的过程,这样一来,**只要我们能够从“加噪”过程中学习到一定的规律,那么我们就有可能在“去噪”过程中“逐步”恢复出最开始的图案。**这是对扩散模型的一个非常浅显直观的认识,具体细节可参考相关系列论文。

扩散模型的灵感来自非平衡热力学。他们定义了一个马尔可夫扩散步骤链,以缓慢地向数据添加随机噪声,然后学习逆转扩散过程以从噪声中构建所需的数据样本。

也就是说,通俗地讲,扩散模型由正向扩散过程和逆向过程构成。

正向扩散过程,就是我们最终想实现的过程,不断地往数据中添加随机噪声,直至达到想要的图形,如下图。图片来源:什么是扩散模型? |利尔日志 (lilianweng.github.io)

请添加图片描述

逆向过程,则是从想要的图形中不断添加噪声扩散,直至完全混乱,如下图。图片来源:什么是扩散模型? |利尔日志 (lilianweng.github.io)

请添加图片描述

参考阅读

  1. 神器CLIP:连接文本和图像,打造可迁移的视觉模型 - 知乎 (zhihu.com)
  2. 多模态模型的发展趋势:迄今为止最先进的模型,跨模态 GAN,多模态 Transformer - 知乎 (zhihu.com)
  3. 什么是扩散模型? |利尔日志 (lilianweng.github.io)

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

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

相关文章

数字集成电路设计(四、Verilog HDL数字逻辑设计方法)(三)

文章目录4. 有限同步状态机4.1 编码4.2 有限状态机的写法4.3 举例4.3.1 用Verilog HDL 设计顺序脉冲发生器4.3.2 设计-个自动售报机报纸价钱为八角,纸币有 1角、2 角5 角、一元。该自动售报机不考虑投币为大额面值等特殊情况4. 有限同步状态机 !&#xf…

『Java』类和对象

文章目录一、面向对象的初步认识🌳1、什么是面向对象🌳2、面向对象与面向过程🍑(1)洗衣服🍑(2)大象装冰箱汽车拼装二、类定义和使用🌳1、简单认识类🌳2、类的…

网络安全重点知识

单选(抽20个)、判断(抽5个) 第二章: 第三章: 第四章: 第五章: 第六章: 第八章: 填空(抽3个) 1、网络安全: 是在网络各个…

【附源码】Python计算机毕业设计税务综合信息平台

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

jquery基础--学习笔记

jQuery选择器 元素、Class、id选择器 属性选择器 注意:!如果不指定标签,会输出所有的html标签不满足的元素 如何指定?可以用之前的元素、标签或者id选择器 层级选择器 上面图片写错了,box应该是div,看例子…

【微信小程序】数据绑定

🏆今日学习目标:第十一期——数据绑定 😃创作者:颜颜yan_ ✨个人主页:颜颜yan_的个人主页 ⏰预计时间:25分钟 🎉专栏系列:我的第一个微信小程序 文章目录前言实现数据绑定初始化数据…

[附源码]java毕业设计农村留守儿童帮扶系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

Flink cdc 2.3.0 日前发布,支持众多新特性

新连接器 2.3.0 新增了 DB2 CDC 连接器 增量快照迎来新的连接器成员 2.3.0 版本MongoDB CDC,Oracle CDC 两大连接器均支持了增量快照,实现无锁读取并发读取断点续传 优化 2.3.0 版本 MySQL CDC 连接器性能和稳定性大幅提升 Flink 支持 2.3.0 版本…

11月19日绿健简报,星期六,农历十月廿六

11月19日绿健简报,星期六,农历十月廿六1. 文旅部:不随意关停娱乐场所,无疫情发生地原则上不限制大型经营性演出观众人数。2. 人社部等五部门:企业不得以年龄为由“一刀切”清退大龄农民工。3. 英国政府以国家安全为由&…

Java 枚举(Enum)使用

文章目录枚举引入enum关键字实现枚举enum关键字实现枚举注意事项enum常用方法一览表enum课堂练习enum实现接口枚举引入 创建Season类, 实例化春夏秋冬四个实例 Season对象有如下特点 1.季节的值是有限的几个值(spring, summer, autumn, winter) 2.只读,不需要修改…

开始数据治理时三个常见的陷阱和解决方法

当我们与客户合作帮助他们提高数据管理能力时,大多数部门都同意更好的数据治理将有助于解决他们的数据问题。然而,我们发现数据治理很少是优先事项,而且往往被搁置一旁,去支持更紧迫的业务工作。这有点像使用牙线——当你在牙医诊所时很容易获得动力,但当你回到家时很难保…

GC垃圾回收相关算法(宋红康JVM学习笔记)

什么是垃圾? 垃圾收集机制是Java的招牌能力,极大地提高了开发效率。如今,垃圾收集几乎成为现代语言的标配,即使经过如此长时间的发展,Java的垃圾收集机制仍然在不断的演进中,不同大小的设备、不同特征的应用…

[附源码]java毕业设计辽宁科技大学疫苗接种管理系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

果蔬同城配送小程序有什么作用_分享果蔬同城配送小程序的作用

1、蔬菜生鲜产品展示:用户打开买菜必备软件,就能查看琳琅满目的新鲜水果、蔬菜、肉类、零食等产品,为用户展示更多信息,提升用户下单率。经常更新商品的照片、视频,让客户可以在线浏览和挑选,足不出户就能买…

二叉树的最大深度(C++两种思路递归和层序)超详解小白入

原题链接–>戳这里直达 二叉树的最大深度深度搜索(递归)递归思想和详解C代码代码效率广度搜索(层序查找)层序查找的思路C代码代码效率总结深度搜索(递归) 最近新学习了树形结构,上课的时候听…

MATLAB算法实战应用案例精讲-【数模应用】随机梯度下降法(SGD)

前言 随机梯度下降算法(Stochastic gradient descent, SGD)源于1951年Robbins和Monro[6]提出的随机逼近, 最初应用于模式识别和神经网络. 这种方法在迭代过程中随机选择一个或几个样本的梯度来替代总体梯度, 从而大大降低了计算复杂度. 1958年Rosenblatt等研制出的感知机采用了…

JAVA开发(Redis使用缺陷场景)

常见的redis使用缺陷场景主要有3个,分别是缓存穿透,缓存击穿,缓存雪崩。 穿透,(关键词,缓存中没有的,数据也没有) 击穿(大量同时请求过期的key) 雪崩&…

多目标优化问题入门理论

0 前言 多目标优化在推荐系统、物流配送、路径规划等中有广泛的应用 一些多目标优化算法主要就是求解问题的 Pareto 前沿或者近似前沿。从目标空间来看,就是他的边界了。 1. 优化问题 1.1 无约束的单目标优化问题 minxf(x),x∈RN(1)min_x \quad f(x), x \in R^N…

解决jupyter TOC勾选了但不显示的问题

解决jupyter TOC勾选了但不显示的问题 有时候TOC(Table of content2)反应很慢,或者勾选了根本就不显示。或者隔三岔五nbextension消失,按以下步骤解决问题: #mermaid-svg-rbxou4Xusp7FoS9q {font-family:"trebuc…

ArcGIS pro底图大全

ArcGIS pro底图大全 Mid-Century Street World Topographic Map Navigation Map Street Night Terrain with label Oceans National graphic style map Modern antique 668753925730)] Modern antique