斯坦福联合Meta提出多模态模型RA-CM3,检索增强机制或成文本图像领域新制胜法宝

news2024/11/16 11:59:53

原文链接:https://www.techbeat.net/article-info?id=4403
作者:seven_

在这里插入图片描述

论文链接:
https://arxiv.org/abs/2211.12561

相信目前很多AI大模型研究者都会遇到一个非常困难的问题,那就是很难控制的模型参数和容量,由于参与模型训练的数据量非常庞大,如果模型参数太少会导致过拟合,参数量过大又会影响实用性。最近比较热门的很多多模态模型,例如DALL-E和CM3等文本图像生成模型,都有类似的问题,这些模型将从海量数据中学习到的知识(往往是物体的外观信息)存储在模型参数中,这无疑都增加了模型后期的扩展和部署成本。除此之外,目前AI生成领域另一个非常棘手的问题是,当模型在面对一个非常具体、但是在训练阶段从未见到过的文本提示时,生成效果可能不够精确,例如给定模型一段文字“French flag waving on the moon’s surface(法国国旗在月球表面飘扬)”,使用CM3和Stable Diffusion生成的效果如下:
在这里插入图片描述
很滑稽,模型居然把硬生生的把法国国旗换成了美国国旗,这是一个非常典型的zero-shot生成错误现象。为了解决这些问题,来自斯坦福大学,Meta AI和华盛顿大学的研究者们提出了一个非常巧妙的方案。他们提出了一种基于检索增强的(Retrieval-Augmented)多模态模型RA-CM3,其包含了一个信息检索框架来从外部存储库中获取知识,具体来说,作者首先使用预训练的CLIP模型来实现一个检索器(retriever),然后使用CM3 Transformer架构来构成一个生成器(generator),其中检索器用来辅助模型从外部存储库中搜索有关于当前提示文本中的精确信息,然后将该信息连同文本送入到生成器中进行图像合成,这样设计的模型就不会出现上面这种非常低级的错误了,下面展示了使用本文提出的RA-CM3生成的效果:
在这里插入图片描述
除了展示最终的生成效果之外,作者还将RA-CM3检索到的法国国旗信息一并展示。作者经过一系列的实验证明,RA-CM3在图像和文本生成任务上明显优于目前其他先进的多模态模型,如DALL-E和CM3,(在MSCOCO上提高了12FID和17CIDEr),同时其所需的训练计算量和计算代价也有大幅度降低(小于DALL-E的30%)。

一、引言

作者首先调研了其他图像文本合成方面的多模态模型,例如DALL-E[1]和Parti[2],这些模型的训练往往需要超大规模的训练数据量(1-10B图像)和可学习参数量(10-80B)来涵盖更丰富的知识。但这其实也是这些大模型目前所遇到的一个性能瓶颈,如果希望这些模型能够随着训练的不断进行而达到一种终生学习的效果,那考虑在模型中加入访问外部存储库应该是目前一个比较明智的做法。并且这种做法对于涉及独特实体知识的任务时会更有用,例如上面所列举的“法国国旗在月球表面飘扬”的例子,参考外部知识库可以帮助模型提高生成的准确性和可解释性

此外,本文作者在设计模型时还加入了检索增强技术,该技术其实在自然语言理解领域已有应用,例如给定一段输入文本,模型可以使用一个检索器,从外部知识库中检索相关文件,并让生成器使用检索到的文件来进行更好的预测。然而,这些检索增强的方法主要是针对文本研究的,将它们扩展到多模态环境仍然是一个具有挑战性的开放性问题。作者调研了一些在多模态领域研究数据检索增强的方法,但是这些工作的生成器都局限于单一的模式,要么是文本生成,要么是图像生成,如下表所示:
在这里插入图片描述
在本文中,作者提出了目前第一个利用检索增强技术的多模态模型RA-CM3,它可以同时检索和生成文本和图像。RA-CM3的输入数据和外部存储器由一组多模态文件组成,其中包含图像和文本的混合数据。为了应对这些输入数据,作者使用预训练的CLIP作为多模态编码器,然后基于CM3架构[3]设计了检索增强的生成器,其本质上是一个能够同时生成文本和图像的Transformer序列模型。在模型的具体操作中,作者将检索到的文件作为主输入文件的上下文信息,并通过联合优化主文件和检索到的文件的token预测损失来训练生成器。

二、本文方法

RA-CM3模型主要由三个核心模块构成:检索器(retriever),外部存储(memory)和生成器(generator)。整体框架图如下图所示。RA-CM3是一种可以同时检索和生成文本和图像混合模态的新架构。给定模型一个输入的多模态文件,RA-CM3先使用检索器从外部存储器中检索相关的多模态文件,送入生成器中来对输入文件进行预测。作者将多模态检索器设计成一个密集的、具有混合模态编码特性的检索器,可以对文本和图像的混合文件进行编码。随后基于CM3 Transformer架构构建了一个检索增强的生成器用来合成准确的图像。下面我们将详细介绍这些模块的主要技术细节。
在这里插入图片描述

2.1 预定义

RA-CM3框架由检索器模块 R R R 和生成器模块 G G G 组成。其中检索模块 R R R 将输入序列 x x x 和外部存储器中的文档 M M M 作为输入,并返回检索目标文档列表 M ⊆ M M \subseteq M MM。随后生成器 G G G 将输入序列 x x x 和检索到的文档 M = ( m 1 , … , m K ) M=\left(m_{1}, \ldots, m_{K}\right) M=(m1,,mK) 合并作为输入,并返回生成目标 y y y,其中 y y y 是传统语言建模任务中单独文本生成 x x x 的延续。

2.2 多模态检索

上文提到,RA-CM3的检索器设计为密集编码型检索器,在实际操作时,检索器 r r r 首先从外部存储 M M M 中获取查询 q q q(例如,输入序列 x)和相关文档 m m m,并返回相关性分数 r ( q , m ) r(q, m) r(q,m) ,操作过程可以形式化表示如下:
在这里插入图片描述
其中,查询编码器 E Q E_{Q} EQ 和存储编码器 E M E_{M} EM 分别为查询和存储文件产生密集向量(如下图所示)。由于这里的输入和存储数据均为多模态文件,因此 E Q E_{Q} EQ E M E_{M} EM 必须是混合模态编码器,才可以对文本和图像同时进行混合编码。作者通过实验表明,这里直接采用CLIP作为混合编码器可以获得非常好的效果。
在这里插入图片描述
具体来说,给定一个多模态文档,首先将其分成文本部分和图像部分,用预训练的CLIP文本和图像编码器分别对这两部分进行编码,然后对这两部分进行融合并执行规范化,作为文档的向量表示。随后在存储模块中执行最大内积搜索并按照相关性得分对候选文档列表进行排序,最终从这个列表中选取 K K K 个最接近的检索文档。此外作者还发现保证检索文档的多样性对最终的生成效果至关重要。如果简单地根据相关性得分从文档列表中抽样或取前 K K K 个文件可能会得到重复或高度相似的图像或文本,从而导致生成器性能不佳。因此在获取文档时还需要将其与已检索到的文档计算相似性来排除冗余的文件。

2.3 多模态生成

RA-CM3的生成器遵循CM3 Transformer架构,为了将检索到的文档 M = ( m 1 , … , m K ) M=\left(m_{1}, \ldots, m_{K}\right) M=(m1,,mK) 合理的送入到生成器中,作者将它们添加到主输入序列 x x x 之前,得到一个整体输入序列 ( m 1 , … , m K , x ) \left(m_{1}, \ldots, m_{K}, x\right) (m1,,mK,x),我们可以将其理解为:检索到的文档 M = ( m 1 , … , m K ) M=\left(m_{1}, \ldots, m_{K}\right) M=(m1,,mK) 是主输入序列 x x x 的上下文示例,如下图所示:
在这里插入图片描述
为了训练生成器,作者迭代优化下面的目标函数:
在这里插入图片描述
其中 L main  L_{\text {main }} Lmain  L retr L_{\text{retr}} Lretr 分别是主输入序列 x x x 和检索到的文档 ( m 1 , … , m K ) \left(m_{1}, \ldots, m_{K}\right) (m1,,mK) 的CM3 token预测损失。相比之前方法只优化主序列 L main  L_{\text {main }} Lmain ,这里作者同时优化主序列和检索序列的token,有效提高了模型的训练效率。

三、实验结果

为了验证本文提出的RA-CM3模型,作者先在LAION多模态数据集上训练模型,随后在MS-COCO上进行图像文本合成任务评估,评估任务主要包括文本到图像生成(Caption-to-image)、图像到文本生成(Image-to-caption)和图像填充和编辑(Image infilling and editing)

3.1 文本到图像生成

下表显示了RA-CM3在文本到图像生成任务上的性能对比。评价指标选用FID,一般来说,FID越低图像生成质量越好。本文的RA-CM3在没有微调的情况下获得了16的FID分数,显着优于无检索机制的基线CM3模型(FID 29)和其他模型,例如参数规模比RA-CM3大3倍的DALL-E(FID 28)。这表明检索增强机制可以有效提升模型在图像生成方面的性能
在这里插入图片描述
为了同时考虑训练效率,作者在下图中可视化了RA-CM3模型与其他基线模型的图像生成训练性能对比,其中y轴表示图像合成质量的FID分数,x轴表示模型训练中使用的计算量。可以发现,RA-CM3明显位于其他模型关系线的下方,这表明,RA-CM3可以使用更少的训练计算量来获得更好的FID分数,其拥有更好的训练效率
在这里插入图片描述

3.2 图像到文本生成

下表显示了RA-CM3在没有微调的情况下在图像到文本生成任务上的性能对比。评价指标选用CIDEr分数,该分数越高表示生成效果越好。RA-CM3的CIDEr得分为89,显着优于无检索机制的基线CM3模型(CIDEr 72)。此外,RA-CM3还明显优于其他参数量更庞大的对比模型。这些结果证实RA-CM3可以很好地执行图像到文本生成任务,可以完成较为统一的多模态生成任务。
在这里插入图片描述

3.3 图像填充和编辑

因为RA-CM3模型建立在CM3之上,因此其天然可以执行图像填充和编辑任务,下图显示了RA-CM3的图像填充效果,因为填充图像需要高层次语义的目标知识。例如,要恢复下图中图像mask块,模型就需要了解滑雪的知识。借助检索增强机制,RA-CM3可以准确获得滑雪板的外观信息,因而可以较为准确地恢复图中运动员的腿和滑雪板。
在这里插入图片描述
此外,RA-CM3还可以通过手动指定上下文来进行图像编辑。例如在下图中,我们可以设置上下文指示图片,其中有一个穿红色夹克的人,RA-CM3可以将原始图像中运动员的黑色夹克编辑为红色。
在这里插入图片描述

四、总结

在这项工作中,作者直面目前文本图像合成领域中的痛点问题,提出了一个更加智能的AI大模型RA-CM3。RA-CM3在原有预训练大模型的基础上引入了检索增强机制,以便于模型从外部存储库中检索和引用新知识参与到新图像的合成中。这种设计赋予了模型可以同时对图像和文本混合数据进行编码的能力,同时也大大降低了模型的训练成本和参数容量。此外,RA-CM3在一些精确度要求较高的图像合成场景中会有更好的可信度和可解释性。从另一个角度来看,RA-CM3的提出为社区提供了一种全新通用的、模块化的检索增强多模态框架,相信其能够为这一领域开辟更多有趣的研究途径。

参考

[1] Ramesh, A., Pavlov, M., Goh, G., Gray, S., Voss, C., Radford, A., Chen, M., and Sutskever, I. Zero-shot text to-image generation. In International Conference on Machine Learning (ICML), 2021.
[2] Yu, J., Xu, Y., Koh, J. Y., Luong, T., Baid, G., Wang, Z., Vasudevan, V., Ku, A., Yang, Y., Ayan, B. K., et al. Scaling autoregressive models for content-rich text-to-image generation. arXiv preprint arXiv:2206.10789, 2022.
[3] Aghajanyan, A., Huang, B., Ross, C., Karpukhin, V., Xu, H., Goyal, N., Okhonko, D., Joshi, M., Ghosh, G., Lewis, M., and Zettlemoyer, L. CM3: A causal masked multimodal model of the internet. arXiv preprint arXiv:2201.07520, 2022.

Illustration by Ira Design from IconScout

-The End-

关于我“门”

将门是一家以专注于发掘、加速及投资技术驱动型创业公司的新型创投机构,旗下涵盖将门创新服务、将门-TechBeat技术社区以及将门创投基金。
将门成立于2015年底,创始团队由微软创投在中国的创始团队原班人马构建而成,曾为微软优选和深度孵化了126家创新的技术型创业公司。
如果您是技术领域的初创企业,不仅想获得投资,还希望获得一系列持续性、有价值的投后服务,欢迎发送或者推荐项目给我“门”:
bp@thejiangmen.com

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

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

相关文章

【Three.js入门】纹理及其常用属性、透明纹理、环境遮挡贴图与强度

个人简介 👀个人主页: 前端杂货铺 🙋‍♂️学习方向: 主攻前端方向,也会涉及到服务端 📃个人状态: 在校大学生一枚,已拿多个前端 offer(秋招) 🚀未…

消息队列—RabbitMQ(万字详解)

消息队列—RabbitMQ 笔记整理自 【涛哥】最适合小白入门的RabbitMQ教程 1. 消息队列介绍 Ⅰ. 消息队列需求场景 在基于微服务开发的电商项目中,商品的查询和商品的修改是通过两个服务实现的,如果修改了商品的价格,如何保证商品查询服务查询出…

矢量网络分析仪如何测量史密斯图及滤波器的带宽?

矢量网络分析仪是一种很神奇的测量仪器,它的功能很强大也值得人们去探索。今天,安泰测试工程师就针对矢量网络分析仪中的史密斯图及滤波器的带宽测量进行简单的介绍,希望能够让更多的人对此有所了解,并产生兴趣。 首先仪器了解一下…

数字孪生可视化图表:了解堆叠的条形图

数据可视化已成为我们日常数据分析工作当中的重要组成部分,可视化大屏是数据可视化发展的产物。这又不得不说到一个概念:可视化组件。可视化组件是制作数字孪生可视化大屏必不可少的一部分,在一个完整的数字孪生可视化大屏中用到的图表可不少…

Android系统之路(初识MTK) ------Android11.0给辅助工具-手电筒添加低电Toast提醒

Android11.0给辅助工具-手电筒添加低电Toast提醒 今天因为在复测昨天的一个monkey压测并且还没测完,所以打算记录最近做系统开发的一些心得和经验,也记录一下自己的系统开发历程 修改前的效果图: 修改后的效果图: 后期补上… 修改前当电量小于等于15%时,按钮依旧可以打…

11条非常实用的Git 和 Git 命令,值得你收藏

基本命令 01. init git init 在当前目录中创建一个新的空仓库。 02. clone git clone https://github.com/facebook/react.git 将远程存储库复制到当前目录。 03. add git add 命令将工作目录中的新文件或更改的文件添加到 Git 暂存区。 git add <file1> <file2&…

【WAF绕过-4】漏洞利用之注入上传跨站等绕过

1、SQL注入 如需sqlmap注入测试&#xff0c; 防cc拦截&#xff1a;修改user-agent头代理&#xff08;付费代理池&#xff09; 修改user-agent头&#xff1a; &#xff08;1&#xff09;加参数&#xff1a;--random-agent &#xff08;2&#xff09;加参数&#xff1a;--user-a…

几十年前的老旧照片如何修复?还不知道旧照片怎么恢复清晰吗?

那些旧照片本身会随着时间的推移而褪色、褶皱。老旧照片修复主要是从褪色、变色、破损、发霉、的旧相片修复翻新&#xff0c;到模糊不清清晰化处理&#xff0c;大面积严重破损照片修补。 十年以前&#xff0c;没有电脑&#xff0c;没有手机&#xff0c;更没有存储照片工具。大…

【关于时间序列的ML】项目 5 :用机器学习预测天气

&#x1f50e;大家好&#xff0c;我是Sonhhxg_柒&#xff0c;希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流&#x1f50e; &#x1f4dd;个人主页&#xff0d;Sonhhxg_柒的博客_CSDN博客 &#x1f4c3; &#x1f381;欢迎各位→点赞…

基于Canal+kafka监听数据库变化的最佳实践

1、前言 工作中&#xff0c;我们很多时候需要根据某些状态的变化更新另一个业务的逻辑&#xff0c;比如订单的生成&#xff0c;成交等&#xff0c;需要更新或者通知其他的业务。我们通常的操作通过业务埋点、接口的调用或者中间件完成。 但是状态变化的入口比较多的时候&#x…

位图详解.

1.位图概念 给40亿个不重复的无符号整数&#xff0c;没排过序。给一个无符号整数&#xff0c;如何快速判断一个数是否在这40亿个数中&#xff1f; 思考&#xff1a; 1.用哈希表&#xff1f;遍历一遍&#xff1f;时间复杂度O(N) 40亿个不重复无符号整数占多大内存&#xff1…

springcloud配置中心nacos动态线程池Dynamic-tp配置接入实战

最近业务上需要把项目组几个微服务接入动态线程池框架Dynamic-tp监控&#xff0c;同时支持webhook机器人接受变更通知、容量报警、活性报警、拒绝报警、任务超时报警等通知&#xff0c;方便项目组同事企业微信群实时监控线程池状态&#xff0c;动态调整线程参数。 接手开始上手…

【C++学习】对二维数组进行排序

1 问题描述 今天在学习 CUDA-NMS 算法时&#xff0c;遇到一个小问题&#xff0c;就是希望对一个二维数组进行排序&#xff0c;具体是这样的&#xff1a; 需要对存储目标框的二维数组进行排序&#xff0c;排序的方式是按照目标框的得分score从高往低排序&#xff0c;也就是结果…

微服务系列 - Zookeeper上篇:入门到精通

一、前言 本内容仅用于个人学习笔记&#xff0c;如有侵扰&#xff0c;联系删除 视频教程&#xff1a;【尚硅谷】大数据技术之Zookeeper 3.5.7版本教程 源码学习&#xff1a;微服务系列 - Zookeeper下篇&#xff1a;源码解析 二、Zookeeper入门 1、概述 Zookeeper是一个开…

消息队列(MQ)

文章目录什么是消息队列定义消息队列的特性&#xff1a;1、解耦&#xff1a;2、削峰&#xff1a;3、异步&#xff1a;使用场景传统串行化设计串行化思想&#xff1a;并行处理调优高可用&#xff1a;高并发高性能MQ的两种流派MQ常见的问题1&#xff0c;mq如何避免消息堆积问题。…

如何解决甲乙双方需求理解巨大偏差的问题?

1、对双方进行专业培训 需求分析人员对需求方应用领域不熟悉&#xff0c;而需求方对软件开发也不熟悉&#xff0c;通过对双方进行专业知识培训&#xff0c;让双方对用户专业领域和软件开发领域都有较为清晰的认识。在此基础上&#xff0c;需求方提出的需求更精准&#xff0c;双…

Java中的多线程——线程安全问题

作者&#xff1a;~小明学编程 文章专栏&#xff1a;JavaEE 格言&#xff1a;热爱编程的&#xff0c;终将被编程所厚爱。 目录 多线程所带来的不安全问题 什么是线程安全 线程不安全的原因 修改共享数据 修改操作不是原子的 内存可见性对线程的影响 指令重排序 解决线程…

一个高性能、无侵入的Java性能监控和统计工具,有点东西!

背景 随着所在公司的发展&#xff0c;应用服务的规模不断扩大&#xff0c;原有的垂直应用架构已无法满足产品的发展&#xff0c;几十个工程师在一个项目里并行开发不同的功能&#xff0c;开发效率不断降低。 于是公司开始全面推进服务化进程&#xff0c;把团队内的大部分工程…

你造Python中的上下文管理器是啥吗

上下文管理器(Context managers)让我们在需要的时候可以准确地分配或释放资源 Python中最常用的上下文管理例子就是with语句了&#xff0c;一般是在操作文件的时候&#xff0c;比如&#xff1a; 有PY基础的小伙伴都知道&#xff0c;上面的代码等价于&#xff1a; 对比两个例子…

python机器学习及深度学习在空间模拟与时间预测领域中的应用

了解机器学习的发展历史、计算原理、基本定义&#xff0c;熟悉机器学习方法的分类&#xff0c;常用机器学习方法&#xff0c;以及模型的评估与选择&#xff1b;熟悉数据预处理的流程&#xff0c;掌握python程序包的使用&#xff1b;理解机器学习在生态水文中的应用&#xff0c;…