【多模态大模型】系列1:Transformer Encoder——ViLT、ALBEF、VLMO

目录

  • 1 ViLT
  • 2 ALBEF
  • 3 VLMO

1 ViLT

ViLT: Vision-and-Language Transformer Without Convolution or Region Supervision

图文多模态任务,关键是提取视觉特征和文本特征,然后对齐。在之前的多模态研究工作中,视觉侧通常需要一个目标检测器来确定图像中物体所在的区域,再提取各区域的特征。ViT 将 Transformer 迁移到视觉领域之后,人们意识到,直接使用 patch projection 来处理图像输入也是可行的。由此,ViLT 首次使用 patch projcetion 来直接提取图像特征,摆脱了笨重的目标检测器。

ViLT 引言部分的示意图(如下图所示)将当时已有的多模态工作归纳地很清晰,并突出了 ViLT 减轻视觉侧推理负担的优势。VE(视觉嵌入)、TE(文本嵌入)和 MI(模态交互)分别表示不同的网络组件,他们在途中模块的大小表示对应网络的复杂度。在图 1 所示的四种结构中,(a)、(b)、© 三种方法中,由于使用目标检测器确定图像的区域,因此视觉端(Visual Embed)都是一个复杂的网络。在 (d) 中,也就是 ViLT 中,使用简单的线性映射,实现了视觉端处理。ViLT 将网络的大部分复杂度放在多模态任务中重要的模态交互部分。

ViL models

下图展示了 ViLT 的模型结构。模型结构上,ViLT 首先分别使用词嵌入和可学习的线性映射来提取文本和视觉嵌入,然后通过一个 Transformer 来进行特征交互。损失函数上,ViLT 共使用了三个损失,分别是图文匹配 ITM、掩膜语言模型 MLM 和文本图像块对齐 WPA。ITM 判断输入的文本与图像是否匹配,本质上是一个二分类问题。MLM 即 BERT 提出的”完形填空“,预测输入的文本中被挖去的单词。WPA 则是要对齐输入文本与图像块。

ViLT
ViLT 仍旧存在两个局限:

  • 虽然 ViLT 通过改用线性映射,降低了视觉端嵌入网络的复杂度。但是性能有所下降,综合当时的多模态研究工作来看,视觉端的嵌入网络相较于文本端,的确需要更复杂一些。原因是文本端的 tokenizer 已经有一定语义理解能力了,而视觉端的 patch embedding 是随机初始化的。
  • 虽然 ViLT 的推理很快,但是训练时间并不短。

可以考虑一些常用的loss: ,下面前三个loss是比较好用的。

  • Image text contrastive loss(CLIP模型训练方式)
  • Image text matching loss(BERT训练方式)
  • Masked language modelling loss(ViLBERT和ViLT使用过)
  • Word patch alignment (这个在vilt中用到,但是计算很慢)

2 ALBEF

Align before Fuse: Vision and Language Representation Learning with Momentum Distillation

  • 贡献1(出发点):在multimodal interaction之前我们要align好text and image token,以便于multimodal encoder学习。ALBEF 提出在进行多模态交互之前,先通过一个对比损失(其实就是 CLIP 中的 ITC 损失)来对齐图像和文本数据。
  • 贡献2:不同的损失函数其实是在为同一个图像文本对,生成不同的视角,变相地做data augmentation,达到semantic preserving的目的。

模型结构如下:

模型结构

在这张图中,满足了我们两个假设,文本编码器比图像编码器小且模态融合也大。同时也用了我们提到的三个loss去训练模型:Image-text contrastive loss(ITC)、Image text matching loss(ITM)和Masked language modelling loss(MLM)。

目标函数:
通过对比学习可知,只要定义一个正样本对和多个负样本对,就可以进行对比了。我们希望正样本对之间的距离越来越近,正负样本对之间的距离越来越远。首先要做的就是去出去这种全局特征,在特征之间去做embedding space上的拉近和拉远。

  • ITC loss, image-text contrastive loss。图像和文本分别通过encoder tokenise, CLS token是一个全局特征(图中绿色方块旁边的黄色方块), down sample和normalisation(786x1 => 256x1),然后进行正负样本的对比学习(预先存了很65536个负样本q,没有gradient,由Momentum Model产生),这一步就是align。
  • ITM loss, image text matching loss。在multimodal encoder的输出之后加一个二分类头(FC层),这里很特别的是,每个batch里我拿一个图片和batch里除了配对文本之外的所有的文本做cosine similarity (借助之前ITC的那个模块),挑一个相似度最高的作为负样本 (hard negative) 来训练,来加大难度。
  • MLM, masked language modeling。类似BERT的完形填空,mask一个词语,去预测mask的词语,但是融合了图像的信息。

其他细节:

  • 上图右侧的 Momentum Model,就是用于进行自训练学习的动量模型,根据主模型进行动量更新,类似 MoCo 。
  • ITM 损失需要模型判断出输入图像和文本是否匹配,即一个二分类问题。直接与当前批次中所有的样本进行比对过于简单,对模态交互训练的帮助不大。ALBEF 中通过 ITC 损失计算得到的各样本间的余弦相似度,为 ITM 损失进行难负样本挖掘,取除正样本外相似度最高的作为负样本。
  • 在计算 ITC 和 ITM 两种损失时,模型的输入是原始图像和原始文本,而在计算 MLM 损失时,模型的输入则是原始图像和经过 mask 的文本。因此,ALBEF 训练时的每一轮迭代需要经过两次前向传播的过程。多模态学习的方法通常训练时长较长,就是因为需要进行多次前向传播,计算不同的损失。

做动量蒸馏(Momentum Distillation)的动机:从网上爬下来的图像文本对通常weakly-correlated,即文本并没有很好地描述图像,从而产生了noise。这种弱关联的训练样本中可能出现某些负样本的图文匹配程度,比 GT 中正样本的 one-hot 标签的匹配程度更高的情况,不利于 ITC 和 MLM 两种任务的训练。

ALBEF 中除了梯度更新的主模型之外,还有一个动量模型,用于为主模型的训练生成 multi-hot 的伪标签。动量模型通过滑动指数平均(EMA)的方式,根据主模型进行动量更新。这样,除了Ground Truth(GT,真实标签)中的 one-hot 标签,我们就又得到了multi-hot的伪标签(pseudo-targets),用于 ITC 和 MLM 任务的损失计算。补充一句,对于 ITM 任务,由于其本身就是基于 GT 的二分类任务,并且通过 ITC 中计算的相似度结果进行了难负例挖掘,因此无需进行动量计算。

ALBEF中为MLM(第一行)和ITC(第二行)生成的伪标签示例如下图所示:

MLM

3 VLMO

VLMo Unified Vision-Language Pre-Training with Mixture-of-Modality-Experts

贡献1:dual-encoder (双塔模型,如CLIP) 解决了检索问题,而fusion encoder,也叫单塔模型,解决了不同模态之间的交互问题,VLMo就把2种的好处都结合了起来,一个模型,想当双塔和单塔 (论文命名为vision-language expert, language expert, vision expert,其实就是不共享参数的FC层) 用都可以。

贡献2:分阶段模型训练的改进(stage-wise pre-training), 简单来说就是多模态的数据集不够大,那我就先预训练单独的一个模态。

为什么提出MoME(Mixture of Multi Expert):双编码器模型(dual-encoder)的优点是在进行检索等任务时,可以预先对数据库中的数据进行特征提取,运行效率高。缺点是模态交互部分只有一个简单的余弦相似度的计算,过于简单。在视觉推理等模态交互复杂的任务上表现较差。与之相反的,融合编码器模型(fusion-encoder)的优点是模态交互充分,缺点是无法预先进行特征提取,效率稍差。为了解决这种冲突,VLMo 提出了 MoME(Mixture of Multi Expert),由不同的 “专家” 来处理不同类型(文本/图像)的输入数据。简单来说,就是在每个 Tranformer 块中:自注意力层权重在不同类型输入间共享,而 FFN 层权重则根据输入类型的不同而不同。

VLMo的目标函数和ALBEF一样也是ITC、ITM和MLM。因为在NLP使用Transformer时,数据集越大训练效果越好,在做多模态时也希望如此,但是在当时还没有开源的大规模数据集。曲线救国:所以VLMo的作者想到可以用文本和视觉各自领域的超大规模数据集先分别对 “文本专家” 和 “视觉专家” 进行预训练(stage-wise pre-training),然后再在多模态数据集上进行预训练。

模型总览图如下所示:

VLMO

在预训练任务的选择上,VLMo 与 ALBEF 一致,同样使用 ITC、ITM 和 MLM 三种,并且同样借助 ITC 为 ITM 进行hard negtives。在进行不同的任务时,会使用 MoME 结构中不同的 FFN 层参数进行训练:

  • ITC:在计算 ITC 损失时,VLMo 的模型是一种 “dual encoder” 模型,以双塔的结构分别对文本和图像进行嵌入。
  • ITM、MLM:在计算 ITM、MLM 损失时,VLMo 模型又成了一种 “fusion encoder” 模型,分别提取图像文本的特征之后,再用 F FF 层 Transformer Block 进行模态融合。

MoME 结构最大的优势就是灵活。在训练时,对应不同的任务时使用不同结构计算损失函数,并更新对应参数。这样的训练有一个缺点是需要做多次模型前向。

VLMO采用了分阶段的训练方式,如下图所示:首先,VLMo 先在单独的图像数据上训练自注意力层和视觉 FFN ;然后,在单独的文本数据上训练文本 FFN ;最后,在多模态数据上训练自注意力层和三种 FFN 专家。这里特别有趣的点是在单独的文本数据上进行训练时,自注意力层是冻结的。也就是说,通过图像数据训练出的自注意力层,在文本数据上甚至连微调都不需要,就能工作得很好。

分阶段训练

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

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

相关文章

百度 API 教程 001:显示地图并添加控件

目录 01、基本使用 前期准备 显示地图 开启鼠标滚轮缩放地图 02、添加地图控件 添加标准地图控件 添加多个控件 网址:地图 JS API | 百度地图API SDK 01、基本使用 前期准备 注册百度账号 申请成为开发者 获取密钥:控制台 | 百度地图开放平台…

电容器教程摘要

正如我们将在本电容器教程中看到的那样,电容器是能够在其板上存储电荷的能源。因此,电容器由于存储充电的能力而存储能量,理想的电容器不会松散其存储的能量。 电容器的简单结构是使用两个平行的导电金属板通过绝缘材料通过距离分开。这种绝…

【通俗易懂说模型】一篇弄懂几个经典CNN图像模型(AlexNet、VGGNet、ResNet)

🌈 个人主页:十二月的猫-CSDN博客 🔥 系列专栏: 🏀深度学习_十二月的猫的博客-CSDN博客 💪🏻 十二月的寒冬阻挡不了春天的脚步,十二点的黑夜遮蔽不住黎明的曙光 目录 1. 前言 2. …

【EXCEL】【VBA】处理GI Log获得Surf格式的CONTOUR DATA

【EXCEL】【VBA】处理GI Log获得Surf格式的CONTOUR DATA data source1: BH coordination tabledata source2:BH layer tableprocess 1:Collect BH List To Layer Tableprocess 2:match Reduced Level from "Layer"+"BH"data source1: BH coordination…

汇编简介常用语法

为什么要有汇编 因为Cortex-A芯片一上电SP指针还没初始化,C环境还没准备 好,所以肯定不能运行C代码,必须先用汇编语言设置好C环境,比如初始化DDR、设置SP 指针等等,当汇编把C环境设置好了以后才可以运行C代码 GNU语法…

内网ip网段记录

1.介绍 常见的内网IP段有: A类: 10.0.0.0/8 大型企业内部网络(如 AWS、阿里云) 10.0.0.0 - 10.255.255.255 B类:172.16.0.0/12 中型企业、学校 172.16.0.0 - 172.31.255.255 C类:192.168.0.0/16 家庭…

ComfyUI流程图生图原理详解

一、引言 ComfyUI 是一款功能强大的工具,在图像生成等领域有着广泛应用。本文补充一点ComfyUI 的安装与配置过程遇到的问题,并深入剖析图生图过程及相关参数,帮助读者快速入门并深入理解其原理。 二、ComfyUI 的安装与配置中遇到的问题 &a…

无人机遥感图像拼接及处理实践技术:生态环境监测、农业、林业等领域,结合图像拼接与处理技术,能够帮助我们更高效地进行地表空间要素的动态监测与分析

近年来,无人机技术在遥感领域的应用越来越广泛,尤其是在生态环境监测、农业、林业等领域,无人机遥感图像的处理与分析成为了科研和业务化工作中的重要环节。通过无人机获取的高分辨率影像数据,结合图像拼接与处理技术,…

web渗透测试之反弹shell SSRF结合redis结合伪协议 redis 未授权访问漏洞

目录 未授权访问漏洞利用:redis 反弹shell 漏洞原因就是: 反弹shell利用方式 反弹shell指的是什么 : 反弹shell的前提条件 步骤: redis未授权访问的三种利用手段反弹shell 利用定时任务反弹shell 攻击主机下设置 写入 webshell 步骤 利用公钥认证写入ro…

【Vue】打包vue3+vite项目发布到github page的完整过程

文章目录 第一步:打包第二步:github仓库设置第三步:安装插件gh-pages第四步:两个配置第五步:上传github其他问题1. 路由2.待补充 参考文章: 环境: vue3vite windows11(使用终端即可&…

Win32/C++ 字符串操作实用工具

CStrUtils.h #pragma once#include <string> #include <vector> #include <windows.h> #include <tchar.h>#ifdef _UNICODE using _tstring std::wstring; #else using _tstring std::string; #endif// 字符串转换实用工具 namespace CStrUtils {//…

【C++前缀和】1074. 元素和为目标值的子矩阵数量|2189

本文涉及的基础知识点 C算法&#xff1a;前缀和、前缀乘积、前缀异或的原理、源码及测试用例 包括课程视频 LeetCode1074. 元素和为目标值的子矩阵数量 给出矩阵 matrix 和目标值 target&#xff0c;返回元素总和等于目标值的非空子矩阵的数量。 子矩阵 x1, y1, x2, y2 是满…

【安当产品应用案例100集】037-强化OpenVPN安全防线的卓越之选——安当ASP身份认证系统

在当前数字化时代&#xff0c;网络安全已成为企业发展的重要组成部分。对于使用OpenVPN的企业而言&#xff0c;确保远程访问的安全性尤为重要。安当ASP身份认证系统凭借其强大的功能和便捷的集成方式&#xff0c;为OpenVPN的二次登录认证提供了理想的解决方案&#xff0c;特别是…

基于进化式大语言模型的下一代漏洞挖掘范式:智能对抗与自适应攻防体系

摘要 本文提出了一种基于进化式大语言模型(Evolutionary LLM)的智能漏洞挖掘框架,突破了传统静态分析的局限,构建了具备对抗性思维的动态攻防体系。通过引入深度强化学习与多模态感知机制,实现了漏洞挖掘过程的自适应进化,在RCE、SQLi、XXE等关键漏洞类型的检测中达到97…

2025年数据资产管理解决方案:资料合集,从基础知识到行业应用的全面解析

在数字化时代&#xff0c;数据已成为企业最宝贵的资产之一。如何有效地管理和利用这些数据&#xff0c;将其转化为实际的经济价值&#xff0c;已成为企业面临的重要课题。 本文将通过数据资产解决方案、数据资产行业报告白皮书、数据资产政策汇编、数据资产基础知识以及数据资…

【linux学习指南】模拟线程封装与智能指针shared_ptr

文章目录 &#x1f4dd;线程封装&#x1f309; Thread.hpp&#x1f309; Makefile &#x1f320;线程封装第一版&#x1f309; Makefile:&#x1f309;Main.cc&#x1f309; Thread.hpp: &#x1f320;线程封装第二版&#x1f309; Thread.hpp:&#x1f309; Main.cc &#x1f…

k8s的安装

1. k8s的安装 192.168.48.6 master01 192.168.481.6 node01 192.168.48.26 node02 三台机器一起操作 1.swapoff -a &#xff1a;关闭交换分区 2. iptables -F && iptables -t nat -F && iptables -t mangle -F && iptables -X 3. cat > /etc/sy…

字节跳动大模型应用 Go 开发框架 —— Eino 实践

前言 开发基于大模型的软件应用&#xff0c;就像指挥一支足球队&#xff1a;组件是能力各异的队员&#xff0c;编排是灵活多变的战术&#xff0c;数据是流转的足球。Eino 是字节跳动开源的大模型应用开发框架&#xff0c;拥有稳定的内核&#xff0c;灵活的扩展性&#xff0c;完…

redis之数据库

文章目录 服务器中的数据库切换数据库数据库键空间读写键空间时的维护操作 设置键的生存时间或过期时间保存过期时间过期键的判定过期键删除策略清性删除策略的实现定期删除策略的实现 总结 服务器中的数据库 Redis服务器将所有数据库都保存在服务器状态redis.h/redisServer结…

Qt文本高亮显示【QSyntaxHighlighter】功能代码讲解

QSyntaxHighlighter 是 Qt 框架中的一个重要类&#xff0c;专门用于为文本内容提供语法高亮功能。它广泛应用于文本编辑器、代码编辑器、日志查看器等应用程序中&#xff0c;允许开发者对文本中的不同部分应用不同的格式&#xff0c;如字体颜色、背景色、加粗等。通过这个类&am…