多模态vlm综述:An Introduction to Vision-Language Modeling 论文解读

目录

1、基于对比学习的VLMs

1.1 CLIP

2、基于mask的VLMs

2.1 FLAVA

2.2 MaskVLM

2.3 关于VLM目标的信息理论视角

3、基于生成的VLM

3.1 学习文本生成器的例子:

3.2 多模态生成模型的示例:

3.3 使用生成的文本到图像模型进行下游视觉语言任务

4、 基于预训练主干网络的视觉语言模型(VLM)

4.1 Frozen

4.2 MiniGPT模型示例

MiniGPT-4的应用

MiniGPT-5的扩展

MiniGPT-v2的多任务应用

4.3 使用预训练主干的其他热门模型

Qwen模型

BLIP-2模型


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

这里主要整理了多模态的技术发展历程,没有一些实验对比的数据。

VLM家族: 

1)对比训练是一种广泛应用的策略,它采用正面例子和负面例子的配对方式。视觉语言模型(VLM)通过这种方式被训练,以针对正面配对预测出相似的表示,同时对于负面配对则预测出不同的表示。

2)掩码技术是另一种训练VLM的策略,它通过重构给定的未掩码文本字幕中缺失的部分来实现。类似地,通过在字幕中掩码词语,也可以训练VLM来重构给定未掩码图像中的这些词语。

3)尽管大多数方法采用中间表示或部分重构技术,但生成式VLM经过特殊训练后,能够生成完整的图像或极长的字幕。考虑到这些模型的复杂性,它们通常需要较高的训练成本。

4)基于预训练主干网络的VLM经常利用像Llama这样的开源大型语言模型(LLM),学习图像编码器(也可能事先经过训练)与LLM之间的映射关系。重要的是,这些模型不是互斥的;许多方法依赖于对比、掩蔽和生成几种标准的结合。

1、基于对比学习的VLMs

基于对比的训练通常可以通过基于能量的模型(Energy-Based Models, EBM)的观点来更好地解释,如LeCun等人在2006年提出的,其中一个由参数θ定义的模型Eθ,被训练以赋予观察到的变量较低的能量,而未观察到的变量则赋予较高的能量。来自目标分布的数据应该具有较低的能量,而其他任何数据点则应具有较高的能量。为了训练这些模型,我们考虑输入数据x与一个能量函数Eθ(x),该能量函数由参数θ给出。相应的学习目标的玻尔兹曼分布密度函数可以写成:

其中归一化因子为 𝑍𝜃=∑𝑥𝑒−𝐸𝜃(𝑥)。为了估计输入数据抽取的目标分布PD,我们原则上可以使用传统的最大似然目标函数:

其梯度为:

然而,上述方法需要从模型分布 𝑃𝜃(𝑥) 中采样出样本 𝑥−,而这样的样本可能难以得到。目前有几种技术可以近似地模拟这种分布。一种方法依赖于马尔可夫链蒙特卡罗(MCMC)技术,通过迭代过程找出能够最小化预测能量的样本。第二种方法依赖于得分匹配[Hyvärinen, 2005]和去噪得分匹配[Vincent, 2011]的标准,它们通过只学习输入数据相对于概率密度的梯度来移除归一化因子。另一类方法,最近在自监督学习(SSL)和视觉语言模型(VLM)的研究中使用最多的,是噪声对比估计(NCE)[Gutmann和Hyvärinen, 2010]。

与其使用模型分布来采样负样本,NCE背后的直觉是,采样自噪声分布 𝑢′∼𝑝𝑛(𝑢′) 在某些情况下可能足够好地近似模型分布样本。尽管从理论上难以证明这种方法为何可行,但是广泛的实验证据表明,近期自监督学习文献中基于NCE的方法是成功的[Chen等人,2020]。原始的NCE框架可以描述为一个二元分类问题,模型应当为来自真实数据分布的样本预测标签 𝐶=1,而为来自噪声分布的样本预测 𝐶=0。通过这种方式,模型学会了区分真实数据点和噪声数据点。因此,损失函数可以定义为具有交叉熵的二元分类:

𝐿𝑁𝐶𝐸(𝜃):=−∑𝑖log⁡𝑃(𝐶𝑖=1∣𝑥𝑖;𝜃)−∑𝑗log⁡𝑃(𝐶𝑗=0∣𝑥𝑗;𝜃)

其中 𝑥𝑖 是从数据分布中采样的,而 𝑥𝑗∼𝑝𝑛(𝑥),𝑗≠𝑖 是从噪声分布中采样的。

Wu等人[2018]提出了一种无需正样本对的噪声对比估计(NCE)方法,该方法采用非参数化Softmax函数,通过显式归一化和一个温度参数τ实现。而Oord等人[2018, CPC]在使用正样本对的同时保留了非参数化Softmax,并将这种方法命名为InfoNCE,具体如下:

InfoNCE损失不是简单地预测一个二元值,而是利用如余弦相似度这样的距离度量,在模型的表示空间中进行计算。这就需要计算正样本对之间的距离,以及所有负样本对之间的距离。通过Softmax函数,模型学习预测在表示空间中最相近的一对样本,同时将较低的概率赋予其他所有的负样本对。在如SimCLR [Chen et al., 2020]这样的自监督学习(SSL)方法中,正样本对被定义为一张图片及其经过手工数据增强的版本(例如,对原始图片应用灰度转换),而负样本对则是用一张图片与小批量(mini-batch)中的所有其他图片构建。InfoNCE基方法的主要缺点是引入了对小批量内容的依赖性。这通常需要大的小批量来使得对比训练准则在正负样本之间更为有效。

1.1 CLIP

一个常用的使用InfoNCE损失的对比方法是对比语言-图像预训练(CLIP)[Radford et al., 2021]。正样本对被定义为一张图像及其对应的真实标注文字,而负样本则是相同的图像配上mini-batch中描述其他图片的所有其他标注文字。CLIP的一个创新之处在于训练一个模型来在共享的表示空间中结合视觉和语言。CLIP训练随机初始化的视觉和文本编码器,通过对比损失将图像和其标注的表示映射到相似的嵌入向量中。在网络上收集的4亿个标注-图像对上进行训练的原始CLIP模型显示出了显著的零样本分类迁移能力。具体来说,使用ResNet-101架构的CLIP达到了与受监督ResNet[He et al., 2015]模型相匹配的性能(实现了76.2%的零样本分类准确率),并在多个鲁棒性基准测试中超越了它。

SigLIP [Zhai et al., 2023b] 类似于CLIP,不同之处在于它使用基于二元交叉熵的原始NCE损失,而不是使用基于InfoNCE的CLIP的多类别目标。这一改变使得在比CLIP更小的batch大小上获得了更好的零样本表

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

双列集合底层源码

tips: 竖着的箭头:重写 横着的箭头:继承

单元测试之CppTest测试框架

目录 1 背景2 设计3 实现4 使用4.1 主函数4.2 测试用例4.2.1 定义4.2.2 实现 4.3 运行 1 背景 前面文章CppTest实战演示中讲述如何使用CppTest库。其主函数如下: int main(int argc, char *argv[]) {Test::Suite mainSuite;Test::TextOutput output(Test::TextOut…

App UI 风格,引领时尚

App UI 风格,引领时尚

今日早报 每日精选15条新闻简报 每天一分钟 知晓天下事 6月9日,星期日

每天一分钟,知晓天下事! 2024年6月9日 星期日 农历五月初四 1、 人社部:个人养老金开户人数已超6000万,其中31岁至40岁的中高收入人群是开户、缴费和购买产品的主力军。 2、 医保局刊文:研究显示集采仿制药替代原研药…

URL的编码解码(一),仅针对ASCII码字符

用十六进制对特定字符编码,利用百分号标识搜索字符串解码十六进制字符。 (笔记模板由python脚本于2024年06月09日 18:05:25创建,本篇笔记适合喜好探寻URL的coder翻阅) 【学习的细节是欢悦的历程】 Python 官网:https://www.python.org/ Free…

内存管理--3.用幻灯片讲解C++手动内存管理

用幻灯片讲解C手动内存管理 1.栈内存的基本元素 2.栈内存的聚合对象 3.手动分配内存和释放内存 注意:手动分配内存,指的是在堆内存中。 除非实现自己的数据结构,否则永远不要手动分配内存! 即使这样,您也应该通过std::allocator…

如何在本地和远程删除 Git 分支

欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 欢迎来到我的主页,我是博主英杰,211科班出身,就职于医疗科技公司,热衷分享知识,目前是武汉城市开发者社区主理人 擅长.net、C、python开发, 如果遇…

计算机组成原理之指令格式

1、指令的定义 零地址指令: 1、不需要操作数,如空操作、停机、关中断等指令。 2、堆栈计算机,两个操作数隐藏在栈顶和此栈顶,取两个操作数,并运算的结果后重新压回栈顶。 一地址指令: 二、三地址指令 四…

selenium-java自动化教程

文章目录 Selenium支持语言WebDriver 开始使用chromedriver模拟用户浏览访问模拟点击事件关闭弹窗,选中元素并点击 获取页面文本结语 Selenium Selenium是一个自动化测试工具,可以模拟用户操作web端浏览器的行为,包括点击、输入、选择等。也可…

高考后志愿填报信息采集系统制作指南

在高考的硝烟散去之后,每位学生都面临着一个重要的任务——志愿填报。老师们如何高效、准确地收集和整理这些信息,成为了一个棘手的问题。难道我们只能依赖传统的手工登记方式,忍受其繁琐和易错吗? 易查分是一个简单易用的在线工具…

数据结构--递归和数组

个人介绍 hello hello~ ,这里是 code袁~💖💖 ,欢迎大家点赞🥳🥳关注💥💥收藏🌹🌹🌹 🦁作者简介:一名喜欢分享和记录学习的…

ESP32:FreeRTOS节拍配置(vTaskDelay延时10ms改为1ms)

文章目录 背景方法手动修改sdkconfig通过idf.py menuconfig 背景 在FreeRTOS的默认配置中,任务调度的频率默认是100HZ,因此默认vTaskDelay默认延时是10ms。 FreeRTOS 的系统时钟节拍可以在配置文件 FreeRTOSConfig.h 里面设置:#define confi…

论文阅读KAN: Kolmogorov–Arnold Networks

学习了最近大热的KAN网络 论文地址:https://arxiv.org/pdf/2404.19756 按我个人读论文的习惯总结了如下几点: 1,背景: 1)灵感来源:于Kolmogorov-Arnold表示定理,也就是多变量连续函数可以表…

技术与业务的完美融合:大数据BI如何真正提升业务价值

数据分析有一点经典案例 沃尔玛的啤酒和尿布案例 开始做BI的时候,大家肯定都看过书,那么一定也看过一个经典的案例,就是沃尔玛的啤酒和尿布的案例。这个案例确实很经典,但其实是一个失败的案例。为什么这么说呢?很明显…

html接口响应断言

接口响应值除类json格式,还有html格式 断言步骤 第一步:替换空格replace 原本返回的格式和网页内容一致,每行前面有很多空格,需要去除这些空格 第二步:分割split 因为行与行之前有回车符,所以把回车符替…

JAVA-LeetCode 热题 100 第56.合并区间

思路&#xff1a; class Solution {public int[][] merge(int[][] intervals) {if(intervals.length < 1) return intervals;List<int[]> res new ArrayList<>();Arrays.sort(intervals, (o1,o2) -> o1[0] - o2[0]);for(int[] interval : intervals){if(res…

cisco packet tracer 8.2.2 (思科模拟器) ospf路由协议

1 实验拓扑图 2 配置路由器和交换机 #sw1 en config t hostname sw1 ip routing int vlan 2 ip address 192.168.2.1 255.255.255.0 exit int vlan 3 ip address 192.168.3.1 255.255.255.0 exit int gigabitEthernet 1/0/1 switchport access vlan 2 exit int gigabitEthe…

在AMD GPU上加速大型语言模型的Flash Attention

Accelerating Large Language Models with Flash Attention on AMD GPUs — ROCm Blogs 引言 在这篇博客文章中&#xff0c;我们将指导您如何在AMD GPU上安装Flash Attention&#xff0c;并提供与在PyTorch中标准SDPA比较其性能的基准测试。我们还将测量Hugging Face中多个大型…

Facebook革新:数字社交的下一个阶段

在数字化时代&#xff0c;社交网络已经成为人们生活中不可或缺的一部分。作为全球最大的社交网络平台之一&#xff0c;Facebook一直在不断创新&#xff0c;引领着数字社交的发展。然而&#xff0c;随着科技的不断进步和社交需求的变化&#xff0c;Facebook正在走向一个新的阶段…

Linux下软件安装

提示&#xff1a;制作不易&#xff0c;可以点个关注和收藏哦。 前言 介绍 Ubuntu 下软件安装的几种方式&#xff0c;及 apt&#xff0c;dpkg 工具的使用。 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考. 一、先体验一下 比如我们想安装一个软件&…