图-文多模态,大模型,预训练

2023-11-03

参考老师的无敌课程
多模态任务是指需要同时处理两种或多种不同类型的数据(如图像、文本、音频等)的任务。例如,图像描述(image captioning)就是一种典型的多模态任务,它需要根据给定的图像生成相应的文本描述。多模态任务在人工智能领域具有重要的意义和应用价值,因为它们可以模拟人类在日常生活中处理多种信息源的能力。

近年来,随着深度学习技术的发展,多模态任务取得了显著的进步。特别是VIT(Vision Transformer)和CLIP(Contrastive Language–Image Pre-training)这两种基于Transformer模型的方法,极大地推动了多模态研究的发展。相比于传统的基于CNN(Convolutional Neural Network)的方法,Transformer能够对不同模态的数据进行统一建模,包括参数共享和特征融合。这极大地降低了多模态任务的复杂性和计算成本。

图-文任务是指需要同时处理图像和文本数据的任务,如图像描述、图像检索(image retrieval)、视觉问答(visual question answering)等。就图-文任务而言,ViLT首先使用Transformer移除了任务中目标检测模块,参照VIT将多模态任务更加优雅地解决。随后学术界就如何解决多模态任务,进行了不断地探究。网络结构也进行一系列变化,其中,单塔模型使用一个Transformer对图像,文本进行特征抽取;双塔模型则使用两个对应网络进行特征抽取;最近也逐步展现出统一的模型结构,即网络参数共享,可根据任务不同选择合适的模块进行解决。

在这里插入图片描述
参考: ViLT多模态串讲上多模态串讲下albef与blip的高集成库(LAVIS)

ViLT: Vision-and-Language Transformer Without Convolution or Region Supervision (ICML 2021)

突出贡献: 在Image-Text对齐过程中,移除了目标检测。

算法流程:

  1. 首先使用Word Embedding对文本编码得到 E t E_t Et,使用Linear Projection对图像块进行编码得到 E i E_{i} Ei。并且在两个头部分别加入分类token。
  2. 随后向文本编码与图像编码中,加入位置编码 E p E_p Ep与模块编码 E m E_m Em,分别提供位置信息与属于哪个模态信息。
  3. E t E_t Et E i E_i Ei拼接,得到最终输入序列 E i n E_{in} Ein
    (4) E i n E_{in} Ein输入到Transformer Encoder中进行信息计算交互。

损失函数:

  • Image Text Matching: 训练中,会人为创造一些不匹配的image和text,然后选取序列头部的token来判断图文是否匹配。
  • Masked Language Model: BERT的目标函数,随机mask一些单词,然后使用多模态信息进行预测。
  • Word Patch Aligment:保证word的特征分布与image的特征分布一致。
Align before Fuse: Vision and Language Representation Learning with Momentum Distillation (NeurIPS 2021)

突出贡献: (1)将Language model劈成两半,并且在多模态融合前首先进行image-text对齐。(2)使用Momentum Model作为‘老师网络’来缓解噪声数据的影响 (one-hot可能存在偏差,Momentum Model可以引入soft-label)

算法流程:

  1. 模型包括一个image encoder与一个BERT,并且将BERT对半劈开,分别进行文本特征提取(text encoder)与多模态融合(multimodal encoder)。
  2. image输入到image encoder(12层)提取特征,文本输入text encoder(6层)提取特征。
  3. 得到的文本与图像特征输入到multimodal encoder进行多模态融合。

损失函数:

  • Image-Text Contrastive loss: 使用对比损失来约束image与text的特征,positive靠近,negative远离。
  • Image-Text Matching(ITM): 选取对比计算中的hard negative,要求网络计算其是否匹配,赋予网络具有挑战的任务。
  • Masked Language Modeling(MLM): BERT的预训练函数。
  • Momentum Model(参考MOCO): 拷贝自原有模型,其参数移动平均更新的很慢: P m o m e n t u m = m ∗ P m o m e n t u m + ( 1 − m ) ∗ P o r i g i n a l P_{momentum}=m * P_{momentum} + (1-m) * P_{original} Pmomentum=mPmomentum+(1m)Poriginal,模型会使用KL损失来约束原有网络与Momentum Model的输出。

VLMo - General-purpose Multimodal Pre-training (NeurIPS 2022)

突出贡献: 灵活!既不是单塔模型(擅长图文推理),也不是双塔模型(擅长图文检索),而是使用共享参数提取图像文本特征,然后训练几个专家,这样选择不同的专家就能解决不同的任务,专家就是网络中的不同Feed Forward。

算法流程:

  1. 首先预训练vision。具体来说mask调图像块,然后使用BEiT进行重建,训练V-FFN作为视觉专家。
  2. 其次训练language。冻结V-FFN与共享self-attention参数,使用文本训练语言专家L-FFN。(视觉参数直接在文本上使用)
  3. 训练vision-language专家VF-FFN。将网络都打开,输入图像-文本对来训练所有专家。

损失函数:

  • Image-Text Contrast: 打开V-FFN与L-FFN,模型转化为CLIP,擅长处理图文检索的任务
  • Image-Text Matching:打开V-FFN与L-FFN,VL-FFN,模型转化为ALBEF,变为双塔结构,擅长处理图文推理任务。
  • Masked LM: 打开V-FFN与L-FFN,VL-FFN是,使用BERT的的预训练函数(完形填空)训练模型。

BLIP: Bootstrapping Language-Image Pre-training for Unified Vision-Language Understanding and Generation (ICML22)

突出贡献: (ALBEF的后续) 灵活!出发点与VLMo一致,都是着重解决image-text任务中模型复杂的问题。另外对存在噪声的数据进行了caption filter筛选,得到了更好的数据对。

算法流程:

  1. 模型中Text Encoder;Image-grounded Text Encoder 与 Image-grounded Text decoder共享参数,与VLMo一致。
  2. 图像使用一个标准的Image Encoder来提取特征,text部分使用针对不同的任务来打开或关闭模型组件参数。

损失函数:

  • 与ALBEF损失函数类似,知识MLM换成了LM(预测下一个词)。

Caption Filter模块

  • 收集网络上噪声数据( I w I_w Iw, T w T_w Tw),以及人工标注的数据( I h I_h Ih, T h T_h Th
  • 使用( I h I_h Ih, T h T_h Th)数据以及IT,ITM,LM损失函数训练Filter
  • 使用Filter过滤( I w I_w Iw, T w T_w Tw),并且使用Caption生成新数据( I w I_w Iw, T s T_s Ts)。
  • 最终将人工标注数据+过滤后的网络数据+生成的caption数据共同训练模型。

CoCa: Contrastive Captioners are Image-Text Foundation Models

突出贡献: (ALBEF的后续) 大力出奇迹!!!

Image as a Foreign Language: BEIT Pretraining for All Vision and Vision-Language Tasks (CVPR 2023)

突出贡献: 大一统!!!损失函数统一为mask loss; 网络统一为Multiway Transformer(开关可控)。

将图像作为单词(image as a foreign language),所有都是NLP!!!,VLMo负责框架统一,Mask model负责损失统一。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

图-文多模态,大模型,预训练 的相关文章

随机推荐

  • 结合入栈出栈浅谈前序遍历,中序遍历,后序遍历

    二叉树深度遍历 讨巧应付面试 以前其实也懂什么叫二叉树的前中后序遍历 反正面试的时候 给我一个二叉树 我是知道怎么写出他们的答案的 例如如下二叉树 前序遍历 A B D E C F G 中序遍历 D B E A F C G 后序遍历 D E
  • Infinite Fraction Path【HDU-6223】【BFS+剪枝】

    题目链接 训练赛的时候 想到的做法是倍增维护 因为每个点的后继是唯一的 然后又因为不会桶排 所以的复杂度是一定会TLE的 难受 听说桶排还是会被卡 大雾 然后下来补题的时候听了队友的意见 其实比赛的时候就应该多听听 也许就能想到这个bfs了
  • 某返利网站admin目录index.php文件混淆加密算法分析

    恢复内容开始 文件已经加密 可以在此下载 index php 文件内容打开大概如此 简单字符替换之后 发现字符串用base64 decode仍无法解码 找到一个解码网站 找源码 解码后的文件如下 下载地址 尾部仍然有大量未知编码内容 简单修
  • IP协议的服务类型(翻译RFC 1349)

    目录 1 简介 2 目标和理念 3 服务八位字节类型规范 4 TOS字段的规范 5 Internet协议中TOS字段的使用 5 1 Internet控制消息协议 ICMP 5 2传输协议 5 3应用协议 6 ICMP和TOS字段 6 1无法
  • 圆投影匹配算法描述及实现

    解决模板图和基准图之间存在任意角度旋转的景象匹配问题的关键是找到一个旋转不变量 圆投影匹配算法就是利用 圆 的各向同性和投影特征提出来的 传统的图像匹配算法 如归一化交叉互相关算法 主要利用像素点与像素点之间的相关性计算匹配图像与模板之间的
  • 数据结构day4

    https note youdao com s SwyFfOgRhttps note youdao com s SwyFfOgR 学生管理系统 头文件 ifndef STULIST H define STULIST H include
  • Qt布局的使用

    1 控件的sizePolicy设置了Fixed 再一点击设置布局 控件的大小又自动调整了 解决方法 设置布局后 再手动调整控件大小 2 在要布局的部件上 右键 gt Lay out 如果该部件不支持布局 则右键菜单中不会出现 Lay out
  • Hadoop学习——MapReduce的job机制和job链介绍

    前边写了MapReduce的介绍 以及四大组件 序列化机制和排序 这一篇记录一下MapReduce相关的job机制 对于在代码里 我们总要有一个Driver 比如下边 public static void main String args
  • ORA-01075,ORA-09925 Read-only file system问题一例

    OEL 5 7 ORACLE RAC 11 2 0 2 在运行过程中系统监控台出现journal commit I O error的信息 SQL gt oradebug Message from syslogd at Fri Oct 14
  • java 远程接口_java中如何正确的使用远程接口

    服务器必须包含一个扩展了UnicastRemoteObject的类 并实现远程接口 这个类也可以含有附加的方法 但客户只能使用远程接口中的方法 这是显然的 因为客户得到的只是指向接口的一个句柄 而非实现它的那个类 必须为远程对象明确定义构建
  • JVM 内存模型

    内存划分 java虚拟机按照运行时内存使用区域划分如图 区域 是否线程共享 是否会内存溢出 程序计数器 否 不会 java虚拟机栈 否 会 本地方法栈 否 会 堆 是 会 方法区 是 会 一 程序计数器 Program Counter Re
  • Qt中的 connect 函数

    1 connect 函数实现的是信号与槽的关联 注意 只有QO bject类及其派生的类才能使用信号和槽的机制 2 函数原型 static QMetaObject Connection connect const QObject sende
  • Qt中信号槽的连接方式

    Qt AutoConnection 如果信号发送者和接收者在同一线程 Qt DirectConnection被使用 否则Qt QueuedConnection被使用 Qt DirectConnection 信号发送 信号槽立刻执行 Qt Q
  • scheduler Unhealthy Get “http://127.0.0.1:10251/healthz“: dial tcp 127.0.0.1:10251: con

    解决方法 cd etc kubernetes manifest 然后将你的scheduler以及controll manager yaml中把port 0注释掉 containers command kube scheduler authe
  • gitlab如何创建用户并登录

    为了大家后期能方便创建用户和使用gitlab 先给大家设置为中文 设置为中文后保存然后刷新页面即可设置为中文 接下来教大家怎么创建git用户并进行登录 创建完用户后需要配置一次密码 配置完密码后退出用户测试进行新用户登录 这里用刚创建的新用
  • SpringBoot项目jar、war包启动解析

    一 jar包和war包的区别 1 1 war包 war包是Java Web应用程序的一种打包方式符合Servlet标准 它是Web Archive的缩写 主要用于存储Web应用程序相关的文件 包括Java类文件 JSP HTML CSS J
  • 动手实现Linux内核编译与安装

    Linux内核是一个用C语言写成的 符合POSIX标准的类Unix操作系统 内核是操作系统中最基本的一部分 提供了众多应用程序访问计算机硬件的机制 Linux内核的一大特点就是采用了整体式结构 有很多过程组成 每个过程都可以独立编译 其模块
  • C++ 好用的包管理工具--vcpkg

    背景 Windows 下开发 C C 程序 少不了编译开源的第三方库 使用这些库开发极大的方便了程序员 使得我们不必重复造轮子 由于开源库绝大部分都来源于 Linux 系统 将其移植到 Windows 的 VC 开发环境下编译比较复杂和麻烦
  • vite运行项目报错events.js:352 throw er; // Unhandled ‘error‘ event

    解决方法 运行命令 node node modules esbuild install js 启动项目 npm run dev
  • 图-文多模态,大模型,预训练

    参考老师的无敌课程 多模态任务是指需要同时处理两种或多种不同类型的数据 如图像 文本 音频等 的任务 例如 图像描述 image captioning 就是一种典型的多模态任务 它需要根据给定的图像生成相应的文本描述 多模态任务在人工智能领