原文链接: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 M⊆M。随后生成器 G G G 将输入序列 x x x 和检索到的文档 M = ( m 1 , … ,