多模态系列论文--VLMO 详细解析

news2024/11/23 1:13:08

论文地址:VLMO: Unified Vision-Language Pre-Training with Mixture-of-Modality-Experts
论文代码:VLMO

VLMO

  • 1 研究动机
  • 2 本文贡献1:MOME模型
    • 2.1 模型结构
    • 2.2 损失函数
    • 2.3 结构优点
    • 2.4 结构缺点
  • 3 本文贡献2:分阶段的训练策略
  • 4 实验结果
  • 5 VLMo后续工作

VLMO的贡献有两点:一个是模型结构的改进,也就是Mixture-of-Modality-Experts(MOME);另一个是训练方式的改进,做的分阶段的模型预训练。

1 研究动机

现在多模态学习领域有两个主流的模型结构:

  1. 双塔结构:图像有一个模型,文本有一个模型,双塔完全分开,互不干扰,模态之间的交互用非常简单的Cosine Similarity来完成,比如CLIP Align这种dual-encoder。
    结构优点:对检索任务极其有效,因为它可以提前把特征都抽好,接下来直接算Similarity矩阵乘法就可以,极其适合大规模的图像文本的检索,非常具有商业价值。
    结构的缺点:只计算Cosine Similarity无法做多模态之间深度融合,难一些的任务性能差。
  2. 单塔结构,Fusion Encoder的方式,先把图像和文本分开处理一下,但是当做模态交互的时候,用一个Transformer Encoder做模态之间的交互。
    结构优点:这个结构弥补双塔模式的缺陷,在VR、VE、VQA任务上效果特别好。
    结构缺点:当做检索任务的时候,因为只有一个模型,所以必须同时做推理,当图像文本对特别多,数据集特别大的时候,需要将所有all possible图像文本对全都要同时编码,然后计算Similarity Score,才能做检索,所以推理时间就会非常慢。

本文的研究动机是:
3. 结合上面两种结构的优点,设计模型网络,在Feed Forward FC层,每个模态就会对应自己不同的Expert,就是视觉有视觉的Vision Expert,Language有Language的Expert,Multi-model有Multi-model对应的Expert,这样在训练的时候输入哪个模态的数据,就训练哪个模态的Expert。推理的时候能根据现在输入的数据决定使用什么模型结构。
4. 多模态的训练数据集不够多,但是在单模态里,就是视觉或者NLP里,可用的数据很多,基于这个研究动机,VLMo的作者提出了stagewise pre-training strategy,就是分阶段去训练,先把vision expert在视觉数据集这边训好,再把language expert在language的数据集上训好,这个时候模型本身的参数非常好的被初始化了,再到多模态的数据上做pre-training,效果就会好很多。

2 本文贡献1:MOME模型

Figure 1: Overview of VLMO pre-training. We introduce mixture-of-modality-experts (MOME) Transformer to encode different modality input by modality-specific experts. The model parameters are shared across image-text contrastive learning, masked language modeling, and image-text matching pre-training tasks. During fine-tuning, the flexible modeling enables us to use VLMO as either a dual encoder (i.e., separately encode images and text for retrieval tasks) or a fusion encoder (i.e.,jointly encode image-text pairs for better interaction across modalities).
Figure 1: Overview of VLMO pre-training. We introduce mixture-of-modality-experts (MOME) Transformer to encode different modality input by modality-specific experts. The model parameters are shared across image-text contrastive learning, masked language modeling, and image-text matching pre-training tasks. During fine-tuning, the flexible modeling enables us to use VLMO as either a dual encoder (i.e., separately encode images and text for retrieval tasks) or a fusion encoder (i.e.,jointly encode image-text pairs for better interaction across modalities).

2.1 模型结构

VLMo论文的模型核心是一个transformer encoder的结构,但是它在每个transformer block里面做了一些改动,也就是他们提出的MoME transformer(mixture-of-modality-expert)。

标准的transformer block结构:一个标准的transformer block里先有一个Layer Norm,接下来是一个MSA multi-head self-attention,然后是Layer Norm,然后是一个FFN feed-forward network,最后有一个residual。
本文的transformer block结构:本文结构中layer norm、MSA、layer norm、residual connection这些都是一样的,唯一一个不一样的就是feed-forward network,它不是一个feed-forward network,而是针对不同的输入、不同的modality,有vision FFN、language FFN和vision language FFN,也就是switching modality expert,从而构建出MoME transformer block,也就是VLMo整个的模型结构。
注意:虽然的FFN层没有share weights,各自modality有各自的FFN层,但之前的self-attention层是share weights,也就是不论图像、文本还是图像文本信号,输入任何的token sequence,self-attention的model weights都是一样的,这个也是transformer架构的优势,或者说多模态学习接下来的趋势,目前有很多工作证明,同样的self-attention weights可以用来做不同的图像文本音频视频任务,不需要重新去训练自注意力参数。

2.2 损失函数

  1. Image Text Contrastive ITC
  2. Image Text Matching ITM:一个二分类任务
  3. Mask Language Modeling MLM:预测这些被mask掉的单词

本文从ALBEF里借鉴用这三个loss训练模型以及hard negative mining的思想。例如当计算ITC contrastive loss的时候,VLMo类似CLIP模型,图像端只有图像,输入ViT,FFN都用的Vision FFN,如果用Vision Transformer Base,就是12层的一个transformer,文本端就是文本的token单独输入language model,后面用的是language expert是一个12层的BERT base,当计算ITM或者mask language modeling 的时候,模型变成fusion encoder的形式,图像和文本的一起输入multi-head self-attention(这里的self-attention与之前的self-attention和后面的self-attention都是share weights,都是一样的,不论哪个modality,自注意力的参数都不变,都是共享的)。
在前面的L-F的transformer block里,模型对视觉和language信号分别做训练,也就是分别用Vision Expert(VE)和Language Expert(LE),只有在最后的F层,才用Vision Language Expert训练。例如,如果用的是transformer base模型,前十层做VE和LE,后面F就是2,也就是后面只有两层transformer block做模态之间的融合。

2.3 结构优点

VLMo的优点是灵活,训练的时候可以通过各种modality选择训练哪个modality expert;推理的时候可以选择使用哪些模型参数。如果做检索任务,就像CLIP一样就用视觉和文本两个模型就可以,如果做Vision Language分类任务VR、VE、VQA,就用下面的Fusion Encoder模式。

2.4 结构缺点

代价是VLMo里至少做了两次甚至三次的前向过程,VLMo的base模型在4 million的setting下训练,用64张V100的卡需要训练两天,训练量与ViLT同级别,比ALBEF慢。

3 本文贡献2:分阶段的训练策略

因为作者希望利用Unimodality里大量的图片文本去做预训练进而得到更好的模型初始化,所以先做Vision Pre-training,然后做Language Pre-training,最后做Vision Language Pre-training。
具体地,做Vision Pre-training的时候,是Unsupervised,用了他们自己的BEIT中的Mask Image Modeling,做Language Modeling的时候,使用Mask Language Modeling,Vision Language Pre-training用的上面三个目标函数。
在这里插入图片描述
图中蓝色的虚线代表是Frozen FFN,橘黄色的虚线代表Frozen Self-attention。

  1. 第一阶段做Vision Pre-training的时候,因为刚训练完,不需要freeze,所有参数随机初始化,所以12层的Transformer Block,包括前面自注意力和后面的Vision Expert都打开训练。
  2. 第二阶段做文本预训练的时候,Vision Expert被冻住,因为训练文本数据不需要训练Vision Expert,所以Vision Expert的FFN层参数就固定下来了,该阶段去训练Language Expert,并且Self-Attention也冻住了,因此在视觉数据上训练好一个模型,在视觉Token Sequence上训练好一个自注意力模型,可以直接拿来对文本数据进行建模,不需要fine-tune。但这个过程反过来不行,就是先在Language上去训练然后再在Vision上冻住去做结果不太好,但是先用Vision训练然后再在Text上直接去用Self-Attention,很多工作都证明是有效的。
  3. 第三阶段做多模态,所有训练参数都打开训练,包括Self-Attention,后面三个Expert都打开做fine-tune。

4 实验结果

  1. 多模态任务
    表1

表1里作者对比VQA和VR两个数据集上的表现。因为VLMo主要做的是模型结构上的改进,所以VLMo既做了Base也做Large,但是它的预训练数据集都是4M、4M(但是ALBEF不一样,ALBEF是想克服训练数据集的Noisiness,所有只做Base,但是它做了4M和14M数据集)。VLMo非常有效,在4M数据集上的表现非常好,比ALBEF的全线都高两到三个点。如果用更大的模型或者在更大的数据集上做预训练完之后性能会进一步提升。

  1. 消融实验:消融实验证明分阶段的预训练策略很有效。
    在这里插入图片描述

  2. 单模态任务:因为模型很灵活,在单独的视觉数据集上也取得了很好的效果。做图文检索的时候也取得了很好的效果和推理时间。如下表2所示。
    在这里插入图片描述
    Table 2: Fine-tuning results of text-retrieval (TR) and image-retrieval (IR) on COCO and Flickr30K.†: ALIGN, Florence and our model encode images and text separately, and then employ a shallow interaction (dot product) to obtain the similarity scores. ‡: ALBEF first encodes images and text separately to obtain the top-k candidates, and then feed these representations into a fusion encoder to rerank the candidates. The others require to encode all image-text combinations by a fusion encoder.VLMO-Large++ represents the model trained on one billion noisy image-text pairs with a larger batch size.

5 VLMo后续工作

  1. 将模型变大:作者在BEIT v3中实现,用的ViT-Giant 有1.9 billion的参数。
  2. 做更多下游的Vision-Language Task:
    比如Image Captioning等,作者在VL-BEIT、BEIT v3里都做了尝试。
  3. 验证多模态任务对单模态任务是否有提升。本文验证了Unimodality能够帮助Multimodality。
    反过来,Multimodality也有可能帮助Unimodality,作者在BEIT v3中将文本和图像的各数据集都进行验证,效果都很好。
  4. 模态和任务不限于Vision Language,对更多的模态和更多的应用场景应该都适用。作者团队在Speech方向有WAVLM,在Structured Knowledge方向有Layout LM v1、v2、v3。
    还有支持General Purpose的多模态学习,就是统一用文本当做一个Interface,所有的任务都可以通过一个Prompt生成文本结构去实现,这方面作者团队有MetaLM的工作。
  5. BEIT系列工作的发展历程:
    1)BEIT V1:2021年6月份发布
    2)VLMo:2021年11月份发布
    3)VL-BEIT:22年6月份发布,作者团队同时用Mask Modeling做Vision和 Language。
    4)BEIT V2:22年8月份发布,BEIT V2是BEIT V1的一个升级版,它还是做的视觉的Dataset。
    5)BEIT V3:22年8月份发布,BEIT V3就是之前所有工作的一个集大成版本,一个多模态的网络同时做单模态和多模态任务。

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

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

相关文章

在DELL/HP server的UEFI mode下指定ISO安装Ubuntu

1.重启系统 在蓝色界面出现提示后选择F2进入 然后保存设置即可 下面是惠普server的iol5界面 输入f9进入system utilities 选择ISO 选择reset

从零开始设计RISC-V处理器——五级流水线之数据通路的设计

系列文章目录 (一)从零开始设计RISC-V处理器——指令系统 (二)从零开始设计RISC-V处理器——单周期处理器的设计 (三)从零开始设计RISC-V处理器——单周期处理器的仿真 (四)从零开始…

五十、Spring

1.Spring概述 1.1 Spring是什么 Spring是分层的 Java SE/EE应用 full-stack(全栈式) 轻量级开源框架。 提供了表现层 SpringMVC和持久层 Spring JDBC Template以及 业务层 事务管理等众多的企业级应用 技术,还能整合开源世界众多著名的第三方框架和类库&#xf…

javascript中使用class和prototype的区别

javascript中使用class和prototype的区别 本文将介绍在 JavaScript 何时使用class以及何时使用prototype。 prototype 首先先介绍一下prototype的概念,在Javascript中,所有的对象都从原型中继承属性和方法。 function Car(brand, vinNumber) {this.b…

实现 Rollup 插件alias 并使用vitest提高开发效率

本篇文章是对 实现 Rollup 插件 alias | 使用 TypeScript 实现库的基本流程 | 使用单元测试提高开发效率 的总结。其中涉及到开发一个组件库的诸多知识点。 实现一个经常用的 rollup 插件 alias 首先执行npm init命令初始化一个package.json文件,因为插件使用了ty…

【大模型】ChatGLM2-6B 快速使用

教程 Bilibili:清华开源ChatGLM2-6B安装使用 手把手教程,轻松掌握 代码:https://github.com/THUDM/ChatGLM2-6B 模型:https://huggingface.co/THUDM/chatglm2-6b、https://cloud.tsinghua.edu.cn/d/674208019e314311ab5c/?p%2Fc…

【Java从入门到大牛】面向对象进阶下篇

🔥 本文由 程序喵正在路上 原创,CSDN首发! 💖 系列专栏:Java从入门到大牛 🌠 首发时间:2023年7月19日 🦋 欢迎关注🖱点赞👍收藏🌟留言&#x1f43…

vue3后台管理系统封装的普通搜索框组件

1.普通搜索框效果 代码&#xff1a;SearchItem.vue <template><div class"searchBox" id"searchBox"><!-- <a-form ref"formRef" name"advanced_search" class"ant-advanced-search-form" :model"f…

【笔记MD】

https://editor.csdn.net/md/?not_checkout1&articleId131798584 这里写自定义目录标题 https://editor.csdn.net/md/?not_checkout1&articleId131798584欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题&#xff0c;有助于目录的生成如何改变文本的样式插入…

基于PaddleOCR与OpenVINO™的结构化输出Pipeline

飞桨&#xff08;PaddlePaddle&#xff09;是百度自主研发的中国首个开源开放、功能丰富的产业级深度学习平台&#xff0c;以百度多年的深度学习技术研究和业务应用为基础。飞桨深度学习平台集核心框架、基础模型库、端到端开发套件、丰富的工具组件于一体&#xff0c;还包括了…

QGIS绘制一张地图——创建和编辑绘制线要素、由线要素生成面要素、面要素的编辑

前言 我们以描绘北京市市区案例来演示这部分功能。步骤大致如下: 1、按照市区分区的分界线来绘制线要素。 2、根据所绘线要素生成面要素。 3、对生成的面要素做整理编辑。待绘制底图如图所示: 一、创建和编辑绘制线要素 1.1 创建线要素 我们点击新建Shapefile要素按钮,…

ES6——Iterator 和 for...of 循环

Iterator:遍历器 是一接口&#xff0c;为不同的数据结构提供统一的访问机制&#xff0c;只要当前数据结构部署了iterator接口&#xff0c;当前数据结构就可以遍历。 作用&#xff1a;1、为不同的数据结构&#xff0c;提供统一的访问机制 2、使当前数据结构的成员依次被访问 3…

园区数字经济腾飞,先要长出“网络双翼”

没有人会否认&#xff0c;过去四十多年来&#xff0c;中国经济的腾飞&#xff0c;在全球发展史中写下了浓墨重彩的一笔。其中&#xff0c;产业园区有着不可替代的作用。有人说&#xff0c;园区的四十年&#xff0c;也是一部中国经济的演进史。 作为距离企业业务最近的网络层级&…

牛客网:华为机试刷题记录

牛客网&#xff1a;华为机试刷题记录 前言一、HJ15 求int型正整数在内存中存储时1的个数二、HJ10 字符个数统计三、HJ8 合并表记录四、HJ17 坐标移动五、HJ19 简单错误记录 前言 本文主要是想记录一下华为机试刷题过程中的总结 牛客网的华为机试链接&#xff1a;https://www.n…

通达信超级分时主图指标公式_通达信公式

{日引用} MA3:MA(C,3); MA5:MA(C,5); MA7:MA(C,7); MA10:MA(C,10); MA21:MA(C,21); {BBIYY} DKX:(MA(C,3)MA(C,6)MA(C,12)MA(C,24))/4; {LJFSYY} H1:REF(H,1); L1:REF(L,1); {大盘分时主图} SJ:IF(HOUR<12,(HOUR-9.5)*60MINUTE,(HOUR-11)*60MINUTE); F:DYNAINFO(3)…

J-Flash烧录工具如何添加新的芯片类型

0 Preface/Foreword 1 添加方法 1.1 修改JLinkDevices.xm <!-- --> <!-- CMS --> <!-- --> <Device> <ChipInfo Vendor"CMS32" Name"CMS32L051" Core"JLINK_CORE_CORTEX_…

2023年7月江苏/北京/深圳CDGA/CDGP数据治理认证招生

DAMA认证为数据管理专业人士提供职业目标晋升规划&#xff0c;彰显了职业发展里程碑及发展阶梯定义&#xff0c;帮助数据管理从业人士获得企业数字化转型战略下的必备职业能力&#xff0c;促进开展工作实践应用及实际问题解决&#xff0c;形成企业所需的新数字经济下的核心职业…

Claude API接口调用配置方法和脚本

直接通过API调用Claude方法&#xff0c;这个已经应用到一键成片AI绘画软件中。对于GPT来说速度慢了一点但是还能接受和GPT35差不多&#xff0c;最重要的是不花钱。 先来看我在项目中的应用把。 创建Slack工作台 slack注册网址&#xff0c;请使用谷歌邮箱&#xff0c;点击登…

自洽性改善语言模型中的思维链推理7.13、7.14

自洽性改善语言模型中的思维链推理 摘要介绍对多样化路径的自洽实验实验设置主要结果当CoT影响效率时候&#xff0c;SC会有所帮助与现有方法进行比较附加研究 相关工作总结 原文&#xff1a; 摘要 本篇论文提出了一种新的编码策略——自洽性&#xff0c;来替换思维链中使用的…

Vue3中的透传Attributes / $attrs:简化组件开发的利器

前言 Vue3推出了一系列新功能和改进。使用下来后&#xff0c;其中一个很实用的新特性就是透传 Attributes&#xff08;透传属性&#xff09;。本文将介绍 Vue3中的透传 Attributes&#xff0c;并提结合代码示例来展示它在实际项目中的使用。 一、什么是透传 Attributes&#x…